Rate this page:

How to set up SmartQueue

This article will guide you through necessary steps to set up SmartQueue.

Set up operators

Operators are Voximplant users who process calls and IM chats. To create your operators, first create an application, and then create users according to this guide.

You need at least one operator to process a queue.

Set up operators' skills

You can specify skills for different operators and distribute activities only to operators who posess a certain skill.

For example, you have a skill called "Knows Italian", and attach this skill to all the operators that know the Italian language, and set up skill levels for each operator according to their language level.

To read more about skills and learn how to use them, see this article.

Set up queues

You can create one or more queues with different settings and bind specific operators to specific queues.

You can customize a queue's name and description (up to 200 characters), agent selection strategy (distribute the activity to the most/least qualified operator or to an operator who waited the most), activity selection strategy (first goes an activity with maximum priority or waiting time), maximum queue size and maximum waiting time.

Create a queue and bind operators

To create a queue, use the SQAddQueue method. Refer to the method's description to learn about the input arguments. Here is a simple code on example how to create a queue:

Create a queue

Create a queue

As a result of the request, you will get the new queue's ID. You will need it later.


Here and below you can specify the application's ID or the application's name. You don't need to provide both application_id and application_name parameters.

To bind an operator to a queue, use the SQBindAgent method. You need to specify the queue's ID or name and the operator(s) ID or name. You can bind several agents divided by semicolon:

Bind an agent to a queue

Bind an agent to a queue


Here and below you can specify the queue's ID or the queue's name. You don't need to provide both sq_queue_id and sq_queue_name parameters.

Modify or delete an existing queue

You can modify all the queue's settings via the SQSetQueueInfo method. Refer to the method's description to learn about the input arguments. Here is a code example on how to change a queue's name:

Modify a queue

Modify a queue

To delete a queue, use the SQDelQueue method. Here is a code example on how to delete a queue:

Delete a queue

Delete a queue

Set up an operator's workspace

An operator's workspace may vary depending on your needs and include multiple instruments.

As a minimum setup for an audio calls operator, you need:

  • A tool to accept or decline a call

  • A tool to change the operator's status

To learn how to process an incoming call, see this guide. As a minimum, you need to implement buttons to answer a call and decline a call.

The most important part here is the operator's status. To make and accept calls, the operator should have the tool to change the status to "Ready".

What is a SmartQueue status

SmartQueue distributes the calls according to the operators' statuses. Here are all possible statuses:

  • Online — the operator is logged into the system. Yet the operator cannot receive incoming activities.

  • Offline — the operator is not logged into the system.

  • Ready — the operator can receive incoming activities, such as calls and IMs. _You need to set this status manually._

  • Dialing — the operator has an incoming call, which he has not yet answered or declined.

  • InService — the operator has an active call.

  • AfterService — the operator has finished an activity but has not switched to the Ready status.

  • Banned — the operator has intentionally declined an incoming call from a queue. You may implement your own logic how to return to the Online status.

  • DND — Do not disturb. Technically this status is identical to Online, but you may need to track the time spent by an operator in this status to know how much time the operator spends on breaks/lunches and so on.


You can track the amount of time spent in each of this status (see reporting).

The statuses change in a special order that cannot be changed. For example, you cannot skip AfterService status after the call or skip Ready status to accept a call.

On the following chart, you can find all the status transitions possible. Red lines mean that status change happens automatically and you cannot choose the status manually.

How to set an operator's status

To set a status, use the setOperatorACDStatus method. You can make a function that accepts one of the possible statuses and changes it. Here is an example for Web SDK:

Manually set an operator's status

Manually set an operator's status

Set up a VoxEngine scenario

To find more information about VoxEngine scenarios and how to create them, see this guide.

For SmartQueuesmart queue, the main goal in the VoxEngine scenario is to process inbound or outbound activities and put them in the queue. You can set up different routing rules to put different calls or implement your own logic how you want to distribute activities between queues.


If you want to process incoming calls, you need to buy a phone number and attach it to your application.

To put an activity in a queue, use the enqueueTask method.

  • If you process incoming calls, implement your logic in the CallAlerting event and put the call in the queue in this event.

  • If you process outgoing calls, implement your call in the Started event and put the call in the queue after the recipient answers the call.

In this scenario example, you can see how to enqueue an incoming/outgoing call:

Put an incoming/outgoing call into a queue

Put an incoming/outgoing call into a queue

You need to specify the "mode" property manually in this example

After you implement all of the above, you should have a fully working queue for processing inbound and outbound activities and an operator's workspace where your operator can change the status and accept calls.