Re: asterisk b2bua patch
Нашел время посмотреть сие чудо.
Астериск не патчится.
Все направляется в DeadAgi, где берутся agi значения, формируется access-request и посылается через радиус в биллинг. Если он проходит, делается accounting-start, вызывается комманда Dial с определенными в config.pl провайдерами и приоритетами. После звонка шлется стоповая запись. Т.е. это "молчаливый" ААА.
Чтобы сделать prepaid cards и др. IVR нужно дорабатывать скрипт.
В config.pl конфигурируются провадеры и rewrite rules на каждого провадера, что мне понравилось (регулярные выражения).
Можно сказать, что это классический пример выноса всего в AGI скрипт, что мне нравится! Полноценный язык программирования со всеми либами это тебе не урезаный tcl/tk на циске!
Минусы данного клиента - аутентификация по номерам только.
Это надо либо callerid жестко привязывать (чтобы от callerid spoofing защититься), либо давать всем один логин/пасс и заставлять в кач-ве callerid ставить PIN код. Нет атрибутов h323-incoming-address и h323-outgoing-address, на основании которых многие биллинги билят по IP адресу, а их получить можно не иначе как патчить asterisk.
Как раз по этому пути пошли Radius скрипты Porta One billing - http://www.voip-info.org/wiki-PortaOne+Radius+auth.
Они используют SIPgetheader() - позволяет получать части из заголовка SIP пакета, такие как IP адрес.
http://www.voip-info.org/wiki-Asterisk+cmd+SIPGetHeader.
Это позволит авторизовывать по IP на входящих звонках.
Однако, главная проблема - сделать так, чтобы астериск регистрировал пользователей через radius, т.е. чтобы не приходилось конфигурировать пиры и юзеров в sip.conf, а потом дублировать все в биллинге. Все должно быть только в биллинге.
Поэтому нужно вплотную изучать asterisk real time configuration from database, и писать на основе этого свой биллинг :(
Либо влезать в процедуру авторизации SIP register/invite, и если в кофниге указано use_radius=yes, вызывать внешний срипт register_radius_script/invite_radius_script с передачей всех нужных параметров.
:wacko:
|