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

в 10:31, , рубрики: asterisk, Avaya, h323, ip-телефония, телефония, метки: , ,

Подключаем 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 ну и гугл, конечно.

Автор: snorck

Источник

Поделиться

* - обязательные к заполнению поля