среда, 8 января 2014 г.

Возвращение Будулая и Магия Asterisk AGI часть 1 (обзор)



Привет мой дорогой читатель!

Сегодня в очередной раз воспользовавшись своей "цифровой памятью" в виде этого блога, очень удивился, что за прошедшие 2 года ты не забыл про меня. Да, я выпал на это долгое время из блогосферы.

За это время многое изменилось в моей жизни, кто-то ушел навсегда, кто-то появился. Теперь я отец прекрасной дочери. Еще за прошедшее время я успел сменить два места работы: небольшого провайдера, местный банк и снова вернуться в небольшую компанию. Накопилось много всего что хочется тебе рассказать, поэтому я попытаюсь найти время чтобы поделиться. Спасибо что есть!..

Магия Asterisk AGI.

Ну а начать хочется с такой интересной темы как интернет телефония. Так уж получилось, что последнее время я плотно работал VoIP-сервером Astrisk и его связке со сторонним ПО. Это не единственный, не самый производительный, но самый поддерживаемый и развитый сервер. Подробнее о нем можно прочитать тут: http://asterisk.ru/functionality.

Но нам всем всегда хочется чего-то большего, поэтому программисты придумали интерфейс управления сервером - AGI.

AGI - это встроенный в Asterisk метод выполнения внешних скриптов (по аналогии с CGI для http серверов), который может расширить функциональность asterisk при помощи других языков программирования. Таких, как: Java, .Net, Perl, PHP, C, Shell - все зависит от Вашего желания. Подробнее здесь: http://asterisk.ru/knowledgebase/Asterisk+AGI

Чтобы не быть голословным рассмотрим задачу:
- Создать систему голосового информирования пользователя о балансе на его счете.
- Информация должна предоставляться по паролю, введенному на клавиатуре телефона в тоновом режиме.
- Уже имеем развернутый сервер телефонии Asterisk
- Данные о балансе лежат в БД Oracle.

При проектировании сервиса было решено отделить приложение от "боевой базы", что-бы не плодить лишнюю нагрузку на серверах БД, поэтому в качестве кеша использовали локальный сервер-БД на основе MySQL. Выбор конечно спорный, но на тот момент это самая знакомая БД.

Сама логика выполнена в виде 2-х PHP-скриптов. Выбор аналогичен предыдущему, PHP наиболее изученный язык на тот момент. Первый это скрипт обновления данных в локальной БД из "боевой" вызываемый по крону, для связи с Oracle используем php-oci8. Второй собственно сам AGI-скрипт вызываемый Asterisk, для связи с Asterisk используем php-agi (http://phpagi.sourceforge.net/).

Важное замечание: Во время работы сервера Asterisk в режиме отладки AGI (команда: "agi set debug on" в консоли Asterisk), оказалось что сервер затрачивает значительное время общение с AGI-скриптом, в моем случае порядка минуты. При отключении отладки задержка пропадает.

Также нам понадобиться записать ряд голосовых файлов которые мы будет проигрывать абоненту. И подумать над структурой меню. На сегодня все :) продолжение следует...



Цикл статей Магия Asterisk:
Магия Asterisk AGI часть 1 (обзор)
Магия Asterisk AGI часть 2 (планируем IVR и пишем голос)
Магия Asterisk AGI часть 3 (пишем AGI-скрипты на PHP)

Комментариев нет: