Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

You can test API methods on the interactive API browser page and without writing code
Some of the resources described on the page may not be available by default due to the type of application (see Creating and authorizing applications).

Queue configuration

Internal numbers of the queue type are used to implement the functionality of the call center. To configure a new queue is needed to create an extension number, specifying it as the type (parameter type) value queue. After that, it becomes possible to configure the queue and queue agents through the API-interface queue.

Queue agent events (login/logout) are tracked using the resource Queue Agent Events.

The sound files required to configure the queue are uploaded using the resource Sound Files.

Description of Data Structures

 Expand

The following parameters can be configured for the queue:

Parameter

Type

Mandatory

Default value

Description

agent_announce_sound

long

no

0

Sound that will be played to the queue agent when answering to the caller

agent_hangup_action

string

no

 

Can be either 'transfer' or 'quality_rate'

agent_hangup_transfer_dst

string

no

 

After the end of the conversation, if the agent hangs up first, the call will be forwarded to the number specified in agent_hangup_transfer_dst. Only works when agent_hangup_action = 'transfer'

agent_report_wait_time

boolean

no

true

Queue agent when answering the caller, will be told the response time in seconds for the answer by the caller

announce_frequency

long

no

0

The sound frequency announce_sound in seconds

announce_sound

long

no

0

The sound played at a specified time interval at the time the caller is waiting for an answer. The playback frequency is set by the parameter announce_frequency

append_to_cid_name_on_transfer

string

no

 

When forwarding to the name of the caller, a forwarding flag from this queue will be added

exit_key

string

no

 

The button, when pressed exits the queue. Can be a digital button, as well as buttons * and #

exit_transfer_dst

string

no

 

If the caller pressed the button from exit_key, he will be forwarded to this number

exit_with_no_av_agents

boolean

no

true

If this parameter is active, the call will not be queued if there are no agents in the queue

max_wait_time

long

no

0

The maximum time the caller waits in the queue are in seconds. After this time, the queue is exited

max_wait_time_with_no_agent

long

no

0

The maximum time the caller waits in the queue are in seconds. After this time, if there is no available agent in the queue, the queue is exited

no_agent_timeout_transfer_dst

string

no

 

If the caller left after expires max_wait_time_with_no_agent, he will be forwarded to this number

position_announce_frequency

long

no

0

The frequency of announcement of the caller position in the queue in relation to others waiting for an answer. Not used, unless specified, cannot be less than 1 second

quality_rate_finish_sound

long

no

0

The sound that will be played after the selected rating. Works only if agent_hangup_action = 'quality_rate'

quality_rate_max

long

no

0

The maximum rating that can be specified. Works only if agent_hangup_action= 'quality_rate'

quality_rate_sound

long

no

0

If the queue agent hangs up first after the end of the conversation, a sound will be played to the caller, followed by waiting for the evaluation. Works only if agent_hangup_action= 'quality_rate'

record_enabled

boolean

no

true

Enables the conversation recording in the queue

skip_busy_agents

boolean

no

true

The queue will try not to call agents engaged in a conversation not from this queue

sound

long

no

0

The main sound that will be heard by callers in the queue. Needs to specify id of the resource sound

sound_type

string

no

music

The main type of the sound can be set to music or ring. If set to ring then the caller hears normal beeps, while the passed parameter sound is ignored, and the already set sound is reset to null. If the parameter is set to music then the sound specified in the sound parameter will be played

start_sound

long

no

0

The sound played to the caller when he is queued. Played until the agents are called

strategy

string

no

"round-robin"

The strategy for calling queue agents. For details, see Queue Strategies

tier_rule_wait_multiply_level

boolean

no

true

If the parameter is set to true, the time tier_rule_wait_second is multiplied by the agent level

tier_rule_wait_second

long

no

0

Time in seconds from the start of a call to the queue, after which the next level agents are called. If the parameter tier_rule_wait_multiply_levelis is set to true then the specified time is multiplied by the agent level in the queue. If the parameter tier_rule_wait_multiply_level is set to false, then after the time indicated agents at all levels above the minimum are available for the call in accordance with the line strategy

tier_rules_apply

boolean

no

true

Whether the use of parameters are required tier_rule_wait_second and tier_rule_wait_multiply_level

timeout_transfer_dst

string

no

 

If the caller left after the max_wait_time, he will be forwarded to this number

try_same_agent_time

long

no

0

The system will try to connect a specific caller with a specific queue agent, if this agent has already answered to this caller before. If the connection fails or the caller has not communicated with anyone before, the call will follow the dialing queue strategy. The value is in seconds from 1 to 2592000

vm_attach_file

boolean

no

true

In addition to the notification of the incoming voicemail, the voicemail recording itself will be sent

vm_enabled

boolean

no

true

Enable/disable the voicemail in the queue

vm_greeting

long

no

0

Звук, который будет проигран перед включением голосовой почты

The sound that will be played before the voicemail is started

vm_mailto

string

no

 

The mailbox address to which the voicemail notification will be sent

Queue Strategies

At any strategy the agents with the lowest level are called first. If the agents of the current call level are busy or are in a state of temporary unavailability, for example, after no answer or rejection of the previous call (see the agent configuration), then agents of the next level are called. If the parameter tier_rules_apply value is true, the next-level agents start to be called after the time specified by the parameter tier_rule_wait_second, the report begins when the current level agents start calling. If the parameter tier_rule_wait_multiply_level value is true, then the time tier_rule_wait_second is multiplied by the agent level.

 Description of the queue strategies

Strategy

Description

ring-all

All available agents are called simultaneously. If the parameter tier_rules_apply is true, the agents with the lowest level are called first then after the time specified by the parameter tier_rule_wait_second, the next level agents are called and so on

longest-idle-agent

The agent is called with the longest waiting time since the last call

round-robin

Agents are called according to their position (the position parameter when adding the agent to the queue)

top-down

Agents are called in the positions order starting from the first

agent-with-least-talk-time

The agent with the least talk time is called

agent-with-fewest-calls

The agent with the fewest calls is dialed

sequentially-by-agent-order

Agents are called sequentially in such order of their levels and positions. The agent with the lowest level and position is always called first.

random

Agents are called in a random order

Queue Agents

The queue agents can be of two types: local, when the agent is an extension number of the telephone terminal type, and remote, when the specified external number is the queue agent. Both types of agents have the following configurable parameters: 

 Parameters of the queue agents

Parameter

Type

Mandatory

Default value

Description

busy_delay_time

long

no

0

If the agent was busy at a call attempt then no calls will be sent to it, during the time specified in this parameter in seconds

call_timeout 

long

no

0

Time in seconds during which the agent is called

extra_params 

string

no

 

Additional parameters

name

string

no

 

Queue agent name

no_answer_delay_time

long

no

0

If the agent did not answer the call, no calls will be sent to it during the time in seconds specified in this parameter

number

string

no

 

Queue agent number

reject_delay_time

long

no

0

Time in seconds since the agent's last rejection of the call, during which no calls will be sent to it

status

object

no

 

The agent status. Accepts one of the values: "logged_out", "available". In the status available the agent is available for calls, in the status logged_outno calls to the agent are not sent

wrap_up_time

long

no

0

Time in seconds since the last conversation of the agent during which no calls will be sent to it

agent_sound_id

long

no

0

Звук, проигрываемый вызывающему абоненту и агенту очереди при ответе этим агентом

The sound played to the caller and the queue agent when answered by that agent

Queue agent management

In order for an agent to receive calls from a queue, the agent must be added there. Adding the agent to the queue, removing it from there, as well as changing its level and position in the queue are carried out through the resources "local agent in the queue"and "external agent in the queue" for local and external agents, respectively.

When adding a local agent to the queue, the following parameters can be configured:

Parameter

Type

Mandatory

Default value

Description

agent_id

long

yes

0

Identifier of the local agent

level 

long

no

0

Agent level in queue

position

long

no

0

Agent position in the queue

When adding an external agent to the queue, the following parameters can be configured:

Parameter

Type

Mandatory

Default value

Description

agent_id

long

yes

0

Identifier of the external agent

level 

long

no

0

Agent level in queue

position

long

no

0

Agent position in the queue

The value of the counter of callers in the queue (generated based on dial-in and hangup events) can be obtained using the resource
GET /extension/{extension_id}/queue/status/

This resource returns the responses in the form:

{
  "answered_members": 0,
  "trying_members": 0,
  "waiting_members": 0
}

where the parameter trying_members is the number of callers and waiting the queue agents' response. Because the number of requests is limited, it is recommended to request the number of callers in the queue exactly by the queue events. Is possible to add events answer of the extension numbers themselves (the queue agents).

Examples

As an example, let's create an internal number of the "queue" type, configure it, create local and external agents and add them to the queue.

1. Using the "resource Extension number", create an internal number of the "queue" type:

System response:

{
  "status": "active",
  "domain": "sip.ringme.ru", 
  "create_date": "2020-03-16 12:11:13", 
  "name": "000*370", 
  "dial_rule_limit": null, 
  "extension_group_id": null, 
  "label": "test queue", 
  "caller_id_name": null, 
  "client_id": 12,
  "extra_params": null, 
  "message_did": null, 
  "dial_rule_id": null, 
  "ani_rfc3325": false, 
  "type": "queue", 
  "id": 208, 
  "did_as_transfer_caller_id": null
}

2. Set up the queue as follows:

  • The main sound of the queue should be the sound with the ID 36;

  • The sound of the announcement is the sound with the identifier 35;

  • The announcement should be played every 15 seconds;

  • The maximum waiting time in the queue is 1800 seconds;

  • If the maximum waiting time has been exceeded forward the caller to the number 333;

  • Calling strategy of the queue agents - "Call everyone";

  • Recording of conversations in the queue is enabled;

  • Higher-level agents should start to be dialed if the lower-level agents do not respond within 15 seconds.

 System response:
{
  "announce_sound": 35,
  "start_sound": "null",
  "agent_hangup_transfer_dst": null,
  "append_to_cid_name_on_transfer": null,
  "agent_announce_sound": null,
  "position_announce_frequency": 30,
  "agent_hangup_action": null,
  "tier_rule_wait_multiply_level": false,
  "vm_mailto": null,
  "no_agent_timeout_transfer_dst": "0005*103",
  "agent_report_wait_time": false,
  "vm_enabled": false,
  "quality_rate_sound": null,
  "strategy": "ring-all",
  "try_same_agent_time": 259200,
  "record_enabled": true,
  "vm_attach_file": true,
  "skip_busy_agents": true,
  "sound_type": "music",
  "tier_rules_apply": true,
  "vm_greeting": null,
  "quality_rate_finish_sound": null,
  "announce_frequency": 15,
  "exit_transfer_dst": null,
  "tier_rule_wait_second": 5,
  "sound": 36,
  "exit_with_no_av_agents": true,
  "quality_rate_max": null,
  "timeout_transfer_dst": "333",
  "max_wait_time": 1800,
  "exit_key": null,
  "max_wait_time_with_no_agent": null
}

3. Create a local queue agent:

System response:

{
  "status": "available",
  "name": null,
  "busy_delay_time": 10,
  "no_answer_delay_time": 10,
  "call_timeout": 30,
  "wrap_up_time": 0,
  "extension_id": 117,
  "reject_delay_time": 10,
  "extra_params": null,
  "id": 1
}

4. Create an external queue agent:


System response:

{
  "busy_delay_time": 10,
  "call_timeout": 30,
  "extra_params": "string",
  "id": 9,
  "name": "string",
  "no_answer_delay_time": 10,
  "number": "89876543210",
  "reject_delay_time": 10,
  "status": "available",
  "wrap_up_time": 0
}

5. Add the local agent to the queue with the first position and the first level:

System response:

{
  "position": 1,
  "agent_id": 1,
  "level": 1
}

6. Add an external agent to the queue with the first position and the second level:


System response:

{
  "position": 1,
  "agent_id": 9,
  "level": 2
}

Resources of the "Extension number" section

Queue configuration

 PUT /extension/{extension_id}/queue/

PUT /extension/{extension_id}/queue/

Update the queue parameters

URL Parameters

Name

Type

extension_id

string

JSON Parameters

Name

Type

Mandatory

agent_announce_sound 

long

no

agent_hangup_action 

string

no

agent_hangup_transfer_dst 

string

no

agent_report_wait_time 

boolean

no

announce_frequency

long

no

announce_sound

long

no

append_to_cid_name_on_transfer 

string

no

exit_key

string

no

exit_transfer_dst

string

no

exit_with_no_av_agents 

boolean

no

max_wait_time

long

no

max_wait_time_with_no_agent

long

no

no_agent_timeout_transfer_dst 

string

no

position_announce_frequency 

long

no

quality_rate_finish_sound 

long

no

quality_rate_max 

long

no

quality_rate_sound 

long

no

record_enabled

boolean

no

skip_busy_agents 

boolean

no

sound

long

no

sound_type

string

no

start_sound

long

no

strategy

string

no

tier_rule_wait_multiply_level

boolean

no

tier_rule_wait_second

long

no

tier_rules_apply

boolean

no

timeout_transfer_dst

string

no

try_same_agent_time 

long

no

vm_attach_file 

boolean

no

vm_enabled 

boolean

no

vm_greeting 

long

no

vm_mailto 

string

no

Response fields

Name

Type

agent_announce_sound 

long

agent_hangup_action 

string

agent_hangup_transfer_dst 

string

agent_report_wait_time 

boolean

announce_frequency

long

announce_sound

long

append_to_cid_name_on_transfer 

string

exit_key

string

exit_transfer_dst

string

exit_with_no_av_agents 

boolean

max_wait_time

long

max_wait_time_with_no_agent

long

no_agent_timeout_transfer_dst 

string

position_announce_frequency 

long

quality_rate_finish_sound 

long

quality_rate_max 

long

quality_rate_sound 

long

record_enabled

boolean

skip_busy_agents 

boolean

sound

long

sound_type

string

start_sound

long

strategy

string

tier_rule_wait_multiply_level

boolean

tier_rule_wait_second

long

tier_rules_apply

boolean

timeout_transfer_dst

string

try_same_agent_time 

long

vm_attach_file 

boolean

vm_enabled 

boolean

vm_greeting 

long

vm_mailto 

string

 GET /extension/{extension_id}/queue/

GET /extension/{extension_id}/queue/

Get the queue parameters

URL Parameters

Name

Type

extension_id

string

Response fields

Name

Type

agent_announce_sound 

long

agent_hangup_action 

string

agent_hangup_transfer_dst 

string

agent_report_wait_time 

boolean

announce_frequency

long

announce_sound

long

append_to_cid_name_on_transfer 

string

exit_key

string

exit_transfer_dst

string

exit_with_no_av_agents 

boolean

max_wait_time

long

max_wait_time_with_no_agent

long

no_agent_timeout_transfer_dst 

string

position_announce_frequency 

long

quality_rate_finish_sound 

long

quality_rate_max 

long

quality_rate_sound 

long

record_enabled

boolean

skip_busy_agents 

boolean

sound

long

sound_type

string

start_sound

long

strategy

string

tier_rule_wait_multiply_level

boolean

tier_rule_wait_second

long

tier_rules_apply

boolean

timeout_transfer_dst

string

try_same_agent_time 

long

vm_attach_file 

boolean

vm_enabled 

boolean

vm_greeting 

long

vm_mailto 

string

 GET /extension/{extension_id}/queue/status/

GET /extension/{extension_id}/queue/status/

Get a status of the queue

URL Parameters

Name

Type

extension_id

string

Response fiends

Name

Type

answered_members 

long

trying_members 

long

waiting_members

long

Configuration of the local agent queue

 POST /extension/{extension_id}/queue/agents/local/

POST /extension/{extension_id}/queue/agents/local/

Add a local agent to the queue

URL Parameters

Name

Type

extension_id

string

JSON Parameters

Name

Type

Mandatory

agent_id

long

yes

level

long

no

position

long

no

Response field

Name

Type

agent_id

long

level

long

position

long

 GET /extension/{extension_id}/queue/agents/local/

GET /extension/{extension_id}/queue/agents/local/

Get a list of local queue agents

URL Parameters

Name

Type

extension_id

string

Response field

Name

Type

agent_id

long

level

long

position

long

 PUT /extension/{extension_id}/queue/agents/local/{agent_id}

PUT /extension/{extension_id}/queue/agents/local/{agent_id}

Update the configuration of the local agent in the queue

URL Parameters

Name

Type

extension_id

string

agent_id

integer

JSON Parameters

Name

Type

Mandatory

position

long

no

level

long

no

Response field

Name

Type

agent_id

long

level

long

position

long

 GET /extension/{extension_id}/queue/agents/local/{agent_id}

GET /extension/{extension_id}/queue/agents/local/{agent_id}

Get the configuration of the local agent in the queue

URL Parameters

Name

Type

extension_id

string

agent_id

integer

Response field

Name

Type

agent_id

long

level

long

position

long

 DELETE /extension/{extension_id}/queue/agents/local/{agent_id}

DELETE /extension/{extension_id}/queue/agents/local/{agent_id}

Delete the local agent from queue

URL Parameters

Name

Type

extension_id

string

agent_id

integer

Configuration of the remote agent in the queue

 POST /extension/{extension_id}/queue/agents/remote/

POST /extension/{extension_id}/queue/agents/remote/

Add a remote agent to the queue

URL Parameters

Name

Type

extension_id

string

JSON Parameters

Name

Type

Mandatory

agent_id

long

yes

level

long

no

position

long

no

Response field

Name

Type

agent_id

long

level

long

position

long

 GET /extension/{extension_id}/queue/agents/remote/

GET /extension/{extension_id}/queue/agents/remote/

Get a list of remote agents in the queue

URL Parameters

Name

Type

extension_id

string

Response field

Name

Type

agent_id

long

level

long

position

long

 PUT /extension/{extension_id}/queue/agents/remote/{agent_id}

PUT /extension/{extension_id}/queue/agents/remote/{agent_id}

Update the configuration of the remote agent in the queue

URL Parameters

Name

Type

extension_id

string

agent_id

integer

JSON Parameters

Name

Type

Mandatory

position

long

no

level

long

no

Response field

Name

Type

agent_id

long

level

long

position

long

 GET /extension/{extension_id}/queue/agents/remote/{agent_id}

GET /extension/{extension_id}/queue/agents/remote/{agent_id}

Get the configuration of a remote agent in the queue

URL Parameters

Name

Type

extension_id

string

agent_id

integer

Response field

Name

Type

agent_id

long

level

long

position

long

 DELETE /extension/{extension_id}/queue/agents/remote/{agent_id}

DELETE /extension/{extension_id}/queue/agents/remote/{agent_id}

Delete the remote agent from queue

URL Parameters

Name

Type

extension_id

string

agent_id

integer

Resources of the "Client" section

Local agents

 POST /client/{client_id}/agent/local/

POST /client/{client_id}/agent/local/

Add a local client agent

URL Parameters

Name

Type

client_id

string

JSON Parameters

Name

Type

Mandatory

busy_delay_time

long

no

call_timeout

long

no

extension_id

long

yes

extra_params 

string

no

name

string

yes

no_answer_delay_time

long

no

reject_delay_time

long

no

status

string

no

wrap_up_time

long

no

Response field

Name

Type

busy_delay_time

long

call_timeout

long

extension_id

long

extra_params 

string

id

long

name

string

no_answer_delay_time

long

reject_delay_time

long

status

object

wrap_up_time

long

 GET /client/{client_id}/agent/local/

GET /client/{client_id}/agent/local/

Get a list of local client agents

URL Parameters

Name

Type

client_id

string

Request parameters

Name

Type

extension_id

array [integer]

Response field

Name

Type

busy_delay_time

long

call_timeout

long

extension_id

long

extra_params 

string

id

long

name

string

no_answer_delay_time

long

reject_delay_time

long

status

object

wrap_up_time

long

 PUT /client/{client_id}/agent/local/{agent_id}

PUT /client/{client_id}/agent/local/{agent_id}

Update a local agent

URL Parameters

Name

Type

agent_id

integer

client_id

string

JSON Parameters

Name

Type

Mandatory

busy_delay_time

long

no

call_timeout

long

no

extra_params 

string

no

name

string

yes

no_answer_delay_time

long

no

reject_delay_time

long

no

status

string

no

wrap_up_time

long

no

Response field

Name

Type

busy_delay_time

long

call_timeout

long

extension_id

long

extra_params 

string

id

long

name

string

no_answer_delay_time

long

reject_delay_time

long

status

object

wrap_up_time

long

 GET /client/{client_id}/agent/local/{agent_id}

GET /client/{client_id}/agent/local/{agent_id}

Get a local agent

URL Parameters

Name

Type

agent_id

integer

client_id

string

Response field

Name

Type

busy_delay_time

long

call_timeout

long

extension_id

long

extra_params 

string

id

long

name

string

no_answer_delay_time

long

reject_delay_time

long

status

object

wrap_up_time

long

 DELETE /client/{client_id}/agent/local/{agent_id}

DELETE /client/{client_id}/agent/local/{agent_id}

Delete the local agent. If the parameter remove_from_queues is set to false, then an error will be returned if the agent to be removed is in at least one queue. If the parameter is set to true (by default), then the agent will be removed from the queues as well.

URL Parameters

Name

Type

agent_id

integer

client_id

string

Request parameters

Name

Type

remove_from_queues

boolean

External agents

 POST /client/{client_id}/agent/remote/

POST /client/{client_id}/agent/remote/

Add an external agent

URL Parameters

Name

Type

client_id

string

JSON Parameters

Name

Type

Mandatory

busy_delay_time

long

no

call_timeout

long

no

extra_params

string

no

name

string

yes

no_answer_delay_time

long

no

number

string

yes

reject_delay_time

long

no

status

string

no

wrap_up_time

long

no

Response field

Name

Type

busy_delay_time

long

call_timeout

long

extra_params

string

id

long

name

string

no_answer_delay_time

long

number

string

reject_delay_time

long

status

object

wrap_up_time

long

 GET /client/{client_id}/agent/remote/

GET /client/{client_id}/agent/remote/

Get a list of external client agents

URL Parameters

Name

Type

client_id

string

Response field

Name

Type

busy_delay_time

long

call_timeout

long

extra_params

string

id

long

name

string

no_answer_delay_time

long

number

string

reject_delay_time

long

status

object

wrap_up_time

long

 PUT /client/{client_id}/agent/remote/{agent_id}

PUT /client/{client_id}/agent/remote/{agent_id}

Update an external agent

URL Parameters

Name

Type

agent_id

integer

client_id

string

JSON Parameters

Name

Type

Mandatory

busy_delay_time

long

no

call_timeout

long

no

extra_params

string

no

name

string

no

no_answer_delay_time

long

no

number

string

no

reject_delay_time

long

no

status

string

no

wrap_up_time

long

no

Response field

Name

Type

busy_delay_time

long

call_timeout

long

extra_params

string

id

long

name

string

no_answer_delay_time

long

number

string

reject_delay_time

long

status

object

wrap_up_time

long

 GET /client/{client_id}/agent/remote/{agent_id}

GET /client/{client_id}/agent/remote/{agent_id}

Get an external agent

URL Parameters

Name

Type

agent_id

integer

client_id

string

Response field

Name

Type

busy_delay_time

long

call_timeout

long

extra_params

string

id

long

name

string

no_answer_delay_time

long

number

string

reject_delay_time

long

status

object

wrap_up_time

long

 DELETE /client/{client_id}/agent/remote/{agent_id}

DELETE /client/{client_id}/agent/remote/{agent_id}

Remove the external agent. If the parameter remove_from_queues is set to false, then an error will be returned if the agent to be removed is in at least one queue. If the parameter is set to true (by default), then the agent will be removed from the queues as well.

URL Parameters

Name

Type

agent_id

integer

client_id

string

Request parameters

Name

Type

remove_from_queues

boolean

  • No labels