Asterisk™: будущее телефонии Второе издание
Шрифт:
• Users (Абоненты).
• Conferencing (Конференц-связь).
• Voicemail (Голосовая почта).
• Call Queues (Очереди звонков).
• Service Providers (Поставщики сервисов).
• Calling Rules (Правила вызова).
• Incoming Calls (Входящие звонки).
• Voice Menus (Голосовые меню).
• Record a Menu (Запись в меню).
• Active Channels (Активные каналы).
• Graphs (Диаграммы).
• System Info (Сведения
• Backup (Создание резервной копии).
• Options (Опции).
Архитектура Asterisk GUI
Прежде чем углубляться в изучение (или разработку собственного) Asterisk GUI, важно понимать, как реализуется поток данных между клиентом (веб-броузером) и Asterisk. Поскольку эти интерфейсы являются Ajax-приложениями, многое в них не вполне понятно. Поток управления проходит примерно так:
• Броузер переходит по URL вашего приложения управления.
• Веб-сервер Asterisk отправляет броузеру HTML-страницу, библиотеки и само приложение (которое написано на JavaScript и активно использует Ajax).
• Пользователь взаимодействует с броузером; по мере необходимости приложение JavaScript присылает команды назад веб-серверу. Эти команды, представленные в форме URL, запрашивают некоторое действие от самого сервера Asterisk.
• Веб-сервер интерпретирует эти URL. Если пользователь прошел регистрацию успешно, он посылает команду (действие) Asterisk через Asterisk Manager Interface (AMI), описанный в главе 10.
• Asterisk выполняет действия и передает результаты (код состояния и, возможно, данные) на веб-сервер.
• Веб-сервер возвращает ответ Asterisk JavaScript-приложению, выполняющемуся в броузере.
• JavaScript-приложение обновляет окно броузера.
Несмотря на то что на первый взгляд это может показаться несколько сложным, не пугайтесь. Это очень гибкая и мощная архитектура, которая может использоваться для разнообразнейших приложений, а не только для Asterisk GUI. Однако сейчас сосредоточимся на совершенствовании Asterisk GUI. Начнем с настройки базовых частей и затем перейдем к установке и изменению Asterisk GUI.
Компоненты Asterisk GUI
Рассмотрим подробнее некоторые ключевые компоненты Asterisk GUI. Они будут использоваться позже в данной главе для изменения Asterisk GUI.
Asterisk Manager Interface
Как рассказывалось в главе 10, Asterisk Manager Interface обеспечивает возможность внешним программам управлять Asterisk. Интерфейс Manager - это сердце Asterisk GUI, поскольку он выполняет всю тяжелую работу.
Команды Manager по HTTP и веб-сервер Asterisk
Веб-сервер, встроенный в Asterisk, позволяет передавать команды интерфейса Manager в Asterisk по HTTP, а не подключаться непосредственно к интерфейсу Manager. Это намного упрощает для веб-приложения задачу по передаче команд AMI в Asterisk с использованием Asynchronous JavaScript Asterisk Manager (AJAM), что мы вскоре рассмотрим. Веб-сервер также можно конфигурировать на обслуживание статического содержимого, такого как HTML-файлы и изображения1.
AJAM
Инфраструктура AJAM использует JavaScript и XML для асинхронной отправки команд в Asterisk и обновления информации, отображаемой в веб-броузере.
Установка Asterisk GUI
Если у вас не установлен AsteriskNOW, необходимо скачать и установить файлы Asterisk GUI. После загрузки эти файлы просто компилируются и устанавливаются как часть Asterisk.
Для использования Asterisk GUI необходима Asterisk версии 1.4 или более поздней.
Самую последнюю версию файлов GUI можно найти в хранилище Subversion компании Digium2. Если на вашем компьютере установлено Subversion, код GUI можно загрузить, используя следующую команду:
Возможно, вы спрашиваете себя: «Почему веб-сервер встроен в Asterisk? Почему бы просто не использовать внешний веб-сервер?» Внешний веб-сервер может использоваться для обслуживания Asterisk GUI, но это выходит за рамки рассмотрения данной главы, поскольку модель безопасности, лежащая в основе Ajax, разрешает Ajax направлять запросы только к тому домену, порту и по тому протоколу, по которым поступила HTML-страница. Обычно такое поведение называют политикой единства происхождения. В настоящее время нет способа загрузить GUI через FTP. Эта ситуация может измениться в любой момент, поэтому не стесняйтесь и свободно проверяйте, не появилась ли обновленная информация на веб-сайте Asterisk.
# cd /usr/src # или любая папка, в которую вы хотите загрузить исходный код
# svn coasterisk-gui
Установить GUI очень просто:
# cd asterisk-gui
# ./configure
# make
# make install
# make samples
После выполнения представленных выше команд файлы GUI будут установлены и станут частью вашего дистрибутива Asterisk.
Настройка httpd.conf и manager.conf
Конфигурация веб-сервера Asterisk для обработки запросов AJAM включает несколько простых шагов. В файл /etc/asterisk/http.conf необходимо добавить (или раскомментировать) следующее:
[general] enabled=yes
enablestatic=yes ; без этого вы можете только посылать команды AMI, ; но не отображать html-содержимое
bindaddr=0.0.0.0 ; адрес, на который HTTP-сервер Asterisk должен отвечать bind po rt=8088 ; порт, по которому HTTP-сервер Asterisk должен отвечать prefix=asterisk ; будет формировать часть URI, соответствующую имени папки
Теперь, когда httpd.conf настроен, можно передать содержимое в броузер. Чтобы веб-клиент мог посылать команды в Asterisk, необходимо внести некоторые изменения в Asterisk Manager Interface (AMI). Для этого добавим несколько строк в раздел [general] файла manager.conf и учетную запись пользователя с набором разрешений config. Откроем файл manager.conf и отредактируем его следующим образом: [general]