Rate this page:

Voice contact center

This article will help you to create a simple voice contact center with SmartQueue (ACDv2) technology.

Create queues

Copy URL

All incoming and outgoing tasks, such as phone calls and IM chats, get into a queue before an agent receives them. You can create one or several queues for different purposes.

To create a queue:

  1. Log in to your control panel.
  2. Create an application or choose an existing one.
  3. Go to the SmartQueue section.
  4. On the Queues tab, click the Create queue button.
  5. In the opened window, specify the queue's name, the queue's priority, and settings: Agent selection strategy, Task selection strategy, Maximum queue size, Maximum waiting time. Note that the settings for the calls queue and IM chats queue are different.

If you already have existing agents, you can bind agents to the queue at this step, or you can bind them later.

Create a queue
  1. After you click the Create button, your queue is ready.

You need at least one agent to process a queue.

Create and bind agents

Copy URL

Agents are application users who can process incoming and outgoing calls and IM chats from the queues. To process the queue tasks, an agent needs to be bound to this queue.

To create an agent and bind them to a queue:

  1. Log in to your control panel.
  2. Create an application or choose an existing one.
  3. Go to the SmartQueue section.
  4. On the Agents tab, click the Add agent button.
  5. In the opened window, specify the agent's username, display name, and password.

At this step, you can bind the new agent to an existing queue in the Bind to a queue field. Optionally, you can assign one or several skills to the agent.

Add an agent
  1. After you click the Create button, your agent is ready.

You can delete and edit agents on the Agents tab. At the right of each agent in the agent list, there are the edit and delete buttons.

Agents === Application users

Alternatively, you can create agents as application users following this guide. After that, you can go to the SmartQueue section of your application to assign skills and queues to the agents.

Set up agent skills

Copy URL

You can specify skills for different agents and distribute tasks only to agents who possesses a certain skill.

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

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

Set up an agent's workspace

Copy URL

An agent's workspace is a software environment in which an agent makes or receives calls. You can use any SDK to create an agent's workplace. Read more about different SDKs and their initialization here.

Voximplant's web softphone

You can use Voximplant's web softphone to make and receive calls as a user of your application. You can also use the softphone as an agent workspace for a contact center as it allows agents to change statuses.

The softphone is available at https://phone.voximplant.com. You need to have an application and a user to log in to the softphone.

In this article, there is an example of how to use Web SDK.

When you initialize the SDK, pass the queueType parameter with the SmartQueue type.

Set the queueType

Set the queueType

Then you need to implement all the necessary instruments for your agent to use. This depends on your case.

As a minimum setup for a voice calls agent, you need:

  • A tool to accept or decline a call

  • A tool to change the agent'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.

Process an incoming call

Process an incoming call

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

What is a SmartQueue status

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

  • Online — the agent is logged into the system. Yet the agent cannot receive incoming tasks.

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

  • Ready — the agent can receive incoming tasks, such as calls and IMs. You need to set this status manually.

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

  • InService — the agent has an active call.

  • AfterService — the agent has finished a task but has not switched to the Ready status.

  • Banned — the agent has intentionally declined or ignored an incoming call from a queue within the specified timeout. You may implement your own logic on 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 agent in this status to know how much time the agent spends on breaks/lunches and so on.

  • Custom — You can set up up to 10 custom statuses and give them customized names. The custom statuses work in the DND mode. You can use custom statuses to provide more detailed agent statistics and time tracking.

Note

You can track the amount of time spent in each of these statuses (see reports).

The statuses change in a special order that cannot be changed. For example, you cannot skip the AfterService status after the call or skip the 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.

SmartQueue statuses

How to set an agent'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:

The current version of Web SDK uses the same method (setOperatorACDStatus) for changing agent statuses for both SmartQueue and old ACD v1. The sets of statuses differ for these systems. That is why, when setting a status, see the status description whether it applies to SmartQueue.

Set an agent's status

Set an agent's status

For example, you can create a dropdown list on your webpage, and bind the setStatus function from the code above to a button.

Custom statuses

You can set up up to 10 custom statuses and give them customized names. The custom statuses work in the DND mode. You can use custom statuses to provide more detailed agent statistics and time tracking.

You can appoint a custom name to the following statuses: CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, CUSTOM_9, CUSTOM_10.

To appoint a name to a custom status, use the SQ_SetAgentCustomStatusMapping method. Specify the custom status in the sq_status_name field and the customized name in the custom_status_name field. You need to specify your account ID in the account_id field, your API key in the api_key field, and your application ID in the application_id field.

Specify a custom status name

Specify a custom status name

To check the currently appointed names, use the SQ_GetAgentCustomStatusMapping method. You need to specify your account ID in the account_id field, your API key in the api_key field, and your application ID in the application_id field.

Get the currently appointed names

Get the currently appointed names

To delete a currently appointed custom status name, use the SQ_DeleteAgentCustomStatusMapping method. You need to specify your account ID in the account_id field, your API key in the api_key field, and your application ID in the application_id field.

Delete a currently appointed name

Delete a currently appointed name

To assign a custom status to an agent, pass the custom status number to the setOperatorACDStatus method. Do not pass the customized name to this method.

Manually set a custom status

Manually set a custom status

Set up a VoxEngine scenario

Copy URL

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

For a contact center, the main goal in the VoxEngine scenario is to process incoming or outgoing tasks and put them in a SmartQueue. You can set up different routing rules to put different calls or implement your own logic on how you want to distribute tasks between queues.

Note

If you want to process incoming calls, you need to buy a phone number and attach it to your application. You can find more information on how to do this in this guide.

To put a task in a queue, use the enqueueTask event.

  • 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 into a SmartQueue:

Voice contact center scenario

Voice contact center scenario

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 incoming and outgoing tasks and an agent's workspace where your agent can change the status and accept calls.

Frequently asked questions

Copy URL

Q: When an agent declines a call, when does it transfer to another agent?
A: Immediately.

Q: How can I send headers from my scenario to an SDK?
A: Send the headers in the extraHeaders parameter of the SmartQueueTaskSettings.

Q: When a new task for an agent arrives and the timeout parameter expires, this task transfers to another agent. Why?
A: If the task is complete, e.g. the call was connected to an agent, the task deletes. If the customer's call is not connected to an agent and the timeout expires, the task is considered incomplete and transferred to another agent.

Q: What does the "501: Waiting time cannot be estimated" error in the log mean?
A: This happens when the queue cannot estimate the correct waiting time and calls a customer in advance. In this case, the call does not end, but the customer needs to wait until an agent gets free.