Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Протестировать методы API можно на странице интерактивного обозревателя и без написания кода

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

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

...

  1. Используя ресурс  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": 51advertising.wav "id": 52

  2. Используя ресурс  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

  3. Создаем контекст, который будет являться главным (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

  4. Теперь можно привязать этот контекст ,как главный к нашему 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
    }


  5. Как отмечалось ранее, каждый контекст уже имеет опцию 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
    }


     

  6. Далее, по аналогии, укажем воспроизвести  файл  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
    }


  7. Теперь в  контексте "Основной контекст", добавим возможность обработки выбора "1"

    метод
    ресурс
    данные
    ответ
    POST
    /extension/204/ivr/context/1/options/

    {
    "digits": "1"
    }

    {
    "digits": "1"
    }


  8. И укажем, что хотим делать для выбора "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
    }


  9. По аналогии добавим вызов добавочного "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
    }


  10. Осталось в случае отсутствия выбора клиента автоматически переводить на добавочный 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
    }


  11. В итоге можно посмотреть все доступные опции контекста:

    метод
    ресурс
    данные
    ответ
    GET
    /extension/204/ivr/context/1/options/


    [
    {
    "digits": "start"
    },
    {
    "digits": "timeout"
    },
    {
    "digits": "invalid"
    },
    {
    "digits": "2"
    },
    {
    "digits": "1"
    }
    ]


...