Asterisk™: будущее телефонии Второе издание
Шрифт:
# Создаем список сотрудников из активных ссылок в базе данных. Employee.find(:all).each do |someone|
# Просто выбираем кого-то, чтобы позвонить ему по телефону. call someone.extension, someone.full_name
end
end
item "Weather Information" do
call "Hear the weather report" do play weather_report("Portland, OR")
end
item "Current: " + weather("Portland, OR")[:current][:temp]
end
item "System Uptime: " + 'uptime' Список item (элемент) отображается двумя способами. Если дается только строка текста (String), Micromenus формирует лишь текстовый элемент. Если аргументы содержат блок do/end вложенной информации, этот текст становится ссылкой на подстраницу, которая формирует визуальное представление этого вложенного содержимого. Элемент call (вызов) также имеет два варианта использования, каждый из них формирует ссылку, которая при выборе инициирует вызов. Когда call получает блок do/end,
• Micromenus поддерживает отправку изображений. Если запрашивающий телефон не поддерживает изображения, в ответе они не будут упоминаться.
• Все помощники Adhearsion работают и здесь. В данном примере использовался помощник сводки погоды.
• Вспомогательная инфраструктура Micromenus может использовать интеграцию Adhearsion с базой данных.
• Ruby может выполнять команду, заключенную в открывающие кавычки, и возвращать результат как строку (String). В нашем случае возвращается время безотказной работы (uptime).
Конечно, этот пример предполагает, что вы сконфигурировали интеграцию своего приложения с базой данных соответствующим образом и имеете класс Employee, соответствующий таблице со столбцами extension (расширение) и full_name (полное имя).
Поскольку Micromenus просто формирует визуальное представление различных ответов, поступающих по HTTP, обычный веб-броузер тоже может прислать запрос на сервер Micromenus. Для таких более высокотехнологичных конечных точек Micromenus формирует красивый интерфейс с загрузкой Ajax, эффектами DHTML и окнами, которые можно перетаскивать.
Micromenus - это еще одна возможность сделать ваши Adhearsion-при- ложения для VoIP более надежными.
Интеграция с веб-приложением
Хотя Adhearsion конструктивно может интегрироваться с практически любым приложением, включая PHP или сервлеты Java, Ruby на платформе Rails является особенно мощным партнером. Rails - среда разработки веб-приложений, широко обсуждаемая в прессе в последнее время, причем абсолютно заслуженно. Ее разработчики используют весь потенциал Ruby, демонстрируя, как метапрограммирование действительно избавляет разработчика от ненужной работы. Поразительная ясность кода Rails и использование принципа Don't Repeat Yourself (Не повторяйся), или DRY, вдохновили дизайнеров на создание Adhearsion в том виде, в каком она существует сейчас. Начиная с версии 0.8.0, каталог приложений Adhearsion располагается поверх существующего Rails-приложения, совместное использование данных происходит автоматически. Если требуется разработать сложный веб-интерфейс для функциональности VoIP, обратите внимание на этот сногсшибательный дуэт.
Использование Java
Весь мир пришел в изумление, когда Sun объявила о приеме на работу двух основных специалистов проекта по разработке интерпретатора JRuby Чарльза Наттера (Charles Nutter) и Томаса Энебо (Thomas Enebo) в сентябре 2006 года. JRuby - это интерпретатор Ruby, написанный не на С, а на Java. Поскольку JRuby может компилировать части приложения на Ruby в байт-код Java, JRuby фактически превосходит С-реализа- цию Ruby 1.8 по многим параметрам и обещает полностью обойти последнюю в ближайшем будущем.
Приложение на Ruby, выполняемое в JRuby, имеет преимущество использования не только библиотек Ruby, но и любых библиотек Java. Выполнение Adhearsion в JRuby обеспечивает потрясающий ассортимент библиотек Java сторонних производителей для написания диал- плана офисной АТС. Если окружение вашей компании требует тесной интеграции с другими технологиями Java, внедрение Adhearsion в стек J2EE может предложить необходимую гибкость.
Дополнительная информация
Больше информации о быстро развивающемся сообществе разработчиков Adhearsion, включая полные разборы примеров по шагам, можно найти на официальном веб-сайте Adhearsion по адресуhttp://adhearsion.com, в официальном блоге, посвященном Adhearsion, по адресуhttp://blog. adhearsion.com, на веб-сайте консалтинговой компании-учредителя Adhearsion по адресуhttp://codemecca.com. За помощью в изучении Ruby обращайтесь на сайтhttp://jicksta.com.
11
Инфраструктура Asterisk GUI
..Я конструировал маяк, в то время как все остальные строили корабли.
– Чарльз Саймик
В данной главе представлены компоненты, которые
составляют графический пользовательский интерфейс (GUI) и помогают работать с Asterisk. Для тех, кто не использует дистрибутив AsteriskNOW, здесь приводится установка веб-сервера и компонентов GUI. Показано, как настраивать GUI в соответствии со своими задачами. Также предоставлена техническая информация, чтобы разработчики, желающие создать собственный GUI или приложение, могли использовать веб-сервер и компоненты GUI. Мы выражаем благодарность сотрудникам Digium, помогавшим писать эту главу, и особое спасибо за примеры кода, которые они разработали и протестировали.Зачем нужен GUI для Asterisk
Asterisk всегда была телефонной системой для смелых. Раньше от нас требовались недюжинные усилия и больше чем просто упорство, чтобы заставить Asterisk выполнять свои распоряжения. Те, кто в своем стремлении освоить ее принимался за конфигурационные файлы и боролся за свои звонки, были вознаграждены, получив мощную и гибкую систему телефонной связи (а также пользующийся большим спросом набор навыков). Однако массовый потребительский рынок не был и до сих пор не готов к написанию сценариев для обработки добавочных номеров, управлению равноправными участниками сети и решению других задач, составляющих суть администрирования Asterisk.
Еще с самых ранних времен, до версии 1.0, люди пытаются приручить могучую систему Asterisk с помощью генераторов конфигурационных файлов, связанных с базами данных и управляемых посредством различных графических пользовательских интерфейсов (Graphical User Interfaces, GUI). Самым успешным удалось создать приложение, основанное на Asterisk, но ни один из них не обеспечил полной гибкости, которую предлагает самостоятельная среда для написания сценариев. После замены цифрового хокку диалплана на ограниченный список опций полученная система превратилась из собственно Asterisk в систему, основанную на Asterisk. Неплохо, но не достаточно [107] . Чтобы GUI был именно GUI Asterisk, в нем должны быть сохранены создаваемые вручную конфигурационные файлы, которые являются лингва-франка Asterisk испокон веков. Он должен предоставлять простые графические средства конфигурации без оказания воздействия на базовое программное обеспечение Asterisk или жесткой фиксации решений, которые должны оставаться открытыми для конечного пользователя. Также он должен обеспечивать расширенную функциональность, не загружая компьютер и не захватывая ценные ресурсы, необходимые для выполнения основной задачи - обработки вызовов.
107
Кстати, два автора данной книги однажды попытались написать идеальный GUI Asterisk. К счастью для вас, они отказались от этого проекта и занялись документацией Asterisk!
Одновременно с выходом версии Asterisk 1.4 Digium начала разработку проекта Asterisk GUI. Изначально GUI задумывался как компонент встроенного устройства Asterisk от Digium. Устройство, продаваемое и как Asterisk Appliance Developers Kit (AADK - комплект для разработчиков устройств Asterisk), и как самостоятельная конфигурация, представляет собой небольшой полупроводниковый компьютер с необязательными аналоговыми (и в перспективе цифровыми) интерфейсами. GUI был создан с использованием гибкой и расширяемой инфраструктуры, которая переносит максимум задач по отображению и логику проверки достоверности на компьютер клиента. Также была учтена необходимость сохранения возможности создания конфигурационных файлов вручную, но при этом предоставлены автоматизированные средства их редактирования. Созданная в результате инфраструктура получила название AJAM (обыгрывается название популярной технологии Web 2.0 Ajax), что является аббревиатурой от Asynchronous JavaScript and Asterisk Manager (Асинхронный диспетчер JavaScript и Asterisk). Основной AJAM-код, наборы поддерживающих AJAM веб-страниц и расширение диспетчера Asterisk - все вместе, взаимодействуя, формируют инфраструктуру Asterisk GUI.
Что такое GUI
Asterisk GUI - это интерфейс, который поставляется с дистрибутивом AsteriskNOW или может быть добавлен в существующую установку Asterisk. Стандартный интерфейс ориентирован на пользователя, желающего применять Asterisk как офисную АТС для небольшого предприятия с довольно типовыми требованиями к системе телефонной связи. Это самое простое, что можно сделать с помощью AJAM; рассматривайте его как бета-интерфейс, который, как можно ожидать, будет развиваться согласно желаниям сообщества. Его появление вызвало большое воодушевление в сообществе разработчиков Asterisk, потому что лежащие в основе GUI технологии поднимают планку возможностей интерфейса офисной АТС. Он также позволяет создавать пользовательские интерфейсы, нацеленные на собственные уникальные требования.