Kamailio - переписать номер в формат E.164

Kamailio/OpenSIPS и другие производные от SER.

Модераторы: Admins, Модераторы

Ответить
tma
Сообщения: 361
Зарегистрирован: 11 июл 2005, 17:52
Контактная информация:

Kamailio - переписать номер в формат E.164

Сообщение tma » 27 фев 2009, 12:13

Всем привет!

Подскажите, как правильно переписать номер из формата принятого в РФ (8-, 810-, а также семизначный номер) в формат E.164?
При этом нужно, чтобы при перемаршрутизации во всех заголовках был номер уже в формате E.164, чтобы его потом корректно съел биллинг.
На Kamailio происходит аудентификация и авторизация, для корректно авторизации номер уже должен быть в E.164.
Аккаунтинг, а также конвертация SIP->H323 производится на отдельной железке (Quintum CallRelay).

Заранее спасибо.
Maksim Timofejev

tma
Сообщения: 361
Зарегистрирован: 11 июл 2005, 17:52
Контактная информация:

Сообщение tma » 01 мар 2009, 16:29

Уже второй день бьюсь, пытаюсь при помощи subst и subst_uri переписать из формата к примеру XXXXXXX в 7812XXXXXXX.
Переписывает, но в функцию radius_www_authorize (в методе INVITE) все равно попадает в формате XXXXXXX, биллинг блочит звонок и так по кругу. ;(
Кто знает, как модифицировать uri и затем перероутить звонок заново?

Added after 52 minutes:

Походу дела нужно ставить еще один сервер, т.к. авторизации (через radius) происходит по INVITE (по крайней мере у меня), а сообщение INVITE модифицировать нельзя, т.к. к uri привязан md5-хэш...
Maksim Timofejev

simax
Сообщения: 35
Зарегистрирован: 19 май 2008, 04:45

Сообщение simax » 02 мар 2009, 13:44

Модифицировать все можно только модификация в route блоке работает как наложение - тоесть изменения применяются к request'у на самом деле после выхода из блока.
А как насчет 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. 

tma
Сообщения: 361
Зарегистрирован: 11 июл 2005, 17:52
Контактная информация:

Сообщение tma » 03 мар 2009, 10:21

simax писал(а):Модифицировать все можно только модификация в route блоке работает как наложение - тоесть изменения применяются к request'у на самом деле после выхода из блока.
А если сделать специальный route только для модификации? После выхода из route заголовки будут уже модифицированы?
simax писал(а):А как насчет radius_proxy_authorize? Сам не пробовал - радиус не пользую но там вроде есть второй параметр uri_user.
Пробовал -- не получилось, правда дело было ночью, возможно что-то не так сделал...

И еще вопрос; Как включить отладку SIP-пакетов включая SDP?
Maksim Timofejev

tma
Сообщения: 361
Зарегистрирован: 11 июл 2005, 17:52
Контактная информация:

Сообщение tma » 06 мар 2009, 14:40

simax писал(а):А как насчет radius_proxy_authorize? Сам не пробовал - радиус не пользую но там вроде есть второй параметр uri_user.
Сегодня проверил -- не подходит. uri_user -- это uri того, кто звонит (аб. А), там нет номера, на который звонят (аб. Б).
Maksim Timofejev

tma
Сообщения: 361
Зарегистрирован: 11 июл 2005, 17:52
Контактная информация:

Сообщение tma » 10 мар 2009, 17:07

simax писал(а):Модифицировать все можно только модификация в route блоке работает как наложение - тоесть изменения применяются к request'у на самом деле после выхода из блока.
А route из route применяется? У меня -- нет. Или я что-то не так делаю?
Пробовал strip, prefix -- ничего не помогает, в radius уходит немодифицированный номер.
Может можно как-нибудь передать дополнительный radius-аттрибут?
Cisco-AVPair вроде там только один call-id и он жестко забит.
Получается, что kamailio от radius все, что угодно получить может, а вот то, что передать -- жестко зашито. :cry:

P.S. Кто-нибудь как-нибудь обходил это или Kamailio/OpenSER с radius'ом никто не использует?!! Аккаунтинг меня не интересует, нужны только Authentication и Authorization.

Added after 1 minutes:

Точнее даже только Authorization, т.к. с Authentication проблем нет.
Maksim Timofejev

tma
Сообщения: 361
Зарегистрирован: 11 июл 2005, 17:52
Контактная информация:

Сообщение tma » 09 апр 2009, 15:30

Проблема решена внесением изменений в биллинг.
Тема закрыта.
Maksim Timofejev

ZloMurz
Сообщения: 303
Зарегистрирован: 31 янв 2008, 15:19

Сообщение ZloMurz » 06 июл 2009, 10:54

tma писал(а):Уже второй день бьюсь, пытаюсь при помощи subst и subst_uri переписать из формата к примеру XXXXXXX в 7812XXXXXXX.
Переписывает
А как вы переписываете номер в SIP пакете не расскажите? Хочу в kamailio роутить звонки префиксами, т.к. дальше стоят коммутаторы потоков, которые только так понимают. Я так полагаю это делается с помощью psevdovariable transformation?

Аватара пользователя
kks
Сообщения: 29
Зарегистрирован: 03 июл 2009, 07:49

Сообщение kks » 06 июл 2009, 11:34


tma
Сообщения: 361
Зарегистрирован: 11 июл 2005, 17:52
Контактная информация:

Сообщение tma » 29 авг 2009, 01:32

ZloMurz писал(а):А как вы переписываете номер в SIP пакете не расскажите?
У меня так:

Код: Выделить всё

        if (uri =~ "^sip:[0-9]{7}@.*") {
                xlog&#40;"L_DBG", "Dialing&#58; Local SPb number &#40;xxx-xx-xx&#41;&#58; From&#58; <$fu> To&#58; <$tu>\n"&#41;;
                subst_uri&#40;'/^sip&#58;&#40;&#91;0-9&#93;&#123;7&#125;&#41;@&#40;.*&#41;$/sip&#58;7812\1@\2/i'&#41;;
                rewritehostport&#40;"192.168.XXX.XXX"&#41;;
                route&#40;1&#41;;
                return;
        &#125;
Но дело в том, что измнения видны только после того, как пакет ушел из Kamailio! Т.е. если я его буду гонять внутри по route'ам, изменений не будет!

Чтобы понял биллинг -- пришлось добавить функционал, при котором он сам преобразовывает номер к виду E.164 по заданным правилам.
Maksim Timofejev

Ответить