Очередь (/queue/)

Протестировать методы API можно на странице интерактивного обозревателя API и без написания кода
Некоторые ресурсы, описанные на странице, по умолчанию могут быть не доступны из-за типа приложения (см. Создание и авторизация приложений)

Параметры очереди

Внутренние номера типа очередь (queue) служат для реализации функциональности колл-центра. Для конфигурации новой очереди необходимо создать внутренний номер, указав в качестве типа (параметр type) значение queue. После этого становится возможным конфигурация очереди и агентов очереди через API-интерфейс queue.

События агентов очереди (login/logout) отслеживаются с помощью ресурса “События агента очереди”.

Звуковые файлы, необходимые для настройки очереди, загружаются с помощью ресурса “Звуковые файлы”.

Описание структур данных

Для очереди могут быть сконфигурированы следующие параметры: 

Параметр

Тип

Обязательный

Значение по умолчанию

Описание

Параметр

Тип

Обязательный

Значение по умолчанию

Описание

agent_announce_sound

long

нет

0

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

agent_hangup_action

string

нет

 

Может быть null либо 'transfer', либо 'quality_rate'

agent_hangup_transfer_dst

string

нет

 

После окончания разговора, если первым положит трубку агент, вызов будет переадресован на номер, указанный в agent_hangup_transfer_dst. Работает только при agent_hangup_action='transfer'

agent_report_wait_time

boolean

нет

true

Агенту очереди при ответе вызывающему абоненту будет сообщено время ожидания ответа вызывающим абонентом в секундах

announce_frequency

long

нет

0

Частота воспроизведения звука announce_sound в секундах

announce_sound

long

нет

0

Звук, воспроизводящийся через определенный промежуток времени во время ожидания вызывающим абонентом ответа. Частота воспроизведения настраивается параметром announce_frequency

append_to_cid_name_on_transfer

string

нет

 

При переадресации к имени вызывающего абонента будет добавлен признак переадресации из этой очереди

exit_key

string

нет

 

Кнопка, при нажатии которой осуществляется выход из очереди. Может быть цифровой кнопкой, а также кнопками * и #

exit_transfer_dst

string

нет

 

В случае, если вызывающий абонент нажал кнопку из exit_key, его переадресует на данный номер

exit_with_no_av_agents

boolean

нет

true

Если данный параметр активен, вызов будет выведен из очереди, если нет доступных агентов для ответа

max_wait_time

long

нет

0

Максимальное время ожидания вызывающим абонентом в очереди в секундах. По прошествии этого времени осуществляется выход из очереди

max_wait_time_with_no_agent

long

нет

0

Максимальное время ожидания вызывающим абонентом в очереди в секундах. По прошествии этого времени, если в очереди нет ни одного доступного агента, осуществляется выход из очереди

no_agent_timeout_transfer_dst

string

нет

 

В случае, если вызывающий абонент вышел по истечении max_wait_time_with_no_agent, его переадресует на данный номер

position_announce_frequency

long

нет

0

Частота анонса позиции вызывающего абонента в очереди по отношению к другим ожидающим ответа. Не используется, если не указано, не может быть менее 1 секунды

quality_rate_finish_sound

long

нет

0

Звук, который будет проигран после выбранной оценки. Работает только при agent_hangup_action='quality_rate'

quality_rate_max

long

нет

0

Максимальная оценка, которую можно будет указать. Работает только при agent_hangup_action='quality_rate'

quality_rate_sound

long

нет

0

Если первым после окончания разговора положит трубку агент очереди, вызывающему абоненту проиграется звук, за которым последует ожидание оценки. Работает только при agent_hangup_action='quality_rate'

record_enabled

boolean

нет

true

Включение записи разговора в очереди

skip_busy_agents

boolean

нет

true

Очередь попытается не вызывать агентов, занятых в разговоре не из этой очереди

sound

long

нет

0

Основной звук, который будут слышать звонящие в очередь. Требуется указать id ресурса sound

sound_type

string

нет

music

Тип основного звука, может принимать значения music или ring. Если установлен в значение ring, то звонящий слышит обычные гудки, при этом переданный параметр sound игнорируется, а уже установленный sound сбрасывается в null. Если же параметр имеет значение music, то будет воспроизведен звук, указанный в параметре sound

start_sound

long

нет

0

Звук, проигрываемый вызывающему абоненту при постановке его в очередь. Проигрывается до начала вызова агентов

strategy

string

нет

"round-robin"

Стратегия обзвона агентов очереди. Подробно см. Стратегии очереди

tier_rule_wait_multiply_level

boolean

нет

true

Если параметр имеет значение true, время tier_rule_wait_second умножается на уровень агента

tier_rule_wait_second

long

нет

0

Время в секундах с начала поступления вызова в очередь, по истечении которого начинают вызываться агенты следующего уровня. Если параметр tier_rule_wait_multiply_level установлен в true, то указанное время умножается на уровень агента в очереди. Если параметр tier_rule_wait_multiply_level установлен в false, то по истечении указанного времени агенты всех уровней выше минимального становятся доступны для вызова в соответствии со стратегией очереди

tier_rules_apply

boolean

нет

true

Требуется ли применение параметров tier_rule_wait_second и tier_rule_wait_multiply_level

timeout_transfer_dst

string

нет

 

В случае, если вызывающий абонент вышел по истечении max_wait_time, его переадресует на данный номер

try_same_agent_time

long

нет

0

Система попытается соединить конкретного вызывающего абонента с конкретным агентом очереди, если этот агент ранее уже отвечал этому абоненту. Если соединить не получится, либо звонящий ранее ни с кем не общался, вызов пойдет по стратегии обзвона очереди. Значение в секундах от 1 до 2592000

vm_attach_file

boolean

нет

true

Помимо уведомления о поступлении голосовой почты будет направлена и сама запись голосовой почты

vm_enabled

boolean

нет

true

Включение/выключение голосовой почты в очереди

vm_greeting

long

нет

0

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

vm_mailto

string

нет

 

Адрес почтового ящика, куда будет направлено уведомление о голосовой почте

disable_answer

boolean

нет

false

По умолчанию очередь снимает трубку. В случае, если disable_answer=true очередь не будет снимать трубку. Максимальное время удержания вызова в очереди при ожидании ответа без снятия трубки - 5 минут

hide_in_caller_id_number

string

нет

null

Сокрытие AOH при входящих вызовах на агентов

hide_in_caller_id_name

string

нет

null

Сокрытие AOH при входящих вызовах на агентов

Стратегии очереди

При любой стратегии сначала вызываются агенты с наименьшим уровнем. Если агенты текущего уровня обзвона заняты или находятся в состоянии временной недоступности, например, после отсутствия ответа или отклонения предыдущего вызова (см. конфигурацию агента), то вызываются агенты следующего уровня. Если параметр tier_rules_apply имеет значение true, агенты следующего уровня начинают вызываться через время, указанное параметром tier_rule_wait_second, отчет начинается с началом вызова агентов текущего уровня. Если параметр tier_rule_wait_multiply_level имеет значение true, то время tier_rule_wait_second умножается на уровень агента.

Стратегия

Описание

Стратегия

Описание

ring-all

Вызываются одновременно все доступные агенты.  Если параметр tier_rules_apply имеет значение true, сначала вызываются агенты с наименьшим уровнем, затем, через время, указанное параметром tier_rule_wait_second, начинают вызываться агенты следующего уровня и т.д.

longest-idle-agent

Вызывается агент с наибольшим временем ожидания c момента последнего разговора

round-robin

Агенты вызываются согласно их позиции (параметр position при добавлении агента в очередь)

top-down

Агенты вызываются в порядке из позиций, начиная с первой

agent-with-least-talk-time

Вызывается агент с наименьшим временем разговора

agent-with-fewest-calls

Вызывается агент с наименьшим количеством звонков

sequentially-by-agent-order

Агенты вызываются последовательно в порядке их уровней и позиций. Первым всегда вызывается агент с наименьшем уровнем и позицией

random

Агенты вызываются в случайном порядке

Агенты очереди

Агенты очереди могут быть двух типов: локальные, когда агентом выступает внутренний номер типа телефонный терминал, и удаленный, когда агентом очереди является заданный внешний номер. Оба типа агентов имеют следующие настраиваемые параметры:

Параметр

Тип

Обяза-тельный

Значение по умолчанию

Описание

Параметр

Тип

Обяза-тельный

Значение по умолчанию

Описание

busy_delay_time

long

нет

0

Если агент при попытке вызова был занят, то в течение указанного в этом параметре времени в секундах ему не будут направляться вызовы

call_timeout 

long

нет

0

Время в секундах, в течение которого осуществляется вызов агента

extra_params 

string

нет

 

Дополнительные параметры

name

string

нет

 

Имя агента очереди

no_answer_delay_time

long

нет

0

Если агент не ответил на вызов, то в течение указанного в этом параметре времени в секундах ему не будут направляться вызовы

number

string

нет

 

Номер агента очереди

reject_delay_time

long

нет

0

Время в секундах с момента последнего отклонения вызова агентом, в течение которого ему не будут направляться вызовы

status

object

нет

 

Статус агента. Принимает одно из значений: "logged_out", "available". В статусе available агент доступен для вызовов, в статусе logged_out вызовы агенту не направляются

wrap_up_time

long

нет

0

Время в секундах с момента последнего разговора агента, в течение которого ему не будут направляться вызовы

agent_sound_id

long

нет

0

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

 

Управление агентом в очереди

Для того, чтобы агент мог принимать вызовы из очереди, он должен быть туда добавлен. Добавление агента в очередь, его удаление оттуда, а также изменение его уровня и позиции в очереди осуществляются через ресурсы "локальный агент в очереди" и "внешний агент в очереди" для локальных и внешних агентов соответственно.

При добавлении локального агента в очередь возможно настроить следующие параметры:

Параметр

Тип

Обязательный

Значение по умолчанию

Описание

Параметр

Тип

Обязательный

Значение по умолчанию

Описание

agent_id

long

да

0

Идентификатор локального агента

level 

long

нет

0

Уровень агента в очереди

position

long

нет

0

Позиция агента в очереди

При добавлении внешнего агента в очередь возможно настроить следующие параметры:

Параметр

Тип

Обязательный

Значение по умолчанию

Описание

Параметр

Тип

Обязательный

Значение по умолчанию

Описание

agent_id

long

да

0

Идентификатор внешнего агента

level 

long

нет

0

Уровень агента в очереди

position

long

нет

0

Позиция агента в очереди

Значение счетчика звонящих в очереди (формируется на основании событий dial-in и hangup) можно получить с помощью ресурса
GET /extension/{extension_id}/queue/status/
Данный ресурс возвращает ответы вида:

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

где параметр trying_members – это количество звонящих и ожидающих ответа агентов очереди.
Т.к. количество запросов лимитировано, рекомендуется запрашивать количество звонящих в очереди именно по событиям очереди, можно добавить события answer самих внутренних номеров (агентов очереди).

 

Список звонящих в очереди

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

Данный ресурс возвращает ответы вида:

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

Через параметр call_api_id можно перевести или удалить вызов с помощью

 

Ресурсы раздела “Внутренний номер”

Ресурсы очереди

Обновление параметров очереди

PUT /extension/{extension_id}/queue/

 

Параметры URL

Имя

Тип

Имя

Тип

extension_id

string

Параметры JSON

Имя

Тип

Обязательный

Имя

Тип

Обязательный

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

нет

hide_in_caller_id_number

string

нет

hide_in_caller_id_name

string

нет

Поля ответа

Имя

Тип

Имя

Тип

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

hide_in_caller_id_number

string

hide_in_caller_id_name

string

Получить параметры очереди

GET /extension/{extension_id}/queue/

 

Параметры URL

Имя

Тип

Имя

Тип

extension_id

string

Поля ответа

Имя

Тип

Имя

Тип

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

hide_in_caller_id_number

string

hide_in_caller_id_name

string

Получить статус очереди

Получить список звонящих в очереди

Локальный агент

Добавить локального агента в очередь

Получить список локальных агентов очереди

Обновить конфигурацию локального агента в очереди

Получить конфигурацию локального агента в очереди

Удалить локального агента из очереди

Внешний агент

Добавить внешнего агента в очередь

Получить список внешних агентов в очереди

Обновить конфигурацию внешнего агента в очереди

Получить конфигурацию внешнего агента в очереди

Удалить внешнего агента из очереди

Ресурсы раздела "Клиент"

Локальные агенты

Добавить локального агента клиента

Получить список локальных агентов клиента

Обновить локального агента

Получить локального агента

Удалить локального агента.

Если параметр remove_from_queues установлен в false, то при нахождении удаляемого агента хотя бы в одной очереди будет возвращена ошибка. Если параметр установлен в true (по умолчанию), то агент удалится также и из очередей.

Внешние агенты

Добавить внешнего агента

Получить список внешних агентов клиента

Обновить внешнего агента

Получить внешнего агента

Удалить внешнего агента. 

Если параметр remove_from_queues установлен в false, то при нахождении удаляемого агента хотя бы в одной очереди будет возвращена ошибка. Если параметр установлен в true (по умолчанию), то агент удалится также и из очередей.

 

Примеры

В качестве примера создадим внутренний номер типа "очередь", настроим его, создадим локальных и внешних агентов и добавим их в очередь.

  1. Используя ресурс "

Внутренний номер", создадим внутренний номер типа "queue":

Ответ системы:

{ "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": "тестовая очередь", "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 }
  1. Настроим очередь следующим образом:

  • Главным звуком очереди должен являться звук с идентификатором 36;

  • Звуком анонса звук с идентификатором 35;

  • Анонс должен проигрываться через каждые 15 секунд;

  • Максимальное время ожидания в очереди – 1800 секунд;

  • Если было превышено максимальное время ожидания, переадресовывать вызывающего абонента на номер 333;

  • Стратегия обзвона агентов очереди – "Звонить всем";

  • Запись разговоров в очереди включена;

  • Агенты вышестоящего уровня должны начинать вызываться, если агенты нижестоящего уровня не отвечают в течение 15 секунд.

  1. Создадим локального агента очереди:

Ответ системы:

  1. Создадим внешнего агента очереди:

Ответ системы:

  1. Добавим локального агента в очередь с первой позицией и первым уровнем:

Ответ системы:

  1. Добавим внешнего агента в очередь с первой позицией и вторым уровнем:

Ответ системы: