Line-000000-000011: cancallforward=yes
Line-000000-000012: callreturn=yes
Line-000000-000013: callgroup=1
Line-000000-000014: pickupgroup=1
Line-000000-000015: host=dynamic
Обновление конфигурационных файлов
Часто полезно иметь возможность обновлять конфигурационный файл Asterisk через интерфейс Manager. Для обновления одной или более настроек конфигурационного файла используется действие Update Config. Например, чтобы удалить из users.conf пользователя под именем 6003, можно использовать следующую команду:
Action: UpdateConfig Filename: users.conf Reload: yes
SrcFilename: users.conf DstFilename: users.conf Action-00000: delcat Cat-00000: 6003 ActionID: 5298795987243
Конечно, мы лишь слегка коснулись возможностей Asterisk Manager Interface и рассмотрели лишь несколько из множества предоставляемых им разнообразных действий. Более подробный список доступных команд приведен в приложении F.
Flash Operator Panel
Flash Operator Panel (FOP) - один из наиболее популярных примеров, демонстрирующих мощь интерфейса Manager. FOP обеспечивает визу-
альное веб-представление вашей системы и возможность управления вызовами.
FOP чаще всего используется для того, чтобы дать возможность оператору-человеку видеть пользователей системы и устанавливать соединения между ними. Также он может применяться в инфраструктуре центра обработки звонков для обеспечения инициируемых CRM всплывающих экранов[105].
Интерфейс управления FOP представлен на рис. 10.1. Копию FOP можно найти по адресу
Настраивать FOP несложно, но все-таки конфигурация включает несколько этапов. Эти вопросы выходят за рамки рассмотрения данной книги, но на веб-сайте, посвященном FOP, можно найти самую свежую документацию с подробным описанием процесса установки и настройки.
FOP имеет фантастическое сообщество разработчиков и пользующуюся большой популярностью рассылку. Успеху FOP также способствовало его включение в Trixbox.
Разработка в Asterisk с использованием Adhearsion
Не так давно появилась новая технология, которая может изменить порядок составления диалпланов[106].
Новый подход к диалпланам
Asterisk повзрослела с точки зрения как технологии, так и ее популярности, но при все большем погружении в этот чудесный мир невозможно не столкнуться с ограничениями. Созданию сложных сценариев уровня предприятия с использованием только Asterisk будет сопутствовать множество трудностей применения логики диалплана. Несмотря на всю гибкость и мощь диалплана, как язык программирования он довольно слаб и существенно менее гибок, чем большинство современных языков сценариев. При реализации расширенной логики диалплан, GUI и даже более развитый AEL (Asterisk Extension Language) могут разочаровать. Создавая все более сложные диалпланы, можно столкнуться с трудностями в следующих вопросах:
• Условные циклы и переходы по условию.
• Переменные.
• Сложные структуры данных.
• Интеграция с базой данных/LDAP.
• Использование библиотек сторонних производителей.
• Обмен и распространение функциональности VoIP.
• Расширение конфигурационных языков.
• Плохая обработка ошибок.
• Плохая обработка даты и времени.
• Сопоставление с шаблонами.
• Единообразие использования.
• Организация исходного кода.
Многие решают эти проблемы, реализуя расширенную логику во внешних программах на таких языках программирования, как Perl и PHP, и соединяясь с Asterisk через AMI и AGI. К сожалению, обеспечивая желаемую мощь, эти решения не всегда упрощают жизнь разработчика. Наоборот, они зачастую еще более усложняют процесс разработки. Используя существующие технологии в Asterisk, но имея целью обеспечение мощи и простоты, Adhearsion предлагает новый подход.
Разработка в Asterisk с использованием Adhearsion
Adhearsion - это инфраструктура с открытым исходным кодом (распространяемая по лицензии LGPL), которая разработана с целью улучшения реализации решений Asterisk. Она располагается поверх системы Asterisk, обрабатывая части или весь диалплан, и обеспечивает несколько уникальных способов управления доступом к Asterisk посредством ряда улучшенных интерфейсов. Adhearsion выполняется в отдельном процессе-демоне и интегрируется через уже представленные выше интерфейсы Gateway (AGI) и Manager (AMI), поэтому конфигурирование контекста на ее использование заключается просто в добавлении нескольких строк в диалплан или пользователя в файл manager.conf.
Adhearsion преимущественно использует высокодинамичный объектно-ориентированный язык программирования Ruby, но может поддерживать другие языки, такие как С или Java. В мире VoIP многие вещи существуют как концептуальные объекты, то есть применение объектно-ориентированного программирования вполне логично. У тех, кто хорошо знаком с Python, Perl или другими языками сценариев, не должно возникнуть проблем с Ruby. Для тех, кто не работал до этого с языками сценариев, Ruby - замечательное начало.
Установка Adhearsion
Программное обеспечение Ruby, как правило, устанавливается с помощью диспетчера пакетов (аналогичного диспетчерам пакетов Linux, но созданного специально для платформы Ruby). Adhearsion входит в стандарт RubyGems, поэтому, если установлены Ruby и RubyGems, вы находитесь на расстоянии одной команды от установки Adhearsion.
Установка Ruby/RubyGems в AsteriskNOW
AsteriskNOW стандартно поставляется с Ruby, но без RubyGems (по причинам поддержки). К счастью, RubyGems можно без труда установить из коллекции Ruby rPath, используя следующую команду:
conary update rubygems=ruby.rpath.org@rpl:devel source /etc/profile
Установка Ruby/RubyGems в Linux
Диспетчеры пакетов многих дистрибутивов Linux содержат пакет Ruby, хотя в некоторых до сих пор нет RubyGems. В предпочтительном приложении управления разработкой и сопровождением ПО своего дистрибутива установите Ruby 1.8.5 или более позднюю версию и RubyGems, если он доступен. Если RubyGems недоступен в CentOS, Ruby можно установить, введя следующее: yum install ruby
Далее необходим RubyGems. Чтобы получить его, перейдите в /usr/ src/ и введите следующее:
wget http://rubyforge.Org/frs/download.php/20585/rubygems-0.9.3.tgz tar zxvf rubygems-0.9.3.tgz cd rubygems-0.9.3 ruby setup.rb
Установка Ruby/RubyGems в Mac OS X
Фактически Ruby поставляется с OS X, но понадобится обновить его и установить RubyGems с MacPorts, диспетчера пакетов OS X. Если
MacPorts установлен (доступен на