Changelog
Dinomi está compromotido con la seguridad y confidencialidad de la información, garantizando el desarrollo continuo de nuestra plataforma de call center y ofreciendo desarrollo personalizado a nuestros clientes
v1.1.14-0
changed
- Dialer: se reduce el periodo que un proceso de trabajo (ECCPWorkerProcess) puede permanecer ocioso luego de terminar una tarea de 60 a 5 segundos. Esto impide que este proceso de trabajo mantenga abierta una conexión de base de datos sin usarla.
- Dialer: reemplazo de algoritmo para parseo de protocolo AMI de Asterisk para volverlo 1.5 veces más rápido.
fixed_bugs
- Dialer: se deja de considerar como error que una orden de colgado falle porque el canal asociado no existe, si la llamada ya fue colgada antes de empezar a procesar la orden explícita de colgar.
- Dialer: se optimiza verificación de licenciamiento que previamente podía ser costosa de ejecutar cuando un agente inicia su sesión de atención. Sólo para DINOMI ISO.
- Detalle de Llamadas: se corrige descarga de grabaciones con lista incompleta de grabaciones.
- Consola de Agente: se evita mostrar el nombre del cliente dos veces en la pantalla de atención de la llamada saliente asignada, por procesarlo de forma especial sin haberlo quitado de la lista de atributos genéricos.
- Se acelera la consulta de la existencia de agendamientos de llamadas en campañas salientes por medio de un nuevo índice en la tabla apropiada.
v1.1.13-0
changed
- Consola de Agente: actualización a UI Layout 1.8.5 en preparación para jQuery 3.
- Formularios: preparar manejo de botones jQueryUI para jQuery 3.
- Dialer: se optimiza internamente el manejo de múltiples peticiones concurrentes de refresco de campañas.
- Dialer: cambios en información de diagnóstico mostrada en el log.
fixed_bugs
- Campañas: Agregadas varias validaciones en bibliotecas unificadas para manejo de campañas
- Dialer: agregada validación de que se dispone de canal para colgado de llamada al momento de deslogonear el agente, si el agente tenía llamadas activas. Previamente la falta de esta validación podía ocasionar la caída del dialer.
- Dialer: corrección de generación y manejo de llamadas agendadas al agente en campañas salientes, bajo Asterisk 13+.
- Dialer: se migra implementación de colgado de llamada y de petición de variables de canal al proceso principal AMIEventProcess. Esto evita escenarios de carrera en los que una llamada puede ser colgada en el intervalo entre ser reportada y el momento en el que el worker llega a ejecutar Hangup o petición de variables.
- Consola de Agente: se evita petición de agendamiento inconsistente si se deja seleccionado el botón de agendar al mismo agente en el diálogo, y se selecciona a continuación el modo de agendar al final de la campaña.
- Dialer: se corrige mecanismo de comparación de Uniqueid entre mensajes de llamada, el cual previamente consideraba como idénticas, cadenas de Uniqueid que diferían en el último dígito, debido a la manera en la que PHP compara cadenas numéricas.
v1.1.12-0
fixed_bugs
- Se corrige condición de carrera (Asterisk 13+) que puede ocurrir mandar una llamada a hold, entre la transición de un agente estático de ocupado a libre, versus la comunicación de mensajes que informan que el parqueo de la llamada en hold fue exitoso.
- Se corrige (Asterisk 13+) una identificación incorrecta que conducía a que una transición de llamada a Hold causara que un agente fuese considerado ocupado y no capaz de generar una llamada secundaria.
v1.1.11-0
fixed_bugs
- Dialer: si una llamada parqueada no ha podido comunicar su extensión de parqueo, el intento de recuperar esta llamada comunica ahora un error en lugar de reportar incorrectamente éxito.
- Dialer: se implementa mensaje en el log si una llamada entra en una cola de campaña saliente, y no corresponde a una de las llamadas que se rastrean. Además se agrega verificación de si una llamada ha sido incorrectamente considerada como entrante porque su Uniqueid no fue identificado al momento de ingresar a la cola.
- Dialer: se ignora en lectura de registros de números de campaña saliente, todo registro cuyo id de grupo no esté asignado. Esto impide funcionamiento incorrecto de la marcación frente a desarrollos que insertan contactos incorrectamente.
- Dialer: se corrige escenario de carrera en el cual se podía intentar escribir una auditoría de llamada no contestada cuando todavía no se dispone de ID de inserción de llamada entrante.
- Dialer: se agrega descripción faltante de rechazo de generación de llamadas salientes cuando el dialer ha perdido conexión AMI.
v1.1.10-0
changed
- Calls Detail: reporte ha sido expandido para que muestre las siguientes columnas adicionales, si aplican para el tipo de llamada y su estado final: Inicio Marcado, Fin Marcado, Ingreso Cola.
- Dialer/Consola de Agente: se relaja validación de extensión para realizar transferencia, para que también acepte caracteres asterisco (*) y numeral (#) como parte de la secuencia de los dígitos a transferir.
fixed_bugs
- (Asterisk 13 y superior) Se agrega manejo del evento DialBegin, para corregir la incapacidad de realizar transferencia y otras operaciones sobre la llamada bajo Asterisk 13 y superior.
- Balance de Gestion ACD: se corrige agrupamiento incorrecto de las llamadas entrantes que no fueron reconocidas como pertenecientes a una campaña (por entrar en la cola fuera del horario de la campaña) que previamente eran mostradas todas bajo una misma cola, aunque realmente hubiesen ingresado a través de colas distintas.
- Reporte de Llamadas Manuales: se impone un ordenamiento de las llamadas mostradas por fecha de marcación. Previamente, por falta de una especificación de orden, el listado estaba efectivamente en un orden aleatorio.
- Calls Detail: se impone, para cada tipo de llamada, un timestamp que se asume siempre presente, y que representa el inicio del procesamiento de la llamada. El timestamp elegido es el ingreso a la cola para llamadas entrantes, y el inicio de marcación para todos los demás tipos de llamadas. Todas las llamadas se muestran ahora ordenadas por este timestamp de inicio de procesamiento, la más reciente primero. Esto corrige un bug de larga duración en el cual las llamadas con estado fallido o abandonadas se acumulaban al FINAL del reporte en lugar de ser mostradas en orden cronológico con las demás llamadas. Esto en particular vuelve al reporte consistente con el reporte de Llamadas Manuales.
- Dialer: se corrige bug de larga duración en el cual, si una o más llamadas estaban todavía activas y asociadas con un agente al momento de deslogonear, se intentaba colgar las llamadas en modo síncrono. Este modo síncrono permitía (incorrectamente) un procesamiento reentrante de eventos incluyendo eventos de atención de otros agentes, para lo cual el dialer no está preparado. Este error conducía a llamadas RPC trabadas entre el componente AMIEventProcess y los componentes ECCPWorkerProcess del dialer. Adicionalmente se corrige bug en el código de cliente AMI que impedía la detección y rechazo de llamadas AMI síncronas reentrantes, involucradas en el mencionado escenario de RPC trabado.
- Dialer: (Asterisk 13 y superior): se corrige manejo de eventos AMI con valor de Uniqueid: que no eran considerados como eventos con Uniqueid todavía no asignado, y conducía a intentar escribir «» como valor final del Uniqueid en la base de datos.
- Dialer: corrección de detección de la causa de colgado, para impedir que la información de llamada generada fallida permanezca incorrectamente en memoria esperando la causa de fallo para finalmente reconocer que ha sido colgada. Esto corrige un escenario conocido de colisiones con intento de generar llamadas frescas.
- Dialer: corregido bucle infinito y escritura incontrolada a log que puede ocurrir si la conexión saliente al webchat proxy se conecta correctamente a nivel TCP/IP pero su negociación SSL falla por cualquier motivo.
- Dialer (Asterisk 13 y superior): se corrige el considerar incorrectamente una llamada primaria parqueada como transferida fuera del control del dialer, cuando una llamada secundaria es también parqueada.
- Reporte Desempeño por Día de Semana: se corrige generación incorrecta e ilegible de PDF de descarga.
v1.1.9-2
changed
- Implementado traza de RPC para diagnósticos.
fixed_bugs
- Campaign Out: se corrige inicialización de página de reciclaje de campañas que se descompuso al eliminar el soporte de reset de contactos
- Colas: se corrige mojibake debido a codificación de caracteres incorrecta en consulta de FreePBX remoto versión 14 y posterior
- Se corrige canal a usar para iniciar escucha administrativa (chanspy) sobre llamada de un agente (Asterisk 13 y posterior)
- Dialer: se corrigen algunos usos de variables no definidas que podían conducir a la caída del dialer
- Dialer: se corrige condición de carrera que podía escribir estado inconsistente a la base de datos, si una llamada entrante entraba a la cola y era de inmediato expulsada de la cola de Asterisk antes de terminar de escribir su existencia en la base de datos.
- Dialer: corregida caída del dialer si agente intenta deslogonearse cuando se ha perdido la conexión AMI
- Dialer: corregida caída del dialer si se ha perdido la conexión de base de datos al momento de reparar auditorías de agentes
- Agents Monitoring: se corrige no-actualización de información en página para agentes cuyo nombre contiene un punto.
- Consola de agente: se corrige orden no definido de nodos dinámicos de formulario mostrado que causaba confusión al agente
- Consola de agente: se corrige no-ocultamiento de nodos de formulario cuando el nodo que lo referencia se lo manda a ocultar
v1.1.9-1
changed
- El dialer implementa ahora un Ping periódico al Asterisk cada 15 segundos a través de una petición AMI. Si el Asterisk no contesta el ping desde el dialer dentro de 60 segundos, se cierra y se vuelve a abrir la conexión AMI.
- Enlace a tienda ha sido cambiado para que apunte a tienda en dinomi.com.
fixed_bugs
- Campañas AutoIVR: se corrige bug introducido en reestructuración que impide que se pueda crear una nueva campaña de IVR automático. Las campañas existentes no se vieron afectadas por este problema.
- Dialer: se cambia el mecanismo de manejo de una transferencia ciega para marcar la llamada en proceso de transferencia, y colgarla de forma genérica al ser desasociada del agente. Esto debería arreglar transferencias ciegas a colas, agentes, o a otros contextos especializados.
- Dialer: se corrige caída del dialer que puede ocurrir si la conexión AMI se desconecta, y luego el intento de reconexión a su vez falla.
- Dialer: se corrige caída del dialer que ocurre al intentar avisar que se recibe una llamada atendida mientras el agente todavía está con una llamada activa, si la llamada que está activa NO es la llamada primaria.
- Agents Monitoring: se corrige búsqueda de agentes para que no sea sensible a mayúsculas
- Dynamic Form List: se corrige interferencia en clic de fila de formulario siendo modificado
- Campañas manuales: (sólo Elastix 2.x) se corrige plantilla Smarty incorrecta que contiene Javascript sin marcar con etiquetas de texto literal.
v1.1.9-0
changed
- Nuevo módulo de Llamadas Agendadas (DINOMI Manage –>Llamadas Salientes–>Scheduled Outgoing Calls). Este módulo lista todas las llamadas que han sido agendadas por los agentes para las campañas salientes. En este módulo se puede filtrar por fecha, campaña origen, teléfono, equipo, agente y por estado de llamada (toda llamada agendada o sólo las que no fueron conectadas). Si un agendamiento no ha gastado todos los reintentos de la campaña y no ha sido conectada exitosamente con el cliente, este módulo puede quitar el horario y agente agendado de la llamada, para que sea marcada como una llamada normal junto con las llamadas restantes de la campaña. En el módulo de Campañas Salientes se agregó un enlace hacia el nuevo módulo con filtro para la campaña.
- Calls Details: la visualización del módulo ya no carga inmediatamente el reporte. Para cargar el reporte es ahora necesario elegir explícitamente un tipo de llamada a mostrar. Esto mitiga el uso de una petición SQL lenta para mostrar la combinación de todos los tipos de llamadas. El reporte de combinación todavía está disponible como la opción de todos los tipos de llamadas.
- URL Externo: se agrega icono de advertencia cuando la interfaz es servida vía HTTPS (el estado por omisión) pero el URL externo a embeber en el iframe especifica http:// como protocolo. Esta combinación está prohibida en navegadores modernos y el icono avisa de este hecho.
- Dialer/Consola de Agente: se implementa pedir contraseña de agente a través de formulario en Asterisk 13+, ya que la autenticación a través de teclado de teléfono fue eliminada a partir de Asterisk 12.
- Consola de Agente: interruptor de break movido para que esté más cerca del ratón al desplegar lista de breaks.
- Consola de Agente: se soporta especificar apariencia vía CSS para varios tipos de atributos de la llamada atendida.
- Consola de Agente: se soporta redimensionar la consola de agente con el ratón para ocupar más espacio en monitores grandes.
- Dialer: reestructuración interna del dialer para quitar bucles de verificación repetitivas cada pocos segundos.
- AutoIVR Campaign: descarga CSV reporta ahora el estado AMD de la llamada.
fixed_bugs
- Dialer: se arregla condición de carrera entre el arranque del dialer y el arranque de Asterisk. Si el arranque del dialer intenta conectarse a Asterisk luego de que Asterisk arranca, pero ANTES de que ofrezca el socket AMI, la conexión fallará pero no era reintentada antes de esta corrección.
- Dialer: se silencia error al intentar colgar vía ECCP una llamada que ya se colgó.
- Dialer: se corrige duplicado de registro de llamadas en el escenario en el cual una llamada se saca de la cola para anunciar un IVR y a continuación vuelve a la misma o a otra cola usando el IVR.
- Consola de Agente: se vuelve más robusto el restablecimiento de conexión Server-Sent Events en caso de caída de conexión.
- Se agrega en ccprorecordings.php soporte para FreePBX 15. Para aplicar esta corrección es necesario instalar la versión 1.1.9-0 o superior, y a continuación copiar el archivo ccprorecordings.php actualizado a la raíz del directorio web de FreePBX (/var/www/html).
v1.1.8-3
fixed_bugs
- Dialer: corregido comportamiento cuando un agente llama (en campaña manual) a una cola interna de PBX que conecta con otro agente. Específicamente, el agente dinámico que origina la llamada ya no queda en un estado inconsistente si resulta conectado a un agente estático, y puede colgar la llamada.
- Dialer: se elimina fuga de auditorías abiertas de pausa de formulario que ocurre si una pausa de formulario inicia luego de que el agente maneja una llamada, y en medio de esta pausa, el agente inicia y termina otra llamada de campaña en lugar de guardar el formulario.
- Dialer: se arregla manejo de protocolo AMI de Asterisk para tomar en cuenta un cambio en Asterisk 14 y superior en la manera en que el requerimiento AMI «Command» reporta la salida del comando ejecutado. Este arreglo también afecta al módulo de asignación de agentes a colas.
- Dialer: se arregla refresco innecesario y costoso de información de agentes que puede ocurrir si dos o más instancias de DINOMI (en servidores distintos) hacen uso del mismo servidor Asterisk simultáneamente.
- Agents: se arregla bucle infinito que ocurre si la creación del primer agente estático (en FreePBX 13 o superior) requiere reiniciar el núcleo de Asterisk, lo cual causa obligatoriamente la pérdida de conexión de AMI.
- Dialer: se arregla incapacidad de mandar llamada de campaña saliente a hold en Asterisk 13 y superior.
- Dialer: se arregla manejo de llamada que regresa de hold en Asterisk 13 y superior con llamadas salientes o manuales.
- Dialer: se arregla confusión del dialer que aparenta incorrectamente un corte inmediato de la llamada saliente asignada a un agente en Asterisk 16.
- Agent Information: se incluye información de auditorías sin terminar en reporte para impedir cálculos de llamadas por hora con intervalos erróneos.
v1.1.8-2
changed
- Dialer: Se implementa una optimización en la emisión de eventos ECCP que evita construir un documento XML por cada conexión activa a la que se debe avisar un evento. Esta optimización mejora el rendimiento cuando hay cientos de agentes y/o monitores conectados simultáneamente al dialer.
- Campaign Out: se ELIMINA el soporte de reciclaje de campañas a través de reseteo de números marcados. Este método de reciclaje falsea el reporte de Calls Details y causa confusión en los operadores. Ahora sólo se puede reciclar clonando hacia una campaña nueva.
- Agents, Agents Monitoring: se agrega filtro por nombre de agente para ayudar en la búsqueda de agentes.
fixed_bugs
- Dialer: Se corrige condición de carrera entre manejo de la respuesta del comando AMI Park y la llegada del mensaje ParkedCall. Antes de esta versión, este error conducía a una petición ECCP colgada eternamente hasta que se reiniciaba el dialer. Además, previo a 1.1.8-1 este cuelgue causaba además un bucle infinito.
- Incoming Calls Monitoring: se implementa una optimización para la construcción del reporte que reemplaza varias lecturas a la misma tabla de la base de datos con una sola. Este cambio mejora el rendimiento de la construcción al mostrar el estado de muchas (más de 50) colas entrantes.
- Dialer: se permite colgar una llamada manual realizada hacia una cola interna de la PBX que todavía esté encolada. Previamente esta llamada no podía colgarse a través de la Consola de Agente y debía ser colgada a través de la extensión.
- Se modifican varios reportes para que incluyan también la cuenta de llamadas que entraron a una cola pero no fueron asignadas a ninguna campaña entrante. Los reportes afectados son Hold Time, Balance de Gestion ACD.
v1.1.8-1
changed
- Se implementan banderas para especificar comportamiento predictivo, el porcentaje de servicio y la bandera de sobrecolocación por campaña. Por omisión se usa la configuración global. Las banderas tienen 3 estados: usar configuración global, siempre activar la característica, nunca activar la característica.
- El número de la cola por la que pasó la llamada está ahora disponible como un parámetro adicional en el URL externo, en la variable de plantilla {QUEUE_NUMBER}.
- Se agrega soporte Issabel a ccprorecordings.php para que el webphone de DINOMI ISO (desde versión 1.1.1-0 en adelante) pueda configurar el enlace websocket. Para hacer uso de este soporte, se requiere actualizar en DINOMI ISO el módulo de webphone (yum update dinomianywhere-webphone-panel) y a continuación copiar la versión actualizada de ccprorecordings.php a la máquina Issabel.
- Se agregan en módulos About Us y Licensing enlaces a store.palosanto.com para que el usuario sepa dónde comprar licencias.
- Campaign Monitoring: lista desplegable de campañas está ahora clasificada por tipo de campaña.
fixed_bugs
- Se impide caída del dialer debida a posible condición de carrera entre cuelgue remoto de una llamada y el intento de mandar una llamada a hold. Además se agregan diagnósticos de precondiciones durante el proceso de envío a hold.
- Se corrige condición de carrera en la cual la interferencia entre la espera por la respuesta de un RPC interno y una tarea interna pueden causar un bucle infinito que paraliza la tarea afectada (casi siempre ECCPWorkerProcess).
- Se agregan diagnósticos para que el dialer reporte si una operación RPC interna tarda maś de 60 segundos sin recibir una respuesta.
- Se agrega validación para que una campaña no pueda guardarse asociada a un team inactivo.
- Dialer: se elimina envío incorrecto de evento PauseEnd (ECCP) si el envío a hold (usando Park en Asterisk) ha fallado. Esto corrige una confusión en el escenario descrito en la Consola de Agente.
- Consola de Agente: se cierra sesión de PHP que se abre temporalmente en algunos escenarios de manejo de eventos ECCP. Esto elimina escenarios en los cuales las acciones desde la consola (cierre de llamada, entrar/salir de pausa, etc.) se quedan trabadas debido a que el candado de la sesión PHP fue tomado y no fue liberado oportunamente. Detectado al corregir punto anterior.
- Dialer: Se agrega verificación de que el contexto ccpro_llamada_agendada existe en el dialplan cada vez que se agenda una llamada a un agente. Esto detecta de inmediato el problema antes de que se intente enviar una llamada agendada usando un contexto inexistente.
- Dialer: se corrige número incorrecto de parámetros SQL en petición que marca número de contacto de campaña manual como encontrado en la lista DNC (Do Not Call).
- Dialer: se corrige incapacidad de agendar llamada a un número telefónico, si este número telefónico fue previamente usado para otro agendamiento en la misma campaña pero ya se agotaron todos los reintentos para ese agendamiento anterior.
- Dialer (ECCP): se corrige no emisión de evento de agendamiento fallido cuando se realiza el último intento de marcado de una llamada agendada a un agente.
- Incoming Calls Monitoring: mostrar un diálogo más amigable si este módulo de monitoreo se visualiza con el dialer detenido.
- Performance per Agent: se eliminan tags HTML que se emiten incorrectamente en escenario de descarga del reporte.
- Callcenter Config: se impide asignar 0 como el valor de timeout de inactividad máximo del agente. El asignar 0 a este valor de configuración previamente causaba un fallo del intento de login por parte del dialer.
v1.1.8-0
changed
- Todos los tipos de campañas con agente (entrante, saliente y marcación manual) pueden tener ahora una lista de variables de canal asociadas a la campaña. Al mostrar en la consola de agente la información de la llamada de esta campaña, estas variables de canal serán examinadas y el valor correspondiente será mostrado como atributos adicionales en la consola. Esta característica permite facilitar la integración de AGIs que asignan variables de canal con el flujo de trabajo de DINOMI.
- Se han introducido motivos adicionales por el cual un agente puede finalizar la sesión de login: «agentrefresh» si el canal de voz del agente ha sido modificado mientras estaba logoneado, «agentqueuekickout» si el agente fue removido de una cola de Asterisk por un agente externo al dialer, «agentsesshangup» si la llamada del agente estático se cierra por un motivo externo a una decisión del dialer. Estos estados adicionales pueden verse en el reporte de Tiempo de Sesión (ccpro_login_logout).
- URL Externo: se implementa borrado de registros de URL externo. Para que un URL externo sea borrado, no debe estar en uso por ninguna campaña activa.
- La descarga CSV de las campañas ahora contienen el nombre descriptivo del agente además del agentnick.
fixed_bugs
- IVR Scripts: Se arregla botón Cancelar de formulario de creación de script que no funcionaba.
- Múltiples formularios: se restaura operación de botón Cancelar que previamente estaba bloqueada si al menos un campo tenía el atributo required.
- Supervisor Accounts: ya no se permite asignar un equipo inactivo a un supervisor.
- Dialer: se elimina en gran medida la ocurrencia en el log de mensajes «fwrite(): send of 8192 bytes failed with errno=11 Resource temporarily unavailable» que rellenan los logs en algunos escenarios.
- Monitoreo de agentes: se optimiza la lectura SQL en la que se basa este monitoreo en el caso de muchos agentes presentes en el sistema.
- Login Logout (Tiempo de Sesión): se optimiza la lectura de tiempo invertido en tipos de llamada, la cual previamente usaba un SQL ineficiente cuando se elegían intervalos grandes de tiempo.
- Gestión Eficiencia: se cuenta también el intervalo de llamadas que se timbraron pero nunca se contestaron en la columna de tiempo de timbrado.
- Dialer: se corrige bug en el cual, si se probaba un script de IVR usando una extensión, y se colgaba la llamada en medio de una acción FastAGI (por ejemplo, en medio de la reproducción de un audio), la información de la llamada nunca se eliminaba del dialer hasta ser reiniciado.
- Dialer: se corrige comportamiento cuando ocurre un error en un paso de un script IVR usado por una campaña. Previamente la llamada se colgaba en todo error. Ahora, si el error no se debe a un cuelgue de la llamada en curso, se sigue con el siguiente paso.
- Consola de Agente: se corrige bug en el cual se permitía incorrectamente que dos o más agentes se logonearan simultáneamente con el mismo canal de agente estático y con extensiones distintas. Este error fue introducido en la migración al uso de voicechannel en 1.1.0.
- Agents: se corrige bug en el cual si un agente estático se lo mete a una cola y luego se lo borra, la membresía en astdb no era actualizada para quitar el agente.
- Se agrega permiso faltante del módulo de campañas manuales a los grupos de supervisores.
- Campañas: se corrige potencial XSS al refrescar lista permitida de formularios dinámicos en formulario de modificación de campaña.
v1.1.7-3
fixed_bugs
- IMPORTANTE: se corrrige un patrón de código ejecutado al evaluar el estado de un agente que, al ser ejecutado repetidamente con una llamada atendida, ocasiona una corrupción de memoria en PHP y una caída del dialer. Este problema afecta únicamente a PHP 5.1/Elastix 2.x y es un problema distinto del error encontrado y corregido en 1.1.7-2.
- Monitoreo de Agentes/Monitoreo de Campañas: contador de tiempo de agente ahora es puesto a cero si el intento de llamada manual o secundaria falla.
- Dialer/Monitoreo de Campañas: corregido no-reseteo de contador cuando la llamada manual ha sido recién marcada.
- Monitoreo de Campañas: corregido error en manejo de agregar agente a campaña o cola que podía causar la no-actualización del contador de inicio de la llamada conectada hasta que se refresque la interfaz de monitoreo.
v1.1.7-2
changed
- Todos los monitoreos (Agents Monitoring, Campaign Monitoring, Incoming Calls Monitoring) tienen ahora un contador de eventos evaluados a la derecha de la barra azul. Este contador se incrementa con cada conjunto de eventos que se reciben en el navegador, y además tiene el mecanismo por el cual se reciben los eventos: SSE o LP. El mecanismo SSE (Server-Sent Events) es el más eficiente y se usa en todos los navegadores modernos a excepción de Internet Explorer y Microsoft Edge. El mecanismo LP (Long-Polling) es menos eficiente y debería evitarse en la medida de lo posible para no degradar el rendimiento del dialer en el servidor DINOMI.
fixed_bugs
- IMPORTANTE: se evita un error en la encriptación SourceGuardian que causa una caída y reinicio anormal del dialer si el agente intenta iniciar una pausa global (no asociada a una campaña). Este error sólo ocurre con PHP 5.1/Elastix 2.x.
- Consola de Agente: se corrige error en el cual, si una o más llamadas secundarias estaban activas, se cambiaba a la llamada primaria (enviando a las llamadas secundarias a parqueo) y se la cerraba (o se cierra remotamente), el panel de llamadas secundaras desaparecía y el botón correspondiente se desactivaba, con lo cual se volvía imposible interactuar con las llamadas secundarias todavía presentes.
- Dialer/Consola de Agente: se corrige error en el cual, si se tiene una llamada secundaria activa, se cierra la llamada primaria, y se inicia una segunda llamada secundaria, todo intento de generar una tercera llamada fallaba hasta cerrar todas las llamadas existentes.
- Dialer/Consola de Agente: se corrige error en el cual el evento de fallo de timbrado de una llamada manual no tenía agente asociado, con el resultado de que un intento fallido de llamada manual dejaba la consola del agente correspondiente en estado de espera de timbrado (magenta) en lugar de volver al estado ocioso (azul).
- Dialer: se corrige error en el cual, si se intentaba marcar una llamada manual pero el estado interno del dialer indicaba que no se debía proceder (por ejemplo, por colisión con una llamada en curso), el contacto correspondiente se dejaba incorrectamente como reservado para llamada en la base de datos. Este error se descubrió mientras se investigaba el punto siguiente.
- Dialer: se corrige error en el cual, si una llamada manual o secundaria no puede ocupar en Asterisk el canal del agente (por ejemplo, porque el agente inició o recibió una llamada independiente del callcenter en su extensión, o porque no se desocupa todavía el canal del agente luego de una llamada enviada a parqueo), la información de la llamada podía quedar en el dialer hasta 30 segundos esperando una causa de fallo que nunca se emite en el escenario examinado. Esto impedía que el agente pueda marcar al mismo número hasta que el dialer elimine la información de la llamada fallida.
- Dialer/Consola de Agente: se corrige condición de carrera en la cual, si el agente está hablando con una llamada primaria, e inicia el marcado de la llamada secundaria sin mandar explícitamente la primaria a parqueo, podía ocurrir que el resultado del parqueo exitoso se recibiera por la consola ANTES de que el canal del agente se desocupara en Asterisk, con lo que el intento de marcado fallaba, y además producía el escenario corregido en el punto anterior.
- Incoming Calls Montoring: las colas marcadas como inactivas ya no se muestran en el monitoreo.
- Agents Monitoring: al colgar una llamada primaria, ahora se resetea el contador de inicio del estado ocioso sin importar que la llamada no haya sido recibida a través de la cola mostrada.
v1.1.7-1
fixed_bugs
- Se corrige regresión en la generación de una transferencia atendida de llamada debido al desarrollo de múltiples llamadas secundarias.
- Consola de Agente: se corrige representación de conjunto de llamadas atendidas (primaria y secundarias) cuando se refresca el navegador.
- Se arregla manejo de refresco de navegador al usar el webphone con una llamada en curso. Previamente este escenario rompía la transferencia atendida luego del refresco.
- Se corrige consistencia de monitoreos en tiempo real (Monitoreo de Agentes y Monitoreo de Campañas) cuando se usan llamadas secundarias.
v1.1.7-0
changed
- Se implementa la funcionalidad de pausas por campaña. En el módulo de administración de breaks es posible definir un nuevo tipo de pausa, la pausa de campaña. Estas pausas están disponibles para ser asociadas a campañas entrantes y salientes (pero no de llamadas manuales) en sus respectivos módulos de administración de campaña. Al ser usada por un agente, la pausa sólo detiene la recepción de llamadas en la cola de la campaña para la que fue asociada, y el agente seguirá recibiendo llamadas en otras colas de campañas. Las pausas de campaña y las pausas globales pueden estar activas simultáneamente (hasta una pausa por campaña y agente).
- Como parte de la funcionalidad de pausas por campaña, el agente puede ahora observar en qué campañas está participando, incluyendo actualización en tiempo real de su membresía.
- Se implementa la funcionalidad de múltiples llamadas secundarias por agente. Si el agente está autorizado a generar llamadas secundarias, el agente puede ahora mandar la llamada secundaria a hold, recuperar la llamada primaria estando la llamada secundaria en hold, y mantener más de una llamada secundaria activa. Sólo una de las llamadas (la primaria o una de las secundarias) puede estar activa (hablando con el agente) a la vez.
- Se permite realizar transferencia (ciega o atendida) de una llamada secundaria, siempre y cuando sea la llamada activa.
- Nuevo módulo de Detalle de Breaks. Este módulo lista todos los breaks tomados, con filtro de fecha, agente, pausa específica y tipo de pausa.
fixed_bugs
- IMPORTANTE: se modifica verificación de licenciamiento para que funcione con el paquete dmidecode-3.1-2 y posterior de CentOS 7 que rompe la verificación de licenciamiento para todas las versiones anteriores.
- Se corrige regresión en generación de llamadas en la que una especificación demasiado abierta de codecs puede causar que Asterisk conecte llamadas con cadenas de transcoding ineficientes, con el resultado de un consumo excesivo de CPU por cada llamada atendida.
- Se corrige la ausencia de CallerID en las llamadas generadas por el dialer en nombre del agente. Estas llamadas incluyen las llamadas manuales, secundarias, recuperación de llamada parqueada.
- Se corrige incapacidad de colgar una llamada manual o secundaria que está siendo marcada. Ahora el botón de colgado de la consola debería funcionar incluso en ese escenario.
- Se corrige inactivación incorrecta de campañas entrantes o salientes que todavía están en curso, si la fecha de inicio es igual a la fecha de fin y se refresca la información de campañas en esa fecha.
- Se corrige problema en el manejo de sockets del dialer en el cual en algunos escenarios, un socket en el que se intenta escribir y la escritura falla con EAGAIN y 0 bytes escritos es incorrectamente cerrado. Esto podía causar que uno o más procesos del dialer se desconecten erróneamente del bus de mensajes si se envían mensajes muy grandes, y se queden en un bucle infinito.
- Se optimizan varios escenarios de eventos ECCP de alta frecuencia que, para ser emitidos, leían de la base de datos información que ya estaba disponible en la memoria del dialer. Esto afecta en particular a las llamadas manuales.
v1.1.6-2
fixed_bugs
- Se corrige un error en el manejo de bajo nivel de sockets que están listos para ser escritos, en el que se terminaba intentando una escritura de un búfer de 0 bytes, y el resultado se interpretaba erróneamente como un error de socket conduciendo a un cierre erróneo del socket. En particular, esto afectaba las tuberías de comunicación interproceso, con el resultado de que uno o más de los procesos del dialer podía trabarse en un bucle infinito.
- Se actualiza el script de arranque del dialer (/etc/init.d/dinomidialerpro) a LSB 3.1.1 con cabeceras de requerimientos correctas para la cooperación con systemd. Esto corrige el problema de que al arrancar un DINOMI ISO, el dialer intentaba ser arrancado ANTES del arranque de la base de datos, en lugar de DESPUÉS.
- Se corrige potencial caída del dialer al intentar asignar un CallerID a una llamada que no lo tenía, debido a un parámetro faltante del API.
v1.1.6-1
fixed_bugs
- Dialer: se corrige llamada a método de una conexión que ya no existe durante el manejo de colgado de llamada IVR automático. El síntoma era una caída del dialer al colgar una llamada autoivr en medio de una reproducción de audio.
- Dialer: se corrige manejo incorrecto de señal SIGCHLD que causaba que uno o más procesos consumieran todo un CPU poco después de que terminara un proceso hijo lanzado.
v1.1.6-0
changed
- Campañas manuales: se implementa la capacidad de asignar cada contacto de un archivo CSV a un agente en particular. Esto permite que cada agente tenga su conjunto independiente de contactos dentro de la misma campaña manual. Para usar esto, en la carga de contactos, la selección de asignar contactos a un agente específico puede indicar un agentnick en particular, o usar el agentnick de una columa específica, seleccionada por posición o por etiqueta.
- Monitoreo de campañas: cada mensaje agregado a la lista de mensajes ahora mueve la vista hasta el final para hacer visible el mensaje recién agregado.
- Gestión eficiencia: nueva columna de tiempo muerto (ocioso) por agente.
- Se implementa una bandera de configuración para ocultar parcialmente los números de teléfono en el reporte de Detalle de Llamadas cuando el módulo es usado por un supervisor.
- Se reorganiza el diálogo de creación/modificación de todos los tipos de campañas con cejillas para mejorar presentación y como preparación para una nueva funcionalidad.
- Traducciones al portugués contribuidas por Fábio Vital de GVP Brasil.
fixed_bugs
- Dialer: se corrige error potencial en el cual no se instalaba una alarma para el inicio de vigencia de una campaña de IVR automático, con el resultado de que una campaña de IVR automático que iniciara en una fecha futura podía no arrancar cuando llegara el momento.
- Dialer: se corrige error que causaba que no se escribiera en la base de datos la transición de una llamada entrante al estado atendido y sucesivos, si la llamada entrante ingresaba por una cola no asignada a una campaña activa.
- Dialer: se modifica la generación de llamadas desde Asterisk para que negocie todos los codecs configurados en Asterisk. Esto permite en particular que una videollamada sea enviada a hold y luego recuperada con el video intacto.
- Campañas manuales: se corrige error en el cual un intento de guardar el valor 0 para el número de entradas del historial de llamadas previas era ignorado y guardaba un valor vacío en su lugar, lo cual permitía un número infinito de entradas previas.
- Campañas salientes/manuales: se corrige error al cargar contactos nuevos en una campaña terminada, que asignaba la bandera de campaña ACTIVA sin refrescar el estado del dialer, con el resultado de que la campaña aparecía como ACTIVA en el listado pero el dialer no la ejecutaba.
- Colas: se corrige el no-refresco del estado del dialer cuando se crea, activa o inactiva una cola. Además se impone restricción para que no se pueda desactivar una cola si existen campañas activas que la usan.
- Monitoreo de agentes: el inicio de timbrado de llamada resetea el contador de último estado, como lo hacía previamente el monitoreo de campañas.
- Agentes: se corrige un error que impedía la actualización de la contraseña o de la descripción de un agente estático en la configuración de Asterisk.
- Licensing: se corrige error en el cual un archivo encriptado de forma incorrecta causaba que el módulo se cayera cuando la licencia de prueba expira.
- Dialer: se ha realizado un ajuste generalizado del manejo de eventos para optimizar bucles de verificación innecesarios. En particular, se ha eliminado la lectura cada 3 segundos de la base de datos por parte de cada proceso de trabajo que verificaba si había cambiado la configuración.
- Supervisor Accounts: ya no se permite que un equipo tenga múltiples supervisores.
v1.1.5-0
changed
- Campañas manuales: se implementa un límite a la longitud del historial pedido por cada agente cuando la campaña manual trabaja en modo de ingreso explícito de número (agent-phoneentry). Si la campaña se extiende por un periodo largo, se recomienda establecer el valor de este límite a un valor de 500 o inferior.
- Se implementa borrado virtual de campañas. Previamente el acto de borrar una campaña borraba también los datos de las llamadas realizadas, lo cual afecta a los reportes. Si esto no es aceptable, se puede ahora (en Configuración General) activar el borrado virtual, el cual sólo marca la campaña como permanentemente no-disponible y conserva las llamadas realizadas.
- Consola de Agente: si el agente estaba en pausa e inicia un marcado manual, la pausa se quita ahora al iniciar el marcado, en lugar de cuando se conecta la llamada.
- About Us: el sitio dinomi.com usa ahora HTTPS. Se corrigen los enlaces del módulo al changelog.
fixed_bugs
- Se corrige caída del dialer que ocurre si el dialer no es capaz de identificar un componente de canal de una llamada activa, y a continuación se intenta mandar a hold esta llamada.
- Se silencian mensajes ruidosos en la bitácora al construir información sobre una llamada siendo timbrada.
- Campañas salientes: se corrige error en reciclado de campañas en el que se podían seleccionar contactos contactados a pesar de que el filtro de selección indicara que se requerían únicamente contactos no contactados.
- Monitoreo de campañas: se corrige error que causaba que las filas de reporte correspondientes a monitoreo de campañas manuales permanecieran visibles si se seleccionaba una campaña de otro tipo.
- Monitoreo de campañas: se corrige error de sintaxis SQL que impedía la consulta del log de actividad de campaña si se monitoreaba una campaña saliente.
- Monitoreo de campañas: se permite ahora la consulta de log de actividad de campaña para campañas manuales.
- Monitoreo de campaña: se incluye el inicio de timbrado de llamada manual entre las operaciones que resetean el contador de último estado por agente.
- Monitoreo de agentes: se corrige regresión que causa actividad innecesaria de peticiones al servidor cuando el reporte funciona en modo long-polling.
- Se implementa en el dialer la finalización de procesos de trabajo ociosos si pasan más de un minuto sin ser utilizados. Esto permite cerrar conexiones a la base de datos que de otro modo podrían alcanzar el límite de conexiones del servidor.
- Consola de agente: se ajusta el ping de actividad de agente para reducir la carga de trabajo en el dialer, especialmente con muchos agentes simultáneamente activos.
- Se corrige caída del dialer que ocurre si se inicia una llamada secundaria que termina en estado de fallo.
v1.1.4-0
changed
- Monitoreo de Campañas: implementación del monitoreo de campañas realtime para campañas manuales. Se incluye el mostrar iconos separados para el estado de timbrado de la llamada saliente.
- Monitoreo de Campañas: ahora se usan contadores de tiempo absolutos en lugar del timestamp del inicio de llamada/pausa/login.
- Monitoreo de Campañas: se muestra con otro color el estado de agente ocupado si la llamada no corresponde a la campaña. Este icono puede hacerse clic para cambiar el monitoreo a la campaña que originó la llamada.
- Monitoreo de Agentes: se muestra icono especial para agente que usa llamada manual, y sus estados de timbrado.
- Consola de Agente: para campañas manuales en modo de ingreso explícito de número, se agrega historial de marcados previos del agente, con búsqueda.
fixed_bugs
- Monitoreo de Campañas: se muestra un guión en lugar de la palabra «null» si el agente está ocupado con una llamada que no provino de la campaña que se está monitoreando.
- Se corrige la consulta SQL que obtiene los siguientes números de la campaña saliente para que no tarde varios minutos al consultar en una campaña con cientos de miles de números.
- Se corrige comportamiento del IVR automático cuando la llamada se cuelga en medio de la interacción, para impedir que se sigan ejecutando comandos del IVR en ausencia de la llamada.
v1.1.3-0
changed
- Se implementa una nueva propiedad de límite de tiempo de descansos en segundos. Si se asigna un número de segundos a un descanso, y a continuación un agente permanece en ese descanso por un periodo superior al número de segundos ingresado, su icono de pausa cambiará a un signo de advertencia en los monitoreos de agente y de campaña.
- El monitoreo de campaña (ccpro_campaign_monitoring) ahora usa un contador de segundos en lugar de un timestamp para el tiempo de agente.
- El monitoreo de campaña (ccpro_campaign_monitoring) muestra ahora el nombre y canal del agente, además del nick del agente.
- Se modifican los monitoreos de agente y de campaña para considerar una salida de pausa como una transición que reinicia el contador de segundos del agente.
- Se cambia listado de agentes (ccpro_agents) para que ordene los agentes por nick de agente.
- Se cambia lista de asignación de agentes a cola (ccpro_assign_agents) para que ordene las colas por número de cola.
- La prueba de IVR en el módulo ccpro_autoivr_scripts ahora pasa el valor de dinomi_call_phone al pseudo-AGI de un tipo de paso COMMAND, si está presente.
- Se ha robustecido el comportamiento del dialer en caso de que el componente AMIEventProcess del dialer finalice anormalmente por cualquier motivo.
fixed_bugs
- Se corrige bug en la ejecución de un script de IVR en el cual si un paso define simultáneamente una traducción para un valor DTMF a un valor a almacenar en una variable, y una condición de salto basada en el mismo DTMF, el salto jamás se ejecutaba debido a que se usaba el valor ya traducido en la comparación.
- Se impide que se use una conexión anulada a Asterisk AMI en el escenario de una desconexión de Asterisk que ocurre simultáneamente con una operación sobre una cola o agente.
- Se corrige regresión en el cual, si se monitorea una campaña con el módulo de monitoreo de campañas, y se quita un agente de la cola que se monitorea, el agente no desaparecía de la visualización del monitoreo.
- Se corrige error en traducción al francés del módulo Callcenter Config que ocasionaba que la descarga ccprorecordings.php se corrompiera con un byte indeseado, el cual a su vez corrompía la descarga de grabaciones remotas si se instalaba este archivo en el Asterisk remoto. Para terminar de corregir este problema, se debe volver a descargar el archivo ccprorecordings.php a través de la interfaz y volver a instalar este archivo en el Asterisk remoto (sólo para idioma francés).
- Se corrige no-limpieza de botón de enviar llamada a hold si se tenía una llamada en hold al deslogonear el agente.
v1.1.2-0
changed
- Se crea una nueva fuente de variables para IVR automático. La fuente de intento de marcado (Call Attempt Attribute) contiene valores resultantes del intento de marcado. Los valores disponibles son: phone start_time id_campaign id_contact id_contact_number id retry . En particular se dispone ahora del número marcado por parte de la campaña en «phone».
- Se crea un nuevo tipo de paso de IVR automático, el paso COMMAND. Este paso permite ejecutar un programa externo que puede tomar acciones arbitrarias para extender la funcionalidad del IVR, y para asignar variables que se guardan. Se sigue el protocolo AGI para la comunicación con el programa: se emiten todas las variables agi_* recibidas por la instancia de FastAGI, seguidas de variables dinomi_[campaign|contact|save|call]_{CLAVE} para las variables disponibles por parte de la campaña. En particular, el valor de dinomi_call_phone contiene el teléfono contactado. Se soporta una implementación de SET VARIABLE (https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+AGICommand_set+variable) que asigna variables a ser guardadas como parte de la llamada, y que luego aparecerán en la descarga CSV.
- Los módulos de licenciamiento (ccpro_about, ccpro_licensing) usan ahora una biblioteca unificada para descargar e instalar licencias. Se aprovecha para mostrar mensajes de error más explicativos si no se puede obtener la licencia, los cuales permiten, específicamente, detectar el bloqueo de la petición de licenciamiento por parte de proxy intermedio.
- Se modifica el orden de pestañas del módulo de Configuración General para que NO muestre la selección de ubicación de la base de datos call_center_pro como primera opción. Esta opción es sólo para configuración experta.
- El módulo de Monitoreo de Agentes ahora muestra, para cada agente ocioso, el tiempo ocioso desde la última llamada, en lugar del tiempo desde el inicio de sesión del agente.
- La descarga CSV de las campañas salientes incluye ahora el estado AMD de la llamada.
- El módulo de Monitoreo de Campañas muestra ahora el nombre del agente, además del nick y el canal de agente. Además se usan los mismos iconos y colores usados en Monitoreo de Agentes para representar el estado.
- El módulo de Monitoreo de Campañas muestra ahora la hora desde la cual el agente está ocioso, en lugar de mostrar en blanco.
- La campaña de llamadas manuales tiene ahora una bandera para despausar automáticamente al agente. Con esta bandera activa, si el agente estaba en pausa al momento de iniciar una llamada de la campaña manual, esta pausa se terminará al momento en que se conecta la llamada.
- Limpieza interna – se construye y usa una biblioteca genérica de descarga CSV para contactos de campaña. Esto permite compartir entre todos los módulos el código para ahorrar memoria en descarga, que previamente estaba repetido en varios módulos.
fixed_bugs
- Se corrige incapacidad de marcar una llamada de campaña saliente usando una troncal directa de tipo IAX2.
- Se corrige incapacidad de iniciar una conexión SSL desde el dialer hacia el webchat proxy bajo PHP 5.1/Elastix 2.x.
- Se corrige enlaces de paginación y quitar filtro incorrectos en módulo Chat Service Level.
- Se corrige incapacidad de interactuar remotamente con grabaciones IVR usando ccprorecordings.php si el asterisk remoto expone el webserver únicamente con HTTP y no con HTTPS.
- El script ccprorecordings.php permite ahora descargar grabaciones en el escenario en el que el directorio de grabaciones de Asterisk (astspooldir) tiene uno o más componentes que son enlaces simbólicos. Previamente la descarga era denegada como medida de seguridad. El aplicar esta corrección requiere copiar ccprorecordings.php al servidor Asterisk remoto.
- El módulo de configuración valida ahora que el usuario de AMI a usar para el dialer posea los permisos de operación mínimos para funcionar, y rechaza el guardar un usuario con permisos insuficientes.
- Se corrige la ausencia del procesamiento de la ruta de grabaciones de llamadas entrantes para quitarle el prefijo $ASTSPOOLDIR/monitor/ que se realiza para las grabaciones de otros tipos de llamadas. El síntoma de este problema era que en el escenario de asterisk remoto, las grabaciones de llamadas entrantes no podían descargarse.
v1.1.1-0
changed
- Implementación de llamadas secundarias. En cualquiera de los modos de operación con agente (campañas entrantes, salientes, y de marcado manual) el agente que atiende una llamada (si está autorizado como agente y/o por campaña) puede usar el botón de mano en la Consola de Agente para mandar la llamada a hold. Entonces aparece un recuadro donde se puede introducir un teléfono a marcar, y esta segunda llamada se conectará con el agente. Esta operación puede repetirse un número arbitrario de veces. Luego el agente puede recuperar la llamada principal para seguir hablando con el cliente. Las llamadas secundarias realizadas para una llamada principal pueden verse en un despliegue de Calls Detail. NOTA: esta funcionalidad requiere primero activar parqueo de llamadas (Call Parking) en FreePBX, y asignar un número de espacios al menos igual al número de agentes autorizados para la funcionalidad.
- Nuevo modo de ingreso de número telefónico en llamada manual por parte del agente. Este es un nuevo modo de operación de la campaña manual en el cual, en lugar de elegir un contacto existente previamente cargado en la campaña, el agente tiene la capacidad de introducir uno o más números telefónicos, los cuales se almacenan como un nuevo contacto. Si se activa la opción de automarcado en la campaña correspondiente, los números introducidos se empezarán a marcar inmediatamente y de forma secuencial hasta que alguno conteste. Los contactos introducidos aparecen como contactos ordinarios en la descarga CSV de la campaña.
fixed_bugs
- Se realiza ajuste en la verificación de licenciamiento en la Consola de Agente que recorta de 1 a 2 segundos de cada operación iniciada por el agente y hasta 4 segundos de la carga inicial de la consola.
- Se implementa el almacenamiento del número usado para la transferencia en la llamada manual.
- Se corrige estado de activación de panel lateral de campañas manuales que previamente podía aparecer cerrado incluso si el botón de activación (mano que apunta) está activado.
v1.1.0-0
changed
- Nueva funcionalidad de Agentes de Webchat: una vez licenciada la cantidad de agentes a usar, se permite embeber en una página web un diálogo de chat. El cliente puede ingresar sus datos y entrará a una sala de chat. Los agentes observan en la nueva cejilla de la Consola de Agente que hay un chat pendiente y pueden entrar a conversar con el cliente.
- Como parte de lo anterior, se ha implementado una separación entre la identidad del agente y el canal de voz a usar. Durante la existencia del agente, es ahora posible cambiar la asociación del agente con su extensión. La migración de actualización copia la información a las nuevas tablas.
- Gran reestructuración del módulo de creación de agentes. Ahora los agentes estáticos y de callback aparecen en un solo reporte.
- Monitoreo de campañas: se implementa la emisión de eventos de evaluación de campaña, los cuales permiten saber cuándo el dialer está evaluando si generar llamadas en la campaña, y con qué valores.
- About Us: se activan enlaces al changelog en el sitio dinomi.com.
- Implementación EXPERIMENTAL de URLs REST para carga de contactos de campaña: https://user:password@dinomisrv.example.com/rest.php/[ccpro_campaign_out|ccpro_campaign_manual|ccpro_campaign_autoivr]/campaigns/{CAMPAIGN_ID}/contacts . Por favor contactar soporte@palosanto.com para más instrucciones de cómo integrar en la instalación.
fixed_bugs
- Se arregla instalación incorrecta de configuración de logrotate (con permiso incorrecto +x) que causa que el archivo de log crezca desmesuradamente sin ser rotado.
- Corregido manejo de campañas entrantes/manuales que no tienen formularios asignados.
- Gestión ACD: se evita una división para cero si no hay llamadas en el intervalo examinado.
- Se realizan optimizaciones que evitan lectura desde la base de datos de datos que ya están disponibles en memoria. Esto afecta a los siguientes eventos ECCP: progreso de marcación, agente conectado a llamada
v1.0.0-38
changed
- Monitoreo de Agentes: ahora el monitoreo realtime permite mostrar, para el agente estático, la extensión que fue usada para el login.
- Ahora es posible definir el umbral de llamada corta (ShortCall) por campaña, en lugar de ser una configuración global. Además la campaña autoivr ignora por omisión el umbral de llamada corta, y tiene que ser activado explícitamente para cada campaña. Esto impide que las llamadas de campañas que consisten de una grabación muy corta sean automáticamente catalogadas como ShortCall.
fixed_bugs
- Se corrige bug severo en el cual una verificación incorrecta de la validez de la clave de mysql en /etc/elastix.conf causa que, si no existe previamente la base call_center_pro, no se puede instalar DINOMI porque se queja (incorrectamente) de que la clave no es válida.
- Se desactiva log excesivo de phpagi en múltiples lugares donde interfiere con los logs del servidor web.
v1.0.0-37
changed
- Para Elastix 2.x, la versión mínima requerida es ahora 2.5.0-11, debido a que fue esta versión la que introduce la fuente de iconos FontAwesome que se usa en algunos módulos de DINOMI.
- Si el paquete pigz (compresión multihilo gzip) está disponible, la descarga masiva de grabaciones lo usa para acelerar la compresión del tarball de grabaciones con el uso de todos los núcleos del servidor DINOMI.
- Las campañas manuales tienen ahora una nueva bandera que permite indicar que el agente que pide un contacto en una campaña secuencial toma posesión del contacto al momento de verlo. Esto mitiga el problema de que un agente no puede marcar a un contacto porque un segundo agente empezó a marcar ese mismo contacto.
- Agents Monitoring: se usan iconos de FontAwesome en lugar de archivos de imágenes. Se usa un icono en lugar de la palabra «LOGOUT» para consistencia de visualización. Las etiquetas de estado asociadas a los iconos son ahora traducibles. Se elimina paginación inútil en la grilla del reporte realtime. Se corrige inconsistencia de traducción que causaba que el título del reporte apareciera siempre en inglés.
- Agents Monitoring: se agregan botones para colapsar las colas del reporte realtime para que se pueda visualizar únicamente la cola de interés para el supervisor.
- Ahora los reportes de campañas saliente y entrante tienen enlaces que saltan al monitoreo realtime de esta campaña.
- (interno) Multiplexación de sesiones ECCP a través de un solo socket TCP/IP, requerido para funcionalidades futuras.
- El marcador ya no asume un directorio quemado de /var/spool/asterisk para grabaciones sino que lo lee de la configuración de Asterisk al momento de arrancar.
fixed_bugs
- Se corrige bug del dialer en el cual el cierre inesperado de una conexión TCP/IP luego de que el bucle de eventos interno deja de esperar lecturas del socket, pero cuando todavía tiene pendientes datos a escribir, puede causar que el proceso (generalmente ECCPProcess) entre en un bucle infinito que consume todo el CPU y además llena sin control el log de mensajes con errores de socket de PHP.
- Se corrige bug en el dialer en el cual el límite de máximo número de canales por campaña sólo limitaba el número de llamadas generadas en un ciclo de verificación de la campaña, pero no limitaba el total de llamadas activas para la campaña. Esto podía causar fallos de conexión de llamada si la troncal efectivamente tiene un límite de llamadas simultáneas.
- Se corrige bug en monitor realtime de llamadas entrantes (Incoming Calls Monitoring) en el cual se producía un bucle de refrescos infinito si una campaña usaba una cola, pero estaba fuera de horario, y se recibía una llamada en esa cola.
- Corregido problema en dependencias de DINOMI que hacía que, para Elastix 2.x, si php-pecl-json no estaba ya instalado, el intento de instalar o actualizar DINOMI a través de yum causaba que se arrastre php53-json que es un paquete incompatible.
- Ahora, cuando un agente en campaña manual agenda un nuevo número al contacto y activa la opción de agendar al mismo agente, el dialer asigna posesión del contacto al agente para que los demás no atiendan a este agente.
- Se agrega verificación al momento de instalar o actualizar el paquete RPM de que la clave de root de mysql en /etc/elastix.conf realmente es válida, y aborta la instalación o actualización si dejó de ser válida.
v1.0.0-36
changed
- Descarga masiva de grabaciones: en el reporte Calls Detail hay un nuevo botón «TGZ grabaciones» que hace que se genere y envíe al navegador un tar.gz con las grabaciones de las llamadas que aparecen en el reporte con el filtro en curso. Para el caso de Asterisk remoto se requiere copiar la versión actualizada de ccprorecordings.php al Asterisk remoto.
- (Desarrollo) Se implementa un framework para plugins de datos a guardar vía formulario de la Consola de Agente. Esto permite construir plugines que reciban los datos a guardar sin necesidad de modificar la implementación base de la consola.
fixed_bugs
- Corregida regresión que causaba incapacidad de conectar el IVR automático para la llamada manual.
- Ahora se refresca de inmediato la lista de agentes conocida por el dialer cuando se crean o cambian los agentes estáticos o dinámicos.
- Se muestran mensajes de error ligeramente más descriptivos en caso de errores en la Consola de Agente.
- Corregido bug potencial en el que un agente que ha sido inactivado varias veces puede cambiar de ID incorrectamente según el dialer.
v1.0.0-35
changed
- Implementada descarga de base de datos Do Not Call.
- Balance de Gestión ACD: se extiende reporte para desglosar llamadas entrantes en contestadas y abandonadas.
- Consola de Agente: se usan iconos para acciones del agente en lugar de textos largos, para ahorrar espacio en la pantalla.
fixed_bugs
- Se agrega requerimiento de php-json al paquete para que se arrastre la dependencia de php-pecl-json en Elastix 2.x. El php-pecl-json se usa para el módulo de línea de tiempo de licenciamiento.
- Se eliminan advertencias incorrectas de validación al generar llamadas autoivr.
- Se permite actualización en DINOMI ISO desde una versión que no dispone de autoivr a la versión actual sin obligar a ingresar la IP local al guardar configuración en el módulo de Configuración General.
- Se corrige escenario en el cual si una campaña saliente todavía tiene llamadas activas al momento de ser desactivada, el marcador sigue generando llamadas sobre la campaña desactivada.
- Se corrige intento repetido de usar DeviceStateRefresh en un Asterisk que no implementa este requerimiento AMI.
- Se implementa distinción entre error genuino de Asterisk y un agente sin llamada en los requerimientos ECCP transfercall, getchanvars.
- Se elimina actualización indebida sobre campaña saliente si se realiza transferencia de una llamada manualdialing.
- Efficiency By Agent: se elimina codificación HTML y tags HTML al descargar en formatos CSV/PDF/XLS.
- Performance By Day: se cambia el gráfico de líneas a barras para manejar escenario de un solo punto a graficar.
- Correcciones en manejo de campañas expiradas: se revisa la vigencia de fecha de las campañas en la base de datos cuando una campaña sale de vigencia de hora, en lugar de sólo en la medianoche. Se marca como expirada en la base de datos una campaña que se carga en el dialer con estado activo y fecha de vigencia expirada. Se marca con un icono las campañas cuyo intervalo de vigencia ya pasó y se prohíbe su activación a través de los módulos.
- Call Duration Histogram: se corrige comportamiento cuando el intervalo elegido es de un solo día.
- Corregido problema en DINOMI ISO en el cual usuario o clave de AMI con caracter punto podía confundir a la biblioteca CURL e impedir la descarga de audio remoto.
v1.0.0-34
changed
- Se permite para campañas salientes y autoivr la especificación del contexto en el que se timbran los números salientes para el caso de marcado por dialplan. Por compatibilidad se asume from-internal.
- Se permite para campañas salientes y autoivr especificar un CallerID a emitir en la llamada generada.
fixed_bugs
- Dialer: se mejora manejo de campañas para no evaluar campañas recién inactivadas.
- Dialer: se impide escenario en el que llamadas agendadas pueden causar que se mande a evaluar NULL como información de llamada.
- Dialer: se impide transición de estado incorrecta si OriginateResponse se recibe para llamada ya enlazada a agente. En escenarios específicos, esto conduce a marcar una llamada como fallida cuando realmente ha sido conectada.
- Dialer: se impide error de SQL si una llamada autoivr sale por una ruta saliente o troncal que inicia una grabación de llamada y por lo tanto asigna MIXMONITOR_FILENAME.
- Dialer: se usa una variable de canal para identificar llamadas en el caso de marcado directo por troncal para identificar el canal generado y permitir recoger la causa de fallo si la llamada falla.
- Dialer/Consola de Agente: se corrige escenario en el cual la pausa de formulario termina incluso si el guardado de formularios falla.
v1.0.0-33
changed
- Se implementa verificación de horario de uso de una cola cuando se crean o modifican campañas entrantes o salientes. Esto reemplaza a la verificación anterior para permitir que dos o más campañas puedan usar la misma cola en fechas y horarios distintos.
- Se optimiza proceso de ECCP para que cada proceso de trabajo abra su conexión AMI únicamente cuando alguna petición la requiere.
- Optimización de verificación de procesos terminados para reducir la demora al finalizar el dialer.
fixed_bugs
- Corregido bug que impedía obedecer el número de licencias gratis en DINOMI ISO. Esta corrección fue previamente publicada en la versión 1.0.0-32.1 para DINOMI ISO.
- Corregido error en script ccprorecordings.php que impide que se puedan descargar grabaciones remotas de tipo .wav49 . Esta corrección requiere volver a copiar el script corregido en Asterisk remoto.
- Corregido error en el uso de CURL que impedía el uso de caracter punto o arroba en el usuario o contraseña AMI al momento de verificar IP remota de FastAGI.
- Arreglada etiqueta de lista desplegable de equipos en Calls Detail que daba a entender que todos los equipos estaban disponibles en lugar de sólo los del supervisor de equipo.
- Corregido problema de consumo excesivo de memoria al descargar CSV de llamadas de campañas salientes.
- Corregido error que impide que se use http (en lugar de https) como protocolo de transferencia de grabaciones remotas. Esto afecta principalmente a DINOMI ISO con FreePBX 13 como Asterisk remoto.
- Implementada detección experimental de situación de Asterisk en la cual el agente de chan_agent está ocioso o desconectado pero app_queue todavía cree que el agente está ocupado. La operación de corrección requiere de un Asterisk parchado.
v1.0.0-32
changed
- Licenciamiento: se ha implementado en DINOMI Elastix el soporte para licencias que contienen números de agente para rangos limitados de tiempo, al estilo usado en DINOMI ISO. Todas las licencias anteriormente obtenidas se consideran perpetuas para su número de agentes.
- Licenciamiento: se ha copiado a DINOMI Elastix el módulo de vista de licencias de DINOMI ISO.
- Reporte de tiempo de sesión (Login Logout): se contabiliza el tiempo invertido en llamadas manuales de forma separada a las llamadas salientes.
- Nuevo reporte de histograma de duración de llamada (ccpro_rep_call_duration_graph) que muestra un gráfico de barras con la distribución de los tiempos de duración de llamada para las campañas, y otro gráfico con la distribución de tiempos de contestación de marcado.
- Ahora los módulos de IVR Audios y de IVR Scripts recuerdan la última extensión usada para pruebas y la sugieren para que no se tenga que introducir otra vez.
- Tanto IVR Audios como IVR Scripts dejan de sugerir el idioma de Elastix para la ubicación de grabación, y ahora asumen una grabación global.
- Reporte Eficiencia por Agente (ccpro_gestion_eficiencia) puede ahora mostrar datos de llamadas manuales.
- Consola de Agente: agendamiento muestra ahora etiqueta que indica si agenda a cualquier agente disponible o al mismo agente, para evitar confusiones.
- Todos los cargadores CSV de campañas pueden ahora especificar el separador de campos. Esto permite acomodar archivos de CSV Excel latinos que usan punto y coma (;) como separador.
- Se usan iconos en lugar de textos para enlaces en administración de campañas para ahorrar espacio y mejorar presentación.
- Todos los administradores de campaña muestran ahora las campañas en orden cronológico reverso de rango de validez.
- Monitoreo de agentes muestra ahora el nombre FreePBX de la cola en el reporte de tiempo real.
fixed_bugs
- Corregido bug en todos los módulos que causaba que los supervisores de teams vieran campañas y otros datos de teams que no eran suyos, como si fuesen supervisores generales.
- Corregida omisión que impedía borrar una campaña autoivr por falla de validación de aviso de borrado.
- Reporte Eficiencia por Agente (ccpro_gestion_eficiencia): corregido bug de falta de fecha final en datos de gráfico, entre otros bugs de implementación.
- Corregido bug en sentencia SQL de una rutina de dialer que causaba errores en algunas operaciones de campañas manuales.
v1.0.0-30
changed
- Se implementa verificación de que el audio subido para IVR sea realmente reproducible por Asterisk (sólo .wav).
- Ajuste de modelo de predicción para mejorar la calidad de predicción de llamadas salientes a punto de desocuparse.
- Reestructuración de la generación de llamadas salientes para evitar una lectura a la base de datos cada 3 segundos. Este cambio mitiga posibles escenarios de bloqueo en caso de generación pesada de llamadas, o si hay otras aplicaciones que leen la base de datos de DINOMI.
fixed_bugs
- Corregido bug que impedía filtrar las campañas disponibles para un supervisor específico. El síntoma era la falla en el listado de campañas del Monitoreo de Campañas.
- Corregido bug en Consola de Agente que causaba la no asignación del nombre de la pausa si el agente iniciaba una pausa mientras estaba atendiendo una llamada.
- La instalación o actualización de licencia ahora reinicia el dialer. Esto se requiere para que el dialer obedezca el nuevo número de agentes.
- Corregido bug en generación de llamadas salientes y autoivr que, en caso de múltiples llamadas a generar por iteración, podía causar duplicado de algunas llamadas y el no-marcado de otras, con fuga de referencias a llamadas.
- La generación de llamadas de prueba de IVR y de audio IVR tienen ahora un número simulado para permitir el uso de troncales que rechazan la ausencia de número de Caller ID.
- La carga de números a través de CSV admite ahora que los números a marcar contengan caracteres numeral y asterisco.
- Se actualiza contexto invocado al agendar llamada saliente al mismo agente para que use el esquema actualizado de FreePBX 11 para iniciar las grabaciones. Esto debe restaurar la grabación de llamadas agendadas.
v1.0.0-29
changed
- Nueva funcionalidad de campañas sin agentes y con IVR para reproducir audios. Se puede configurar un guión de interacción con el cliente a llamar que indica la lista de audios a reproducir, si se debe recoger opciones de DTMF, y qué valor guardar en la base de datos para cada dígito presionado. Se soporta reproducir valores de enteros, secuencias de dígitos, de letras, fechas y cantidades monetarias. Se soporta usar un mismo guión en múltiples idiomas si los audios requeridos existen en el paquete de idioma de Asterisk. Los valores recogidos pueden ser descargados en formato CSV de la misma manera que en el resto de campañas. Los guiones pueden ser probados con independencia de una campaña a través de una extensión existente en Asterisk. Se soporta administración de audios incluyendo grabación a través de extensión y subida de archivo de audio en alguno de los formatos soportados por Asterisk.
- Se eliminan restricciones innecesarias que restringían el número de agentes mostrados en la configuración de agentes y en monitoreo de agentes al número máximo de agentes licenciados. Esto permite el escenario de trabajo por turnos de varios grupos de agentes que no estarán todos logoneados simultáneamente.
fixed_bugs
- Se evita escenario en el cual una extensión de agente puede ser deslogoneada por el dialer porque expiró el registro, incluso si está ocupada atendiendo una llamada.
- Se corrige escenario en el que el rechazo de la llamada que inicia el login de agente estático causaba un cuelgue de la consola de agente en estado de esperar login en lugar de que se le avise de inmediato la falla de login.
- Se corrige actualización incorrecta de la bandera DNC que causaba que la llamada saliente actualizara un registro incorrecto.
- Se corrige bug en consola de agente que no limpiaba el texto de break en caso de que el agente se deslogoneara en estado break y se volviera a logonear.
- Se corrige formato incorrecto de descarga CSV para campañas manuales si los contactos no poseen atributos.
- Se limita a 10 segundos la espera para llamadas en curso en finalización de dialer. Esto evita algunos escenarios que causan múltiples instancias del dialer en ejecución simultánea.
- Se corrige incapacidad de asignar a una campaña saliente un contexto telefónico que sea distinto a «from-internal».
v1.0.0-28
changed
- Implementación inicial de espiado en llamadas de agentes en Monitoreo de Campañas. Cuando un agente tiene una llamada activa, la entrada asociada al agente mostrará un ojo. Al hacer clic en el ojo se muestra un diálogo con una extensión interna a llamar y un modo de espiado de llamada. La llamada resultante permite escuchar lo que el agente y el cliente están hablando, y (según el modo de espiado) susurrar al agente, o intervenir con voz en la llamada.
- AMD Config: se agrega botón para resetear valores de configuración a sus valores recomendados.
- Queues: se agrega columna «Eventos de agente» en reporte de colas monitoreadas que indica si la cola tiene activas las banderas eventmemberstatus y eventwhencalled . Estos eventos deben estar activos para la funcionalidad de auditoría de llamadas no contestadas, y su uso mejora el rendimiento del monitoreo de las colas de campañas salientes. En caso de que las banderas no estén presentes, se proporciona un enlace a la configuración de cola de FreePBX (sólo para versión Elastix).
- Queues: se muestra nombre descriptivo (FreePBX) de cola, si está disponible.
fixed_bugs
- Dialer: corregido bug que causa bucle infinito de errores en el log si una llamada entrante ingresa en una cola monitoreada pero que no está asignada a campaña alguna. También se elimina volcado recursivo que llena el log en caso del mismo error. Ticket OTRS 2017052310000764.
- Dialer: se corrige espera de causa de fallo de marcado de llamada de 60 a 10 segundos.
- Dialer: ya no se cuentan las llamadas fallidas en espera de causa de fallo como llamadas en espera de entrar en cola, para propósitos de marcado de llamadas salientes.
- Dialer: se agrega verificación a todos los parámetros enteros de peticiones ECCP, de que realmente son enteros.
- Assign Agents: se corrige bug en implementación de escritura de configuración que causa un fallo al intentar modificar el archivo de colas para agentes estáticos si hay muchos agentes asignados.
- Arreglado tag HTML desemparejado en formulario estándar DINOMI.
- AMD Config: se maneja caso en que archivo de configuración amd.conf no existe, principalmente en Asterisk remoto.
v1.0.0-27
changed
- El módulo de configuración ha sido reorganizado usando pestañas de configuraciones relacionadas.
- El módulo de configuración del dialer verifica ahora que todas las credenciales (a la base del dialer, FreePBX y Asterisk) realmente funcionan antes de guardar los datos, si han sido cambiadas. Esta verificación se muestra como un diálogo modal.
fixed_bugs
- Se corrige error al agendar una llamada de campaña saliente que ocasionaba que la llamada agendada no tuviese los atributos de la llamada original, si la llamada original era un número de un contacto con múltiples números pero no el primero ingresado.
- Se corrige ruta a servicio que de otro modo impide que el servicio dialer pueda ser iniciado o detenido con versiones recientes de sudo en CentOS 7.
- Se corrige condición de carrera en script de inicio de servicio dialer que puede conducir a que el dialer se detecte como no iniciado incluso si está activo.
- La configuración de agentes estáticos puede ahora manejar la ausencia inicial del archivo agents.conf de Asterisk.
- Se corrige actualización de estadísticas por parte del dialer que sólo se escriben para campañas salientes.
- Se bloquea el borrado de una campaña que está en estado ACTIVO. Además se bloquea el borrado de una campaña en estado INACTIVO si el dialer informa que todavía está manejando llamadas de esta campaña. Esto evita que ocurran errores SQL al intentar actualizar el estado de una llamada que ha sido borrada.
- Para compatibilidad con instalaciones FastCGI, se rellena las respuestas de Server-Sent Events (Agent Console, Agent Monitoring, Campaign Monitoring) hasta superar 4096 bytes. Esto evita que se queden en el búfer de FastCGI los mensajes que deben ser enviados inmediatamente.
v1.0.0-26
changed
- Monitoreo de colas entrantes muestra ahora la etiqueta asignada a la cola en FreePBX.
fixed_bugs
- Corregida regresión en reescritura de Consola de Agente que causaba incapacidad de activar el botón Handled para una llamada manual.
- Corregido error que impide control de servicio dialer a través del módulo de Configuración General debido a renombre de servicio.
- Corregido CSS que causaba texto ilegible de botones en varios lugares al ser enfocados, especialmente en Configuración General.
- Desactivada instalación de dialplan a través de AMI para impedir potencial corrupción del plan de marcado de Asterisk.
- Se muestra una sola vez mensaje de que cola requiere banderas eventwhencalled para no llenar de mensajes el log.
- Se implementa manera más robusta de terminar procesos componentes del dialer en paralelo a manejador SIGTERM.
v1.0.0-25
changed
- El paquete RPM se llama ahora «dinomi-callcenterPRO».
- Nueva funcionalidad de reciclado de campañas salientes. Al elegir la opción de reciclar campañas, se puede seleccionar un subconjunto de contactos y números que hayan sido intentados o no intentados, contactados o no contactados, o con valores particulares de su formulario dinámico. Los contactos y números elegidos pueden, o resetearse para ser vueltos a marcar en la misma campaña, o clonados hacia una nueva campaña.
- Cambios de URLs de referencia al nuevo dominio dinomi.com.
fixed_bugs
- Se arregla bug que impedía en algunos escenarios la carga correcta de la zona horaria en CentOS7/Elastix 4 por parte del dialer.
- Se arregla incapacidad de quitar un campo de un formulario dinámico si al menos un contacto ha recolectado datos que hagan referencia a ese campo. Ahora los valores recogidos asociados se borran también.
- Se corrige en Assign Agents escenario que mostraba nuevamente el listado principal incluso si había fallado la asignación de agentes a una cola, lo cual podía generar confusión si el usuario no veía el mensaje de error mostrado.
- Se corrige en Assign Agents regresión que causa fallo al intentar agregar agentes a una cola que previamente no tenía agentes.
- Arreglo parcial de acceso a archivos de ayuda de los módulos.
- Se relaja validación de usuario válido AMI en descarga de grabaciones remotas.
- Se corrige lentitud en el guardado de formularios estáticos con muchos (>100) campos.
- Se incluye afinación en contexto de AMD para mejorar detección correcta de grabaciones.
- Se arregla excepción incorrectamente nombrada que causa errores al listar colas disponibles, sobre todo en Elastix 2.
- Se corrige regresión en Configuración General que impide guardar desactivación de predicción en marcado.
v1.0.0-24
changed
- Los contextos auxiliares de trabajo (para llamadas agendadas al agente y para AMD) pueden ahora ser verificados e instalados desde el módulo de configuración general. Esto funciona también para un Asterisk remoto.
fixed_bugs
- Corregido problema causado por limitación de máximo número de variables POST en PHP 5.3.9 y superior que causa que formularios con muchos campos (>500) no puedan ser guardados por el agente.
- Corregido problema que causaba fallos al determinar el estado o desconectar un agente dinámico con un nombre amistoso.
- Corregida condición de carrera en generación de llamadas salientes que causa generación de llamadas cuando existen todavía llamadas recién conectadas pero que tardan varios segundos en entrar a la cola.
- Corregido error en módulo de configuración general que impedía el guardado de cambios en la configuración.
v1.0.0-23
changed
- Reestructuración de Consola de Agente para no recargar toda la página al momento de iniciar y terminar el login de agente. Este cambio permite el uso del WebPhone como extensión de agente.
- Capacidad de configurar un FreePBX remoto.
- Optimización para mitigar contención de base de datos al actualizar estado de grupo de contactos de llamada saliente.
- Optimización para verificar inactivación de campañas terminadas sólo al detectar cambio de fecha de sistema en lugar de cada 3 segundos.
- Registro en log de tiempo de latencia excesivo de operaciones de base de datos para depuración.
fixed_bugs
- Corregido estilo aplicado incorrectamente en Consola de Agente que causaba que las listas desplegables en los formularios se muestren con los items concatenados en algunos navegadores.
- Corregida situación en la que el intento de Originate que falla de inmediato en el dialer puede ocasionar un intento de escribir NULL a una columna de base de datos que no acepta NULL, lo cual conducía a un bucle infinito.
- Corregido error de paginación en Calls Detail cuando se intenta pasar a la siguiente página de un reporte que muestra las llamadas de hoy sin aplicar filtro alguno.
- Corregido problema al mostrar contexto a usar en llamadas salientes al activar y desactivar AMD.
- Corregido problema al guardar datos de formulario dinámico con algunos valores faltantes.