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 |
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
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
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
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
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 |