Перед тем как настраивать H.323 необходимо убедиться, что в станции Avaya присутствуют платы

  • C-LAN (CONTROL-LAN   TN799DP)  и 
  • IP MEDIA PROCESSOR      (TN2302AP). 
Узнать это можно следующим образом. Наберите команду в Avaya Site Administration

 

Command: list configuration all

Платы могут находиться в других слотах кабинета, могут отличаться от примера версиями, но присутствие их в станции - обязательно. Тесты показали, что наиболее устойчивую и адекватную работу с Avaya обеспечивает драйвер канала chan_h323. Т.к. в последние сборки включают, как правило, chain_ooh323, то для получения желаемого результата нужно собрать chan_h323 согласно инструкции

Будем считать, что с этой задачей Вы справились, и результат выглядит так

Перед тем как внести настройки в файл h323.conf, необходимо следующее

  1. IP адрес Asterisk
  2. Контекст Asterisk заданный по умолчанию. Его можно посмотреть средствами Web FreePbx в разделе General Settings -> (Для данного примера Default Context & Pri : from-internal)Правильнее, с точки зрения безопасности, выбирать контекст from-trunk и далее в него добавить то, что требуется для диалплана.
  3. Знать адрес платы C-LAN или настроить его.
(Примечание: В данном примере изначально предполагается, что Asterisk и Avaya находятся в одной сети /16 . IP адрес Asterisk 10.1.2.1 и IP адрес С-LAN Avaya 10.1.2.2)

 

Через Avaya Site Administration входим в настройки Avaya node-names ip.

Далее входим в настройки интерфейса C-LAN.
(Примечание: Номер слота 01C06 имеет значение только для данного примера см. выше команду List configuration all)

После того, как все посмотрели в Avaya (либо изменили), вносим изменения в файл /etc/asterisk/h323.conf

Файл h323.conf

; The NuFone Network's
; Open H.323 driver configuration
;
[general]
port = 1720
bindaddr = 10.1.2.1 ; this SHALL contain a single, valid IP address for this machine
disallow=all
allow=alaw ; see doc/rtp-packetization for framing options
dtmfmode=inband
gatekeeper = DISABLE
AcceptAnonymous = yes     ; Вы уверены что контролируете входящий Н.323 траффик?
context=from-internal           ; этот контекст справедлив только для прямого доступа к внутренним номерам и исходящим маршрутам.
; При этом Вы не сможете создавать правила для входящих DID's.
progress_alert = 8
h245Tunneling = yes
fastStart = yes

[avaya]
type=friend
context=from-internal
host=10.1.2.2
port=1720
disallow=all
allow=alaw
allow=ulaw
allow=g729
dtmfmode=inband
faststart=no
h245Tunneling = yes

Перезапускаем модуль h323 на Asterisk

*CLI> module unload chan_h323.so
== Unregistered channel type 'H323'
*CLI> module load chan_h323.so
== Parsing '/etc/asterisk/h323.conf': Found
== Creating H.323 Endpoint
== Setting default context to from-internal
== Registered channel type 'H323' (The NuFone Network's Open H.323 Channel Driver)
== H.323 listener started
Loaded chan_h323.so => (The NuFone Network's OpenH323 Channel Driver)

Таким образом, мы настроили канал h323 на Asterisk-е и можно приступить к настройке Avaya.
Для начала определимся с формами ip-codec-set и ip-network-region. Желательно использовать отличные от ранее используемых (ip-codec-set и ip-network-region), Во избежание неприятностей (т.е. не касаясь существующих настроек станции)
Итак …

В данной форме добавляем (изменяем) кодаки в соответствии с файлом h323.conf Можно использовать и существующие настройки формы ip-codec-set 2, если это не нарушает логику работы станции.
Изменяем настройки в форме ip-network-region на предмет используемых кодаков(Codec Set:2) и диапазона UDP в соответствии с /etc/asterisk/rtp.conf

Меняем также назначения на 3-й странице этой же формы, разрешая использовать уже существующие настройки для других network-region

Создаем новый IP trunk для станции Avaya . Номер trunk-group выбираете любой несуществующий в Вашей станции. Для примера взят номер 20.

Далее создаем новую сигнальную группу с номером 20. Если у вас уже существует группа с таким номером – создайте с другим.

Наиболее важными параметрами в данной форме (по отношению к Asterisk) являются (косвенно)

Group Type: h.323
Near-end Node Name: clan - IP Avaya - h323.conf [avaya] host=10.1.2.2
Near-end Listen Port: 1720 - Сигнальный порт - h323.conf [global] port=1720
Far-end Node Name: asterisk - IP Asterisk - h323.conf [global] bindaddr=10.1.2.1
Far-end Listen Port: 1720 - Сигнальный порт – h323.conf [avaya] port=1720
Far-end Network Region: 2 - используемые кодаки Avaya--Asterisk

После завершения вышеизложенных настроек, h323 транк Asterisk - Avaya должен работать.
Проверить работу транка со стороны avaya можно следующим образом.

Следует отметить, что выполненных настроек недостаточно для того чтобы выполнить вызов в ту или иную сторону. Поэтому, для примера настроим (для начала) исходящие звонки во внешний мир через SIP провайдера. Будем использовать spinet в качестве примера.
Для этого, средствами Web интерфейса Asterisk в разделе Trunks добавим SIP транк. В настройках транка указываем следующее…

Outbound Caller ID: Ваш ИД у провайдера
Dial Rules : X.
Trunk Name : sipnet.ru

PEER Details:
host=sipnet.ru
fromdomain=sipnet.ru
username=test
fromuser=test
secret=testsecret
type=peer
disallow=all
allow=alaw&ulaw&g729
allowguest=no
qualify=yes
callerid= Ваш ИД у провайдера
videosupport=no
context=ext-did -- либо from-trunk
nat=no
insecure=port,invite
dtmfmode=inband
srvlookup=no
canreinvite=update

Далее добавим исходящий маршрут в разделе OutBound Routes следующего содержания
Dial Patterns X. – разрешаем всё т.к. в avaya свои правила набора
Trunk Sequence : выбираем SIP/sipnet.ru
Добавленный исходящий маршрут будет использовать контекст по умолчанию from-internal, который мы указали в секции [avaya] файла h323.conf

Для верности, убедимся в наличии рабочего пира.
*CLI> sip show peers

Name/username Host Dyn Nat ACL Port Status 

sipnet.ru/Ваш ИД 212.53.40.40 5060 OK (3 ms)

 
Теперь надо научить станцию avaya посылать звонки в этот транк.
Для этого надо создать route-pattern, который направит набор в SIP транк, а также внести некоторые изменения в ars analysis.
Следует отметить, что настройки для набора номера в avaya можно выполнить как минимум двумя способами – сложно и просто (универсально и нет). Сделаем настройку совсем простую и только для абонентов сети sipnet, не претендуя на универсальность.
Как правило выход на внешнюю линию набирают цифру 9.
В нашем случае мы будем звонить абонентам spinet, набирая 98888 и далее номер абонента, и символ завершения - #. Т.е. для звонка в службу поддержки 988882009991#
Для этого меняем маршрут в route-pattern 27
(route-pattern номер 27 в том случае если он не занят – иначе укажите свой номер)

Направляем вызов в транк 20, удаляя при этом 4-е цифры 8888 - остальное уйдет в набор.
Вносим изменения в ars analysis

Разрешаем набрать подряд четыре цифры 8888
Снимите все ограничения со своего текущего COR (CLASS OF RESTRICTION) чтобы не испортить себе эксперимент.
Теперь можно попробовать набрать 988882009991#
Таким образом, мы сможем позвонить с Avaya на Asterisk и c Asterisk на SIP.
Для того чтобы пример был вполне законченным решением, надо научить абонентов Asterisk звонить на внутренние номера в станции и стацию научить звонить на внутренние номера asterisk.

Создаем номер через Web Asterisk, для любого телефона или софтфона. В данном случае, его тип SIP или IAX2 – неважно. Номер надо создать такой, чтобы он был применим к Вашим настройкам в dialplan analysis (в станции avaya). Например, на цифру 7. Пусть это будет 7070. Контекст, для номера 7070 создаем свой. В стиле Avaya-Asterisk контекст будет выглядеть COR-Asterisk.
Вносим изменения в диалплан станции avaya.Разрешаем набор 4-х цифр начинающихся с 7-ки.

Вносим изменения в aar analysis. Разрешаем всем цифрам с 7-ки (по 4-е) уходить в транк 20 по маршруту route-pattern 28

Теперь мы можем попробовать позвонить со станции avaya абоненту asterisk с номером 7070.

Для завершения наших настроек, создаем для проверки диалплан в файле extensions_custom.conf
Заранее предполагаем, что местные номера в Вашей станции находятся в диапазоне от 1-3 длинною в 4 знака. Тогда это будет выглядеть следующим образом

[COR-Asterisk]
exten => _[1-3]XXX,1,Macro(user-callerid)
exten => _[1-3]XXX,n,Dial(H323/${EXTEN}@Avaya,300,Tt)

Вносим изменения в файл и выполняем команду
*CLI> dialplan reload

Теперь можно попробовать позвонить с номера в Asterisk на местный номер станции Avaya.
Примечание:Если у Вас asterisk соединен с внешним миром напрямую, то закройте доступ из внешнего мира по (протоколу UDP) на порты 1720,1721.