Versions Compared

Key

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


Warning

Мы обновили документацию, актуальная версия страницы доступна по ссылке: Голосовое меню (/ivr/)

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

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

...

 

Имя

Тип

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

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

entry_context

integer

нет

 
идентификатор главного контекста

lifetime

integer

нет


время (в секундах) по истечении которого происходит принудительный выход из IVR

lifetime_exp_action

string

нет

 

Действия при выходе из IVR по наступлению lifetime

  • 'transfer' - перевод звонка (параметр lifetime_exp_transfer_dst)
  • 'hangup' - повесить трубку

lifetime_exp_transfer_dst

string

нет

 
Переадресация на указанный номер при истечении lifetime и lifetime_exp_action='transfer'

sleep_time

integer

нет

 
время (в миллисекундах) до начала выполнения любых действий после попадания вызова в 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

string

да

 

Добавляет к стандартным опциям конеткста (start,timout,invalid), пользовательскую опцию. Например, значение "2" задаст возможность обработки ввода цифры "2" после попадания в контекст

...

   

Имя

Тип

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

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

action

string

да

 


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

sound

integer

нет

 
  • 'transfer' - выполнить перевод вызова (сделать переадресацию) на номер(а) из transfer_dst. Максимально возможное количество номеров передаресации переаlресации – 10, для одновременной переадресации на большее количество номеров следует использовать действие groupsimple_calltransfer.
  • 'groupsimple_calltransfer- перевод звонка (сделать переадресацию) на номер(а) из параметра 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_digits'
  • 'quality_rate' - установить правило оценки качества разговора,  основные параметры для работы этого действия: sound и max_rate
  • 'voice_helper' - установить правило голосовой навигации,  основные параметры для работы этого действия: soundvoice_helper_digits_maxvoice_helper_rules, voice_helper_timeout.  Описание правила и параметров доступны на отдельной странице speech to text, пример использования доступен на странице Голосовая навигация

digits

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

нет

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

context

integer

нет

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

transfer_dst

string

нет

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

set_variable_name

string

нет

 

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

set_variable_value

string

нет

 


Значение переменной, которая должна быть установлена. Обязателен для action='set_variable'
match_variable_namestringнет 
Имя переменной IVR, значение которой будет сравниваться со значением, заданным параметром match_variable_value. Если значения совпадут, то правило выполнится. Сравниваемая переменная может быть установлена системой, см. раздел "Предустановленные переменные в IVR", либо задана правилом опции контекста типа set_variable.
match_variable_valuestringнет 
Значение, которое будет сравниваться со значением переменной, имя которой задано параметром match_variable_name. Если значения совпадут, то правило выполнится. Обязателен, если задан параметр match_variable_name.

transfer_variable

string

нет

 


Имя переменной, значение которой будет использовано в качестве номера для переадресации. Если переменная не установлена, то действие не выполняется. Переменная может быть установлена с помощью действия 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'
max_rateintegerнет5Максимальная оценка разговора, параметр, только для действия quality_rate

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

нет

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

caller_id_number

string

нет


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

caller_id_numbername

string

нет

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

Для правил play_sound, quality_rate, voice_helper доступен параметр play_sound_from_variable

В этой системной переменной может хранится приветствие, синтезированное с помощью действия text_to_speech в call interactive: Call Interactive#TTS

В случае, если синтезированного приветствия нет, а play_sound_from_variable активен-  будет проигран звуковой файл по-умолчанию, указанный в sound

Предустановленные переменные в 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"
    }
    ]


...

Имя

Тип

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

transfer_variable

string

нет

call_status

string

нет

play_digits_method

string

нет

caller_id

string

нет

match_variable_value

string

нет

play_digits_variable

string

нет

call_interactive_method

string

нет

record_digits_max

integer

нет

max_rateintegerнет

match_variable_name

string

нет

caller_id_action

string

нет

context_option

string

нет

silence_time

integer

нет

set_variable_name

string

нет

caller_id_number

string

нет

final

boolean

нет

sound

integer

нет

sound_type

string

нет

call_interactive_url

string

нет

caller_id_name

string

нет

digits

string

нет

name

string

нет

record_digits_variable

string

нет

interval

integer

нет

transfer_dst

string

нет

context

integer

нет

action

string

да

set_variable_value

string

нет

call_interactive_timeout

integer

нет

record_digits_sound

integer

нет

...