Создание IVR для записи голосовых сообщений средствами телефона, и их использование
Для использования приветствий и голосовых сообщений в Asterisk их необходимо предварительно записать, сконвертировать в формат wav и, после, загрузить. О конвертировании имеющегося звукового файла для Asterisk смотрите данную статью. Но, сообщения могут быть также записаны и средствами самого телефона. Создадим голосовое меню, в котором можно будет сделать запись и прослушать сообщение. Для добавления оповещения в […]
Для использования приветствий и голосовых сообщений в Asterisk их необходимо предварительно записать, сконвертировать в формат wav и, после, загрузить.
О конвертировании имеющегося звукового файла для Asterisk смотрите данную статью.
Но, сообщения могут быть также записаны и средствами самого телефона.
Создадим голосовое меню, в котором можно будет сделать запись и прослушать сообщение.
Для добавления оповещения в IVR используем уже имеющиеся системные записи. В веб админке переходим Аdmin(Управление)->System Recordings(Звуковые файлы)
Для оповещения с текстом: «Для записи сообщения нажмите 1, для прослушивания сообщения нажмите 2» можно использовать следующие системные записи.
to-rerecord-it
vm-message
press-1
to-listen-to-it
vm-message
press-2
Для добавления системной записи необходимо ввести относительный путь в поле Add system recording
В результате должно получиться одно сообщение, состоящее из нескольких записей, которое будем использовать в IVR:
После добавления – Submit(Сохранить), соглашаемся с предупреждением о конвертации “ If you are doing media conversions this can take a very long time, is that ok?”, Apply Config(Применить).
Переходим Applications(Приложения)->IVR(Голосовое меню) -> Add new IVR(Добавление нового) и создаем IVR
Заполняем поля Announcement(голосовое сообщение при попадании в IVR), Timeout(время ожидания выбора пункта меню), Invalid Retries(количество ошибок при выборе), остальные поля пока не заполняем, сохраняем.
Для использования в веб-интерфейсе пользовательского кода из extensions_custom.conf переходим в Admin(Управление)->Custom Destinations(Системный диалплан). Добавляем custom destination для записи, отмечаем Return (возврат после выхода), Destination – ранее созданная IVR.
И, также, custom destination для прослушивания записанного сообщения. Сохраняем изменения.
Дозаполняем IVR: указываем Invalid Destination(назначение после неправильного выбора пункта меню), Timeout Destination(назначение после окончания таймаута выбора), добавляем пункты 1 и 2.
Подключаемся по SSH, в консоли выполняем
nano /etc/asterisk/extensions_custom.conf
Рассмотрим диалплан для записи/перезаписи одного сообщения (например, сообщения, которое будет проигрываться в праздничные дни):
[record]
exten => s,1,NoOp(New recording)
;Предупреждение о вводе пароля и ввод пароля
same => n,Read(pin,vvedite-parol,4,,,10)
;pin для записи – 1212, если пользователь ввел верно, продолжаем
;(переход в именованный приоритет ok), если нет – повтор ввода
same => n,GotoIf($["${pin}"="1212"]?ok)
same => n,Playback(invalid)
same => n,Goto(record,s,1)
:Для системных оповещений в процессе записи используем имеющиеся
;системные звуковые файлы из /var/lib/asterisk/sounds/ru/ (record, saved и др.)
;если необходимо немного подкорректировать эти записи -скопировать их
;в другую директорию /var/lib/asterisk/sounds/ru/custom/sys/ и изменить
same => n(ok),Playback(/var/lib/asterisk/sounds/ru/custom/sys/record)
;указываем имя записи
same => n,Set(REC_NAME=recorded_announcement)
;если требуется, чтобы
;записи писались в 1 файл (имя в формате ггммдд-ччммсс.wav) –
;по-другому установить переменную REC_NAME
;same => n,Set(REC_NAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
;запись сохраняем в /var/lib/asterisk/sounds/ru/custom/rec/ ,
;указываем имя, формат, максимальное кол-во сек тишины, максимальную длительность
same => n,Record(/var/lib/asterisk/sounds/ru/custom/rec/${REC_NAME}.wav,10,300)
;проигрываем системное сообщение - сохранено
same => n,Background(/var/lib/asterisk/sounds/ru/custom/sys/saved)
;Воспроизводим записанное сообщение
same => n,Background(/var/lib/asterisk/sounds/ru/custom/rec/${REC_NAME})
;Воспроизводим “Если корректно нажмите 1, для перезаписи – 2”
same => n,Background(/var/lib/asterisk/sounds/ru/custom/sys/if-correct-press)
same => n,Background(/var/lib/asterisk/sounds/ru/digits/1)
same => n,Background(/var/lib/asterisk/sounds/ru/custom/sys/to-rerecord-it)
same => n,Background(/var/lib/asterisk/sounds/ru/custom/sys/press-2)
;Ожидаем ответа 5 сек
same => n,WaitExten(5)
;При нажатии 1 или неправильном вводе
exten => i,1,NoOp(Сообщение записано. Выход)
same => n,Playback(/var/lib/asterisk/sounds/ru/auth-thankyou)
same => n,Wait(2)
same => n,Playback(/var/lib/asterisk/sounds/ru/goodbye)
same => n,Wait(2)
same => n,Hangup
;При истечении таймаута ввода
exten => t,1,NoOp(Сообщение записано. Выход)
same => n,Playback(/var/lib/asterisk/sounds/ru/auth-thankyou)
same => n,Wait(2)
same => n,Playback(/var/lib/asterisk/sounds/ru/goodbye)
same => n,Wait(2)
same => n,Hangup
;При нажатии 2 – удаление и перезапись
exten => 2,1,NoOp(Удаление файла /var/lib/asterisk/sounds/ru/custom/rec/${REC_NAME}.wav)
same => n,System(rm /var/lib/asterisk/sounds/ru/custom/rec/${REC_NAME}.wav)
same => n,Wait(1)
same => n,Goto(s,1)
[playback-recording]
exten => s,1,NoOp(Воспроизведение последнего записанного сообщения)
same => n,Playback(/var/lib/asterisk/sounds/ru/custom/sys/last-message)
;Скрипт, определяющий последнее записанное сообщение
;В /var/lib/asterisk/sounds/ru/custom/rec
same => n,AGI(last-recording.sh,${LAST_MESSAGE})
same => n,NoOp(${LAST_MESSAGE})
same => n,Playback(/var/lib/asterisk/sounds/ru/custom/rec/${LAST_MESSAGE})
Для того, чтобы записи писались в разные файлы и, далее, сами добавлялись в БД и были доступны в веб-интерфейсе, необходимо в контекст [record] для экстеншенов i,t (куда абонент попадает в случае успешно записанного сообщения), перед Hangup, добавить вызов AGI скрипта (например на php), куда передать имя записанного сообщения – переменную ${REC_NAME} и добавить в БД asterisk в таблицу recordings, новую запись.
Для применения изменений в базе необходимо инициировать из AGI скрипта выполнение команды
fwconsole reload
Данный код аналогичен нажатию кнопки Apply Config в веб-интерфейсе
См.подробнее статью об использовании AGI скриптов.
Для определения последней сделанной записи cоздаем скрипт last-recording.sh, даем права на выполнение
nano /var/lib/asterisk/agi-bin/last-recording.sh
chmod +x /var/lib/asterisk/agi-bin/last-recording.sh
Для, того, чтобы перейти в созданное IVR для записи сообщения создадим новый добавочный (напр. 210), и на вкладке Advanced(расширенные настройки) укажем Optional Destination (например Not Reachable — назначение при отключенном добавочном) IVR for recording
Для применения диалплана, добаленного в extensions_custom.conf:
asterisk -rvvv
CLI>
dialplan reload
После этого при звонке на 210 произойдет попадание в IVR для записи.
Для добавления необходимо перейти в веб-интерфейсе Admin->System recordings и указать название сообщения (напр. Recording-announcement), в поле Add System Recording вписать относительный путь к файлу — custom/rec/recording-announcement
Далее его можно использовать. Например, для проигрывания сообщения при звонке в установленное время (дни, часы) – перейти в Application->Announcement, добавить новое системное сообщение, указать Destination after Playback(действие после воспроизведения – в примере отбой)
Добавить/cкорректировать временную группу (Time Groups)
Добавить/cкорректировать правило по времени (Time condition), указав в нем временную группу, Destination matches (назначение при попадании в нее — системное сообщение Custom-recording-for-rest-day) и Destination non-matches (направление при непопадании – IVR Main).
Далее необходимо во входящих маршрутах(Inbound routes) для каждого маршрута, где должно проигрываться записанное сообщение (при попадании в указанные во временной группе рамки) выбрать добавленное правило по времени(Rest-days).
Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.