How to – Integrate Queuemetrics with Vicidial

How to – Integrate Queuemetrics with Vicidial

How to – Integrate Queuemetrics with Vicidial

This article will go over how to integrate Queuemetrics with ViciDial

ViciDial integration

ViciDial is an enterprise class, open source call center suite in use by many large call centers around the world.

VICIdial has a full featured predictive dialer. It can also function as an ACD for inbound calls, or closer calls coming from VICIdial outbound frontiers. It is capable of inbound, outbound, and blended call handling.

It can also be easily integrated with QueueMetrics.

For more information, see

ViciDial is a registered trademark.


  • A working ViciDial instance, version 2.0.4 or later

It is very important that all servers involved (be they for QueueMetrics or ViciDial or general Asterisk usage) are on the same time zone and time, aligned with sub-second precision by an NTP daemon. If this is not so, the setting may lead to data corruption and inaccurate reports.

In order to translate ViciDial data to QueueMetrics, the following conventions are used:

  • The campaign_id in ViciDial is seen as the queue in QueueMetrics
  • The user ID in ViciDial is prepended by “agent/” and translated to the agent code in QueueMetrics (e.g. user 123 appears as agent/123)
  • The UniqueID for the call appears as Asterisk’s unique id prepended with server_id field (e.g. 1-1170345123.1234)

In this example, we imagine that:

  • The QueueMetrics server has IP
  • The QueueMetrics database server has IP and the QM database is called “queuemetrics”
  • The ViciDial server has IP

Changes to QueueMetrics database

ViciDial and QueueMetrics work together by sharing the database.

You must log on to the QueueMetrics database and create a user for ViciDial to connect to it. We use a different username from the one QM uses so it is easy to monitor who is doing what.

GRANT ALL PRIVILEGES ON queuemetrics.* TO vicidial@'' IDENTIFIED BY 'qm';

ViciDial will also need special indexing on the ‘queue_log’ table to work efficiently:

CREATE INDEX vici_time_id on queue_log(time_id);
CREATE INDEX vici_call_id on queue_log(call_id);

Changes to ViciDial

The system configuration can easily be set from the ViciDial Admin / System Settings page:

vicidial system settings
  • Enable QueueMetrics logging: set to 1
  • QueueMetrics server IP: this is the IP for the MySQL DB server, in our example “”
  • QueueMetrics DB name: the database name, in our example “queuemetrics”
  • QueueMetrics DB login: the database login, in our example “vicidial”
  • QueueMetrics DB password: the database password, in our example “qm”
  • QueueMetrics URL: the login URL for QM, e.g. “”
  • QueueMetrics LogID: leave it to VIC (this in an ID for the server)
  • QueueMetrics EnterQueue Prepend: This field is used to allow for prepending of one of the vicidial_list data fields in front of the phone number of the customer for customized QueueMetrics reports. Default is NONE to avoid populating anything.

A set of cron jobs is expected to run to keep the logs updated; check that they are present by issuing a ‘crontab -e’:

### fix the vicidial_agent_log once every hour and the full day run at night
33 * * * * /usr/share/astguiclient/
50 0 * * * /usr/share/astguiclient/ --last-24hours
*/5 * * * * /usr/share/astguiclient/ --only-qm-live-call-check
1 1 * * * /usr/share/astguiclient/ --quiet

Also, you will need to install the PHP XML-RPC library in order to have audio data accessible from the QueueMetrics server:

pear install XML_RPC-1.5.1

Changes to QueueMetrics

Edit the ‘’ file in order to set the following properties:

# This is the default queue log file.

By default, ViciDial logs all data to partition “P01”.


Change ‘’ to your ViciDial server address.

After this, you need to define each ViciDial campaign as a QueueMetrics queue, and set it properly as an inbound or outbound one. After that, you can freely create composite queues to report on all or some activity at once.

The live monitoring asks for an extension to send the call to, this is an extension dialed on the active voicemail server as defined in the system settings. If there is no active voicemail defined then the live monitor will place the call to the extension on the server that the agent is on.

As far as I know, no one uses this anymore, but I wanted to give those of you that are interested the ability to give it a try if you wanted, so here it is

Chris aka carpenox

Leave a Reply