Asterisk™: будущее телефонии Второе издание
Шрифт:
# cd /var/lib/asterisk/keys
# /usr/src/asterisk/contrib/scripts/astgenkey -n toronto Полученные в результате ключи, toronto.pub и toronto.key, будут помещены в папку /var/lib/asterisk/keys/. Файл toronto.pub - это открытый ключ, который должен быть отправлен веб-серверу, чтобы он был доступен всем участникам, с которым вы желаете установить одноранговую связь. При установлении одноранговой связи вы можете передать равноправным участникам открытый ключ, доступный по протоколу HTTP, который они могут поместить в свои папки /var/lib/ asterisk/keys/.
${IPADDR}
IP-адрес для соединения.
После загрузки ключей
*CLI> module reload res_crypto.so
– - Reloading module 'res_crypto.so' (Cryptographic Digital Signatures)
– - Loaded PRIVATE key 'toronto'
– - Loaded PUBLIC key 'toronto'
*CLI> module reload pbx_dundi.so
– - Reloading module 'pbx_dundi.so' (Distributed Universal Number Discovery (DUNDi))
== Parsing '/etc/asterisk/dundi.conf': Found Затем в файле iax.conf создаем пользователя dundi, чтобы обеспечить возможность соединения с вашей системой Asterisk. После аутентификации вызова запрашиваемый добавочный номер передается в контекст dundi-local файла extensions.conf, где выполняется его обработка.
Обеспечение возможности удаленных соединений
Вот описание канала типа user для пользователя dundi:
[dundi] type=user
dbsecret=dundi/secret
context=dundi-local
disallow=all
allow=ulaw
allow=g726
Вместо использования статического пароля Asterisk повторно создает пароль каждые 3600 с (1 ч). Это значение сохраняется в /dundi/secret базы данных Asterisk и предоставляется посредством переменной $ {SECRET}, описанной в отображающемся контексте в файле dundi.conf. Увидеть текущие ключи для всех равноправных участников, включая свои локальные открытый и закрытый ключи, можно, выполнив команду show keys в интерфейсе командной строки Asterisk.
Запись context=dundi-local определяет контекст в extensions.conf, в который направляются прошедшие авторизацию вызывающие абоненты. Оттуда мы можем обрабатывать звонок, точно так же как делали бы это в диалплане любого другого входящего соединений.
Конфигурация диалплана
Файл extensions.conf определяет, информацию о каких номерах вы предоставляете и что делаете с вызовами, адресованными им. Контекст dundi-local выполняет две задачи:
• Управляет номерами, информацию о которых мы предоставляем. Они указаны в отображающемся контексте dundi в файле dundi.conf.
• Определяет то, что должно быть сделано с вызовом, указанным в описании пользователя dundi в iax.conf.
Для предоставления информации о диапазонах номеров и управления входящими вызовами используется мощная возможность сопоставления с шаблонами, доступная в диалплане. В следующем диалплане предоставляется информация только о номере +1-416-555-1212, но так же просто можно применить сопоставление с шаблоном для предоставления информации о диапазоне номеров или добавочных номеров: [dundi-local]
exten => 14165551212,1,NoOp(dundi-local: Number advertisement and incoming)
exten => 14165551212,n,Answer
exten => 14165551212,n(call),Dial(SIP/1000)
exten => 14165551212,n,Voicemail(u1000)
exten => 14165551212,n,Hangup
exten => 14165551212,n(call)+101,Voicemail(b1000)
exten => 14165551212,n,Hangup
Альтернативные методы хранения голосовой почты
Обычный способ хранения голосовой почты Asterisk - простая запись сообщения в файл, размещаемый на локальном жестком диске в папке /var/spool/asterisk/voicemail. Этот метод хорош для простых офисных АТС, но в больших распределенных сетях или окружениях, в которых желательна более тесная интеграция с внешними приложениями, потребуются более сложные методы хранения.
Хранение голосовой почты на IMAP-сервере
Уже довольно долгое время телефонная отрасль обещает предоставить возможность хранения голосовых сообщений вместе с обычными сообщениями электронной почты. Это называется универсальной системой передачи и обработки сообщений (Unified Messaging), и хотя большинство офисных АТС сегодня предлагают такую систему в том или
Естественно, Asterisk отбрасывает все эти глупости и просто позволяет интегрировать ящик голосовой почты в среду IMAP. Хранение голосовой почты на IMAP-сервере обеспечивает несколько преимуществ. После прослушивания по телефону сообщение голосовой почты переводится в состояние read (прочитано) на IMAP-сервере. Это означает, что клиентское почтовое приложение также отметит это сообщение как прочитанное. Аналогичным образом, если сообщение прослушивается из клиентского почтового приложения, система голосовой почты отключает сигнал уведомления о наличии непрочитанного сообщения на всех телефонах, закрепленных за этим почтовым ящиком. Удаление сообщения в одном месте обеспечит его удаление везде. Таким образом, однажды удаленное сообщение действительно уничтожается. Такова универсальная система передачи и обработки сообщений, «священный грааль» интеграции голосовой и электронной почты, но Asterisk скромно предпочитает не акцентировать на этом особое внимание. Интеграция с IMAP по-прежнему является новой функциональностью, поэтому для ее активации необходимо кое-что добавить. Первым делом для работы с IMAP-сервером Asterisk необходимо установить IMAP- клиент. Подойдет практически любой IMAP-сервер (даже Exchange Server). Авторы лично протестировали поддержку голосовой почты по протоколу IMAP с IMAP-серверами Courier-IMAP и Dovecot. IMAP- сервер физически может располагаться на одном компьютере с установленной Asterisk или находиться в другой части земного шара. Чтобы иметь возможность доступа к IMAP-серверу, Asterisk требует наличия библиотеки IMAP-клиента. Эта библиотека является бесплатным IMAP-клиентом под именем c-client, созданным в Вашингтонском университете. Чтобы установить c-client, надо просто перейти в свою папку /usr/src и выполнить следующие команды:
# wget ftp://ftp.cac.washington.edu/mail/imap.tar.Z
Это обеспечит загрузку исходного кода. Извлеките его из архива следующим образом:
# tar zxvf imap.tar.Z
Обратите особое внимание на имя папки, создаваемой этой командой, поскольку оно, вероятно, изменится к тому времени, когда вы будете читать данную книгу. Пока книга готовилась к выходу, имя папки менялось четыре раза. Последним было /usr/src/imap-2006h.
Перейдите в созданную папку и выполните команду
# make lrh IP6=4
Это обеспечит компиляцию всего, что необходимо Asterisk для использования библиотек IMAP-клиента [133] .
Теперь необходимо повторно скомпилировать Asterisk с возможностями IMAP. Понадобится перейти в ту папку, в которой располагаются исходные файлы Asterisk (к примеру, /usr/src/asterisk), и выполнить следующую команду:
# /configure --with-imap=/usr/src/imap-2006h
Теперь необходимо повторно выполнить команду make menuconfig, чтобы включить IMAP-хранилище в компиляцию. В разделе Voicemail Build Options (Параметры создания голосовой почты) выберите параметр IMAP STORAGE (ХРАНИЛИЩЕ IMAP) и нажмите кнопку x, чтобы сохранить изменения и выйти. Теперь при компиляции Asterisk будет выполнена и сборка модуля IMAP. Очевидно, что следующий шаг - повторная компиляция и установка Asterisk. Для этого просто выполните в вашем терминале следующую команду:
133
Опция lrh указывает компилятору, что это система Linux Red Hat. Опция IP6=4 говорит о том, что мы не хотим выполнять компиляцию с поддержкой IPv6. Остальные опции можно найти в Makefile. Для систем RHEL 5 или CentOS 5 вместо lrh необходимо использовать lr5.
Сравните с клубной страницей IETF, которая гласит: «IETF - не организация со специальными атрибутами членства (никаких карточек, никаких взносов, никаких секретных рукопожатий :-)... Она открыта для всех, кому это интересно. Добро пожаловать в IETF». Вот это сообщество!