Создание голосового меню

выдержка из Википедии:

Голосовое меню (IVR, Interactive Voice Response) - система предварительно записанных голосовых сообщений, выполняющая функцию маршрутизации звонков внутри call-центра с использованием информации, вводимой клиентом на клавиатуре телефона с помощью тонального набора...

Где же взять эти предварительно записанные голосовые сообщения? Вариантов несколько:

  1. Обратиться в компанию звукозаписи (качественно, дорого).
  2. Записать самостоятельно (качество зависит от ваших навыков, бесплатно).

Мы будем рассматривать второй вариант. Сам он может иметь различные вариации, но в нашем случае для записи будет использован сам Asterisk. И в этом нам поможет приложение Record().

exten => 1234,1,Answer(500) same => n,Record(custom/new_record.gsm) same => n,Wait(1) same => n,Playback(custom-menu) same => n,Hangup()

Файл new_record.gsm с записью вы сможете найти в папке /var/lib/asterisk/sounds/custom. Лезем в папку, меняем имя файла, перекидываем на место постоянной дислокации:

host# cd /var/lib/asterisk/sounds/custom host# mv menu-element.gsm greeting.gsm # меняем имя и далее перемещаем (можно и одной командой) host# mv greeting.gsm ../ru/ivr/ # предполагается, что папка ru/ivr уже существует

Пример

Из основного контекста я сделал переход в контекст для записи аудиофайла. В папке sounds/ru создал папку record, в которую поместил все вспомогательные аудиофайлы, которые ведут звонящего по всей процедуре записи. Вспомогательные файлы я сделал с помощью того же приложения Record(). Записал - Переместил из custom в record - Дописал диалплан. В итоге получилось вот что:

[internal] ... exten => 10, 1, Goto(record,start,1) [record] exten => start, 1, NoOp(Начало записи голосового файла sounds/custom/new_record.gsm) same => n, Answer(500) same => n, Goto(record,1) exten => record, 1, Playback(ru/record/greeting) ; Привет, запись начнётся после сигнала same => n, Record(custom/new_record.gsm) ; биип (начинаем говорить) same => n, Goto(playback,1) exten => playback, 1, Wait(1) same => n, Playback(custom/new_record) ; воспроизведение вашего потока сознания same => n, Playback(ru/record/done) ; Запись завершена, вы найдёте её там-то same => n, Background(ru/record/make_a_choice) ; Нажми 1 для прослушки, 2 для записи нового same => n, WaitExten(2) same => n, Playback(ru/record/goodbye) ; Пока same => n, Hangup() exten => 1, 1, Goto(playback,1) ; нажал 1 - переход к воспроизведению exten => 2, 1, Goto(start,1) ; нажал 2 - другая запись (затрёт первую)

Также смотри описания приложений

Answer()
Record()
Wait()
Playback()
Hangup()