На текущий момент переменные можно указать:

  1. В ресурсе Инициация вызова (/callback/)

  2. В Голосовое меню (/ivr/) для использования в правилах опций контекста: transfer_variable, match_variable_name, match_variable_value, play_digits_variable, play_sound_from_variable

  3. Заблаговременно задать связку переменная- значение в ресурсе /variables/

Статические переменные в клиенте /variables/

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

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

Имя

Тип

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

Описание

var

string

да

Имя переменной

value

string

да

Значение переменной

Пример

Добавить переменные:

[{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"В разделе "},{"type":"text","text":"authentication ","marks":[{"type":"strong"}]},{"type":"text","text":"в поля "},{"type":"text","text":"client_id ","marks":[{"type":"strong"}]},{"type":"text","text":"и "},{"type":"text","text":"client_secret  ","marks":[{"type":"strong"}]},{"type":"text","text":"требуется ввести полученные при регистрации приложения значения "},{"type":"text","text":"Application_ID ","marks":[{"type":"strong"}]},{"type":"text","text":"и "},{"type":"text","text":"Application_Secret","marks":[{"type":"strong"}]},{"type":"text","text":", затем нажать на кнопку \""},{"type":"text","text":"Try it out!","marks":[{"type":"strong"}]},{"type":"text","text":"\". Если данные приложения верны, в ответ вернётся токен доступа ("},{"type":"text","text":"access_token","marks":[{"type":"strong"}]},{"type":"text","text":"). Полученный токен доступа следует ввести в поле \""},{"type":"text","text":"Access Token Field","marks":[{"type":"strong"}]},{"type":"text","text":"\" вверху страницы и сохранить его нажатием кнопки \""},{"type":"text","text":"Set Token","marks":[{"type":"strong"}]},{"type":"text","text":"\"."}]},{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"метод"}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"ресурс"}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"данные"}]}]}]},{"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/variables/"}]},{"type":"paragraph","content":[]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"{ \"variables\": [{ \"value\": 34535, \"var\": \"ext_id\" },  { \"value\": \"Ivan\", \"var\": \"caller_id_name\" }]}","marks":[{"type":"code"}]}]}]}]}]},{"type":"paragraph","content":[]}]},"id":"1ab97921-e7ca-452f-965a-4a763b57f8d3","label":"Интерактивный обозреватель API    ","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Для отправки запросов с помощью программы cURL установим значения переменных "},{"type":"text","text":"url ","marks":[{"type":"strong"}]},{"type":"text","text":"и "},{"type":"text","text":"access_token","marks":[{"type":"strong"}]},{"type":"text","text":":"}]},{"type":"paragraph","content":[{"type":"text","text":"export url=\"https://<hostname>/api/ver1.0\"","marks":[{"type":"code"}]},{"type":"text","text":" "},{"type":"hardBreak"},{"type":"text","text":"(где hostname — hostname API-сервера провайдера IP-телефонии),"}]},{"type":"paragraph","content":[{"type":"text","text":"export access_token=\"8SNsrS0jV35vfmKqKeKtRrHfpbg4UX\"","marks":[{"type":"code"}]},{"type":"text","text":" "},{"type":"hardBreak"},{"type":"text","text":"(полученный токен доступа)."}]},{"type":"paragraph","content":[{"type":"text","text":"Отправим запрос:"}]},{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl -H \"Authorization: Bearer ${access_token}\"  -H \"Content-Type: application/json\" -d '{ \"variables\": [{ \"value\": 34535, \"var\": \"ext_id\" },  { \"value\": \"Ivan\", \"var\": \"caller_id_name\" }]}'  -X POST ${url}/client/@me/variables/"}]}]},"id":"59f02ace-6798-4ee6-8ed3-7c878969f35b","label":"Программа cURL    ","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Для отправки запросов на языке Python установим значения переменных URL и ACCESS_TOKEN:"}]},{"type":"paragraph","content":[{"type":"text","text":"URL = \"https://<hostname>/api/ver1.0\"","marks":[{"type":"code"}]},{"type":"hardBreak"},{"type":"text","text":"(где hostname — hostname API-сервера провайдера IP-телефонии),"}]},{"type":"paragraph","content":[{"type":"text","text":"ACCESS_TOKEN = \"8SNsrS0jV35vfmKqKeKtRrHfpbg4UX\"","marks":[{"type":"code"}]},{"type":"hardBreak"},{"type":"text","text":"(полученный токен доступа)."}]},{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\r\n\r\nimport requests\r\n\r\nurl = f'{URL}/client/@me/variables/'\r\nheaders = {\r\n    'Authorization': f'Bearer {ACCESS_TOKEN}',\r\n    'Content-Type': 'application/json'\r\n}\r\ndata = '''{ \"variables\": [{ \"value\": 34535, \"var\": \"ext_id\" },  { \"value\": \"Ivan\", \"var\": \"caller_id_name\" }]}'''\r\nresponse = requests.post(url, headers=headers, data=data)\r\nprint(response.text)"}]}]},"id":"fe3b5416-5aa2-4f51-b4b2-2d3f3e4d8438","label":"На языке Python3    ","type":"tab"}]

Затем при запросе на callback эти variables можно использовать вместо параметров запроса через:

  1. “@{VAR_NAME}” , если это extension_id в url запроса

  2. “$cv({VAR_NAME})” , если это параметр в теле запроса

Пример тела callback с статическими variables:

{"caller_id_name": "$cv(caller_id_name)","dst_num": "000116644","src_num": ["341"]}

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

POST /client/{client_id}/variables/

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

Параметры URL

Имя

Тип

client_id

string

Параметры JSON

Имя

Тип

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

variables

list

да

GET /client/{client_id}/variables/

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

Параметры URL

Имя

Тип

client_id

string

Динамические переменные, переданные при инициации вызова callback

Эти переменные, заданные при инициации вызова (/callback/) можно будет использовать:

  1. В правилах ivr для check varaible, либо другом правиле IVR: match_variable_name, match_variable_value, play_digits_variable, play_sound_from_variable. Подробнее о правилах IVR тут: Голосовое меню (/ivr/) .

  2. Получить эту переменную в запросе Call Interactive (в call interactive переданный variable будет всегда с префиксом cb_variable_ во избежание затирания стандартных параметров call_interactive)

Также, через variables можно указать предопределенные переменные:
Автоответ через x сек указав в переменных

Имя

Значение

Описание переменной

autoanswer

autoanswer_src

autoanswer_dst

int в диапазоне от 0 до 300

"autoanswer": "4" добавит sip-заголовок Call-Info на src и dst:

Call-Info: <sip:anonymous@anonymous.invalid>;answer-after=4

autoanswer_src - добавит только в src заголовок, autoanswer_dst - только в dst

При получении заголовка Call-Info: <sip:anonymous@anonymous.invalid>;answer-after=X некоторое оборудование снимает трубку автоматически через Х секунд

answering_machine

строка, которая интерпретируется как boolean тип

Если переменная задана и вызов попадет в ivr, где будет действие “play sound” , то будет считаться, что на вызов был ответ (bridged = yes).

В случае “answering_machine”=”false” переменная будет проигнорирована.

tag

string

Данный параметр будет передан в событиях на протяжении всего звонка, как Tag. Например, если определенные звонки необходимо отслеживать, то можно задать tag (например, игнорировать определенные звонки в интеграции, если в событии пришел определенный tag)

disable_mail_notification

строка, которая интерпретируется как boolean тип

Если переменная задана, вызов попал в ivr и вызов пропущен, то будет считаться, что запрещено отправлять уведомление на почту об этом пропущенном вызове.

В случае “disable_mail_notification”=”false” переменная будет проигнорирована.

Пример использования callback с variables:

{
  "dst_num": "000116644",
  "src_num": [
    "341"
  ],
  "variables": {"autoanswer": "4", 
  "testvar": "'testval"}
}

Статические переменные, указанные в ivr

Переменные в ivr можно использовать в правилах опций контекста: transfer_variable, match_variable_name, match_variable_value, play_digits_variable, play_sound_from_variable. Подробнее о правилах тут: Голосовое меню (/ivr/)

Большинство переменных можно указать в одном контексте и воспользоваться ими в другом контексте, но некоторые переменные будут использованы в звонке:

Имя

Значение

Описание переменной

answering_machine

строка, которая интерпритируется как boolean тип

Если переменная задана и вызов попадет в ivr, где будет действие “play sound” , то будет считаться, что на вызов был ответ (bridged = yes).

В случае “answering_machine”=”false” переменная будет проигнорирована.

allowed_commands

transfer_after_call_end_to

Quality rate. Настройка получения оценки разговора

tag

string

Данный параметр будет передан в событиях на протяжении всего звонка, как IvrTag. Например, если при прохождении вызова через IVR необходимо отслеживать определенную схему, то можно задать tag (например, игнорировать определенные звонки в интеграции из определенной схемы IVR, где установлен tag)

disable_mail_notification

строка, которая интерпритируется как boolean тип

сли переменная задана, вызов попал на это правило в ivr и вызов пропущен, то будет считаться, что запрещено отправлять уведомление на почту об этом пропущенном вызове.

В случае “disable_mail_notification”=”false” переменная будет проигнорирована.


Устновить переменную можно с помощью правила ivr set_variable