Установка asterisk-pbx

advertisement
Установка asterisk-pbx.
При установке и компиляции никаких проблем не было. Выкачал с CVS:
# cd /usr/src
# export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
# cvs login- the password is anoncvs.
# cvs checkout asterisk
(zaptel libpri не стал выкачивать, так как нужны пока только H323-SIP-IAX2.
Куплю карточку дигиум, буду пересобирать)
Распаковал, отредактировал Makefile, указал нужный мне INSTALL_PREFIX (весь
софт стараюсь ставить в отдельный путь, хотя это и в нарушение традиций юникс.
Зато удобно потом по серверам разносить. Потом возможно приедтся сделать
export LD_LIBRARY_PATH=/path/to/libs или добавить путь в /etc/ld.so.conf).
# make
Не спешу делать make install, так как решил собрать h323 модуль к астериску. Для
этого понадобились pwlib и h323 с http://www.openh323.org
Много софта завязанного на pwlib/openh323 почему-то ищут их в ~/pwlib и
~/openh323 либо в ../pwlib и ../openh323, поэтому лучше их распаковывть в
домашней директории.
Нужно перейти в директорию channels/h323 и отредактировать Makefile и указать
правильные пути. Далее запустить make. Все должно собраться. После компиляции
модуля h323 можно вернуться в корневую директорию asterisk и запустить make
install. Он дособирает модуль h323 и перепишет все в INSTALL_PREFIX.
(Потом выяснилось, что нужно точно выбрать версии asterisk и pwlib/openh323,
иначе будут проблемы. Например, иногда астериск вылетает с segmentation fault.)
Касательно asterisk + h323 можно найти тут: http://www.voip-info.org/wikiAsterisk+H323+channels. Еще полезно почитать файл README в channels/h323.
Также версия 0.1.0 модуля h323 поддерживает только IP bases authentication, т.е.
H235 security tokens не умеет. Надо посмотреть h323 модуль от
http://www.inaccessnetworks.com/projects/asterisk-oh323, может он будет более
зрелый.
Ну вот и все, Asterisk установлен.
Теперь можно заинтсталить примеры конфигурации коммандой make samples.
После этого в etc/asterisk появятся конфиги к модулям. (make samples почему-то не
копирует channels/h323/h323.conf.sample в etc/asterisk, надо руками)
Конфигурация
Так как были установлены демо конфиги, можно начинать шоу. При просмотре
файла extensions.conf можно увидеть demo контекст с номером 500. Поэтому
нужно только разрешить входящие звонки с h323/sip/iax и направить их в контекст
demo. В двух словах о каналах, контекстах и экстеншинах. В астериск каждый
пользователь/гейтвей должне быть описан в файле того канала, с которого он
приходит/на который уходит. Например, все что касается SIP протокола, включая
общие настройки типа порта и bind интерфейса, контекста по умолчанию, и
заканчивая юзерами и гейтвеями подключаемыми по SIP, описываются в sip.conf.
Далее в описании юзера/гейтвея нужно указать контекст, в который попадает
звонок, приходящий от этого пользователя. Если контекст не указан, срабатывает
defult context из раздела global. Контекст – это секция из файла extansions.conf, в
котором указывается на какие номера может звонить данный пользователь.
Контексты можно включать друг в друга. В контекстах указываются екстеншины,
т.е. куда кто звонит что что при этом делать. А делать можно много чего (вот
например встроенные возможности: http://www.voip-info.org/wiki-Asterisk++documentation+of+application+commands)
Все, теперь натравливаем любой SIP телефон на машину с астеристкм и набираем
номер 500. Сюрприз, вы набираете 1 и попадаете прямо в контору Digium, и вам
говорят “hello?” :)))
А теперь можно полазить по файлам sip.conf и extensions.conf и понять почему так
получилось.
Следующим шагом будет звонок с IAX телефона на SIP телефон и обратно. Грабли
– некторые iax телефоны используют по умолчанию IAX (порт 5036), а не IAX2
(порт 4569). Может понадобиться в настройках сервера указать порт
(192.168.0.6:4569). В качестве SIP телефона использовал FreeWorldDialup X-Lite
Добавляем в iax.conf:
[maxwiax]
type=friend
host=dynamic
username=maxwiax
secret=maxwiax
context=maxwiax
defaultip=192.168.0.222
и в sip.conf:
[maxwsip]
type=friend
defaultip=192.168.0.222
username=maxwsip
secret=maxwsip
host=dynamic
context=maxwsip
и в extensions.conf:
[maxwiax]
exten => 001,1,Dial(SIP/maxwsip)
[maxwsip]
exten => 002,1,Dial(IAX2/maxwiax)
И теперь свободно звоним с одного телефона на другой.
Идем дальше – VoiceMailbox.
Настройка VoiceMailbox
(http://www.voip-info.org/wiki-Asterisk+VoiceMail)
В папке исходников asterisk/contrib/scripts есть перловый скрипт addmailbox, если
что, его надо подправить на реальные пути где asterisk уже установленный стоит.
Enter Voicemail Context of the mailbox you are creating.
The context is the value between the square brackets in
the voicemail.conf file.
(DEFAULT: default)
Voicemail Context:
Enter the Mailbox number of the voicemail box you are creating.
Mailbox Number: 001
Creating Voicemail directory...
Creating INBOX...
Creating Default greetings...
Complete.
[max@navigator scripts]$
Enter Voicemail Context of the mailbox you are creating.
The context is the value between the square brackets in
the voicemail.conf file.
(DEFAULT: default)
Voicemail Context:
Enter the Mailbox number of the voicemail box you are creating.
Mailbox Number: 002
Creating Voicemail directory...
Creating INBOX...
Creating Default greetings...
Complete.
[max@navigator scripts]$
Скрипт создал в папке var/spool/asterisk/voicemail/default две папки 001 и 002. Далее
ящики надо описать в voicemail.conf . Находим контекст [default]:
[default]
001 => 1234,Max,max@localhost
002 => 7890,Root, root@localhost
1234 и 7890 это пароли на ящики.
Модифицируем файл extensions.conf чтобы абоненты могли проверять почту:
[maxwiax]
exten => 001,1,Ringing
exten => 001,2,Dial(SIP/maxwsip,2)
exten => 001,3,Voicemail(u001)
exten => 0010,1,VoiceMailMain(s001)
[maxwsip]
exten => 002,1,Ringing
exten => 002,2,Dial(IAX2/maxwiax,2)
exten => 002,3,Voicemail(u002@default)
exten => 0020,1,VoiceMailMain(s002)
Пояснения. Параметр 2 в комманде Dial означает timeout после которого ижет
переход к приоритету 2. Буква 'u' перед номером ящика означает проиграть
сообщение “User unavailable”. Буква 's' в приложении VoiceMailMain означает не
спрашивать пароль. Если просто указать
exten => 0020,1,VoiceMailMain
тогда система спросит номер ящика и пароль к нему. А вообще по деталям
VoiceMail читать тут: http://www.voip-info.org/wiki-Asterisk+cmd+VoiceMail и тут
http://www.voip-info.org/wiki-Asterisk+cmd+VoiceMailMain.
Настройка auto-dial out
(http://www.voip-info.org/tiki-index.php?page=Asterisk+auto-dial+out)
Dial-out можно реализовать двумя способами. Первый заключается в подключении
на порт менеджера астериска 5038 телнетом (см. файл manager.conf), и вводе там
комманд вручноую типа:
Action: Login
Username: user
Secret: pass
Action: Originate
Channel: SIP/123testphone
Context: default
Exten: 7275551212
Priority: 1
Callerid: Asterisk Automatic Wardial
Action: Logoff
Втророй способ заключается в создании файла такого вот содержимого
Channel: SIP/maxwsip
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: maxwsip
Extension: 002
Далее этот файл нужно скопировать в в каталог var/spool/asterisk/outgoing. Только
нельза сразу редактировать файл с данном каталоге, его на пол пути подцепит
астериск и начнет отрабатывать. Как только я скопировал файл в очередь,
зазвонил SIP телефон, я поднял трубку, услышал длинные гудки, зазвонил IAX
телефон, я поднял на нем трубку и таков вот образом астериск соединил два
звонка.
############
имя пользователя в iax телефоне должно совпадать с названием секции в iax.conf
[iaxserg] - секция
в телефоне имя юзера должно совпадать : iaxserg
Download