Asterisk™: будущее телефонии Второе издание
Шрифт:
Четвертый параметр - это функция обратного вызова, которая будет вызываться в ответ на запрос Ajax.
Примеры использования makerequest
Возьмем в качестве примера следующий фрагмент кода. Он демонстрирует три разных способа использования функции makerequest. В первом случае мы получаем конфигурационные данные из файла users.conf. Во втором - обновляем musiconhold. conf и меняем значение настройки random в классе default. И последнее (по порядку, но не по значимости) - вызываем действие Ping. В каждом случае задается функция обратного вызова t, которая просто заменяет
makerequest( 'g', 'users.conf', '' ,
function(t) { $('ExtensionsDotConf'). innerHTML = "<PRE>" + t + "</PRE>"; } );
makerequest( 'u', 'musiconhold.conf',
'&Action-000000=update&Cat-000000=default&Var-000000=random&Value- 000000=yes' ,
function(t) { $('ExtensionsDotConf').innerHTML = "<PRE>" + t + "</PRE>"; } );
makerequest( '', '', 'action=Ping' ,
function(t) { $('ExtensionsDotConf').innerHTML = "<PRE>" + t + "</PRE>"; } );
Все остальное содержимое test.html - это просто HTML-код с элементом div, в котором будут размещены конфигурационные данные после их получения. Обратите внимание, что тег HTML-кода имеет атрибут onload, который обусловливает выполнение броузером функции localAjaxinit сразу же по завершении загрузки страницы.
Теперь, когда новая страница создана, необходимо отредактировать файл cfgbasic.html, чтобы добавить эту страницу как панель GUI. Откройте файл cfgbasic.html, найдите JavaScript-функцию returnpanels и вставьте этот код в список панелей в том месте, где вы хотите разместить свою панель:
newpanel( ["Test", "test.html", "Test"]); Теперь перезагрузите GUI в своем броузере. Слева должна появиться новая вкладка Test (Проверка), и после щелчка по ней будут отображаться значения конфигурации для файла extensions.conf. Это всего лишь малая часть того, что можно рассказать об интерфейсе AJAM и Asterisk GUI, но данный пример служит только для того, чтобы продемонстрировать вам, как просто вводить новую функциональность в GUI. В следующем примере будет показано, как легко выводить в GUI настройки из конфигурационных файлов.
Вывод настроек конфигурации в GUI
Как говорилось ранее, одно из уникальных преимуществ Asterisk GUI по сравнению с другими графическими интерфейсами для Asterisk в том, что он обновляет существующие конфигурационные файлы, предпринимая при этом специальные меры для предотвращения перезаписи или удаления каких-либо дополнительных настроек, которые могут присутствовать в конфигурационных файлах. Чтобы продемонстрировать ту простоту, с которой можно предоставлять новые настройки в GUI, добавим в GUI простой флажок, обеспечивающий возможность задавать настройку nat в файле users.conf.
Если открыть GUI и щелкнуть по вкладке Users (Пользователи), GUI загрузит файл users.html в iframe. Откроем afqk users.html (обычно располагающийся в gfgrt /var/lib/asterisk/static-http/config) и начнем изменять его, чтобы добавить наш флажок.
Сначала посмотрим в начало файла, где описана переменная fieldnames (имена полей). Эта переменная содержит список всех имен полей, которые будут заданы на данной странице GUI. Просто добавьте nat в конец списка или вставьте следующую
fieldnames.push('nat'); Таким образом мы сообщаем Asterisk GUI о том, что хотим иметь возможность видеть, а также задавать значение nat. Однако, чтобы увидеть или задать значение, необходимо добавить элемент в HTML-фор- му. Для этого найдите в файле users.html флажок IAX и добавьте следующие строки между ним и флажком CTI.
<tr>
<td align=right><input type='checkbox' id='nat'></td> <td>NAT</td> </tr>
Просто перезагрузите страницу - вот и все. Всего несколько дополнительных строк кода - и мы можем выводить настройку nat в GUI. Проще быть не может!
Занимаясь формированием Asterisk GUI, вы, вероятно, обнаружите, что отладка кода Ajax и JavaScript порой может вызывать некоторые трудности. Мы настоятельно рекомендуем использовать расширение для Mozilla/Firefox под названием Firebug, которое существенно упрощает задачу по отладке Ajax, JavaScript и HTML. Его можно найти по адресуhttp://www.getfirebug.com. Существует также упрощенная версия для Internet Explorer, известная как Firebug Lite, которую можно скачать на том же веб-сайте.
Дополнительная информация
В данной главе были представлены Asterisk GUI и инфраструктура AJAM. Мы рассмотрели модель работы GUI и то, как его можно изменять. Дополнительную информацию по разработке графического интерфейса для Asterisk можно найти в руководстве для разработчиков GUI (GUI Developers Guide) по адресуhttp://asterisknow.org/developers/gui-guide.
По договору между издательством «Символ-Плюс» и Интернет-магазином «Books.Ru - Книги России» единственный легальный способ получения данного файла с книгой ISBN 978-5-93286-128-8, название «Asterisk™: будущее телефонии, 2-е издание» - покупка в Интернет-магазине «Books.Ru - Книги России». Если Вы получили данный файл каким-либо другим образом, Вы нарушили международное законодательство и законодательство Российской Федерации об охране авторского права. Вам необходимо удалить данный файл, а также сообщить издательству «Символ-Плюс» (piracy@symbol.ru), где именно Вы получили данный файл.12
Интеграция с реляционной базой данных
Ничто так не раздражает, как хороший пример.
– Марк Твен
Введение
В данной главе мы собираемся исследовать вопросы интеграции некоторых функций Asterisk и системы управления базами данных (СУБД). Для работы с Linux доступно несколько СУБД, но мы решили ограничить наше обсуждение PostgreSQL. Мы прекрасно понимаем, что MySQL - тоже чрезвычайно популярная СУБД, но надо было остановиться на какой-то одной, и наш опыт работы с PostgreSQL перевесил чашу весов в ее пользу. Фактически будет обсуждаться ODBC-коннек- тор, поэтому, если ваша база данных поддерживает работу через ODBC, содержание данной главы будет вам полезным.