Подключаем Asterisk к Avaya по протоколу H.323

от автора


С одной стороны нам понадобится сам asterisk.

Можно воспользоваться одним из готовых дистрибутивов таких как Trixbox, Elastix, AsteriskNow, но у меня не получилось добиться адекватной работы от модуля работы с h323 входящего в состав первых двух дистрибутивов( во всяком случае при настройке транков к avaya).

У кого тоже не получилось или просто интересно, прошу под кат.

Воспользуемся другим драйвером, а именно OpenH323 от NuFone, так как его нет ни в одном из готовых дистрибутивов, то будем мы его собирать из исходников, за одно и сам asterisk соберем.

Но для начала нам понадобиться ОС, под все наши «упражнения».
Я выбрал последнюю( на момент проведения данных действий) стабильную версию CentOS, а именно 5.8( спасибо centos.org и зеркалу от Яндекс).

Качаем — Запускаем — Ставим

Тут по желанию, ставить можно при помощи gui( тогда жмем далее — далее — да — далее — да — настраиваем сеть — далее — временная зона — рутовый пароль — можно по выбирать нужные дополнительные пакеты, но мы после установки воспользуемся yum, так что далее).

Наблюдаем процесс установки/идем пить чай/занимаемся другими делами.

После установки и перезагрузки однократно запустится setup, в котором надо настроить/отключить selinux и firewall.

Если момент запуска setup Вы проморгали — его можно самостоятельно запустить написав в терминале setup
Нам оттуда понадобится только пункт firewall configuration он запускает system-config-securitylevel-tui(можно его запустить вместо setup).

Там для ускорения процесса отключим firewall и selinux(настройка и того и другого темы для отдельных статей).

Все, можно подключаться к серверу по SSH и ставить asterisk с необходимыми дополнениями.

Установим необходимые пакеты, а именно

make
gcc-c++
kernel-devel
openssl-devel
expat-devel
gnutls-devel
flex
bison
ncurses-devel
libxml2-devel
sqlite-devel

yum install make gcc-c++ kernel-devel openssl-devel expat-devel gnutls-devel flex bison ncurses-devel libxml2-devel sqlite-devel -y 

Качаем необходимые библиотеки в директорию /root

Open H.323 v1.18.0
PWLib v1.10.0

cd /root wget http://www.voxgratia.org/releases/openh323-v1_18_0-src-tar.gz wget http://www.voxgratia.org/releases/pwlib-v1_10_0-src-tar.gz 

Переименовываем.

mv openh323-v1_18_0-src-tar.gz openh323-v1_18_0-src.tar.gz mv pwlib-v1_10_0-src-tar.gz pwlib-v1_10_0-src.tar.gz 

Распаковываем.

tar vfxz openh323-v1_18_0-src.tar.gz tar vfxz pwlib-v1_10_0-src.tar.gz 

И еще раз переименовываем.

mv pwlib_v1_10_0 pwlib mv openh323_v1_18_0 openh323 

Добавляем необходимые компилятору заголовки.

cp /usr/src/kernels/2.6.18-308.4.1.el5-i686/include/linux/compiler.h /usr/include/linux 

Компилируем библиотеки.

cd /root/pwlib ./configure make clean opt cd /root/openh323 ./configure make clean opt 

Копируем скомпилированные библиотеки вместе со ссылками в нужное место.

cp /root/openh323/lib/libh323_linux_x86_r* /lib cp /root/pwlib/lib/libpt_linux_x86_r* /lib 

Качаем исходники asterisk нужной нам версии, например 10.4 (или по старому счету 1.10.4).

cd /usr/src wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-10.4.0.tar.gz 

Распаковываем.

tar vfxz asterisk-10.4.0.tar.gz 

Заходим в директрию с исходниками и указываем необходимые пути.

cd asterisk-10.4.0 export OPENH323DIR=/root/openh323/ export PWLIBDIR=/root/pwlib/ export OPENH323_LIBDIR=/lib export PWLIB_LIBDIR=/lib 

и запускаем

./configure 

Если все прошло хорошо, то увидим выполненный в псевдографике логотип asterisk.
Можно запускать.

make menuselect 

Там channel drivers и в самом низу отмечаем chan_h323, нажимаем s чтобы сохраниться и выйти далее.

make make install make samples make config /sbin/chkconfig asterisk on 

Можно запустить asterisk.

/etc/init.d/asterisk start 

ИТОГО:

Работающий asterisk, с драйвером канала h.323 от NuFone.

Создаем транк группу на avaya:

add trunk-group next 

page 1

Group Type: isdn Carrier Medium: H.323 Service Type: public-ntwrk Member Assignment Method: auto Number of Members: 2 необходимое количество линий 

change node-names ip  asterisk X.X.X.X 

add signaling-group next 

page 1

Group Type: h.323 Trunk Group for Channel Selection: "номер транковой группы" Near-end Node Name: procr Near-end Listen Port: 1720 Far-end Node Name: asterisk Far-end Listen Port: 1720 

На этом настройка avaya пока закончена.

Переходим к asterisk.

cd /etc/asterisk/ 

В первую очередь нам понадобится h323.conf:

[general] port = 1720 bindaddr = X.X.X.X ; ip адресс астериска disallow=all allow=alaw dtmfmode=inband gatekeeper = DISABLE context=h323-in ; контекст для входящих звонков по данному каналу progress_setup = 8 progress_alert = 8  [avaya] ; контекст коннекта к avaya type=friend host=Y.Y.Y.Y ; ip адрес CM port=1720 diallow=all allow=alaw h245tunneling=yes 

Далее можно/нужно рестартануть потоки с обеих сторон.

asterisk:

asterisk -r module reload chan_h323.so 

avaya:

busyout trunk 15 busyout signaling-group 15  release signaling-group 15 release trunk 15 

проверяем

status trunk 15 

0015/001 T00022 in-service/idle no 

Для того, чтобы можно было использовать данный транк, необходимо внести изменения в extensions.conf:

[general]  static=yes writeprotect=no clearglobalvars=no  [globals] CONSOLE=Console/dsp IAXINFO=guest TRUNK=DAHDI/G2 TRUNKMSD=1  [default]  [h323-out] ; контекст исходящих на avaya  exten => _X.,1,Dial(H323/${EXTEN}@avaya) ; все исходящие в неизменном виде отправляем на avaya  [h323-in]  exten => _X.,1,Dial(SIP/${EXTEN}) ; все входящие по каналу h323 пытаемся передать на соответствующие sip номера в неизменном виде 

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

Приведу конфигурационный файл sip.conf

[general] bindport=5060 bindaddr=0.0.0.0 context=default allowguests=no  [99999] ; тестовый sip юзер type=friend secret=99999 host=dynamic context=h323-out ; использующий для исходящих звонков контекст h323-out из extensions.conf cid_number=00000 ; с вот таким интересным АОН 

Можно заняться совершением тестовых звонков
и проконтролировать со стороны asterisk, просто запустив его консоль:

asterisk -r 

А со стороны avaya

list trace tac #15 

PS: при подготовке статьи использовалась информация с asterisk.ru ну и гугл, конечно.

ссылка на оригинал статьи http://habrahabr.ru/post/197080/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *