Kamailio - переписать номер в формат E.164
Подскажите, как правильно переписать номер из формата принятого в РФ (8-, 810-, а также семизначный номер) в формат E.164?
При этом нужно, чтобы при перемаршрутизации во всех заголовках был номер уже в формате E.164, чтобы его потом корректно съел биллинг.
На Kamailio происходит аудентификация и авторизация, для корректно авторизации номер уже должен быть в E.164.
Аккаунтинг, а также конвертация SIP->H323 производится на отдельной железке (Quintum CallRelay).
Заранее спасибо.
_________________
Maksim Timofejev
Переписывает, но в функцию radius_www_authorize (в методе INVITE) все равно попадает в формате XXXXXXX, биллинг блочит звонок и так по кругу. ;(
Кто знает, как модифицировать uri и затем перероутить звонок заново?
Added after 52 minutes:
Походу дела нужно ставить еще один сервер, т.к. авторизации (через radius) происходит по INVITE (по крайней мере у меня), а сообщение INVITE модифицировать нельзя, т.к. к uri привязан md5-хэш...
_________________
Maksim Timofejev
А как насчет radius_proxy_authorize? Сам не пробовал - радиус не пользую но там вроде есть второй параметр uri_user.
| Код: |
| uri_user - Uri_user is an optional pseudo variable parameter whose value, if present, will be given to Radius server as value of SIP-URI-User check item. If uri_user pseudo variable parameter is not present, the server will generate SIP-URI-User check item value from user part of To/From URI. |
| simax писал(а): |
| Модифицировать все можно только модификация в route блоке работает как наложение - тоесть изменения применяются к request'у на самом деле после выхода из блока. |
А если сделать специальный route только для модификации? После выхода из route заголовки будут уже модифицированы?
| simax писал(а): |
| А как насчет radius_proxy_authorize? Сам не пробовал - радиус не пользую но там вроде есть второй параметр uri_user. |
Пробовал -- не получилось, правда дело было ночью, возможно что-то не так сделал...
И еще вопрос; Как включить отладку SIP-пакетов включая SDP?
_________________
Maksim Timofejev
| simax писал(а): |
| А как насчет radius_proxy_authorize? Сам не пробовал - радиус не пользую но там вроде есть второй параметр uri_user. |
Сегодня проверил -- не подходит. uri_user -- это uri того, кто звонит (аб. А), там нет номера, на который звонят (аб. Б).
_________________
Maksim Timofejev
| simax писал(а): |
| Модифицировать все можно только модификация в route блоке работает как наложение - тоесть изменения применяются к request'у на самом деле после выхода из блока. |
А route из route применяется? У меня -- нет. Или я что-то не так делаю?
Пробовал strip, prefix -- ничего не помогает, в radius уходит немодифицированный номер.
Может можно как-нибудь передать дополнительный radius-аттрибут?
Cisco-AVPair вроде там только один call-id и он жестко забит.
Получается, что kamailio от radius все, что угодно получить может, а вот то, что передать -- жестко зашито.
P.S. Кто-нибудь как-нибудь обходил это или Kamailio/OpenSER с radius'ом никто не использует?!! Аккаунтинг меня не интересует, нужны только Authentication и Authorization.
Added after 1 minutes:
Точнее даже только Authorization, т.к. с Authentication проблем нет.
_________________
Maksim Timofejev
Тема закрыта.
_________________
Maksim Timofejev
| tma писал(а): |
| Уже второй день бьюсь, пытаюсь при помощи subst и subst_uri переписать из формата к примеру XXXXXXX в 7812XXXXXXX. Переписывает |
А как вы переписываете номер в SIP пакете не расскажите? Хочу в kamailio роутить звонки префиксами, т.к. дальше стоят коммутаторы потоков, которые только так понимают. Я так полагаю это делается с помощью psevdovariable transformation?
| ZloMurz писал(а): |
| А как вы переписываете номер в SIP пакете не расскажите? |
У меня так:
| Код: |
| if (uri =~ "^sip:[0-9]{7}@.*") { xlog("L_DBG", "Dialing: Local SPb number (xxx-xx-xx): From: To: \n"); subst_uri('/^sip:([0-9]{7})@(.*)$/sip:7812\1@\2/i'); rewritehostport("192.168.XXX.XXX"); route(1); return; } |
Но дело в том, что измнения видны только после того, как пакет ушел из Kamailio! Т.е. если я его буду гонять внутри по route'ам, изменений не будет!
Чтобы понял биллинг -- пришлось добавить функционал, при котором он сам преобразовывает номер к виду E.164 по заданным правилам.
_________________
Maksim Timofejev