...

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

...

Имя

Тип

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

Значение По УмолчаниюОписание

timeout

integer

нет

5000время (в миллисекундах) ожидания начала набора после выполнения последнего правила в опции контекста. По истечении уход в опцию timeout

allow_any_dial

boolean

нет

falseпозволен ли донабор любого добавочного клиента

inter_digit_timeout

integer

нет

2000время (в миллисекундах) ожидания следующей цифры. По истечении набор считается завершенным.  Например, при "digit_len": 3,  набор "30" будет принят по прошествии  inter_digit_timeout

name

string

да

 имя контекста

digit_len

integer

нет


длина добавочного клиентапосле набора указанного количества цифр, ввод считается завершенным (без необходимости ожидания "inter_digit_timeout"). Также определяет максимальную длину возможного набора клиентом. Например, "digit_len": 3 позволяет набрать "7", "22", "300", но не дает возможности выбора "4000"

...

digitsнетИмя звонящего для дальнейших переадресаций. Данный параметр может содержать в себе имена переменных, установленных в других действиях ранее, а также предустановленных переменных IVR. Имена переменных указываются в формате ${имя_переменной}.Обязателен при action= 'set_caller_id_name'

Имя

Тип

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

Значение По УмолчаниюОписание

action

string

да

 Проговорить указанные цифры (методом play_digits_method), обязателен при action= 'play_digits'

sound

integer

нет

 Идентификатор звукового файла, который необходимо проиграть, обязателен при action= 'play_sound'

sound_type

string

нет

 

Обязателен при наличии идентификтора sound. Может принимать значения:

  • 'background' пользователь может сделать донабор, пока звучит приветствие
  • 'foreground' пользователь должен прослушать приветствие до конца

play_digits_method

string

нет

 

Обязателен при установленной опции digits. Может быть:

  • 'pronounced' проговорить цифры как одно число
  • iterated' - проговорить цифры последовательно одна за другой

interval

integer

нет

 правило выполняется только в этом временном интервале

caller_id_action

string

нет

 

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

  • 'matches' должен совпадать (caller_id должен быть задан)
  • 'not_matches' должен не совпадать (caller_id должен быть задан)
  • 'anonymous' источник скрыт
  • 'any' любой источник

caller_id

string

нет

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

context_option

string

нет

 

Определяет опцию контекста, в которую нужно перейти, при action='jump_to_context'

silence_time

integer

нет

 Время (в миллисекундах) отсутствия каких-либо звуков со стороны АТС

Непосредственно определяет, что нужно сделать в этом правиле:

  • 'transfer' - выполнить перевод вызова (сделать переадресацию) на номер(а) из transfer_dst. Максимально возможное количество номеров передаресации – 10, для одновременной переадресации на большее количество номеров следует использовать действие group_call.
  • 'group_call' - перевод звонка (сделать переадресацию) на номер(а) из параметра transfer_dst. При данном типе переадресации правила входящего вызова для перечисленных в transfer_dst добавочных номеров не выполняются.
  • 'hangup' - повесить трубку
  • 'play_sound' - проиграть приветствие (параметр sound и sound_type)
  • 'play_silence' - тишина в background формате (параметр silence_time).
  • 'jump_to_context' - перейти в другой контекст (параметр context и context_option)
  • 'play_digits' - проиграть цифры (параметр digits и play_digits_method)
  • 'play_digits_from_variable' - проиграть цифры, содержащиеся в переменной (параметр play_digits_variable и play_digits_method)
  • 'record_digits' - записать набор цифр в переменную (параметры record_digits_variable, record_digits_max и record_digits_sound)
  • 'set_variable' - установить переменную в канале (параметры set_variable_name и set_variable_value).
  • 'transfer_from_variable- перевод звонка на номер, содержащийся в переменной (параметр transfer_variable)
  • 'call_interactive' - функция Call Interactive – осуществить HTTP-запрос на определенный URL (параметры call_interactive_url и call_interactive_method)
  • 'set_caller_id_number' -установить номер звонящего для дальнейших переадресаций из IVR (параметр caller_id_number)
  • 'set_caller_id_name' - установить имен звонящего для дальнейших переадресаций из IVR (параметр caller_id_name)

digits

string

нет

 Проговорить указанные цифры (методом play_digits_method), обязателен при action= 'play_silencedigits'

contextsound

integer

нет

 Определяет идентификатор другого контекста, в который нужно перейтиИдентификатор звукового файла, который необходимо проиграть, обязателен при action= 'jumpplay_to_contextsound'

transfersound_dsttype

string

нет

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

set_variable_name Обязателен при наличии идентификтора sound. Может принимать значения:

  • 'background' пользователь может сделать донабор, пока звучит приветствие
  • 'foreground' пользователь должен прослушать приветствие до конца

play_digits_method

string

нет

 

Имя переменной, которая должна быть установлена. Должно начинаться с латинской буквы, может содержать латинские буквы, цифры, а также символы подчеркивания. Обязателен для action='set_variable

set_variable_valueОбязателен при установленной опции digits. Может быть:

  • 'pronounced' проговорить цифры как одно число
  • iterated' - проговорить цифры последовательно одна за другой

interval

integer

нет

 правило выполняется только в этом временном интервале

caller_id_action

string

нет

 Значение переменной, которая должна быть установлена. Обязателен для action='set_variable'match_variable_name

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

  • 'matches' должен совпадать (caller_id должен быть задан)
  • 'not_matches' должен не совпадать (caller_id должен быть задан)
  • 'anonymous' источник скрыт
  • 'any' любой источник

caller_id

string

нет

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

context_option

string

нет

 Значение, которое будет сравниваться со значением переменной, имя которой задано параметром match_variable_name. Если значения совпадут, то правило выполнится. Обязателен, если задан параметр match_variable_name.

transfer_variable

string

нет

 Имя переменной, значение которой будет использовано в качестве номера для переадресации. Если переменная не установлена, то действие не выполняется. Переменная может быть установлена с помощью действия set_variable, record_digits, либо с помощью функции Call Interactive. Обязателен при action= 'transfer_from_variable'

play_digits_variableОпределяет опцию контекста, в которую нужно перейти, при action='jump_to_context'

silence_time

integer

нет

 Время (в миллисекундах) отсутствия каких-либо звуков со стороны АТС, обязателен при action= 'play_silence'

context

integer

нет

 Определяет идентификатор другого контекста, в который нужно перейти, обязателен при action='jump_to_context'

transfer_dst

string

нет

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

set_variable_name

string

нет

 

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

значение которой будет использовано для проигрывания цифр. Если переменная не установлена, то действие не выполняется. Переменная может быть установлена с помощью действия set_variable, record_digits, либо с помощью функции Call Interactive. Обязателен при action= 'play_digits_from_variable'

record_digits_variableкоторая должна быть установлена. Должно начинаться с латинской буквы, может содержать латинские буквы, цифры, а также символы подчеркивания. Обязателен для action='set_variable

set_variable_value

string

нет

 Имя Значение переменной, в которую будут записаны введённые цифрыкоторая должна быть установлена. Обязателен при  для action='recordset_digitsvariable'
recordmatch_digitsvariable_maxnameintegerstringнет Максимальное количество введённый цифр, который будут записаны в переменную. Обязателен при action= 'record_digits'

record_digits_sound

integerИмя переменной IVR, значение которой будет сравниваться со значением, заданным параметром match_variable_value. Если значения совпадут, то правило выполнится. Сравниваемая переменная может быть установлена системой, см. раздел "Предустановленные переменные в IVR", либо задана правилом опции контекста типа set_variable.
match_variable_valuestringнет Идентификатор звукового файла, который может быть проигран перед записью ввёденных цифр в переменную.call_interactive_urlЗначение, которое будет сравниваться со значением переменной, имя которой задано параметром match_variable_name. Если значения совпадут, то правило выполнится. Обязателен, если задан параметр match_variable_name.

transfer_variable

string

нет

 URL, на который будет осуществляться HTTP-запрос функцией Call Interactive. Должен начинаться с http:// или c https://. Обязателен для action='call_interactive'

call_interactive_method

string

нет

 Метод, которым будет осуществляться HTTP-запрос функцией Call Interactive . Может принимать значение 'GET' или 'POST'. Обязателен для action='call_interactive'

call_interactive_timeout

integer

нет

 Время в секундах, в течение которого система будет ожидать ответ на HTTP-запрос функции Call Interactive. Если вызываемый URL не вернул ответ по истечении этого времени, то выполняется следующее правило.

caller_id_number

string

нет

 Номер звонящего для дальнейших переадресаций. Данный параметр может содержать в себе имена переменных, установленных в других действиях ранее, а также предустановленных переменных IVR. Имена переменных указываются в формате ${имя_переменной}. Обязателен при action= 'set_caller_id_number'

caller_id_name

string

нет

 

action

string

да

 

Непосредственно определяет, что нужно сделать в этом правиле:

  • 'transfer' - выполнить перевод вызова (сделать переадресацию) на номер(а) из transfer_dst. Максимально возможное количество номеров передаресации – 10, для одновременной переадресации на большее количество номеров следует использовать действие group_call.
  • 'group_call' - перевод звонка (сделать переадресацию) на номер(а) из параметра transfer_dst. При данном типе переадресации правила входящего вызова для перечисленных в transfer_dst добавочных номеров не выполняются.
  • 'hangup' - повесить трубку
  • 'play_sound' - проиграть приветствие (параметр sound и sound_type)
  • 'play_silence' - тишина в background формате (параметр silence_time).
  • 'jump_to_context' - перейти в другой контекст (параметр context и context_option)
  • 'play_digits' - проиграть цифры (параметр digits и play_digits_method)
  • 'play_digits_from_variable' - проиграть цифры, содержащиеся в переменной (параметр play_digits_variable и play_digits_method)
  • 'record_digits' - записать набор цифр в переменную (параметры record_digits_variable, record_digits_max и record_digits_sound)
  • 'set_variable' - установить переменную в канале (параметры set_variable_name и set_variable_value).
  • 'transfer_from_variable- перевод звонка на номер, содержащийся в переменной (параметр transfer_variable)
  • 'call_interactive' - функция Call Interactive – осуществить HTTP-запрос на определенный URL (параметры call_interactive_url и call_interactive_method)
  • Имя переменной, значение которой будет использовано в качестве номера для переадресации. Если переменная не установлена, то действие не выполняется. Переменная может быть установлена с помощью действия set_variable, record_digits, либо с помощью функции Call Interactive. Обязателен при action= 'transfer_from_variable'

    play_digits_variable

    string

    нет

     Имя переменной, значение которой будет использовано для проигрывания цифр. Если переменная не установлена, то действие не выполняется. Переменная может быть установлена с помощью действия set_variable, record_digits, либо с помощью функции Call Interactive. Обязателен при action= 'play_digits_from_variable'

    record_digits_variable

    string

    нет

     Имя переменной, в которую будут записаны введённые цифры. Обязателен при action= 'record_digits'

    record_digits_max

    integer

    нет

     Максимальное количество введённый цифр, который будут записаны в переменную. Обязателен при action= 'record_digits'

    record_digits_sound

    integer

    нет

     Идентификатор звукового файла, который может быть проигран перед записью ввёденных цифр в переменную.

    call_interactive_url

    string

    нет

     URL, на который будет осуществляться HTTP-запрос функцией Call Interactive. Должен начинаться с http:// или c https://. Обязателен для action='call_interactive'

    call_interactive_method

    string

    нет

     Метод, которым будет осуществляться HTTP-запрос функцией Call Interactive . Может принимать значение 'GET' или 'POST'. Обязателен для action='call_interactive'

    call_interactive_timeout

    integer

    нет

     Время в секундах, в течение которого система будет ожидать ответ на HTTP-запрос функции Call Interactive. Если вызываемый URL не вернул ответ по истечении этого времени, то выполняется следующее правило.

    caller_id_number

    string

    нет

     Номер звонящего для дальнейших переадресаций. Данный параметр может содержать в себе имена переменных, установленных в других действиях ранее, а также предустановленных переменных IVR. Имена переменных указываются в формате ${имя_переменной}. Обязателен при action= 'set_caller_id_number'-установить номер звонящего для дальнейших переадресаций из IVR (параметр caller_id_number)
    'set_

    caller_id_name

    ' - установить имен

    string

    нет

     Имя звонящего для дальнейших переадресаций из IVR (параметр . Данный параметр может содержать в себе имена переменных, установленных в других действиях ранее, а также предустановленных переменных IVR. Имена переменных указываются в формате ${имя_переменной}.Обязателен при action= 'set_caller_id_name)'

    Предустановленные переменные в IVR
    Anchor
    ivr_vars
    ivr_vars

    Имя переменнойОписание
    called_didПубличный номер (DID), на который пришел вызов в систему. Если вызов локальный, переменная содержит номер IVR без префикса клиента.
    caller_id_nameИмя звонящего
    caller_id_numberНомер звонящего

     

    Пример

    Для клиента с уникальным идентификатором 12, нужно создать IVR с номером "071" при попадании в который действуют правила:

    ...

    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"
      }
      ]

    ...