Вход/Регистрация
Asterisk™: будущее телефонии Второе издание
вернуться

Меггелен Джим Ван

Шрифт:

sudo port install ruby rb-rubygems

Также может понадобиться добавить /opt/local/bin в переменную PATH в/etc/profile.

Ruby/RubyGems в Windows

Для Windows существует замечательная программа установки «одним щелчком». Этот инсталлятор за несколько минут автоматически установит Ruby, RubyGems и несколько других обычно используемых пакетов. Инсталлятор можно скачать по адресуhttp://rubyforge.org/ projects/rubyinstaller.

Установка Adhearsion из RubyGems

Выполнив для своей системы все представленные выше инструкции и получив Ruby и RubyGems, установите Adhearsion, используя следующую команду:

gem install adhearsion

Если обнаружены какие-либо зависимости, вероятно, необходимо разрешить их установку, чтобы обеспечить нормальную работу Adhearsion.

Создание нового проекта Adhearsion

После того как Adhearsion установлена, можно приступать к созданию и запуску нового проекта Adhearsion с использованием новой команды ahn, утилиты командной строки, которая выполняет в Adhearsion практически все.

Вот пример команды для создания нового проекта Adhearsion:

ahn create ~/новыйпроект При этом в заданной папке создается подпапка, содержащая папку и иерархию файлов, необходимые для работы Adhearsion. У вас сразу же должно получиться запустить новое приложение по команде

ahn start ~/новыйпроект Чтобы ознакомиться с системой Adhearsion, просмотрите папки приложения и прочитайте сопутствующую документацию.

Написание диалплана в Adhearsion

Как правило, новички начинают с использования возможности написания диалпланов в Adhearsion. Поскольку Ruby допускает тонкую настройку самого языка во время выполнения, одна из функций, выполняемых Adhearsion, - реализация эстетических изменений, которые призваны упростить процесс разработки диалпланов.

Ниже приведено приложение Hello World (Здравствуй, мир), написанное в Adhearsion:

мой_первый_контекст { play "hello-world"

}

Это абсолютно допустимый синтаксис Ruby, но не все приложения Ruby так выглядят. В Adhearsion очень удобно объявлять имена контекстов, поскольку сценарий диалплана здесь обрабатывается особым образом. Ваши сценарии будут располагаться в корневой папке вновь созданного приложения Adhearsion.

Когда вызовы поступают в Asterisk и потом в Adhearsion, Adhearsion вызывает собственную версию имени контекста, из которого происходит AGI-запрос. Таким образом, имя контекста в файле extensions.conf должно гарантированно быть таким же, чтобы обеспечить соответствующее перенаправление вызовов в Adhearsion.

Синтаксис направления вызовов в Adhearsion следующий:

[мой_первый_контекст]

exten => _.,1,AGI(agi://127.0.0.1)

Любой набранный шаблон фиксируется здесь и отправляется в Adhearsion через AGI для реализации инструкций по обработке вызова. Предоставленный здесь IP, конечно, должен быть заменен на IP, который обеспечит доступ к вашему серверу Adhearsion.

Теперь, имея базовое понимание того, как взаимодействуют Adhearsion и Asterisk, можно перейти к более реалистичному примеру диалплана в Adhearsion:

internal {

case extension when 10..99

dial SIP/extension when 6000..6020, 7000..7030

# Присоединяемся к конференции MeetMe с помощью join join extension

when _'21XX'

if Time.now.hour.between? 2, 10

dial SIP/"berlin-office"/extension[2..4] else speak "The German office is closed" end

when US_NUMBER

dial SIP/'us-trunk-out'/extension when /~\d{11,}$/ # Perl-подобное регулярное выражение

# Передаем все остальные длинные номера прямо в наш

# магистральный канал связи.

dial IAX/'intl-trunk-out'/extension else

play %w'sorry invalid extension please-try-again' end

Такой небольшой фрагмент кода реализует довольно многое. Даже имея ограниченные познания в Ruby или не зная его вовсе, вы поймете следующее:

• Переменная extension (которую Adhearsion создает для нас) используется в условном выражении.

• Набор номера от 10 до 99 направляет нас к равноправному участнику SIP с соответствующим числовым именем пользователя.

• Любой номер в диапазоне от 6000 до 6200 или от 7000 до 7030 направляется в конференцию MeetMe под тем же номером. Конечно, для этого требуется, чтобы номера данных конференций были сконфигурированы в meetme.conf.

• Опция 21XX' точно отвечает стилю шаблонов Asteris. Начало строки с символа подчеркивания в Adhearsion обеспечивает неявный вызов метода, который возвращает регулярное выражение Ruby. В Ruby-выражении case регулярные выражения могут использоваться в выражении when для выполнения сопоставления с шаблоном. Конечный результат должен быть очень хорошо знаком тем, кто имеет опыт написания extensions.conf.

  • Читать дальше
  • 1
  • ...
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: