Протестировать методы API можно на странице интерактивного обозревателя и без написания кода
Некоторые ресурсы, описанные на странице, по-умолчанию могут быть не доступны из-за типа приложения. См. типы и уровни приложений
Добавочные номера типа ivr служат для настройки маршрутизации звонков внутри АТС с использованием информации, вводимой клиентом на клавиатуре телефона с помощью тонального набора.
...
Используя ресурс sound, нужно загрузить файл hello.wav и advertising.wav
user@host$ curl -i -X POST -F
file
=@hello.wav -F
"title=мой файл приветствия"
-H
"Authorization: Bearer TSyAxXtAsbE9Kl0iAVGG6LmnfEte8X"
https:
//host
.domain
/api/ver1
.0
/client/12/sound/
HTTP
/1
.1 100 Continue
HTTP
/1
.1 201 CREATED
Server: nginx
/1
.8.0
Date: Tue, 11 Aug 2015 09:50:41 GMT
Content-Type: application
/json
Content-Length: 150
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS
Access-Control-Allow-Headers: Content-Type, api_key, Authorization
{
"id"
: 51,
"client_id"
: 12,
"title"
:
"мой файл приветствия"
}
user@host$ curl -i -X POST -F
file
=@advertising.wav -F
"title=мой файл рекламы"
-H
"Authorization: Bearer TSyAxXtAsbE9Kl0iAVGG6LmnfEte8X"
https:
//host
.domain
/api/ver1
.0/client/12
/sound/
HTTP
/1
.1 100 Continue
HTTP
/1
.1 201 CREATED
Server: nginx
/1
.8.0
Date: Tue, 11 Aug 2015 09:50:41 GMT
Content-Type: application
/json
Content-Length: 150
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS
Access-Control-Allow-Headers: Content-Type, api_key, Authorization
{
"id"
: 52,
"client_id"
: 12,
"title"
:
"мой файл рекламы"
}
идентификаторы новых файлов: hello.wav "id": 51; advertising.wav "id": 52
Используя ресурс extension, создать добавочный, типа "ivr"
методресурсданныеответPOST client/@me/extension/
{
"status": "active",
"name": "071",
"label": "тестовый IVR",
"type": "ivr"
}{
"status": "active",
"name": "000*071",
"extra_params": null,
"label": "тестовый IVR",
"client_id": 12,
"extension_group_id": null,
"type": "ivr",
"id": 204
}Идентификатор нового добавочного "id": 204
Создаем контекст, который будет являться главным (entry_context):
методресурсданныеответPOST /extension/204/ivr/context/
{
"digit_len": 3,
"allow_any_dial": true,
"inter_digit_timeout": 2000,
"name": "Основной контекст",
"timeout": 5000
}{
"name": "Основной контекст",
"inter_digit_timeout": 2000,
"timeout": 5000,
"allow_any_dial": true,
"id": 1,
"digit_len": 3
}Идентификатор контекста "id": 1
Теперь можно привязать этот контекст ,как главный к нашему IVR, заодно указываем "sleep-time", позволяющий задать паузу от прихода вызова в IVR до начала каких-либо действий контекста "entry_context"
методресурсданныеответPUT extension/204/ivr/
{
"sleep_time": 5000,
"entry_context": 1
}{
"lifetime_exp_transfer_dst": null,
"lifetime_exp_action": "hangup",
"lifetime": 1800,
"sleep_time": 5000,
"entry_context": 1
}Как отмечалось ранее, каждый контекст уже имеет опцию start. Сконфигурирем его для проигравания foreground музыкального файла "advertising.wav"
методресурсданныеответPOST extension/204/ivr/context/1/options/start/rules/
{
"sound": 52,
"sound_type": "foreground",
"action": "play_sound"
}{
"digits": null,
"sound": 52,
"sound_type": "foreground",
"play_digits_method": null,
"interval": null,
"caller_id_action": "any",
"caller_id": null,
"context_option": null,
"silence_time": null,
"context": null,
"transfer_dst": null,
"action": "play_sound",
"id": 1
}Далее, по аналогии, укажем воспроизвести файл hello.wav в background
методресурсданныеответPOST extension/204/ivr/context/1/options/start/rules/
{
"sound": 51,
"sound_type": "background",
"action": "play_sound"
}{
"digits": null,
"sound": 51,
"sound_type": "background",
"play_digits_method": null,
"interval": null,
"caller_id_action": "any",
"caller_id": null,
"context_option": null,
"silence_time": null,
"context": null,
"transfer_dst": null,
"action": "play_sound",
"id": 2
}Теперь в контексте "Основной контекст", добавим возможность обработки выбора "1"
методресурсданныеответPOST /extension/204/ivr/context/1/options/
{
"digits": "1"
}{
"digits": "1"
}И укажем, что хотим делать для выбора "1" (перевод на мобильный +7(987)6543210)
методресурсданныеответPOST /extension/204/ivr/context/1/options/1/rules/
{
"transfer_dst": "+7987654321",
"action": "transfer"
}{
"digits": null,
"sound": null,
"sound_type": null,
"play_digits_method": null,
"interval": null,
"caller_id_action": "any",
"caller_id": null,
"context_option": null,
"silence_time": null,
"context": null,
"transfer_dst": "+7987654321",
"action": "transfer",
"id": 3
}По аналогии добавим вызов добавочного "002" по набору "2"
методресурсданныеответPOST /extension/204/ivr/context/1/options/
{
"digits": "2"
}{
"digits": "2"
}методресурсданныеответPOST /extension/204/ivr/context/1/options/1/rules/
{
"transfer_dst": "002",
"action": "transfer"
}{
"digits": null,
"sound": null,
"sound_type": null,
"play_digits_method": null,
"interval": null,
"caller_id_action": "any",
"caller_id": null,
"context_option": null,
"silence_time": null,
"context": null,
"transfer_dst": "002",
"action": "transfer",
"id": 4
}Осталось в случае отсутствия выбора клиента автоматически переводить на добавочный 050. Как уже отмечалсь, в контектсте есть опция "timeout", в которой можно задать это действие
методресурсданныеответPOST /ivr/144/context/2/options/timeout/rules/
{
"transfer_dst": "050",
"action": "transfer"
}{
"digits": null,
"sound": null,
"sound_type": null,
"play_digits_method": null,
"interval": null,
"caller_id_action": "any",
"caller_id": null,
"context_option": null,
"context": null,
"transfer_dst": "050",
"action": "transfer",
"id": 5
}В итоге можно посмотреть все доступные опции контекста:
методресурсданныеответGET /extension/204/ivr/context/1/options/
[
{
"digits": "start"
},
{
"digits": "timeout"
},
{
"digits": "invalid"
},
{
"digits": "2"
},
{
"digits": "1"
}
]
...