Chapter 13. Release 16.09

QueueMetrics 16.09 is a release centered around the idea of making the software flexible, intuitive and ever more reliable.

QueueMetrics 16.09 fully supports Asterisk 13.11, as well as any older Asterisk version.

13.1. New concepts: FCR and Programmable data blocks

This release of QueueMetrics introduces the concepts of

  • Tracking Call Resolutions
  • Programmable agent data blocks

13.1.1. Tracking Call Resolutions

Have you ever wondered how many of the calls you receive are people calling over and over for the same issue? such calls are often a symptom of something not going well in call handling - everybody wants their problem solved on their first call. Identifying those calls makes it possible to concentrate on repeated calls as a measure of your quality of service.

immagine FC04

QueueMetrics 16.09 introduces a new set of statistics to address these problems:

  • The Break-down of recalls shows how many callers have been calling just once or multiple times, using a graph that looks similar to existing SLA graphs for an immediate visual check
  • The Recall details shows how many calls are First Call Resolutions and how man are repeated, the average number of calls per caller and the number of missing caller-ids.
  • The Cluster details shows the groups of calls by the same caller, when they started and when they ended, and lets you zoom in to any call.

See also

  • QueueMetrics User Manual, chapter 6.14 - "Historical reports - First Call Resolution (FCRs)"

13.1.2. Programmable agent data blocks

QueueMetrics now has a fully customizable agent data block that can be used to create custom metrics.

immagine AG18

The idea is that, differently from normal data blocks where columns are fixed, this new data block just offers you a list of agents as its first column; all other columns are computed the way you define them to be.

Fo example, if you enter the following definitions:

Session [hms]= SESSION
Pause [hms]= PAUSETIME
Tot Avail [hms]= SESSION - (PAUSETIME + (TALKTIME + OOSCALL))
Occupation = TALKTIME / (SESSION - PAUSETIME)

Will show one column with total session time, one with total pause time, one with total available time and one with "Occupation" expressed as a percentage. As the embedded data sources are able to count and measure specific pause codes, it becomes very easy to create agent reports that are fully customized to your environment.

See Also

  • QueueMetrics User Manual, chapter 6.17 - "6.17. User-Programmable Reports"
  • QueueMetrics User Manual, chapter 6 - "AG09 - Agent Occupancy Report"
  • QueueMetrics User Manual, chapter 6 - "AG18 - Programmable Agent Performance"

13.2. Internationalization

This release offers improved localozation facilities, especially for non-Latin languages (Chinese, Japanese, Russian, Arabic and Hebrew). It is now possible to export PDF’s correctly for non-Latin languages, and such laguages appear correctly everywhere in QueueMetrics.

Plus, we added support for Portuguese as spoken in Portugal, as it has some significant differences from Brazilian Portuguese.

13.3. Changes on the Icon Agent’s page

With an updated release of the WebRTC soft-phone, the Icon agent page works well with recent versions of Asterisk. We have created a new tutorial to help you get started with WebRTC on Asterisk 13+.

It is now easy to run Icon even with CRM systems that do not allow being embedded in an inner frame. A new configuration property lets you decide whether you want the default embedded mode or you want CRM forms to be opened in a separate window/tab.

If you click on a telephone number in the Icon page, it will be copied to your system clipboard.

The Icon agent page is now able to detect if the system it is connected to loses session information (e.g., it gets rebooted) so that this information will be shown to the agent and they will be prompted for a new log-in. The page does not reload automatically, because agents need some time to terminate any work they are doing on the embedded CRM’s and to hang up any soft-phone call they are attending.

See also

  • New configuration property agent.openUrlInPopup
  • We will shortly be releasing an updated tutorial on how to get started with WebRTC on Asterisk 13.

13.4. Improvements to the Explore System Parameters page

The "Explore System Parameters" page has been improved to be easier to use and to be your go-to place for any common configuration change in QueueMetrics.

immagine SysParms

The layout has been made easier on the eye, and it is now easier than ever to search for the items you are looking for - be it by property name (as it is usually referenced on our documentation), by content or by title.

13.5. Official QueueMetrics Docker image

QueueMetrics now ships with an "official" Docker image, available as loway/queuemetrics on Docker Hub.

The image is meant as a simple way to run QueueMetrics on a Docker cluster; it embeds both the database and the servlet container, exposing only the HTTP port. It supports data volumes and has an embedded health check that will monitor QueueMetrics and restart it, should it become unresponsive.

On a server with Docker installed, you can therefore provision a new QueueMetrics system by running:

docker run -p 8080:8080 -P -d loway/queuemetrics

And you can configure it fully through the JSON APIs. This makes running multiple QueueMetrics servers - or just the odd instance for testing - very plain and straightforward.

See also

13.6. Introducing Uniloader

Most QueueMetrics system rely on a small daemon called "qloaderd" to keep them in sync with what is happening on the PBX. While this has proved to be a rock-solid solution over the years, it is sometimes more complex than it should be and it requires an underlying Perl 5 installation.

As we developed QueueMetrics Live, we needed a solution that would be very lightweight (enough to run on very small embedded systems), would have no external dependencies, would run on systems where there is no direct connectivity back to the Asterisk box (e.g. a PBX behind NAT) and could be grown to support both on-premise and cloud-based systems.

The result of this process was the development of Uniloader, a new generation data loader for QueueMetrics:

  • it can feed local and remote QueueMetrics systems
  • is rock-solid and never loses data, even in case of network errors
  • it is able to split data natively into multiple QueueMetrics instances, in order to support cloud-based hosting providers running multiple independent clients on the same Asterisk instance
  • it acts as a proxy and can perform agent actions even when there is no direct AMI connection to the PBX
  • it is extremely lightweight and has no system dependencies
  • compiles natively to Linux x86 32bit, x86 64bit and ARM 5+ architectures

While you can still run "classic" qloaderd, we suggest checking out the new Uniloader to see if it You can install it easily using the supplied uniloader RPM package of from the tar.gz archive.

Uniloader works very well with the official QueueMetrics Docker image - do check them out together.

See also

13.7. Detailed changelog

Over 80 bugs have been fixed in this release.

13.7.1. Real-time page

  • 3159 - Messages to agents not working
  • 3046 - Problems with "In queue" field in realtime page
  • 3047 - Supervisor can pause agents with non allowed pause codes
  • 3078 - Paused agents not shown correctly
  • 3026 - AMI 2.8.0

13.7.2. Reports

  • 3035 - Agent Efficiency
  • 2933 - PDF export does not work with non-latin encodings
  • 2984 - Reports: optional column for "Transferred to" on call details
  • 1947 - Error: Null pointer in DayOfWeek (session expired?)
  • 1948 - Error: Compute Report Header (session expired?)
  • 2721 - Recordings not available in cluster mode
  • 2951 - New reports: calls by caller
  • 3011 - Productivity
  • 3036 - PDF export not working with RTL languages
  • 3048 - Possible different homepage news URL
  • 3051 - Exporting dynamic to XLS/CSV data columns does not work
  • 3119 - Bug: Tabella non LtCallsOK when creating IVRs
  • 3132 - Avoid method setArrayList()
  • 3133 - First Call Resolution: Break down of recalls
  • 3134 - First Call Resolution: Caller IDs vs calls
  • 3135 - First Call Resolution: Call details
  • 3136 - First Call Resolution
  • 2743 - ErrProd 15.02: NullPointer GetSessionId
  • 2744 - ErrProd 15.02: NUllPointer popup_sessioni_pause.jsp
  • 2746 - ErrProd 15.02: IllegalState in session
  • 2788 - ErrProd 15.02: NullPOinter QApopupDO
  • 2905 - Announcement and wrap-up times are not taken into consideration
  • 3030 - Incorrect URL computed from request if proxied
  • 3034 - CVS/XLS file download does not work in Jetty.
  • 3089 - Self-Service Agent reporting not working for new agents

13.7.3. QA

  • 3028 - QA: 0 as a valid value for drop-downs
  • 2980 - QA form unusable in Russian
  • 3112 - If I open the call’s details from Tasks markers are not shown correctly
  • 2916 - QA Grader: queues expansion with * is not working

13.7.4. Engine

  • 2981 - Calls remain open on ATTENDEDTRANSFER
  • 3161 - Long-running threads
  • 2982 - Subtype APP BRIDGE LINK from ATTENDEDTRANSFER

13.7.5. Page Layout

  • 3169 - Broken page - missing jQuery UI
  • 2936 - Add cache breaker parameter after JS, CSS and favicon inclusion

13.7.6. Icon Agent Page

  • 2971 - Call not closing on Icon for ATTENDEDTRANSFERs
  • 3006 - Unreadable text in buttons in Icon when pausing in Russian
  • 3128 - Opening non-embedded URLs in Icon
  • 3129 - Remove GWT compile warnings
  • 3146 - Dialout panel shouldn’t be disabled if agent is paused
  • 3156 - Copying the number called in Icon
  • 2664 - If the agent is already logged in, use the logged extension by default
  • 2928 - Property to make outcome setting time customizable
  • 3055 - Production errors: expired?
  • 3070 - AMI feedback errors on Live instances
  • 3125 - realtime.assertExtensionNotInUse doesn’t work if agent is not member of the queues
  • 3084 - Formatting of Outcomes pop-up
  • 3071 - Services should abort if agent logged off
  • 3052 - CRMapp is not shown if you didn’t set a CRMlabel
  • 3063 - Button disappears with realtime.dynamicLoginQueues=registered
  • 3068 - If connection is lost (several minutes) page doesn’t work again when connection is restored
  • 3069 - If server doesn’t respond ICON doesn’t tell anything to the agent
  • 2973 - Expanding agent code in "fixed" URLs in Icon
  • 2935 - In hotdesking mode, avoid logging on with empty extension
  • 3079 - If agent is wrap or spill queues are shown twice
  • 3072 - Softphone sipml5-api update
  • 2849 - Logging logon exceptions

13.7.7. JSON APIs

  • 3102 - Impossible to download audio file though API
  • 3141 - Uniloader: actions returned in wrong order
  • 2974 - API error: ClassCastException in RealtimeDO.RtAgentsRaw
  • 2985 - Accepting queue names with spaces

13.7.8. Configuration

  • 3091 - All SLA report parameters are ignored
  • 3040 - realtime.assertExtensionNotInUse is true by default
  • 3041 - Regexps accept only non-empty extension or agent code by default
  • 3073 - Export XLS as UTF-8
  • 3123 - Forcing default QueueMetrics language
  • 3145 - Improvements to Explore System Parameters
  • 3031 - qm-tomcat6: memory used in restarts
  • 3142 - Remove -- from "Current Terminal" field in Agent’s configuration

13.7.9. Packaging

  • 3168 - Release Docker
  • 3065 - Added new locale: pt_PT
  • 3127 - Package clean-up
  • 3157 - RPM: add Xerces
  • 3093 - Missing Xerces in RPM build
  • 2774 - Official Docker image 3150 - Docs: Installling AGAW client in FF 45+