На текущий момент переменные можно указать:
В ресурсе Инициация вызова (/callback/)
В Голосовое меню (/ivr/) для использования в правилах опций контекста: transfer_variable, match_variable_name, match_variable_value, play_digits_variable, play_sound_from_variable
Заблаговременно задать связку переменная- значение в ресурсе /variables/
Ресурс предназначен для заблаговременного указания и дальнейшего использования переменных.
|
Добавить переменные:
ext_id = 34535
caller_id_name = Ivan
[{"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 можно использовать вместо параметров запроса через:
“@{VAR_NAME}” , если это extension_id в url запроса
“$cv({VAR_NAME})” , если это параметр в теле запроса
Пример тела callback с статическими variables:
{"caller_id_name": "$cv(caller_id_name)","dst_num": "000116644","src_num": ["341"]}
POST /client/{client_id}/variables/ Добавить переменные Параметры URL
Параметры JSON
|
GET /client/{client_id}/variables/ Получить переменные Параметры URL
|
Эти переменные, заданные при инициации вызова (/callback/) можно будет использовать:
В правилах ivr для check varaible, либо другом правиле IVR: match_variable_name, match_variable_value, play_digits_variable, play_sound_from_variable. Подробнее о правилах IVR тут: Голосовое меню (/ivr/) .
Получить эту переменную в запросе Call Interactive (в call interactive переданный variable будет всегда с префиксом cb_variable_
во избежание затирания стандартных параметров call_interactive)
Также, через variables можно указать предопределенные переменные:
Автоответ через x сек указав в переменных
Имя | Значение | Описание переменной | |
---|---|---|---|
autoanswer autoanswer_src autoanswer_dst | int в диапазоне от 0 до 300 |
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 можно использовать в правилах опций контекста: 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 | ||
tag | string | Данный параметр будет передан в событиях на протяжении всего звонка, как IvrTag. Например, если при прохождении вызова через IVR необходимо отслеживать определенную схему, то можно задать tag (например, игнорировать определенные звонки в интеграции из определенной схемы IVR, где установлен tag) |
disable_mail_notification | строка, которая интерпритируется как boolean тип | сли переменная задана, вызов попал на это правило в ivr и вызов пропущен, то будет считаться, что запрещено отправлять уведомление на почту об этом пропущенном вызове. В случае “disable_mail_notification”=”false” переменная будет проигнорирована. |
Устновить переменную можно с помощью правила ivr set_variable