только означает, что GUI больше не должен отображать все возможные конфигурации, поскольку наиболее специфичные из них могут быть заданы вручную. Это также означает, что, если кто- то начнет с использования Asterisk GUI, а затем выйдет за его рамки, он вполне естественным образом сможет создавать более сложные функции, не отказываясь от уже ставшего привычным GUI.
Использование GUI
При первой регистрации во вновь созданном GUI система активирует Мастер настройки, который позволяет настроить основные элементы системы телефонной связи.
GUI может не суметь определить все типы интерфейсов TDM и в результате сообщит, что не находит определенные платы, даже несмотря на то, что они установлены. Предполагается, что со временем GUI научится определять любые платы, использующие интерфейс Zaptel, и работать с ними, но эта функциональность обещает быть сложной и на данный момент находится на этапе разработки.
Мастер настройки одну за другой предлагает некоторые базовые опции, такие как длина добавочного номера или правила набора. Мы не собираемся углубляться в детали того, как работает стандартный GUI. Он находится в процессе непрерывной разработки, и, скорее всего, читая эту книгу, вы не найдете в GUI многое из того, что мы могли бы написать здесь.
Элементы GUI
Стандартный GUI, который поставляется с AsteriskNOW (или который можно скачать через SVN), имеет стандартный набор элементов. Эти элементы представляют собой то, что может присутствовать в типовой малой офисной АТС. В настоящее время в меню представлены следующие элементы:
• 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 и JavaScript
Инфраструктура 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 co http://svn.digium.com/svn/asterisk- gui/trunk asterisk-gui
Установить GUI очень просто:
# cd asterisk-gui
# ./configure
# make
# make install
# make samples
После выполнения представленных выше команд файлы GUI будут установлены и станут частью вашего дистрибутива Asterisk.
Настройка httpd.conf и manager.conf
Конфигурация веб-сервера Asterisk для обработки запросов AJAM включает несколько простых шагов. В