Changelog
Dinomi is committed to the security and protecting confidential and personal data, guaranteeing the continuous development of our call center platform and offering personalized development to our clients.
v1.1.14-0
changed
- Dialer: reduce period during which an idle work process (ECCPWorkerProcess) may remain idle after finishing work from 60 to 5 seconds. This prevents the idle process from keeping a database connection open without actually using it.
- Dialer: replace parsing algorithm for AMI Asterisk protocol in order to make 1.5 times faster.
fixed_bugs
- Dialer: stop considering as an error the scenario in which a call hangup request fails because the associated channel does not exist, if the call was independently hung up just before receiving the explicit hangup request.
- Dialer: optimize licensing verification at agent login time that previously would be very expensive to execute. Issue affected DINOMI ISO only.
- Calls Detail: fix recordings download that may serve an incomplete recording set.
- Agent Console: fix issue of showing the client name twice in the information screen for outgoing calls due to it being specially processed while not being removed from the standard attribute set.
- Add a new database index in order to speed up queries of scheduled calls on outgoing campaigns.
v1.1.13-0
changed
- Agent Console: update to UI Layout 1.8.5 in preparation for jQuery 3.
- Forms: prepare jQueryUI button handling for jQuery 3.
- Dialer: internal optimization of handling of multiple concurrent requests for campaign refresh.
- Dialer: changes in diagnostic information shown in log.
fixed_bugs
- Campaigns: Added several validations on unified libraries used for campaign handling
- Dialer: added a check for a valid hangup channel when logging out an agent that has one or more active calls. Previously, lack of said check could cause a dialer crash.
- Dialer: fix handling of outgoing campaign scheduled calls to a specific agent under Asterisk 13+.
- Dialer: migrated implementation of call hangup and channel variable querying to the AMIEventProcess main component. This prevents TOCTOU race scenarios between checking that the call channel is available and the worker actually issuing the Hangup or channel variable query commands.
- Agent Console: prevent inconsistent scheduling request when leaving the «Same Agent» button checked, then switching back into «Schedule at End of Campaign» mode.
- Dialer: fix method of Uniqueid comparison between call messages. Previously, due to the way PHP compares numeric strings, two Uniqueid strings that differ in the last digit could be incorrectly considered identical, leading to incorrect behavior.
v1.1.12-0
fixed_bugs
- Fix a race condition (Asterisk 13+) that might happen when parking a call, between the busy-to-free transition of a static agent, and message exchange that informs that the call parking was successful.
- Fix (Asterisk 13+) an incorrect classification that resulted in a call transition to Parked state causing an agent to incorrectly be considered busy with a call and ineligible for generating a secondary call.
v1.1.11-0
fixed_bugs
- Dialer: if a parked call could not announce its parking extension, an attempt to recover this call will now report an error instead of incorrectly reporting success.
- Dialer: implemented log message if a call enters a queue used by an outgoing campaign, yet does not match any of the tracked originated calls. Additionally, add a verification if a call has been incorrectly processed as an incoming call because its Uniqueid was not identified at queue entry time.
- Dialer: when generating outgoing calls from contacts, ignore all records where group ID is not assigned. This prevents incorrect dialing behavior when using third-party inserters that do not insert contacts correctly.
- Dialer: fix race scenario where a non-answer audit record could be attempted before having the incoming call insertion ID.
- Dialer: add missing description for outgoing call generation rejection, when the dialer has lost its AMI connection.
v1.1.10-0
changed
- Calls Detail: report has been expanded to show the following additional columns, if applicable for the call type and its final state: Dialing Start, Dialing End, Queue Start.
- Dialer/Agent Console: relax validation of extension for call transfer, so it can now accept asterisk (*) and pound (#) as valid characters in transfer target digits.
fixed_bugs
- (Asterisk 13 and later) Add handling of the DialBegin event, to fix inability to make call transfers and several other operations under Asterisk 13 and later versions.
- ACD Performance Display: fix incorrect grouping of incoming calls that were not recognized as belonging to a particular campaign (received outside campaign hour schedule), which were previously shown under the same queue, even if they were actually received through assorted different queues.
- Manual Call Report: impose ordering on reported calls using dialing start. Previously, due to a lack of a particular order, the listing was effectively in a random order.
- Calls Detail: define and impose, for each call type, a timestamp that is assumed always present, and represents the instant in which call processing begins. The chosen timestamp is the queue enter timestamp for incoming calls, and dialing start timestamp for all other call types. All calls are now shown in descending order using this timestamp, the most recent call first. This fix a longstanding bug in which failed or abandoned calls gathered at the END of the report instead of being shown in some chronological order with successful calls. In particular, this makes the report ordering consistent with the Manual Call Report.
- Dialer: fix longstanding bug in which, if one or more calls were still active and associated with an agent at logoff time, the code tried to hangup the calls synchronously. This synchronous mode (incorrectly) allowed reentrant event processing, including events for other agents, for which the dialer code was not prepared. This error led to internal RPC lockups between the AMIEventProcess and ECCPWorkerProcess dialer components. Additionally fix bug in AMI client code that prevented the very detection and rejection of reentrant synchronous AMI calls, involved in this RPC lockup scenario.
- Dialer: (Asterisk 13 and later): fix AMI event handling having a property of Uniqueid: not considered as not-yet-available Uniqueid. This bug led to attempts to write «» as a final value for Uniqueid in the database.
- Dialer: fix detection of hangup cause, to prevent information of a failed outgoing call from lingering in memory waiting for the failure cause before finally assume the call has been hanged up. This fix a known scenario of call collisions with fresh outgoing calls.
- Dialer: fix infinite loop and uncontrolled log spamming, which can happen when the outgoing connection to the webchat proxy succeeds at the TCP/IP level but then fails its SSL negotiation for any reason.
- Dialer (Asterisk 13 and later): fix bug in which a parked primary call was incorrectly considered as transferred outside dialer control, when a secondary call was also parked.
- Performance by Weekday: fix incorrect and unreadable downloaded PDF.
v1.1.9-2
changed
- Implemented RPC tracing for diagnostics
fixed_bugs
- Campaign Out: fix page initialization for campaign recycling broken by removal of contact reset support
- Queues: fix mojibake due to incorrect character encoding in FreePBX database query for version 14 and later
- Fix channel to use for supervisor chanspy on agent call (Asterisk 13 and later)
- Dialer: fix a few uses of undefined variables that could lead to a dialer crash
- Dialer: fix race condition that could lead to inconsistent state being written to database, if an incoming call enters an Asterisk queue and immediately exits before the initial call record can be written to the database.
- Dialer: fix dialer crash if agent tries to log out while the AMI connection has been lost
- Dialer: fix dialer crash if database connection has been lost and agent audit record repairing is attempted
- Agents Monitoring: fix failure to update page information for agents with a nick containing a dot (.)
- Agent Console: fix undefined ordering of dynamic form nodes that caused agent confusion
- Agent Console: fix failure to hide dynamic form nodes if all nodes that referenced the affected node weres themselves hidden
v1.1.9-1
changed
- The dialer process now implements a periodic Ping to Asterisk every 15 seconds using an AMI request. If the Asterisk server fails to answer the dialer ping within 60 seconds, the AMI connection is closed and reopened.
- Store hyperlink has been switched to the store at dinomi.com
fixed_bugs
- AutoIVR Campaigns: fixed bug introduced by restructuring that prevents any new automatic IVR campaign from being created. Existing campaigns were not affected by this issue.
- Dialer: changed mechanism for blind transfer handling by marking the to-be-transferred call, and then hanging it up in a generic way when unlinked from the agent. This should fix blind transfers to queues, other agents, or other specialized contexts.
- Dialer: fix dialer crash that might happen if the AMI connection disconnects, and then the reconnection attempt fails in turn.
- Dialer: fix dialer crash that happens when attempting to warn reception of a handled call while the agent is still on an active call (not on hold), if the active call is NOT the primary call.
- Agents Monitoring: fix agent search to make it case-insensitive.
- Dynamic Form List: fix interference in row clicking on form currently being modified.
- Manual Campaigns: (Elastix 2.x only) fix incorrect Smarty template that contained Javascript but failed to wrap it with literal text tags.
v1.1.9-0
changed
- Added new module of Scheduled Outgoing Calls (DINOMI Manage –>Outgoing Calls–>Scheduled Outgoing Calls). This module lists all calls that have been scheduled by agents for outgoing campaigns. This module can filter by date, by source campaign, phone, team, agent, and call status (any scheduled call or uncontacted calls only). If an scheduling has not exhausted all retries indicated by the campaign and has not been successfully contacted the client, this module can remove the schedule and assigned agent, in order for the call to be dialed as an ordinary call along with the remaining campaign contacts. The Outgoing Campaign module now contains a per-campaign link to this module with filter set to the campaign.
- Calls Details: visiting the module does not automatically run the report anymore. Instead, to run the report the user should now explicitly choose the call type to display. This mitigates the use of a slow SQL query that combines multiple call types into one report. The previous behavior of combined report is still available as the «all call types» option in the report filter dropdown.
- External URL: added warning icon when the interface is served through HTTPS (the default state) but the embedded external URL specifies http:// as protocol. This insecure embedding is blocked by modern browsers, and the icon will alert of this fact.
- Dialer/Agent Console: implemented form-based agent authentication for Asterisk 13+, since telephone keypad-base authentication has been removed since Asterisk 12.
- Agent Console: break switch has been moved to be closer to the mouse pointer when displaying the available break dropdown.
- Agent Console: implemented loading of custom CSS for styling specific attribute values of currently handled call.
- Agent Console: implemented resizing of agent console with mouse to stretch it to fill space of large monitors.
- Dialer: internal reworking to remove several verification polling loops that ran every few seconds.
- AutoIVR Campaign: CSV download now reports the AMD status of the call.
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: fixed behavior when an agent dials (in a manual dialing campaign) to an internal PBX queue that connects to another logged-in agent. In particular, the dynamic agent that originates the call will no longer enter an inconsistent state if bridged to a logged-in static agent, and will keep control of the call enabling hangup.
- Dialer: remove unclosed formpause audit record leak that was triggered when a formpause starts after the agent handles a call, then dials a brand new manual dialing campaign call while the formpause of the previous call is still in effect instead of saving form data.
- Dialer: update handling of Asterisk AMI protocol to account for a change in Asterisk 14 and later in the way the AMI «Command» request reports the output of the executed command. This fix also affects the Assign Agent to Queues module.
- Dialer: fix unnecessary and costly agent information reload that can happen if two or more DINOMI instances (in different servers) make use of the same Asterisk server simultaneously.
- Agents: fix infinite loop that happens if the creation of the agents.conf file for the very first static agent (FreePBX 13 or later) requires a complete Asterisk core restart, which necessarily triggers an AMI disconnection.
- Dialer: fix inability to put an outgoing campaign call on hold in Asterisk 13 and later.
- Dialer: fix handling of manualdialing/outgoing calls that return from hold in Asterisk 13 and later.
- Dialer: fix dialer confusion that triggers an immediate false outgoing call disconnection event right after being assigned to an agent in Asterisk 16.
- Agent Information: include audit information for unfinished agent sessions in report in order to prevent calculations with erroneous session intervals.
v1.1.8-2
changed
- Dialer: Implemented an optimization when generating ECCP events in order to avoid having to rebuild an entire XML document for every single active connection that needs to receive events. This optimization improves performance when hundreds of agents/monitors connect to the dialer simultaneously.
- Campaign Out: REMOVED support for campaign recycling through reset of dialed numbers. This recycling method disrupts the Calls Details report and confuses the operator. From now on campaign recycling can only be done by cloning the contacts into a new campaign.
- Agents, Agents Monitoring: added filter by agent name to aid search for specific agents.
fixed_bugs
- Dialer: Fixed race condition between handling the response to the AMI Park command and the arrival of the ParkedCall message. Before this version, this error resulted in a indefinitely hung ECCP request until the dialer was restarted. Additionally, before 1.1.8-1, this lockup could trigger an infinite busy loop.
- Incoming Calls Monitoring: implemented an optimization for initial report construction that replaces several queries to the same database table with a single one. This change improves performance when building a report containing many (50+) incoming queues.
- Dialer: allow hangup of a manual dialing call that dialed an internal PBX queue extension, and is still in the call queue. Before this change, this call could not be hung up through the Agent Console, and needed to be hung up with the phone extension.
- Several reports were modified to account for calls that entered a queue but were not identified as belonging to any incoming call. Affected reports are Hold Time, ACD Performance Display.
v1.1.8-1
changed
- Implemented per-campaign flags to specify predictive behavior, QoS percent and call overcommit flag. By default, the global configuration is used. The flags are tri-state: use global configuration, always enable feature, never enable feature.
- The queue number of the queue that handled the call is now available as an additional parameter in the External URL, as the template variable {QUEUE_NUMBER}.
- Added Issabel support to ccprorecordings.php so that the DINOMI ISO webphone (versión 1.1.1-0 or later) can configure the SIP websocket connection. In order to use this support, first update the DINOMI ISO webphone module (yum update dinomianywhere-webphone-panel) and then copy the updated version of ccprorecordings.php to the Issabel machine.
- Added links to store.palosanto.com in About Us and Licensing modules so the user knows where to buy licenses.
- Campaign Monitoring: campaign dropdown list is now classified by campaign type.
fixed_bugs
- Fix dialer crash due to race condition between customer-initiated call hangup and an attempt to send the same call to hold. Additionally add precondition diagnostics for the send-to-hold process.
- Fix race condition between running an internal task and waiting for an internal RPC response that causes an infinite loop that locks up the affected task (almost always ECCPWorkerProcess).
- Add diagnostics so the dialer reports if an internal RPC takes more than 60 seconds without sending an answer.
- Add validation so that a campaign may no longer be associated to an inactive team.
- Dialer: removed incorrect emission of PauseEnd (ECCP) event if the call hold (using Park in Asterisk) has failed. This fixes an inconsistent state entered by the Agent Console.
- Agent Console: always close PHP session temporarily opened when handling some ECCP event scenarios. This removes scenarios in which commands from the browser console (hang call, enter/exit pause, etc) hang for a long time because the PHP session lock was taken and not promptly freed. Detected when fixing the previous bug.
- Dialer: added check on whether required dialplan context ccpro_llamada_agendada exists every time a call is scheduled to a particular agent. This detects failure to properly set up DINOMI ISO before the dialer actually tries to send a call through a nonexistent context.
- Dialer: fix incorrect SQL parameter count in update query to mark a manual dialing contact number as found in the DNC (Do Not Call) list.
- Dialer: fix inability to schedule call to a phone number, when this phone number has already been use in a previous scheduling in the same campaign, yet all retries for the previous scheduling have been made.
- Dialer (ECCP): fix failure to emit schedule-failed event after performing the last retry of a call scheduled to an agent.
- Incoming Calls Monitoring: display a more user-friendly error dialog if this monitoring module is displayed when the dialer is not running.
- Performance per Agent: remove HTML tags incorrectly added when downloading report file.
- Callcenter Config: prevent assignment of 0 as a agent inactivity timeout. This prevents failure to login the agent as the dialer rightly reject this value as invalid.
v1.1.8-0
changed
- All campaign types with agents (incoming, outgoing, manual dialing) may now contain a list of channel variables associated with the campaign. When displaying call information for a campaign call in the Agent Console, these channel variables will be queried, and the corresponding value will be shown as additional attributes in the console. This feature enables integration of AGIs that assign channel variables into the DINOMI workflow.
- The dialer now discriminates additional reasons for an agent logoff: “agentrefresh” if the agent voicechannel has been modified while logged-in, “agentqueuekickout” if the agent was removed from Asterisk queues by an entity other than the dialer, “agentsesshangup” if the static agent call was hung up by an action not initiated by the dialer. These additional states may be viewed in the Login Logout report (ccpro_login_logout).
- External URL: implemented deleting external URL records. For an external URL to be deleted, it must not be in use by any active campaign.
- Campaign CSV download now contains the agent description in addition to the agentnick.
fixed_bugs
- IVR Scripts: Fixed Cancel button in script creation form that was previously broken.
- Multiple forms: restored Cancel button operation, that would be blocked if at least one empty field had the «required» attribute.
- Supervisor Accounts: it is no longer allowed to assign an inactive team to a supervisor.
- Dialer: largely eliminated the instances of log messages reading “fwrite(): send of 8192 bytes failed with errno=11 Resource temporarily unavailable” that would spam the logs in some scenarios.
- Agent Monitoring: optimized SQL queries used by this monitoring when many agents are present in the system.
- Login Logout: optimized querying of time spent in various call types, which previously used an inefficient SQL query when selecting a large time interval.
- Efficiency by Agent: also include time on calls that were dialed but were never answered in the ringing time column.
- Dialer: fixed bug in which, if an IVR script was tested through an extension, and the call was hung in the middle of a FastAGI action (such as in the middle of an audio playback) the call information was never flushed from the dialer until restarted.
- Dialer: fixed behavior when an error occurs in an step of an IVR script used by a campaign. Previously the call would be hung on any error. Now, if the error does not arise from a hung call, the script continues to the next step.
- Agent Console: fixed bug in which two or more agents would be incorrectly allowed to simultaneously log in using the same static agent and different extensions. This bug was introduced when migrating to the voicechannel implementation in 1.1.0.
- Agents: fixed bug in which, if an static agent was assigned to a queue and then the agent was deleted, the astdb membership was not updated to remove this agent.
- Added missing permission for manual dialing campaign module to supervisor groups.
- Campaigns (all types): fixed potential XSS when refreshing list of allowed dynamic forms in campaign creation form.
v1.1.7-3
fixed_bugs
- IMPORTANT: fixed a code pattern executed when evaluating the agent state which, when repeatedly executed with a connected call, triggers a memory corruption bug in PHP and causes a dialer crash. This bug is only present in PHP 5.1/Elastix 2.x and is a separate bug from the one fixed in 1.1.7-2.
- Agent/Campaign Monitorings: agent time counter is now reset after a manual/secondary call attempt fails.
- Dialer/Campaign Monitoring: fixed non-reset of time counter when manual call attempt has just been placed.
- Campaign Monitoring: fixed bug when adding agent to campaign or queue that caused failure to update the time counter when connecting a call to that particular agent until the realtime interface was refreshed.
v1.1.7-2
changed
- All monitorings (Agents Monitoring, Campaign Monitoring, Incoming Calls Monitoring) now have a counter of evaluated events at the right of the blue bar. This counter increments with every batch of events received by the browser, and also displays the method by which events are received: SSE or LP. The SSE (Server-Sent Events) method is the most efficient and is used in all modern browsers except for Internet Explorer and Microsoft Edge. The LP (Long-Polling) method is less efficient and should be avoided if possible in order to preserve CPU resources in the DINOMI server.
fixed_bugs
- IMPORTANT: work around a SourceGuardian encryption bug that caused a crash and abnormal restart of the dialer if the agent attempts to enter a global pause (not associated to a campaign). This error only happens on PHP 5.1/Elastix 2.x.
- Agent Console: fixed bug in which, if one or more secondary calls are connected, the agent switched into the primary call (thereby parking all secondary calls) and then hangs the primary (or gets hangup remotely), the active call panel disappeared and the panel button became deactivated, therefore blocking any interaction with the still-connected secondary calls.
- Dialer/Agent Console: fixed bug in which, if a secondary call is active, the primary call is closed while parked, and a second secondary call is started with the first secondary parked but still connected, any further attempt to start more secondary calls failed until all existing calls were closed by the agent.
- Dialer/Agent Console: fixed bug in which the event that indicated failure to connect a manual/secondary call did not have an associated agent, resulting in the call failure leaving the console in the ringing-wait state (magenta) instead of reverting to the idle state (blue).
- Dialer: fixed bug in which, if an attempt to dial a manual call was blocked by the internal dialer state (for example, because of a collision with an in-progress call), the corresponding contact was incorrectly left with the call reservation flag set in the database. This bug was discovered while investigating the next bullet point.
- Dialer: fixed bug in which, if a manual/secondary call could not grab the agent channel in Asterisk (for example, because the agent started or received a call not tracked by the callcenter, or because the agent channel is not yet freed by a call parking operation), the call information would linger in the dialer by up to 30 seconds while waiting for a failure cause that is never emitted in the examined scenario. This blocked the agent from retrying the failed call until the dialer flushed the failed call information.
- Dialer/Agent Console: fixed race condition in which, if the agent is connected with a primary call, and then started the dialing of a secondary call without first parking the primary call in a separate action, the success indication from the parking could be received by the console BEFORE the agent channel was freed by Asterisk, resulting in a dialing failure, and additionally triggering the scenario fixed in the previous bullet point.
- Incoming Calls Montoring: queues marked as inactive are no longer shown in the monitoring.
- Agents Monitoring: when hanging a primary call, the idle state counter is now reset for all queues regardless of whether the call was received by that particular queue.
v1.1.7-1
fixed_bugs
- Fixed regression when making an attended call transfer introduced by the multiple secondary calls feature.
- Agent Console: fixed representation of handled callset (primary and secondary calls) when refreshing browser.
- Fixed handling of browser refresh when using webphone with an active call. Previously this action broke attended transfers for the agent.
- Fixed consistency of realtime monitorings (Campaign/Agent Monitoring) when using secondary calls.
v1.1.7-0
changed
- Implemented campaign pausing feature. In the Break Administration module, it is now possible to define a new break type, the campaign pause. These pauses can be associated to individual campaigns, both incoming and outgoing (but not manualdialing) campaigns in each campaign administration module. When used by an agent, the campaign pause will only stop calls from being received by the agent on the queue belonging to the associated campaign, leaving all other queues and campaigns unaffected and still able to receive calls. Both campaign and global pauses may be active simultaneously (up to one campaign pause per agent and campaign).
- As a part of the campaign pause feature, the agent is now able to see which campaigns (s)he is a member of, with real-time update of this membership.
- Implemented multiple simultaneous secondary calls per agent. If the agent is authorized to make secondary calls, the agent is now able to put the secondary call on hold in order to place another secondary call, recover the primary call while secondary calls are on hold, and otherwise keep multiple simultaneous calls. Only one of the calls (either primary or one of the secondary calls) may be actually active (speaking with the agent) at any one time.
- Call transfer (blind or attended) is now allowed for secondary calls, if the call has been selected as the active call.
- New Breaks Details module. This module just lists all breaks taken, with filters by date range, agent, specific break and pause type.
fixed_bugs
- IMPORTANT: licensing verification was tweaked so it works with dmidecode version 3.1-2 and later from CentOS 7, that breaks licensing verification for all previous versions.
- Fixed regression in call generation in which a too-inclusive codec specification may cause Asterisk to bridge calls with inefficient transcoding chains, resulting in an excessive CPU usage per each bridged call.
- Fixed absence of a CallerID in calls generated by the dialer on behalf of the agent. These include manualdialing calls, secondary calls and park recovery calls.
- Fixed inability to hangup a manual or secondary call that is still in the process of being dialed. Now the hangup button of the Agent Console should work even in this scenario.
- Fixed incorrect inactivation of incoming or outgoing calls that are still being dialed, if the start date is the same and the end date, and campaign information is refreshed in that date.
- Fixed problem in socket handling by the dialer in which a socket write failure with EAGAIN and 0 bytes written would incorrectly cause the socket to be closed. This could result in one or more of the dialer process to disconnect from the message bus when very large messages were sent and received, and get stuck in an infinite loop.
- Optimized various scenarios of high-frequency ECCP events, in which the event building required a database read of information that was already available in dialer memory. This particularly affects manual dialing calls.
v1.1.6-2
fixed_bugs
- Fixed a bug in low-level stream handling for ready-to-write sockets, in which some scenarios ended up trying to write a 0-byte buffer, and the result was incorrectly interpreted as a socket error and proceeded to (erroneously) close the socket. In particular, this affected the inter-process communication pipes, and this could result in one or more dialer processes getting stuck in an infinite loop.
- The dialer startup script (/etc/init.d/dinomidialerpro) has been updated to LSB 3.1.1 with proper control headers for systemd cooperation. This should fix the service startup problem in DINOMI ISO where the dialer tried to start up BEFORE the database engine service, rather than AFTER.
- Fixed potential dialer crash when trying to assign a CallerID to a call that lacked one, due to a missing API parameter.
v1.1.6-1
fixed_bugs
- Dialer: fixed call to a no-longer-existing method of a connection when handling a hangup of an automatic IVR call. The symptom was a dialer crash if the autoivr call was hung up in the middle of a playback.
- Dialer: fixed incorrect handling of the SIGCHLD signal that caused one or more processes to consume all CPU shortly a launched or forked child process terminates.
v1.1.6-0
changed
- Manual dialing campaigns: implemented ability to assign each contact from a CSV upload to a particular agent. This allows each agent to have an independent set of contacts within the shared manualdialing campaign. To use this, the contact upload dialog now contains an agent selection dropdown. This can be set to (no) for the previous behavior, to an specific agentnick, or to the agentnick contained in a specific column of the upload (by position or column tag).
- Campaign Monitoring: each message added to the message list now scrolls the view to the bottom in order to keep the last message visible.
- Efficiency by Agent: new column shows idle time per agent.
- New configuration flag that hides some digits from the phone calls in the Calls Detail display when viewed by a non-admin.
- The campaign modification dialog for all campaigns has been reorganized using tabs as a visual cleanup and as a preparation for a future campaign functionality.
- Brazilian Portugese translations contributed by Fábio Vital from GVP Brasil.
fixed_bugs
- Dialer: fixed potential error in which the alarm that signaled the scheduled start for an automatic IVR campaign was not being installed. The consequence was that an autoivr campaign that was scheduled to run in the future, rather than right now, would fail to start.
- Dialer: fixed bug in which an incoming call that arrives through a queue NOT being used by an active incoming campaign would fail to update its in-database status from on-queue to handled-by-agent, even when correctly assigned to an agent.
- Dialer: tweaked call generation from Asterisk so all configured codecs are negotiated. This allows a videocall to be put on hold and then recovered with video intact.
- Manual dialing campaigns: fixed bug in which an attempt to save 0 (zero) as the number of entries of the call history (in agent phone entry mode) was ignored and would save an empty value in its place, allowing an uncapped number of entries to be loaded.
- Outgoing/Manual dialing campaigns: fixed bug when loading new contacts into a finished campaign, that assigned the ACTIVE campaign flag without refreshing the dialer state. The consequence was that the campaign would appear as ACTIVE in the campaign list, yet the dialer would not run calls from it.
- Queues: fixed failure to refresh the dialer state when queues are created, enabled or disabled. Additionally prevent a queue from being disabled if there is at least one active campaign using it.
- Agent monitoring: ringing start on a manual call now resets the last state counter, as done in Campaign Monitoring.
- Agents: fixed a bug that prevented update of the password or description of an existing static agent (chan_agent) in the Asterisk configuration, except by deleting and recreating the agent channel.
- Licensing: fixed bug in which an incorrectly-encripted file caused the licensing module to fail to run if a trial license expired.
- Supervisor Accounts: multiple supervisors on the same team are no longer allowed.
- Dialer: performed general tuning of event handling in order to optimize out unnecessary verification loops. In particular, one database read that was performed every 3 seconds by every single ECCP worker process (to check if the configuration had changed) has been removed.
v1.1.5-0
changed
- Manual dialing campaigns: implemented a limit to the call attempt history fetched by each agent when the campaign is running in explicit phone entry mode. If the campaign runs for a long time, it is recommended to set this limit to a value of 500 or below.
- Implemented virtual campaign delete. Previously, the act of removing a campaign always removed the call data for this campaign, which could impact reports. If this is unacceptable, it is now possible to enable virtual campaign delete (through the General Configuration module), so that the campaign will be merely marked as permanently unavailable, while preserving call history and data.
- Agent Console: if the agent was in a pause while starting an explicit phone dial, the pause is now terminated when the dialing starts instead of only when the call is connected.
- About Us: the dinomi.com site now uses HTTPS exclusively. External links to the changelog were fixed to match.
fixed_bugs
- Fix dialer crash that happened whenever the dialer fails to figure out a channel component on an active call, and then this same call is put on hold.
- Silenced noisy warning messages in the dialer log when building information on a call being dialed.
- Outgoing campaigns: fixed error in campaign recycling in which contacted contacts could be selected for recycling even if the selection filter specified uncontacted contacts.
- 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.
- Campaign monitoring: fixed SQL syntax error that caused a failure to read the campaign log if an outgoing campaign was monitored.
- Campaign monitoring: campaign log read is now allowed for manual dialing campaigns.
- Campaign monitoring: include start of manual call ringing as a state that resets the time counter of the last agent state.
- Agent monitoring: fix regression that caused unnecessary request activity to the server when the report is running in long-polling mode.
- The dialer now implements terminating idle worker processes if more than one minute passes since the last use. This allows closing of database connections that otherwise could accumulate and reach the database server limit.
- Agent console: tune the agent activity keepalive to reduce the workload on the dialer, especially with many simultaneous active agents.
- Fix dialer crash that happened if a secondary call is started, and then terminates with a failure.
v1.1.4-0
changed
- Campaign Monitoring: implemented realtime monitoring of manual dialing campaigns. Separate icon types are used for ringing and busy status of the outgoing call.
- Campaign Monitoring: absolute time counters are now used and updated everywhere instead of timestamps since call start/login/pause start.
- Campaign Monitoring: a different color is used if the agent is busy with a call from a campaign other than the monitored one. This icon is a link that switches the monitoring to the campaign that originated the foreign call.
- Agent Monitoring: special icons are now used for manual dialing calls and its states.
- Agent Console: when using a manual dialing call in explicit phone input mode, a history of past call attempts is now displayed with a search function when typing a new number.
fixed_bugs
- Campaign Monitoring: show a dash as the counter instead of the word «null» if the agent is busy with a call not from the monitoring campaign.
- Fixed the SQL query used for fetching the next phone numbers of the outgoing campaign so it does not spend several minutes querying a contact database with hundreds of thousands of numbers.
- Fixed automatic IVR behavior when the call is hung up in the middle of interaction, to prevent further IVR commands from being executed with a dead channel.
v1.1.3-0
changed
- An optional timeout attribute has been added to all break definitions. If a timeout value (in seconds) is assigned to a break type, and then an agent spends more than this amount of seconds in a pause using this break, the monitoring icon in both Campaign Monitoring and Agent Monitoring will change into a pulsating orange warning icon.
- The Campaign Monitoring (ccpro_campaign_monitoring) module now uses a time counter instead of a static timestamp for the agent interval display.
- The Campaign Monitoring module now displays the agent name and channel in addition to the agent nick.
- Both Agent and Campaign Monitoring were tweaked to reset the time counter when the agent exits a break, instead of counting from the last handled call.
- The agent management module (ccpro_agents) was updated to sort agents by agent nick order.
- The queue assignment module (ccpro_assign_agents) was updated to sort the queues by queue number.
- The IVR script test will now provide the dinomi_call_phone value for any COMMAND type step present in the IVR script.
- The dialer behavior has been improved to better handle an abnormal exit of the AMIEventProcess dialer component.
fixed_bugs
- Fixed a bug in IVR script execution that caused a conditional jump to never happen if a conditional jump was set based on the value of a DTMF entry, and simultaneously the step assigned a translation value to save the DTMF entry.
- Prevent use of a null reference to an Asterisk AMI connection if an operation on any queue, agent or call happened at the exact moment the dialer had lost its AMI connection.
- Fix regression that caused the agent row in Campaign Monitoring to not disappear if, in another browser session, the queue assignment module was used to remove the agent from the campaign queue.
- Fix error in the French translation file of the Callcenter Config module that inserted an extraneous newline character in all output, including the download of the ccprorecordings.php script. This corrupted script, if uploaded to a remote Asterisk, would then corrupt all recording downloads by insertint this same extraneous newline character. If using the French locale, in order to recover from this error, it is necessary to re-download the ccprorecordings.php file after updating, and then copy the file to the remote asterisk, overwriting the corrupted script.
- Fixed failure to reset the Hold button of the Agent Console if a call was on hold when agent logs out.
v1.1.2-0
changed
- A new source of variables for the Automatic IVR has been implemented. The Call Attempt Attribute source contains values taken from the current call attempt. Available values are: phone start_time id_campaign id_contact id_contact_number id retry. In particular, the currently-dialed phone number is now available as the «phone» variable.
- A new type of IVR step has been created: the COMMAND step. This step allows execution of an external program that can perform arbitrary actions to extend the IVR functionality, and can also assign variables to save. For communication, this program should follow the AGI protocol: the program receives all agi_* variables received through FastAGI, followed by variables of the form dinomi_[campaign|contact|save|call]_{KEY} for all variables available through the campaign. In particular, the dinomi_call_phone key contains the currently-dialed phone. An implementation of SET VARIABLE (https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+AGICommand_set+variable) is supported in order to assign variables to save as part of the call, to be later retrieved through the CSV download.
- The licensing modules (ccpro_about, ccpro_licensing) now use an unified library in order to download and install licenses. Additionally, more explicit error messages are displayed if the license could not be obtained. This enables, specifically, detection of a licensing request that was blocked by an intermediate intranet proxy.
- The order of tabs in the General Configuration module was changed so that it does NOT show the selection of the call_center_pro location as the very first item. This option is for expert configuration only.
- The Agent Monitoring module now shows, for each idle agent, the idle time from the last call, instead of the time from the start of the agent session.
- The CSV download for outgoing calls now includes the AMD status for the call.
- The Campaign Monitoring module now shows the agent name and the agent channel, in addition to the agent nick. Additionally, the icons and colors used by the Agent Monitoring module are now reused.
- The Campaign Monitoring module now shows the timestamp in which the currently idle agent last became idle, instead of showing a blank filler.
- The manual dialing campaign now has a flag for automatic agent un-pausing. If this flag is active, if the agent initiates a manual call while paused, the pause will be terminated when the call is connected.
- Internal cleanup – a generic CSV download library has been extracted from all campaign download modules. This allows sharing the code between all campaign modules, including the tricks to save memory while downloading, that were previously duplicated in several modules.
fixed_bugs
- Fixed inability to dial an outgoing campaign call using a direct trunk of type IAX2.
- Fixed inability to start a SSL connection from the dialer to the webchat proxy under PHP 5.1/Elastix 2.x.
- Fixed invalid pagination and filter control links in Chat Service Level module.
- Fixed inability to remotely interact with remote IVR recordings using ccprorecordings.php if the remote asterisk exposed the webserver using HTTP but not HTTPS.
- The ccprorecordings.php script now allows downloading of recordings if the Asterisk recording directory (astspooldir) contains one or more path components that are symlinks. Previously the download was denied as a security measure. In order to apply this fix, the ccprorecordings.php script must be replaced in the remote Asterisk server.
- The configuration module now checks that the AMI user for the dialer has the minimum privileges necessary to work, and rejects setting an AMI user with insufficient permissions.
- Fix missing stripping of the $ASTSPOOLDIR/monitor prefix from a recording path when recording an incoming call, making the behavior consistent with other call types. The symptom of this issue was an inability to download recordings from incoming calls when using a remote Asterisk, as done in DINOMI ISO.
v1.1.1-0
changed
- Implementation of secondary calls. Once authorized (by the campaign or through the agent configuration), an agent handling a call from any campaign type (incoming campaign, outgoing campaign, manual dialing) may now use the hand sign button in the Agent Console to put the call on hold. The agent will then have a text box where an arbitrary phone number may be entered, and the dialer will start the secondary call and connect it to the agent extension. This operation may be repeated an arbitrary number of times. After this the agent may pick up the primary call and restart the conversation. The secondary calls are currently visible in teh Calls Detail report as a dropdown under the primary call, when clicking on the digit stating the number of secondary calls. NOTE: in order to use this functionality, the Asterisk Call Parking functionality needs to be enabled through the FreePBX admininstration GUI, and a number of parking slots created at least as large as the number of authorized agents for secondary calls.
- The manual dialing campaign now has a new mode of phone handling. If the manualdialing campaign type is set to «Agent Phone Entry», the agent will have a textbox for phone entry instead of contact navigation. Multiple phone numbers may be entered at once. The Agent Console will create a new contact with the entered phone numbers and (if the Automatic Dial on View flag is enabled in the campaign) will try to dial the numbers sequentially until one of them answers the call. These created contacts appear as ordinary contacts in the CSV download for the campaign.
fixed_bugs
- Tweaked license verification code path in Agent Console in order to cut 1-2 seconds from each operation performed by the agent, and up to 4 seconds from the initial console loading.
- Implemented storing of the number used in a call transfer attempt on a manualdialing call.
- Fixed activation state on the lateral panel of manualdialing campaigns – previously this panel could appear closed even if the activation button (pointing hand) was displayed as active.
v1.1.0-0
changed
- New feature: implemented webchat agents. Once the required number of agents have been licensed, a chat dialog can be embedded in a public web page. The page visitor may enter a nick and a topic and will then enter a chat session. Agents with chat service enabled will see the new conversation and may now enter the chat session and chat with the page visitor.
- As a prerequisite for the above functionality, the agent identity is now separate from the voice channel to use. During the agent lifetime the administrator may associate it with several telephony extensions, or none at all. The update migration will generate standard agent nicks from existing assigned voice channels.
- Large re-structuring of agent administration module. Now static and dynamic agents appear in a single listing.
- Campaign Monitoring: implemented generation of campaign evaluation events. These events allow the supervisor to know when the dialer is evaluating the campaign to see if calls should be generated.
- About Us: added links to online changelog in dinomi.com site.
- EXPERIMENTAL implementation of REST URLs for campaign contact upload: https://user:password@dinomisrv.example.com/rest.php/[ccpro_campaign_out|ccpro_campaign_manual|ccpro_campaign_autoivr]/campaigns/{CAMPAIGN_ID}/contacts . Please contact soporte@palosanto.com for instructions on how to integrate this in your installation.
fixed_bugs
- Fixed incorrect installation of logrotate configuration file (with incorrect +x permission) that causes the logfile to grow indefinitely without ever being rotated.
- Fixed handling of incoming and manualdialing campaigns without assigned forms.
- ACD Performance Display: prevent division by zero if there are no calls in examined interval.
- Optimizations to save database reads of data that dialer already has in memory. This should improve the following ECCP event paths: dialing progress, agent linked to call.
v1.0.0-38
changed
- Agent Monitoring: now the realtime monitoring shows the extension used by the static agent for the agent login.
- It is now possible to define the ShortCall threshold per-campaign, rather than in the global configuration. Additionally the autoivr campaign now ignores the short call threshold by default, and it has to be explicitly enabled per campaign. This prevents the common case of campaign calls consisting of a very short recording from automatically being classified as short calls.
fixed_bugs
- Fixed severe bug in which an incorrect verification of the MySQL password in /etc/elastix.conf breaks DINOMI installation if the call_center_pro database did not previously exist, with a (incorrect) message that the stored password is invalid.
- Disabled excessive phpagi logging in multiple places where it interferes with the legitimate webserver logs.
v1.0.0-37
changed
- For Elastix 2.x the minimum required version is now 2.5.0-11, because this version first introduced the FontAwesome icon font used in several DINOMI modules.
- If the pigz package (multithreaded gzip compression) is available, bulk recording downloads will use it to accelerate the recording tarball compression by using all cores of the DINOMI server.
- Manual campaigns now have an attribute that signals that the agent must claim a contact as exclusive by the act of viewing the contact. This mitigates the issue of one agent being unable to dial a number in a contact because a second agent already started dialing the same contact.
- Agents Monitoring: use FontAwesome icons instead of image files. Use an icon instead of the word «LOGOUT» for visual consistency. The status tags associated with the icons are now translatable. Removed useless pagination in the realtime report grid. Fixed translation inconsistency that caused the report title to always display in English.
- Agents Monitoring: added buttons to collapse queues in the realtime report so the supervisor can collapse all but the particular queue to be examined.
- The outgoing and incoming campaign listings now have icons to jump directly to the Campaign Monitoring report for the corresponding campaign.
- (internal) Multiplexing of ECCP sessions in one TCP/IP connection,for future functionality.
- The dialer no longer hardcodes /var/spool/asterisk as the base directory for recording files, and instead parses this from the Asterisk configuration files on startup.
fixed_bugs
- Fixed dialer bug in which an unexpected close of a TCP/IP connection after the internal event loop stopped expecting data to read from the socket, but with pending data to write, could cause the process (usually ECCPProcess) to enter an infinite loop that consumes all the CPU time and also spams the log with PHP socket error messages.
- Fixed dialer bug in which the maximum number of channels per campaign only limited the number of generated calls in a single campaign evaluation cycle, instead of the total number of active campaign calls (as intended). This could cause call connection failures if the trunk actually enforces a simultaneous call limit.
- Fixed bug in Incoming Calls Monitoring in which an infinite refresh loop could be created if a campaign used a queue but was outside the time range for the campaign, and a call was received on that queue.
- Fixed problem in DINOMI dependencies for Elastix 2.x, if the php-pecl-json package was not already installed, that caused any attempt to install or update DINOMI through «yum» commands to drag an incompatible dependency on the php53-json package.
- Now, when a agent handling a manual call schedules a new phone on the contact and also activates the option to schedule to the same agent, the dialer will assign exclusive ownership of the contact to this agent.
- Added a validation check when installing/updating the RPM package so that the MySQL password in /etc/elastix.conf is actually valid, and aborts the install/update if not.
v1.0.0-36
changed
- Bulk recording download: there is now a button in the Calls Detail report labeled «Recordings TGZ». When clicked, this button will generate and download a gzipped tarball with the call recordings for all calls appearing in the current report with the active filters. For the remote Asterisk scenario this functionality requires copying an updated ccprorecordings.php file to the web document root of the Asterisk server.
- (For developers) Implemented a framework for plugins that handle form data to be saved through the Agent Console. This allows writing plugins that save data to alternative backends without touching the core implementation of the Agent Console.
fixed_bugs
- Fixed regression that broke ability to make a call to the automatic IVR for the remote Asterisk case.
- When the static/dynamic agent list is updated in the web GUI, the list of valid agents in the dialer is now automatically updated.
- Error messages in the Agent Console are now slightly more descriptive.
- Fixed potential bug in which an agent could be used with incorrect ID if it has been activated and deactivated several times.
v1.0.0-35
changed
- Implemented download of Do Not Call database.
- ACD Balance: extend report to separate incoming calls into answered and abandoned calls.
- Agent Console: use icons instead of labels in action buttons in order to save screen space.
fixed_bugs
- Add php-json dependency to package in order to import php-pecl-json dependency in Elastix 2.x. The php-pecl-json package is used in the licensing timeline module.
- Fix incorrect consistency warnings when generating autoivr calls.
- Allow update from a DINOMI ISO version without autoivr support to one that does without forcing an explicit value for FastAGI IP when saving configuration in the General Configuration module.
- Fix scenario in which the dialer will keep generating calls on a disabled campaign if some calls are still active when the campaign was disabled.
- Fix repeated attempts to use the DeviceStateRefresh AMI command when Asterisk reports the command is not supported.
- Implement telling apart a genuine AMI error from an agent without call in the transfercall and getchanvars ECCP requests.
- Fix incorrect update of a random outgoing campaign when transferring a call on a manual dialing campaign.
- Efficiency By Agent: remove HTML encoding and HTML tags when downloading in CSV/PDF/XLS formats.
- Performance by Day: change line graph into bar graph to handle better the single-data-point scenario.
- Various fixes in handling of expired campaigns: date range of campaign is checked when the campaign exits its time range, in addition to checking it on midnight. If the dialer loads an active campaign with a date range behind current date, it is automatically marked as expired. All campaigns with expired date ranges are marked with an icon, and simple reactivation is prohibited.
- Call Duration Histogram: fix behavior when the date range spans a single day.
- Fix problem in DINOMI ISO in which a dot (.) character in the username or password could confuse the CURL library and prevent download of remote recordings.
v1.0.0-34
changed
- Allow autoivr/outgoing campaigns may now specify the context in which outgoing numbers are dialed in the «use dialplan» mode (the default). For compatibility, the default value is «from-internal».
- Allow autoivr/outgoing campaigns to specify a custom CallerID to use in the generated call.
fixed_bugs
- Dialer: improve campaign handling in order to not evaluate recently-deactivated campaigns.
- Dialer: prevent scenario in which scheduled calls may cause a NULL object reference when fetching call information.
- Dialer: prevent incorrect state transition if a call receives an OriginateResponse after being linked to an agent. In some scenarios this causes a call to be marked as failed even if it has been assigned to an agent.
- Dialer: prevent SQL error if MIXMONITOR_FILENAME is assigned for an autoivr call that is routed through an outgoing trunk/route with recording enabled.
- Dialer: use a channel variable to tag calls in the direct trunk dialing scenario in order to identify the outgoing channel and therefore being able to identify the failure cause if the call fails.
- Dialer/Agent Console: fix scenario in which form pause was terminated even if form save fails.
v1.0.0-33
changed
- Implemented a verification for queue date/time schedule when creating/updating campaigns. This replaces the previous verification and allows two or more campaigns to use the same queue at different times of the day in overlapping date ranges.
- Optimized ECCP worker processes so they open an AMI connection only when the ECCP request needs it.
- Optimized wait for terminated process to reduce delay on dialer shutdown .
fixed_bugs
- Fixed bug that prevented honoring the number of free DINOMI licenses in DINOMI ISO. This fix was previously published in DINOMI ISO version 1.0.0-32.1 .
- Fix bug in ccprorecordings.php script that prevented download of remote recordings of type .wav49 . This fix requires the script to be replaced in the remote Asterisk system.
- Fixed error in use of CURL API that prevented the use of dot (.) and at (@) characters as valid characters in the AMI username or secret when checking the FastAGI remote IP.
- Fixed label for team list dropdown in Calls Detail module that could be interpreted as if all teams were available, rather than just the ones for the current team supervisor.
- Fixed excessive memory use when downloading call CSV for outgoing campaigns.
- Fixed error that prevented the use of http (instead of https) as the transfer protocol for remote calls. This affects mainly DINOMI ISO with FreePBX 13 as remote Asterisk.
- Implemented experimental detection of scenario when chan_agent agent is idle/disconnected but app_queue still considers the agent as busy. The attempted fix requires a patched Asterisk (11.25.3-3 for Elastix 4).
v1.0.0-32
changed
- Licensing: the licensing mode that allows a number of agents that are valid for a limited time range, previously available in DINOMI ISO, has been ported to DINOMI for Elastix. All previous licenses are considered perpetual with the previous number of agents.
- Licensing: the license ranges module from DINOMI ISO has been ported to DINOMI for Elastix.
- Login Logout module: the time invested in manual dialing calls is now shown as a separate value from the outgoing calls.
- New call duration histogram report (ccpro_rep_call_duration_graph) that shows a histogram of the call duration distribution for campaigns, as well as the call answering time histogram.
- The IVR Audios and IVR Scripts module now remember the last extension used for testing, so it does not have to be entered again.
- Both IVR Audios and IVR Scripts now assume a global language setting instead of assuming the Elastix language as the recording language.
- Agent Efficiency module (ccpro_gestion_agente) now shows data for manual dialing campaigns.
- Agent Console: the scheduling dialog now shows a label with the scheduling mode (same agent vs. any available agent) to prevent confusion.
- All CSV loaders can now specify the field separator. This allows CSV upload of files created with Latin American versions of Excel that use semicolons (;) as field separators.
- Use icons instead of labels for campaign actions in order to save space and improve looks.
- All campaign adminstration modules now show the campaigns in reverse order of campaign date range.
- Agent Monitoring module now shows the FreePBX queue label in the realtime report.
fixed_bugs
- Fixed a bug that caused all team supervisors to be able to view campaigns not assigned to their teams, like general supervisors can.
- Fixed inability to delete an autoivr campaign due to a bug in the delete warning verification.
- Agent Efficiency module (ccpro_gestion_agente): fixed various implementation bugs.
- Fixed SQL error in dialer engine that caused errors in some manual dialing operations.
v1.0.0-30
changed
- Added check to see if uploaded IVR audio is actually playable by Asterisk (.wav only).
- Tweak prediction model to improve the prediction quality for about-to-finish calls.
- Re-structure outgoing call generation to prevent having to read the database every 3 seconds. This change mitigates possible deadlock scenarios on heavy call generation or when other applications are concurrently reading the DINOMI database.
fixed_bugs
- Fixed bug that broke campaign filtering by particular supervisors. The symptom was a failure to list campaigns in the Campaign Monitoring realtime module.
- Fixed bug in Agent Console that caused failure to assign the break name if the agent entered a pause while handling an active call.
- Any license installation or update will now restart the dialer. This is required for the dialer to obey the updated number of agent licenses.
- Fixed bug in outgoing/autoivr call generation that, in case there were multiple calls to make in an iteration, could lead to incorrect duplicate dialing of some calls and non-dialing of other calls, with call reference leaks.
- Both call generation to test IVR behavior and IVR audios now include a dummy Caller ID number in order to appease trunks that reject calls with missing Caller IDs.
- Contact number upload through CSV files now allow pound (#) and asterisk (*) characters as valid digits in numbers.
- Update dialplan context used to send scheduled outgoing call to same agent to use the FreePBX 11 method to check for recording start. This should fix recordings in the scheduled call scenario.
v1.0.0-29
changed
- New functionality of Automatic IVR outgoing calls, with audio playback. A dialed client interaction script may be configured that lists the audio files to be played back, when to read DTMF options, and what values to store in the database for each pressed digit. Playback of integer values, digit sequences, letter sequences and monetary amounts are supported. The same interaction script may use multiple languages if the translated audios exist in each language package in Asterisk. The collected data may be downloaded in CSV format just like the other campaign types. Each interaction script may be tested without a campaign by using an existing Asterisk extension for playback. Audio administration is supported including recording through an extension and uploading an audio file in one of the formats supported by Asterisk.
- Removed unnecessary cap to number of licensed agents on the number of agents displayed in agent configuration modules and agent monitoring. This is required to allow creating more agents than currently licensed when only a subset of agents will be logged-in at any time.
fixed_bugs
- Prevent scenario in which an agent extension can be logged-out as a result of a registry expiration on the associated extension, even if the agent is currently handling a call.
- Fixed scenario in which rejection of the initial login call for a static agent would cause a hang of the login process in the Agent Console instead of immediately announcing a login failure.
- Fixed incorrect update of the DNC flag that caused an incorrect outgoing record to be updated.
- Fixed bug in Agent Console that caused the break name text to not be cleared if the agent logged out while in break and then logged in again.
- Fix incorrect CSV format in manualdialing campaign downloads if the contacts did not have any attributes.
- Cap the wait timeout for calls to finish while shutting down the dialer to 10 seconds. This prevents some scenarios that cause multiple instances of the dialer to be simultaneously running.
- Fix inability to assign a dial context other than from-internal to an outgoing campaign.
v1.0.0-28
changed
- Initial implementation of agent call spying from Campaign Monitoring module. When the agent has an active call, the associated row will now show an eye icon. Clicking on the eye will show a modal dialog with a phone extension to dial and a call spying mode. The resulting call allows listening into the agent conversation with the client, and (depending on the spying mode) whisper to the agent or barge into the call.
- AMD Config: added button to reset dialog to recommended values.
- Queues: added «Agent events» column in monitored queues report that shows whether the queue has the eventmemberstatus and eventwhencalled flags enabled. These events must be enabled to use the unanswered call audit report, and enabling them improves the queue monitoring performance for outgoing calls. If the flags are not enabled, a link is supplied to the FreePBX queue configuration (only for Elastix version).
- Queues: show FreePBX friendly label if available.
fixed_bugs
- Dialer: fixed bug that caused infinite error loop in the log file if an incoming call arrives to a queue that is being monitored but has no incoming campaign assigned to it. Also fixed a recursive debug dump ocurring during the same error. OTRS Ticket 2017052310000764.
- Dialer: lower timeout when waiting for error cause of a failed call from 60 to 10 seconds.
- Dialer: stop counting failed calls waiting for an failure cause as calls waiting to enter a queue in an outgoing campaign.
- Dialer: (internal) add integer validation to all integer parameters to ECCP requests.
- Assign Agents: fix bug in implementation of configuration save that caused failure to update the queue configuration file for static agents if there are many such agents.
- Fixed unpaired HTML tag in DINOMI standard form.
- AMD Config: handle scenario when amd.conf file does not exist, mainly when using a remote Asterisk.
v1.0.0-27
changed
- The Callcenter Config module has been reorganized using tabs to group related options.
- The Callcenter Config module now checks that all credentials (to DINOMI database, to FreePBX database, and to Asterisk AMI) actually work before saving data, if any of them have been changed. This verification is shown in a modal dialog.
fixed_bugs
- Fixed bug when scheduling an outgoing call that caused the scheduled call to fail to inherit the attributes of the original contact, when the contact had multiple numbers and the call was bridged using a number other than the first one.
- Fixed path to service file that caused a failure to start or stop the dialer service when using a recent sudo version under CentOS 7.
- Fixed race condition in dialer startup script that could cause the dialer to be considered stopped even when active.
- The configuration of static agents can now handle the initial absence of the agents.conf file in Asterisk.
- Fixed statistics updates by the dialer to be done only for outgoing campaigns.
- Removal of ACTIVE campaigns are now blocked. Additionally INACTIVE campaigns are also blocked from removal if the dialer informs that there are still pending calls from a recently-inactive campaign. This prevents SQL errors caused by trying to update the status of a campaign that no longer exists.
- For compatibility with FastCGI deployments, responses sent using Server-Sent Events (Agent Console, Agent Monitoring, Campaign Monitoring) are padded to 4096 bytes. This prevents messages from lingering in the FastCGI buffer instead of being immediately flushed.
v1.0.0-26
changed
- The Incoming Queue Monitoring now displays the queue label assigned by FreePBX.
fixed_bugs
- Fixed regression in rewrite of Agent Console that caused inability to enable the Handled button for manual calls.
- Fixed error that prevented dialer service from being properly controlled from the General Configuration module because of the service rename.
- Fixed CSS style that caused unreadable text in focused buttons in several places, especially in the General Configuration module.
- Disabled dialplan installation through AMI in order to prevent potential corruption of the Asterisk dialplan.
- Report need for eventwhencalled flag in a queue exactly once in order to prevent log spamming.
- Implemented more robust way to terminate dialer processes on SIGTERM.
v1.0.0-25
changed
- The RPM package has been renamed to «dinomi-callcenterPRO».
- New functionality for recycling of outgoing campaigns. When using the campaign recycling option, the administrator can select a subset of contacts or numbers that were tried/not tried, contacted/not contacted, or with particular values filled in a dynamic form. The selected subset of contacts and numbers may be reset to be redialed in the same campaign, or copied into a brand-new outgoing campaign.
- Changed URLs to point to new domain dinomi.com
fixed_bugs
- Fixed bug that prevented (in some scenarios) timezone information from being loaded properly by the dialer in CentOS 7/Elastix 4.
- Fixed inability to remove a form field if at least one contact has previously filled a value that references this field. Now the associated collected data is removed too.
- Fixed scenario in Assign Agents module that displayed the main queue listing regardless of whether the queue assignment was successful. This could cause user confusion because the user never saw the error message.
- Fixed regression in Assign Agents module that caused a failure to assign agents to a queue that previously had no agents assigned.
- Partial fix to paths to help files in modules.
- Relaxed validation of valid AMI user when downloading remote recordings.
- Fixed slowdown when saving static forms with many (> 100) fields.
- Tweak AMD dialplan context in order to improve recording detection.
- Fixed incorrectly-named PHP exception that caused errors when displaying available queues, especially under Elastix 2.
- Fixed regression in Callcenter Config that prevented saving the disabled flag for predictive behavior.
v1.0.0-24
changed
- Auxiliary working contexts (for agent-scheduled calls and AMD) can now be verified and installed from the general configuration module. This also works for a remote Asterisk.
fixed_bugs
- Fixed: problem caused by a limitation in the maximum number of POST variables in PHP 5.3.9 and later, that causes failure to save forms with many fields (> 500).
- Fixed: problem that caused failures when determining the state or disconnecting a dynamic agent with a friendly name.
- Fixed: race condition in outgoing calls generation, that causes generation of calls when there are newly connected calls that take several seconds to enter the queue.
- Fixed: error in general configuration module that prevented saving changes in the configuration.
v1.0.0-23
changed
- Agent Console rewrite to avoid page reloading when starting and ending the agent login. This change allows the use of the WebPhone as an agent extension.
- Ability to configure a remote FreePBX.
- Optimization to mitigate database contention when updating group status of outgoing call contacts.
- Optimization to verify inactivation of finished campaigns only when detecting system date change instead of every 3 seconds.
- Logging of excessive latency time of database operations for debugging.
fixed_bugs
- Fixed: incorrectly-applied style in Agent Console that caused drop-down lists on forms to be displayed with concatenated items in some browsers.
- Fixed: situation where an Originate attempt that immediately fails to dial can cause an attempt to write NULL on a database column that does not accept NULL, which leads to an infinite loop.
- Fixed: paging error in Calls Detail report when trying to go to the next page of a report that shows the calls of the current day without applying any filters.
- Fixed: problem when displaying context to be used on outgoing calls when activating and deactivating AMD.
- Fixed: problem when saving form data with some missing values.