Asterisk формат звуковых файлов
Всем привет. Постараюсь без нудятины рассказать о том, как создать голосовое меню приветствие на Asterisk.
Буду рассказывать на своем примере голосового меню. У меня оно было следующего вида:
Здравствуйте! Вы позвонили в КОМПАНИЮ, выберите пункт меню, введите внутренний номер или дождитесь ответа секретаря
Я разворачивал свой Asterisk в связке с CentOS. На самом деле это не имеет особого значения, но решил все же уточнить.
И так, на момент чтения этой статьи у Вас должно быть следующее:
- установленный Asterisk
- настроена минимальная маршрутизация звонков в extensions.conf
- и как минимум пара внутренних номеров настроенных в sip.conf
Настройка голосового меню для Asterisk
Создаем файл company.tree в корне папки Asterisk. В этом файле будет прописан алгоритм работы голосового меню.
Идем в extensions.conf и в самое начало файла вставляем следующее
этим самым мы подгружаем недавно созданный файл в общий план маршрутизации Asterisk.
Там же в extensions.conf ищем где у вас настроены входящие звонки (у меня раздел назван [call-in], у вас может быть другое название) и вставляем в самое начало следующую строчку
Теперь переходим в файл company.tree и заполняем наш алгоритм голосового меню. Ниже весь код с комментариями:
[company_tree]
;Отвечаем на входящий звонок
exten => s,1,Answer()
;Проигрываем запись текста голосового дерева (ниже опишу куда положить файл и как создать)
exten => s,2,Background(/etc/IVR/menu)
;Немного времени на осмысление дерева и выбор интересующего направления, в данном случае 7
exten => s,3,WaitExten(7); При нажатии 1 переводит в первый отдел (в моем случае это просто внутренние номера сотрудников)
exten => 1,1,Dial(SIP/101)
; При нажатии 2 переводит во второй отдел
exten => 2,1,Dial(SIP/202)
; При нажатии 3 переводит в третий отдел
exten => 3,1,Dial(SIP/218)
; При нажатии 4 переводит в четвертый отдел
exten => 4,1,Dial(SIP/207)
; При нажатии 5 переводит в пятый отдел
exten => 5,1,Dial(SIP/303)
; При нажатии 6 переводит в шестой отдел
exten => 6,1,Dial(SIP/103)
; По таймауту переводит на секретаря
exten => t,1,Dial(SIP/300)
; При нажатии 0 проигрывает запись с начала
exten => 0,1,Goto(company_tree,s,1)
На этом все. Голосовое меню c приветствием для Asterisk настроено. Осталось только перезагрузить план обзвона из консоли
asterisk -r
dialplan reload
Аудиофайлы для голосового меню в Asterisk
Выше в структуре файла company.tree есть строчка
Примечание: Asterisk не умеет работать с расширениями типа *.mp3 или *.wav, ему нужны файлы с расширением *.ulaw.
Конвертация WAV в ULAW
В консоли вашей ОС Linux пишем следующее
sox -V /etc/IVR/menu.wav -r 8000 -c 1 -t ul /etc/IVR/menu.ulaw
После выполнения команды увидите примерно следующее
Копирование файлов из Windows в Linux
Качаете WinSCP с ОФИЦИАЛЬНОГО САЙТА
При запуске создаете новое подключение к вашему Linux и далее увидите что-то на подобие интерфейса TotalCommander. Ну а дальше копирует файлы, создаете папки и так далее. В моем случае я создал папку IVR в каталоге etc где у меня и лежит мое голосовое меню.
Попытался кратко резюмировать то, что нарыл в интернете, когда разбирался с настройкой голосового меню для Asterisk. В итоге Вам представлена рабочая схема, которой можете пользоваться. Спасибо за внимание.
На данной странице представлена текстовая расшифровка звуковых файлов сервера asterisk.
Некоторые из них, возможно, требуют замены на синонимы, для правильного согласования времени и окончаний слов в произносимом предложении.
Возможно этот список не полон, т.к. в связи с постоянным развитием и модернизацией сервера Asterisk могут появляться новые звуковые файлы.
Если Вы заметили несоответствие, ошибки или неточности, пожалуйста, или сами откорректируйте описания файлов или дайте знать.
Стандартные звуковые файлы и их назначение.
Основные звуковые файлы.
- beep.gsm: (звук короткого тонального сигнала)
- hours.gsm: часов
- minutes.gsm: минут
- auth-incorrect.gsm: Пароль не правильный. Пожалуйста, введите Ваш пароль. После ввода пароля нажмите клавишу решетка.
- auth-thankyou.gsm: Спасибо.
- invalid.gsm: Извините, вы набрали неправильный номер. Попробуйте еще раз.
- pbx-invalid.gsm: Извините, Вы набрали неправильный номер. Попробуйте еще раз.
- pbx-invalidpark.gsm: Извините, на данном номере нет запаркованных вызовов. Попробуйте еще раз.
- pbx-transfer.gsm: Наберите номер для перевода вызова.
- privacy-incorrect.gsm: Извините, Вы набрали неправильный номер.
- privacy-prompt.gsm: Пожалуйста, наберите Ваш десятизначный номер телефона, вместе с кодом города.
- privacy-thankyou.gsm: Спасибо.
- privacy-unident.gsm: Вызываемый Вами абонент не принимает вызовы с неизвестных номеров.
- ss-noservice.gsm: Вызываемый Вами номер не обслуживается. Пожалуйста, проверьте номер и попробуйте еще раз.
- transfer.gsm: Подождите, идет вызов абонента.
- tt-allbusy.gsm: Все работники народного хозяйства в настоящее время обслуживают других назойливых агентов по телефонным продажам. Пожалуйста, оставайтесь на линии, Ваш звонок очень важен для нас и на него ответит первый же освободившейся работник.
- tt-monkeys.gsm: (звук крика обезьян. 16 секунд) Можно записать речь Фиделя Кастро
- tt-monkeysintro.gsm: Абонента унесли дикие обезьяны.
- tt-somethingwrong.gsm: Что-то тут совсем не то .
- tt-weasels.gsm: К сожалению, наша телефонная станция сгорела и не может более работать.
Звуковые файлы для звуковой справочной системы (Directory service).
Звуковые файлы для конференций.
- conf-getchannel.gsm: Пожалуйста, наберите номер канала. После ввода нажмите клавишу решетка.
- conf-getconfno.gsm: Пожалуйста, наберите номер нужной конференции. После ввода нажмите клавишу решетка.
- conf-getpin.gsm: Пожалуйста, введите пин код для доступа в конференцию.
- conf-invalid.gsm: Вы ввели неправильный номер конференции. Попробуйте еще раз.
- conf-invalidpin.gsm: Введенный Вами пин код не подходит для этой конференции.
- conf-onlyperson.gsm: На данный момент Вы единственный участник в этой конференции.
- conf-adminmenu.gsm: Пожалуйста, наберите один, чтобы выключить или включить свой микрофон. Или нажмите два для того, чтобы заблокировать или разблокировать конференцию.
- conf-enteringno.gsm: Вы вошли в конференцию номер. (не знаю, это должно звучать как полное предложение?)
- conf-errormenu.gsm: Не правильный выбор.
- conf-kicked.gsm: Вы были удалены из конференции.
- conf-locked.gsm: Данная конференция заблокирована.
- conf-lockednow.gsm: Конференция заблокирована.
- conf-muted.gsm: Ваш микрофон теперь выключен.
- conf-noempty.gsm: На данный момент нет свободных конференций.
- conf-unlockednow.gsm: Конференция разблокирована.
- conf-unmuted.gsm: Ваш микрофон теперь включен.
- conf-usermenu.gsm: Пожалуйста, наберите один, чтобы выключить или включить свой микрофон.
Звуковые файлы для агентов, обрабатывающих очередь вызовов.
Демонстрационные Звуковые файлы.
Смысла переводить данные файлы я не вижу.
Звуковые файлы для системы голосовой почты.
Цифры
Данные звуковые файлы используются командами SayDigits, DateTime и SayNumber.
Стоит отметить: Что все эти звуковые файлы имеют нейтральную интонацию, так как, если бы они произносились в конце предложения (А почему бы и не в середине?) .
Зачастую, возникает задача, поменять голосовое приветствие, либо же залить какую-нибудь рекламу на свою IP-ATC. Это сделать не трудно, но вся проблема заключается в том, что Asterisk понимает определенный формат звукового файла, с определенной частотой звучания.
Программ, которые занимаются обработкой аудио великое множество, но многие из них платные, многие — тяжелы в использовании. Тут на помощь приходит программа Audacity. Она совершенно бесплатна, доступна в сети Интернет и совершенно незамысловата в работе. К тому же, руссифицирована, что является приятным дополнением для пользователей.
Разберемся по-этапно, как создать голосовой файл для импорта в Asterisk
Открываем программу. Она выглядит так:
Далее, как обычно, загружаем в программу звуковой файл. Делается это так: Файл — Открыть. Получается такой вид:
Вроде бы все хорошо, но… Проблема в том, что Asterisk проигрывает формат mono, а у нас на данный момент звуковой файл в формате stereo. С помощью Audacity переводим stereo в mono. Выбираем: Дорожки — Стерео в моно.
Теперь необходимо поменять частоту звучания с 44100 Гц в 8000 Гц. Выбираем: Правка — Параметры:
Выбираем частоту дискретизации по умолчанию — 8000 Гц. Отлично. Теперь дело за малым — экспортировать данный файл. Делается это так: Файл — Экспортировать.
Открывается окошко Windows, указываем имя файла, тип файла — WAV 16 bit PCM, выбираем куда сохранить и жмем «Сохранить». Все! Файл экспортирован и готов к импорту в Вашу IP-ATC Asterisk.
Ныне FreePBX — крайне популярная обертка к Asterisk, который не менее популярен как телефонный цифровой сервер. Отдельный плюс таких систем — возможность развернуть на недорогих vds-серверах (я клиентам разворачиваю на vds стоимостью 299р/месяц, 2Гб ОЗУ, 2,8 GHZ процессор, 20Гб место на диске). Такая система запросто обслуживает 10-20 одновременных звонков, пишет аудио, позволяет внедрять телефонную часть бизнес-процесса в остальную логику (взаимодействие с crm, звонки с сайта/браузера, автоинформаторы на основе данных в субд, выяснение поисковых данных по номеру о звонящем за доли секунд, даже распознавание и синтезация речи!).
Все бы хорошо, но при «обильных» обзвонах через полмесяца заканчивается место на диске. Те самые 20Гб улетают у некоторых клиентов за неделю! А хостер, к сожалению, не предоставляет fuse на тарифах OpenVZ, который крайне необходим для работы «реалтайм — сетевых файловых систем», вроде ftpfs.
Ниже изложу мой комплекс мер по борьбе с проблемой. Работать будем с каталогом /var/spool/asterisk/monitor, где лежат .wav файлы, заботливо разложенные asterisk по каталогам: год, месяц и день.
Изначально я пошел не с того края — стал перебрасывать часть данных на webdav (ya.disk) и ftp. Делалось это скриптом, запускаемым раз в месяц по крону. Скрипт оставлял указанное количество месяцев на сервере, остальное переносил на удаленный ресурс.
Для yandex.disk он дополнительно паковал данные «помесячно», что требовало свободного места для создания архива. Но, тем не менее, кое-где он прижился:
Когда писал подобный скрипт для ftp, решил отказаться от архивирования аудио. И доставать проще, и ссылки формировать на сторонний ресурс можно, для онлайн-прослушивания из CDR-отчета. Требует lftp-утилиту.
Данный скрипт также забрасывался в месячный крон.
Но кое-кому, как я уже писал, этого не хватало. Данные забивали диск за неделю. Тогда пришла мысль хранить все в mp3. По факту — выигрыш составлял от 4-х раз. Потребуется lame.
Для начала положим в /etc/asterisk такой вот скрипт mixmon_mp3.sh и дадим ему одного с asterisk хозяина: chown asterisk. mixmon_mp3.sh. Также дадим право на выполнение: chmod +x mixmon_mp3.sh.
Далее в вебморде FreePBX, в разделе Settings — Advanced Settings включаем Display Readonly Settings и Override Readonly Settings, после чего становится доступна настройка Post Call Recording Script в разделе Developer and Customization. Туда и прописываем строку вызова скрипта с параметром:
К сожалению, переменная MIXMON_DIR оказалась пустой, поэтому приходится довольствоваться именем файла и отыскивать его в каталоге monitor. Скрипт находит файл, конвертирует его в mp3, удаляет wav и правит запись в таблице cdr, где хранятся отчеты. Это нужно для нормального прослушивания и скачивания файлов в вебморде с отчетами.
Также нам понадобится допилить сам модуль вебморды cdr:
/var/www/html/admin/modules/cdr/
cdr_audio.php
Теперь можно конвертнуть имеющиеся файлы в mp3 и положить на всякий случай этот скрипт в дневной крон:
Процесс небыстрый, лучше запускать на ночь. Теперь у нас намного экономнее расходуется место, прослушивание отчетов не требует QuickTime и файл нам проигрывает браузер через HTML5-тег .
Читайте также: