Правила входящего вызова (/incom_rule/)

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

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

На входящий вызов можно создавать несколько правил (максимальное количество определяется ресурсом “Лимиты (/limit/)”.

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

Правило входящего вызова (IncomingRule) 

Имя

Тип

Обязательное

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

Описание

Имя

Тип

Обязательное

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

Описание

allow_public_transfer

boolean

нет

true

Если переадресация была на внешний номер (не внутренний номер внутри сети), то данный параметр указывает, можно ли с него будет делать трансфер звонка

call_status

string

нет

'any'

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

  • 'no_answer' – не было ответа (по тайм-ауту или какая-либо ошибка, кроме "SIP/2.0 486 Busy Here");

  •  'busy' – номер занят (получен SIP/2.0 486 Busy Here);

  • 'any' – любой результат

caller_id

string

нет

null

Правило будет работать только для вызовов, источник которых определяется этим полем. Поле заполняется в виде регулярного выражения PCRE. Например: "^(\+|)7812" будет соответствовать всем источникам, начинающимся на "+7812" или "7812"

caller_id_action

string

нет

'any'

Параметр определяет метод анализа источника вызова caller_id:

  • 'matches' – должен совпадать (caller_id должен быть задан);

  • 'not_matches' – должен не совпадать (caller_id должен быть задан);

  • 'anonymous' – источник скрыт;

  • 'any' – любой источник

cascade_numbers

Array[cascade_number]

при type cascade

[ ]

Обязателен для "type": "cascade". Задает последовательность подключаемых к вызову номеров и время подключения каждого нового номера в виде массива cascade_number элементов:

  • delay (integer) – определяет момент подключения номера к вызову. Отсчитывается от начала вызова в секундах;

  • number (string) – номер, подключаемый к вызову.

Например:
"cascade_numbers": [ { "delay": 0, "number": "097" }, { "delay": 5, "number": "00018966" } ]
Сначала будет вызываться номер "097", а через 5 секунд будут одновременно вызываться номера "097" и "00018966"

Примечание: при каскадном вызове сразу начинает звонить номер с минимальным delay, независимо от его фактического значения. Например,
"cascade_numbers": [ { "delay": 3, "number": "097" }, { "delay": 5, "number": "00018966" } ]
идентично последовательности 
"cascade_numbers": [ { "delay": 0, "number": "097" }, { "delay": 5, "number": "00018966" } ] 

enable_call_screening

boolean

нет

true

Включение функции call_screening для данного правила переадресации. Параметр применим только к правилами типа transfer и cascade

enabled

boolean

нет

true

Опция позволяет включать/выключать существующие правила

extension_call_status

string

нет

'any'

Правило отработает только в случае, если статус вызова внутреннего номера (если он вызывался) соответствует значению, переданному в этом параметре:

  • 'no_answer' – не было ответа (по тайм-ауту или какая-либо ошибка, кроме "SIP/2.0 486 Busy Here");

  • 'busy' – номер занят (получен SIP/2.0 486 Busy Here);

  • 'any' – любой результат

extension_status

string

нет

'any'

Правило отработает лишь при таком статусе внутреннего номера. Принимает одно из значений:

  • 'registered' – внутренний номер зарегистрирован;

  • 'unreachable' – внутренний номер недоступен (например, потеряна регистрация или внутренний номер не отвечает из-за проблем с сетью);

  • 'any' – статус не имеет значения

final

boolean

нет

true

Это правило является последним, и последующие обрабатывать не нужно

id

long

нет

 

Уникальный идентификатор правила (в пределах внутреннего номера). Поле только для чтения

ignore_early_media

boolean

нет

true

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

interval

long

нет

null

Правило отработает при попадании во временной интервал

name

string

нет

null

Имя правила, не обязательно уникальное

playfile_sound

long

при type playfile

null

Идентификатор звукового файла для правила типа playfile

transfer_dst

string

при type transfer

null

Обязателен для "type": "transfer". Переадресация на указанный номер. Если нужна переадресация на несколько номеров одновременно (одновременный вызов), то эти номера перечисляются через пробел

transfer_timeout

long

нет

0

Обязателен для "type": "transfer" и "type": "cascade". Время в секундах, в течение которого будет пытаться осуществиться перевод. Если время истекло, а перевода не произошло, то происходит переход к обработке следующего правила

type

string

нет



Определяет тип действия со входящим вызовом. Реализованы следующие типы:

  • busy – ответить на входящий вызов сигналом "занято" (SIP/2.0 486 Busy Here);

  • transfer – выполнить перевод вызова (сделать переадресацию) на номер(а) из transfer_dst;

  • simple_transfer – выполнить перевод вызова (сделать переадресацию) на номер(а) из transfer_dst. При данном типе переадресации правила входящего вызова добавочных, перечисленных в transfer_dst, не выполняются для телефонных терминалов;

  • hangup – сбросить вызов (sip code 480);

  • playfile – проиграть файл (задается параметром playfile_sound);

  • voicemail – сделать перевод вызова на голосовую почту. Актуально для внутренних номеров типа "phone" (настраивается в ресурсе “Телефонный терминал (/phone/)”);

  • cascade – переадресация с последовательным добавлением вызываемых номеров. Например, для внутреннего номера 100 можно указать 20 секунд вызывать сам внутренний номер, потом подключить к вызову мобильный, чтобы они вызывались одновременно и т.д. Последовательность каскада задается параметром cascade_numbers;

  • simple_cascade – работает так же, как и cascade, но правила входящего вызова внутренних номеров, указанных в cascade_numbers, не выполняются

Вызов спец.добавочных(отличных от “phone”) собственными правилами переадресации невозможен. В ряде случаев это может привести к зацикливанию вызова и как следствие его потере.

control_code

string

нет

null

Код управления - это цифра от 1 до 2х символов, например 11 или 6

Задается на правиле. Необходимо для управления включением и выключением правила (или нескольких правил) через набор с клавиатуры. см *74

Последовательность правил (IncomingRuleOrder) 

Имя

Тип

Обязательное

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

Описание

Имя

Тип

Обязательное

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

Описание

rules_ids

array [integer]

да

 

Полный список правил в нужном порядке

 

Примеры

Настроим правила для внутреннего номера типа "phone"с идентификатором 54. Для начала убедимся, что на данный момент нет никаких настроек:

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

Переадресация

Настроим отправку всех неотвеченных вызовов на номер 00018966 ("type:" "transfer"). Правило должно будет действовать только с 10:00 до 20:00 и распространяться на вызовы с номеров, начинающихся на "+7812" или "000". Номер 00018966 должен звонить 15 секунд.

Время, после которого вызов на внутренний номер считается неотвеченным (hangup-timeout), является свойством самого внутреннего номера типа 'phone' и настраивается ресурсом “Телефонный терминал (/phone/)”.

Для начала нужно создать (или выбрать из имеющихся) временной интервал.  Пусть это будет интервал с идентификатором 32. Создание правила:

[ { "allow_public_transfer": false, "name": null, "call_status": "no_answer", "enable_call_screening": false, "enabled": true, "interval": 32, "caller_id_action": "matches", "ignore_early_media": true, "caller_id": "^(\\+7812|000)", "control_code": null, "transfer_dst": "00018966", "extension_call_status": "any", "transfer_timeout": 15, "playfile_sound": null, "id": 1, "cascade_numbers": null, "extension_status": "any", "type": "transfer", "final": false } ]

Каскадный вызов

Теперь нужно, чтобы после выполнения правил в предыдущем разделе, если ответа так и не последовало, вызов перешел на внутренний номер 000*099, через 5 секунд к нему подключился 00026821 и все правило отрабатывало не более 20 секунд:

{ "allow_public_transfer": false, "caller_id": "^(\\+7812|000)", "call_status": "no_answer", "extension_status": "any", "interval": 32, "enable_call_screening": false, "enabled": true, "name": null, "ignore_early_media": true, "id": 2, "transfer_dst": null, "transfer_timeout": 20, "playfile_sound": null, "caller_id_action": "matches", "cascade_numbers": [ { "delay": 0, "number": "000*099" }, { "delay": 5, "number": "00026821" } ], "control_code": null, "extension_call_status": "any", "type": "cascade", "final": false }

Реорганизация правил

Чтобы поменять предыдущие правила местами, достаточно выполнить:

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

{ "rules_ids": [ 2, 1 ] }

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

POST /extension/{extension_id}/incom_rule/

Добавить правило входящего вызова внутреннего номера

Параметры URL

Имя

Тип

Имя

Тип

extension_id

string

Параметры JSON

Имя

Тип

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

Имя

Тип

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

allow_public_transfer

boolean

нет

call_status

string

нет

caller_id

string

нет

caller_id_action

string

да

cascade_numbers

Array[cascade_number]

нет

control_code 

string

нет

enable_call_screening

boolean

нет

enabled

boolean

нет

extension_call_status

string

нет

extension_status

string

нет

final

boolean

нет

ignore_early_media

boolean

нет

interval

long

нет

name

string

нет

playfile_sound

long

нет

transfer_dst

string

нет

transfer_timeout

long

нет

type

string

да

cascade_number

Имя

Тип

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

Имя

Тип

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

delay

long

да

number

string

да

Поля ответа

Имя

Тип

Имя

Тип

allow_public_transfer

boolean

call_status

string

caller_id

string

caller_id_action

string

cascade_numbers

Array[cascade_number]

control_code 

string

enable_call_screening

boolean

enabled

boolean

extension_call_status

string

extension_status

string

final

boolean

id

long

ignore_early_media

boolean

interval

long

name

string

playfile_sound

long

transfer_dst

string

transfer_timeout

long

type

string

cascade_number

Имя

Тип

Имя

Тип

delay

long

number

string

GET /extension/{extension_id}/incom_rule/

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

Параметры URL

Имя

Тип

Имя

Тип

extension_id

string

Поля ответа

Имя

Тип

Имя

Тип

allow_public_transfer

boolean

call_status

string

caller_id

string

caller_id_action

string

cascade_numbers

Array[cascade_number]

control_code 

string

enable_call_screening

boolean

enabled

boolean

extension_call_status

string

extension_status

string

final

boolean

id

long

ignore_early_media

boolean

interval

long

name

string

playfile_sound

long

transfer_dst

string

transfer_timeout

long

type

string

cascade_number

Имя

Тип

Имя

Тип

delay

long

number

string