Компоненты: линия и звук

Компоненты этой группы существуют только в сценариях IVR — потому что только IVR управляет конкретной линией и имеет доступ к аппаратным ресурсам. Здесь собрано всё, что связано с линией и звуком: снять и положить трубку, проиграть файл или число, принять набор с клавиатуры, записать речь абонента.

Общее для всех компонентов со звуковыми файлами Путь к файлу задаётся двумя частями — каталогом и именем. Каталог может быть указан как:
  • локальная категория — папка сценария;
  • глобальная категория — папка, где хранятся все сценарии;
  • абсолютный путь, например C:\AAA\BBB;
  • пусто — тогда считается, что весь путь уже содержится в имени файла.
Имя файла берётся из значения указанной переменной сценария. Файл можно и прикрепить к сценарию — тогда он копируется в папку сценария в момент редактирования.

Поднять трубку

Даёт АТС команду снять трубку на обрабатываемой линии. Имеет смысл для внешних линий, на которые поступает звонок.

Трубку нужно снять до взаимодействия с абонентом Воспроизведение, запись, ввод DTMF, вход в задачу, переключения — всё это требует поднятой трубки.

Исключение — сквозное переключение, когда трубку снимают только после ответа удалённого или внутреннего абонента. В этом случае мелодии ожидания не воспроизводятся, и внешний абонент слышит обычный сигнал КПВ.

Режимы ответа для SIP-каналов

Свойство «Команда» задаёт режим ответа в линию. Оно работает фактически только в главном сценарии и зависимых от него, когда на управляемой линии входящий вызов и сценарий начинается со «Старта».

ОтветЧто означаетЗвукТарификация
180 Ringing Система вызывает абонента Длинные гудки. Проигрывать звуковые файлы запрещено Не производится
183 Session Progress Короткое время для проигрывания звуковой информации; провайдеры дают обычно не более 10—20 секунд. Часто используется для голосовой почты Можно проигрывать Как правило нет, но зависит от провайдера
200 OK Полноценное начало разговора. Отправляется автоматически после успешной коммутации с другим абонентом Можно проигрывать Начата
Последовательность ответов экономит деньги Для SIP-каналов сигналы можно отправлять последовательно, выстраивая нужную логику и снижая расходы на связь — это заметно на номерах 8800, где платит принимающая сторона.

После ответа 200 OK отправлять в линию 180 и 183 уже нельзя.
Для CTI-каналов любой выбранный режим приводит просто к снятию трубки при входящем вызове.

Обрыв связи

Разрывает связь на обслуживаемой линии и завершает сценарий.

Нельзя использовать после успешного переключения Если коммутация уже состоялась, компонент применять не следует.
СвойствоОписание
Код ответа SIPSIP-ответ, отправляемый в линию. Позволяет вернуть коды серии 4XX при невозможности обработать запрос, неудачном переключении и подобном.
Текст ответа SIPРасшифровка кода. Например, к коду 486 уместен текст busy here.
Дополнительные заголовкиДополнительные заголовки SIP-сообщения.

Воспроизведение звукового файла

Проигрывает указанный файл в линию абонента. Компонент завершает работу, как только происходит одно из событий: файл закончился, сработал таймер установленного времени звучания, абонент набрал последовательность или символ прерывания.

Режимы

РежимЧто делает
Файл полностьюПроигрывает файл до конца.
ПредпрослушиваниеПроигрывает заданное число секунд и передаёт управление дальше.
Файл + дополнительное времяПосле файла воспроизводится тишина заданной длительности; набор символов в это время по-прежнему принимается.
Фоновое воспроизведениеЗапускает файл и сразу передаёт управление дальше. См. ниже.
Остановка фонаЯвно прекращает фоновое воспроизведение.
Генерация DTMFГенерирует DTMF-символы в обслуживаемый канал.
Фоновое воспроизведение и переключения В фоновом режиме все последующие компоненты работают поверх звучащего файла — включая целую цепочку переключений и ожиданий в очередях. Собственное воспроизведение в канал (мелодии ожидания) компоненты переключения начнут только после того, как фоновый файл закончится.

Фон останавливается: по достижении конца файла, при обработке другого компонента «Воспроизведение», при явной остановке режимом «Остановка фона», при коммутации с другим каналом или конференцией и при обрыве связи.

Свойства

СвойствоОписание
РежимОдин из перечисленных выше.
ФайлВыбор проигрываемого файла; правила пути — см. примечание в начале статьи.
Время предпрослушиванияТолько в режиме предпрослушивания. Секунды, по истечении которых проигрывание прервётся.
Дополнительное времяТолько в режиме «файл + дополнительное время». Задержка после воспроизведения.
Символы прерыванияНедоступно в фоновом режиме. Символы или последовательности через запятую либо пробел; при их наборе проигрывание прекращается.
БуферНедоступно в фоновом режиме. Переменная, куда сохранится прервавшая последовательность.
Очистить буферНедоступно в фоновом режиме. Дописывать последовательность к содержимому буфера или очищать его перед записью.
DTMF-последовательностьТолько в режиме генерации DTMF. Один или несколько символов для генерации в канал.
ПереходПосле завершения воспроизведения.
Переход, неудачаНедоступно в фоновом режиме. Файл не начал воспроизводиться: не задано имя, файла нет, нет доступа, неверный формат.
Генерация нескольких DTMF-символов подряд В нагруженных системах не поручайте это одному компоненту. Ставьте несколько компонентов, разделённых паузами по 200—300 мс, либо организуйте цикл.
Ключ конфигурации EnableGuaranteePlayTimeout От его значения в файле конфигурации сервера зависит, будет ли обработчик сценария ждать сигнала об окончании воспроизведения или пропустит это ожидание. Если поведение режима предпрослушивания расходится с ожидаемым, смотреть нужно сюда.

В контекстном меню компонента есть команда «Воспроизвести»: прикреплённый файл откроется во встроенном проигрывателе.

Проигрывание числа

Озвучивает число, заданное аргументом. Проигрывание идёт по выбранному формату — время, телефонный номер, деньги — либо по указанной схеме: посимвольно, целиком и так далее.

СвойствоОписание
ЧислоАргумент, строковое представление которого в числовом формате нужно проговорить.
Языковой алгоритмАлгоритм преобразования числа с учётом языка. Число 123 по русскоязычному алгоритму звучит как «сто двадцать три», по англоязычному — «one hundred and twenty three».
ГолосПапка с набором файлов, озвучивающих числительные и дополнительные слова. Папки хранятся в каталоге со сценариями; в комплект входят три голоса.
Формат«По формату», количество, порядковое числительное, телефонный номер, дата, время, дата/время, день недели, время без нулей в начале, время без нулей в конце, время в секундах, деньги USD, EUR, RUR, UAH.
Тип проигрыванияТолько при формате «По формату». См. таблицу ниже.
РодТолько для форматов «По формату», «Количество», «Порядковое числительное». Мужской (один, двадцатитрёхмиллионный), женский (одна, сто двадцать шестая), средний (одно, однотысячное).
Понижение тонаПонижает тон в конце: вместо последнего файла подставляется одноимённый с символом _ на конце, озвученный как окончание речи. Если такого файла нет, берётся обычный.
Символы прерывания, БуферКак у компонента воспроизведения.
ПереходПосле завершения воспроизведения.

Типы проигрывания

ТипКак звучит
Посимвольноодин ноль два три семь…
По 2 символадвадцать два, сорок четыре…
По 3 символатриста пять, двести тридцать четыре…
Целикомдвести тридцать четыре триллиона пятьсот двадцать…
Буквы и числа посимвольноодин, а, б, в, X, Y, Z, тире, слэш…
Слова и фразыЗначения через любой пустой разделитель: пожалуйста_введите_свой_код занято. В папке голоса ищутся соответствующие файлы и проигрываются последовательно.

Перечень файлов, которые должны быть в папке голоса, приведён в отдельной статье о файлах озвучивания числовых значений.

Ввод числа

Принимает число, набираемое абонентом с клавиатуры телефона, и сохраняет в переменную. Ввод сопровождается тишиной в трубке.

Ввод прекращается, когда происходит одно из трёх событий:

СобытиеКуда уходит управление
Набрано указанное количество символовВетка «Переход» — успех
Набрана последовательность или символ прерыванияВетка «Переход» — успех
Сработал таймер отведённого времениВетка «Время» — ввод считается неудавшимся, набранное не сохраняется
СвойствоОписание
Символы прерыванияСимволы или последовательности через запятую либо пробел.
БуферПеременная для введённого значения. Последовательность прерывания в неё не попадает.
Очистить буферДописывать введённое к содержимому буфера или очищать его перед записью.
Максимальное времяВремя ожидания ввода в секундах. 0 — время не ограничено.
Количество символовСколько символов ждать; по приёме указанного количества переход происходит сразу. 0 — количество не ограничено.
Переход / Переход, времяУспешное завершение ввода либо истечение времени.
Счёт символов не учитывает содержимое буфера Компонент ждёт указанное количество символов безотносительно того, что уже лежит в буфере, — даже если буфер не очищается. Если вы собираете длинный номер по частям, задавайте количество для каждой части отдельно.

Воспроизведение звукового файла с преднабором

Объединение проигрывания и ввода: абоненту объясняют, что он должен ввести, и не заставляют дослушивать до конца. Как только набран первый символ, файл замолкает и запускается таймер времени ввода. Дальше компонент работает так же, как «Ввод числа».

СвойствоОписание
ФайлПроигрываемый файл; правила пути — см. примечание в начале статьи.
Символы прерыванияСимволы или последовательности через запятую либо пробел.
БуферПеременная для введённого значения; последовательность прерывания в неё не попадает.
Очистить буферДописывать или очищать перед записью.
Максимальное времяВремя ожидания ввода в секундах; 0 — без ограничения. См. примечание ниже.
Количество символовСколько символов ждать; 0 — без ограничения.
Переход / Переход, времяУспешный ввод либо истечение времени.
С какого момента отсчитывается время Таймер запускается по набору первого символа либо по завершении воспроизведения файла — смотря что случится раньше. Длина звукового файла на отведённое абоненту время не влияет.

Запись звукового файла

Записывает звук с микрофона абонента. Запись прекращается, когда набрана одна из заданных последовательностей прерывания либо вышло установленное время — тогда управление уходит по ветке «Время вышло».

СвойствоОписание
ФайлПуть строится из каталога и имени. Имя файла может быть задано жёстко, сгенерировано случайно либо взято из переменной сценария.
Имя файла в переменнуюКуда сохранить имя записанного файла; нужно, когда имя генерируется.
Возвращать полный путьДа / нет. Вернуть только имя с расширением или полный путь с указанием диска.
Символы прерыванияПри их наборе запись прекращается, управление уходит по ветке «Переход».
БуферПеременная для последовательности прерывания.
Очистить буферДописывать или очищать перед записью.
Максимальное времяВремя записи в секундах.
Начинать новую папкуВставлять ли между указанной папкой и именем файла ещё одну папку и как часто её начинать: никогда, каждый час, день, неделю, месяц, каждые 3 месяца, каждый год.
КодекPCM, G.711 a-law, G.711 u-law, GSM.610, MP3 8 Кбит/с, MP3 16 Кбит/с, MP3 24 Кбит/с.
Переход / Переход, времяУспешное завершение либо истечение времени.
Про «Начинать новую папку» Свойство существует ради файловой системы: голосовая почта или запись обращений за год складывают в один каталог десятки тысяч файлов, и работа с ним замедляется. Разбивка по дням или месяцам решает это на этапе проектирования, а не потом.

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