вторник, 6 октября 2009 г.

Настройка Mango Office + Asterisk

Решили перейти на VOIP-провайдера Манго Офис. У данного провайдера есть 2 условия:

  • Использование протокола H323 
  • Использование кодека g729

Про реализацию данных условний я расскажу чуть позже(в Интернете куча информации на тему подключения g729 и h323 к Asterisk-у). Я прикрутил h323, но вот тут возникли проблемы - входящий звонки самопроизвольно отрубались через несколько минут. Тогда я решил отказаться от h323 и заменить его на ooh323(установка не сложная - можно собрать за несколько минут аддонами для астериска с официального сайта).  Но и тут обнаружились проблемы: Манго Офис при исходящем звонке требует авторизацию по pin-коду. А oooh323 никак не хотел использовать мой макрос для отправки кода. Поэтому, следуя по пути наименьшего сопротивления, я решил использовать оба модуля: для входящих звонков ooh323, а для исходящих h323.

debian:/etc/asterisk# netstat -lpn | grep asterisk | grep tcp
tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 3879/asterisk
tcp 0 0 0.0.0.0 :1720 0.0.0.0:* LISTEN 3879/asterisk
tcp 0 0 0.0.0.0 :1721 0.0.0.0:* LISTEN 3879/asterisk

Здесь видно, что h323 висит на 1721 порту, а ooh323 я повесил на 1720. Выложу примеры конфигурационных файлов, в боях с которыми были потрачено несколько дней

ooh323.conf
[general]
port=1720
bindaddr=your_ext_ip
faststart=yes
h245tunneling=no
callerid=asterisk
gatekeeper = DISABLE
context=office
disallow=all ;
allow=g729
allow=ulaw
allow=alaw
dtmfmode=h245alphanumeric

h323.conf

[general]
port = 1721
bindaddr = your_ext_ip

[prov]
type=peer
context=office
host=81.88.84.10
port=1720
disallow=all
allow=g729
allow=alaw
allow=ulaw

extensions.conf

[macro-bubble] ; максрос для отправки pin-кода
exten => s,1,Wait(3) ; wait 1 second
exten => s,n,SendDTMF(your_pin_code); 
exten => s,n,Wait(1) ; 
exten => s,n,SendDTMF(${NUMBER}#); 
exten => s,n,System(mkdir /home/shares/asterisk/out/${CALLER}); 
exten => s,n,MixMonitor(/home/shares/asterisk/out/${CALLER}/${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}.wav)

[office]

exten => 100,1,Answer
exten => 100,2,Agi(auth.agi)
exten => 100,3,Hangup
exten => _XXXXXXX,1,Set(_NUMBER=${EXTEN})
exten => _XXXXXXX,2,Set(_CALLER=${CALLERID(num)})
exten => _XXXXXXX,3,Dial(H323/9999999@prov,,M(bubble),mtT)

Теперь при звонке на внешние номера будет автоматичкески отправляться pin-код. Правда, на его отправку уходит около 7-10 секунд, что очень плохо.

В панели управления вашей учетной записи для Mango Office нужно указать внешний ip-адрес, на который будут перенаправляться входящие звонки, а также номер. В данном примере я использовал номер 100. При входящем звонке будет срабатывать скрипт auth.agi, функционал которого был описан в этой статье про биллинг.


А вот тут можно почитать интересные цитаты, чтобы расслабиться на досуге.

2 комментария:

Stanislav комментирует...

Гыгыгыгы!

Вот это изврат.
Еще раз убедился, что Mango - отстой.
Сам раньше пользовался. Доходило до идиотизма. Они мне присылают некорректный H323-пакет, от которого Asterisk падает. Потом были случаи, когда сигнализация проходит, а голос - нет. Долго бодался с их саппортом, сидел в глубокой WireShark-отладке. Месяц все работало нормально, потом "бац" - и ни с того, ни с сего "отвалилось". Помаялся-помаялся, ушел на "MCN". Ни разу не пожалел.

Андрей Фомин комментирует...

Насколько я знаю, MangoOffice уже давно поддерживает SIP и поддержку протокола h323 не дорабатывает.

Техподдержка у них действительно никакая, т. к. нет взаимодействия инженера с программистами, и документация на ПО хромает на оба колена. А функционал ПО богатейший.