Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

Table of Contents

Description of Data Structures

Expand
titleExpand

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 isset to true then the specified time is multiplied by the agent level in the queue. If the parameter tier_rule_wait_multiply_level isset 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

disable_answer

boolean

no

false

By default, the queue answers a call. In case disable_answer=true the queue will just ring with early media. In that case maximum time a call can be held in a queue while waiting for an agent answer is 5 minutes

hide_in_caller_id_number

string

no

null

Hiding caller_id_number for incoming calls to agents

hide_in_caller_id_name

string

no

null

Hiding caller_id_name for incoming calls to agents

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

Expand
titleDescription 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, thenext 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: 

Expand
titleParameters 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 theagent 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:

Code Block
languagejson
{
  "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).

List of callers in the queue

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

This resource returns the responses in the form:

Code Block
languagejson
{
  "call_api_id": "string",
  "joined_datetime": "string",
  "number": "string",
  "serving_agent": "string",
  "state": "string",
  "wait_time": 0
}

Through the call_api_id parameter, you can transfer or delete a call using Current Calls (/current_calls/)

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:

Tabs
[{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"In the "},{"type":"text","text":"authentication ","marks":[{"type":"strong"}]},{"type":"text","text":"section enter the "},{"type":"text","text":"Application_ID","marks":[{"type":"strong"}]},{"type":"text","text":" and "},{"type":"text","text":"Application_Secret","marks":[{"type":"strong"}]},{"type":"text","text":" values obtained during the application registration in the "},{"type":"text","text":"client_id ","marks":[{"type":"strong"}]},{"type":"text","text":"and "},{"type":"text","text":"client_secret","marks":[{"type":"strong"}]},{"type":"text","text":" fields, then click on the \""},{"type":"text","text":"Try it out!","marks":[{"type":"strong"}]},{"type":"text","text":"\" button. If the application data is correct, an access token ("},{"type":"text","text":"access_token","marks":[{"type":"strong"}]},{"type":"text","text":") will be returned in response. The received access token should be entered into the \""},{"type":"text","text":"Access Token Field","marks":[{"type":"strong"}]},{"type":"text","text":"\" at the top of the page and saved by clicking the \""},{"type":"text","text":"Set Token","marks":[{"type":"strong"}]},{"type":"text","text":"\" button."}]},{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Method","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Resource","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Data","marks":[{"type":"strong"}]}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"POST"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"/client/@me/extension/"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"{"},{"type":"hardBreak"},{"type":"text","text":"\"status\": \"active\","},{"type":"hardBreak"},{"type":"text","text":"\"name\": \"370\","},{"type":"hardBreak"},{"type":"text","text":"\"label\": \"test queue\","},{"type":"hardBreak"},{"type":"text","text":"\"type\": \"queue\""},{"type":"hardBreak"},{"type":"text","text":"}"}]}]}]}]},{"type":"paragraph","content":[]}]},"id":"05990ccf-3682-45b7-9af4-53738715673b","label":"Interactive API Browser","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"To send requests using the cURL program, set the values of the "},{"type":"text","text":"url ","marks":[{"type":"strong"}]},{"type":"text","text":"and "},{"type":"text","text":"access_token","marks":[{"type":"strong"}]},{"type":"text","text":" variables:"}]},{"type":"paragraph","content":[{"type":"text","text":"export url=\"https://<hostname>/api/ver1.0\"","marks":[{"type":"code"}]},{"type":"text","text":" "},{"type":"hardBreak"},{"type":"text","text":"(where the hostname — is the hostname of the API-server provider of IP-telephony),"}]},{"type":"paragraph","content":[{"type":"text","text":"export access_token=\"8SNsrS0jV35vfmKqKeKtRrHfpbg4UX\"","marks":[{"type":"code"}]},{"type":"text","text":" "},{"type":"hardBreak"},{"type":"text","text":"(the received access token)."}]},{"type":"paragraph","content":[{"type":"text","text":"Send a request:"}]},{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl \\\n-H \"Authorization: Bearer ${access_token}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"status\": \"active\",\n  \"name\": \"370\",\n  \"label\": \"test queue\",\n  \"type\": \"queue\"\n}' \\\n-X POST ${url}/client/@me/extension/"}]}]},"id":"9cea3dfd-9b7d-4595-8832-d57c8828065a","label":"cURL Program","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"To send requests in Python, set the values of the variables URL and ACCESS_TOKEN:"}]},{"type":"paragraph","content":[{"type":"text","text":"URL = \"https://<hostname>/api/ver1.0\"","marks":[{"type":"code"}]},{"type":"hardBreak"},{"type":"text","text":"(where the hostname — is the hostname of the API-server provider of IP-telephony),"}]},{"type":"paragraph","content":[{"type":"text","text":"ACCESS_TOKEN = \"8SNsrS0jV35vfmKqKeKtRrHfpbg4UX\"","marks":[{"type":"code"}]},{"type":"hardBreak"},{"type":"text","text":"(the received access token)."}]},{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\n\nimport requests\n\nurl = f\"{URL}/client/@me/extension/\"\nheaders = {\n    'Authorization': f'Bearer {ACCESS_TOKEN}',\n    'Content-Type': 'application/json'\n}\ndata = '''{\n    \"status\": \"active\",\n    \"name\": \"370\",\n    \"label\": \"test queue\",\n    \"type\": \"queue\"\n}'''\nresponse = requests.post(url, headers=headers, data=data)\nprint(response.text)"}]}]},"id":"ad445d19-f68f-49b4-8af5-5a82064683c1","label":"In Python3","type":"tab"}]

System response:

Code Block
languagejson
{
  "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.

Tabs
[{"content":{"version":1,"type":"doc","content":[{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Method","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Resource","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Data","marks":[{"type":"strong"}]}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"PUT"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"/extension/208/queue/"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"{"},{"type":"hardBreak"},{"type":"text","text":"\"announce_frequency\": 15,"},{"type":"hardBreak"},{"type":"text","text":"\"announce_sound\": 35,"},{"type":"hardBreak"},{"type":"text","text":"\"max_wait_time\": 1800,"},{"type":"hardBreak"},{"type":"text","text":"\"record_enabled\": true,"},{"type":"hardBreak"},{"type":"text","text":"\"sound\": 36,"},{"type":"hardBreak"},{"type":"text","text":"\"sound_type\": \"music\","},{"type":"hardBreak"},{"type":"text","text":"\"strategy\": \"ring-all\","},{"type":"hardBreak"},{"type":"text","text":"\"timeout_transfer_dst\": \"333\","},{"type":"hardBreak"},{"type":"text","text":"\"tier_rules_apply\": true,"},{"type":"hardBreak"},{"type":"text","text":"\"tier_rule_wait_second\": 5"},{"type":"hardBreak"},{"type":"text","text":"}"}]}]}]}]},{"type":"paragraph","content":[]}]},"id":"cfa34061-5173-4266-8553-826b99872427","label":"Interactive API Browser","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl \\\n-H \"Authorization: Bearer ${access_token}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"announce_frequency\": 15,\n  \"announce_sound\": 35,\n  \"max_wait_time\": 1800,\n  \"record_enabled\": true,\n  \"sound\": 36,\n  \"sound_type\": \"music\",\n  \"strategy\": \"ring-all\",\n  \"timeout_transfer_dst\": \"333\",\n  \"tier_rules_apply\": true,\n  \"tier_rule_wait_second\": 5\n}' \\\n-X PUT ${url}/extension/208/queue/"}]}]},"id":"d699e743-0596-49b7-a55c-21ed3c0d41b1","label":"cURL Program","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\n\nimport requests\n\nurl = f\"{URL}/extension/208/queue/\"\nheaders = {\n    'Authorization': f'Bearer {ACCESS_TOKEN}',\n    'Content-Type': 'application/json'\n}\ndata = '''{\n    \"announce_frequency\": 15,\n    \"announce_sound\": 35,\n    \"max_wait_time\": 1800,\n    \"record_enabled\": true,\n    \"sound\": 36,\n    \"sound_type\": \"music\",\n    \"strategy\": \"ring-all\",\n    \"timeout_transfer_dst\": \"333\",\n    \"tier_rules_apply\": true,\n    \"tier_rule_wait_second\": 5\n}'''\nresponse = requests.put(url, headers=headers, data=data)\nprint(response.text)"}]}]},"id":"6c5ca2f5-3eb1-43e9-9601-d2ea90f74621","label":"In Python3","type":"tab"}]
Expand
titleSystem response:
Code Block
languagejson
{
  "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:

Tabs
[{"content":{"version":1,"type":"doc","content":[{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Method","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Resource","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Data","marks":[{"type":"strong"}]}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"POST"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"/client/@me/agent/local/"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"{"},{"type":"hardBreak"},{"type":"text","text":"\"busy_delay_time\": 10,"},{"type":"hardBreak"},{"type":"text","text":"\"call_timeout\": 30,"},{"type":"hardBreak"},{"type":"text","text":"\"extension_id\": 117,"},{"type":"hardBreak"},{"type":"text","text":"\"no_answer_delay_time\": 10,"},{"type":"hardBreak"},{"type":"text","text":"\"reject_delay_time\": 10,"},{"type":"hardBreak"},{"type":"text","text":"\"status\": \"available\","},{"type":"hardBreak"},{"type":"text","text":"\"wrap_up_time\": 0"},{"type":"hardBreak"},{"type":"text","text":"}"}]}]}]}]},{"type":"paragraph","content":[]}]},"id":"b415ac14-64b6-4bcc-bf50-643675a5f497","label":"Interactive API Browser","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl \\\n-H \"Authorization: Bearer ${access_token}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"busy_delay_time\": 10,\n  \"call_timeout\": 30,\n  \"extension_id\": 117,\n  \"no_answer_delay_time\": 10,\n  \"reject_delay_time\": 10,\n  \"status\": \"available\",\n  \"wrap_up_time\": 0\n}' \\\n-X POST ${url}/client/@me/agent/local/"}]}]},"id":"5c948ba1-1d15-4867-951d-60aac7e90488","label":"cURL Program","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\n\nimport requests\n\nurl = f\"{URL}/client/@me/agent/local/\"\nheaders = {\n    'Authorization': f'Bearer {ACCESS_TOKEN}',\n    'Content-Type': 'application/json'\n}\ndata = '''{\n    \"busy_delay_time\": 10,\n    \"call_timeout\": 30,\n    \"extension_id\": 117,\n    \"no_answer_delay_time\": 10,\n    \"reject_delay_time\": 10,\n    \"status\": \"available\",\n    \"wrap_up_time\": 0\n}'''\nresponse = requests.post(url, headers=headers, data=data)\nprint(response.text)"}]}]},"id":"1b2903ee-b1c4-4910-887b-fe89ea12f48e","label":"In Python3","type":"tab"}]

System response:

Code Block
languagejson
{
  "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:

Tabs
[{"content":{"version":1,"type":"doc","content":[{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Method","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Resource","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Data","marks":[{"type":"strong"}]}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"POST"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"/client/@me/agent/remote/"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"{"},{"type":"hardBreak"},{"type":"text","text":"\"busy_delay_time\": 10,"},{"type":"hardBreak"},{"type":"text","text":"\"call_timeout\": 30,"},{"type":"hardBreak"},{"type":"text","text":"\"no_answer_delay_time\": 10,"},{"type":"hardBreak"},{"type":"text","text":"\"number\": \"89215650644\","},{"type":"hardBreak"},{"type":"text","text":"\"reject_delay_time\": 10,"},{"type":"hardBreak"},{"type":"text","text":"\"status\": \"available\","},{"type":"hardBreak"},{"type":"text","text":"\"wrap_up_time\": 0"},{"type":"hardBreak"},{"type":"text","text":"}"}]}]}]}]},{"type":"paragraph","content":[]}]},"id":"e699b2e4-9f7b-4eb5-a513-20e851f57276","label":"Interactive API Browser","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl \\\n-H \"Authorization: Bearer ${access_token}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"busy_delay_time\": 10,\n  \"call_timeout\": 30,\n  \"no_answer_delay_time\": 10,\n  \"number\": \"89215650644\",\n  \"reject_delay_time\": 10,\n  \"status\": \"available\",\n  \"wrap_up_time\": 0\n}' \\\n-X POST ${url}/client/@me/agent/remote/"}]}]},"id":"a0343619-ad25-4da0-aa27-2251c04fd824","label":"cURL Program","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\n\nimport requests\n\nurl = f\"{URL}/client/@me/agent/remote/\"\nheaders = {\n    'Authorization': f'Bearer {ACCESS_TOKEN}',\n    'Content-Type': 'application/json'\n}\ndata = '''{\n    \"busy_delay_time\": 10,\n    \"call_timeout\": 30,\n    \"no_answer_delay_time\": 10,\n    \"number\": \"89215650644\",\n    \"reject_delay_time\": 10,\n    \"status\": \"available\",\n    \"wrap_up_time\": 0\n}'''\nresponse = requests.post(url, headers=headers, data=data)\nprint(response.text)"}]}]},"id":"837b5db2-bac4-4c84-ab1f-14027ae64956","label":"In Python3","type":"tab"}]

System response:

Code Block
languagejson
{
  "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:

Tabs
[{"content":{"version":1,"type":"doc","content":[{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Method","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Resource","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Data","marks":[{"type":"strong"}]}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"POST"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"/extension/208/queue/agents/local/"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"{"},{"type":"hardBreak"},{"type":"text","text":"\"agent_id\": 1,"},{"type":"hardBreak"},{"type":"text","text":"\"level\": 1,"},{"type":"hardBreak"},{"type":"text","text":"\"position\": 1"},{"type":"hardBreak"},{"type":"text","text":"}"}]}]}]}]},{"type":"paragraph","content":[]}]},"id":"53d68781-aef2-4d98-95a8-9e4233bc30a8","label":"Interactive API Browser","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl \\\n-H \"Authorization: Bearer ${access_token}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"agent_id\": 1,\n  \"level\": 1,\n  \"position\": 1\n}' \\\n-X POST ${url}/extension/208/queue/agents/local/"}]}]},"id":"227f2a19-2af7-4275-ab1f-cd5bec4e2fcc","label":"cURL Program","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\n\nimport requests\n\nurl = f\"{URL}/extension/208/queue/agents/local/\"\nheaders = {\n    'Authorization': f'Bearer {ACCESS_TOKEN}',\n    'Content-Type': 'application/json'\n}\ndata = '''{\n    \"agent_id\": 1,\n    \"level\": 1,\n    \"position\": 1\n}'''\nresponse = requests.post(url, headers=headers, data=data)\nprint(response.text)"}]}]},"id":"5bf3e3cf-72ec-4130-907e-428b2f5c1e12","label":"In Python3","type":"tab"}]

System response:

Code Block
languagejson
{
  "position": 1,
  "agent_id": 1,
  "level": 1
}

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

Tabs
[{"content":{"version":1,"type":"doc","content":[{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Method","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Resource","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"Data","marks":[{"type":"strong"}]}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"POST"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"/extension/208/queue/agents/remote/"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"{"},{"type":"hardBreak"},{"type":"text","text":"\"agent_id\": 9,"},{"type":"hardBreak"},{"type":"text","text":"\"level\": 2,"},{"type":"hardBreak"},{"type":"text","text":"\"position\": 1"},{"type":"hardBreak"},{"type":"text","text":"}"}]}]}]}]},{"type":"paragraph","content":[]}]},"id":"73238ffa-5c93-4978-82ef-bd3bd17b5067","label":"Interactive API Browser","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl \\\n-H \"Authorization: Bearer ${access_token}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"agent_id\": 9,\n  \"level\": 2,\n  \"position\": 1\n}' \\\n-X POST ${url}/extension/208/queue/agents/remote/"}]}]},"id":"3ff87e9f-083b-482f-a6c7-e8e13d4a35b2","label":"cURL Program","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\n\nimport requests\n\nurl = f\"{URL}/extension/208/queue/agents/remote/\"\nheaders = {\n    'Authorization': f'Bearer {ACCESS_TOKEN}',\n    'Content-Type': 'application/json'\n}\ndata = '''{\n    \"agent_id\": 9,\n    \"level\": 2,\n    \"position\": 1\n}'''\nresponse = requests.post(url, headers=headers, data=data)\nprint(response.text)"}]}]},"id":"8c47aca6-b0e2-4698-9525-3827a4982490","label":"In Python3","type":"tab"}]

System response:

Code Block
languagejson
{
  "position": 1,
  "agent_id": 9,
  "level": 2
}

Resources of the "Extension number" section

Queue configuration

Expand
titlePUT /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

Expand
titleGET /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

Expand
titleGET /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

Get a list of callers in the queue

Expand
titleGET /extension/{extension_id}/queue/status/members/

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

URL Parameters

Name

Type

extension_id

string

Response field

Name

Type

wait_time

integer

joined_datetime

string

serving_agent

string

number

string

state

string

call_api_id

string

Configuration of the local agent queue

Expand
titlePOST /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

Expand
titleGET /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

Expand
titlePUT /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

Expand
titleGET /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

Expand
titleDELETE /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

Expand
titlePOST /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

Expand
titleGET /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

Expand
titlePUT /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

Expand
titleGET /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

Expand
titleDELETE /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

Expand
titlePOST /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

Expand
titleGET /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

Expand
titlePUT /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

Expand
titleGET /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

Expand
titleDELETE /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

Expand
titlePOST /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

Expand
titleGET /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

Expand
titlePUT /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

Expand
titleGET /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

Expand
titleDELETE /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