BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 16 июн 2024, 03:39

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Не понятно с данными
СообщениеДобавлено: 03 фев 2009, 17:56 
Не в сети

Зарегистрирован: 12 окт 2007, 15:14
Сообщения: 16
Карма: 0
Есть звонок он правильный ->

ЗВОНЯЩИЙ
03 14:28:51
Type=AUTHENTICATION_REQUEST
Attributes:
User-Name=77.94.212.155
User-Password=cisco
NAS-IP-Address=217.23.31.2
Calling-Station-Id=558099
NAS-Port-Type=0
Called-Station-Id=79603525444
cisco-NAS-Port=CALLNORMAL
h323-conf-id=D8E6EBBB CB61402C 48614F95 A8B94DAC

03 14:28:51
Type=AUTHENTICATION_ACCEPT
Process time:89
Attributes:
h323-credit-amount=99848.12
h323-credit-time=1800
h323-return-code=0

03 14:29:20
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=52.166.108.158
NAS-IP-Address=217.23.31.2
Service-Type=12
Acct-Input-Octets=58380
Acct-Output-Octets=79500
Acct-Status-Type=2
Acct-Delay-Time=0
Acct-Session-Time=8
Acct-Input-Packets=934
Acct-Session-Id=00043764
Acct-Output-Packets=1325
NAS-Port-Type=0
Calling-Station-Id=558099
Called-Station-Id=79603525444
h323-gw-id=AlterPss
h323-remote-address=52.166.108.158
h323-disconnect-cause=10
h323-connect-time=11:30:24.969 UTC Tue Feb 3 2009
h323-disconnect-time=11:30:33.360 UTC Tue Feb 3 2009
cisco-NAS-Port=CALLNORMAL
cisco-avpair=remote-media-address\u6152.166.108.158
cisco-avpair=coder-type-rate\u61g729r8
cisco-avpair=media-mode\u61proxy
h323-conf-id=D8E6EBBB CB61402C 48614F95 A8B94DAC
h323-conf-id=D8E6EBBB CB61402C 48614F95 A8B94DAC
h323-setup-time=11:30:04.141 UTC Tue Feb 3 2009
h323-call-origin=originate
h323-call-type=VoIP


ЧЕРЕЗ КОГО ЗВОНИМ....

03 14:31:37
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=23.148.88.195
NAS-IP-Address=217.23.31.2
Service-Type=12
Acct-Input-Octets=507240
Acct-Output-Octets=845700
Acct-Status-Type=2
Acct-Delay-Time=0
Acct-Session-Time=169
Acct-Input-Packets=8454
Acct-Session-Id=00043762
Acct-Output-Packets=16914
NAS-Port-Type=0
Calling-Station-Id=558099
Called-Station-Id=74952292009
h323-gw-id=AlterPss
h323-remote-address=23.148.88.195
h323-disconnect-cause=1f
h323-connect-time=11:30:00.907 UTC Tue Feb 3 2009
h323-disconnect-time=11:32:50.891 UTC Tue Feb 3 2009
cisco-NAS-Port=CALLNORMAL
cisco-avpair=remote-media-address\u6123.148.88.195
cisco-avpair=coder-type-rate\u61g729r8
cisco-avpair=media-mode\u61proxy
h323-conf-id=C68C0008 234E37EB 248CF5E3 B6E94935
h323-conf-id=C68C0008 234E37EB 248CF5E3 B6E94935
h323-setup-time=11:29:59.172 UTC Tue Feb 3 2009
h323-call-origin=originate
h323-call-type=VoIP



Но вот возникает проблема. появляются звонки:


03 14:35:24
Type=AUTHENTICATION_REQUEST
Attributes:
User-Name=77.94.212.155
User-Password=cisco
NAS-IP-Address=217.23.31.2
Calling-Station-Id=338099
NAS-Port-Type=0
Called-Station-Id=79085529340
cisco-NAS-Port=CALLNORMAL
h323-conf-id=18590CF7 9BC86F6D 980EA637 687D0E60

03 14:35:24
Type=AUTHENTICATION_ACCEPT
Process time:57
Attributes:
h323-credit-amount=99845.71
h323-credit-time=1800
h323-return-code=0

03 14:35:55
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=52.166.108.158
NAS-IP-Address=217.23.31.2
Service-Type=12
Acct-Input-Octets=60420
Acct-Output-Octets=80100
Acct-Status-Type=2
Acct-Delay-Time=0
Acct-Session-Time=17
Acct-Input-Packets=1007
Acct-Session-Id=000437A3
Acct-Output-Packets=1335
NAS-Port-Type=0
Calling-Station-Id=558099
Called-Station-Id=79085529340
h323-gw-id=AlterPss
h323-remote-address=52.166.108.158
h323-disconnect-cause=10
h323-connect-time=11:36:50.719 UTC Tue Feb 3 2009
h323-disconnect-time=11:37:08.000 UTC Tue Feb 3 2009
cisco-NAS-Port=CALLNORMAL
cisco-avpair=remote-media-address\u6152.166.108.158
cisco-avpair=coder-type-rate\u61g729r8
cisco-avpair=media-mode\u61proxy
h323-conf-id=18590CF7 9BC86F6D 980EA637 687D0E60
h323-conf-id=18590CF7 9BC86F6D 980EA637 687D0E60
h323-setup-time=11:36:37.235 UTC Tue Feb 3 2009
h323-call-origin=originate
h323-call-type=VoIP


и вторая запись....


03 14:35:55
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=77.94.212.155
NAS-IP-Address=217.23.31.2
Service-Type=12
Acct-Status-Type=2
Acct-Delay-Time=0
Acct-Session-Time=17
Acct-Session-Id=000437A2
Calling-Station-Id=558099
NAS-Port-Type=0
Called-Station-Id=79085529340
h323-gw-id=AlterPss
h323-disconnect-cause=10
h323-connect-time=11:36:50.719 UTC Tue Feb 3 2009
h323-disconnect-time=11:37:08.032 UTC Tue Feb 3 2009
cisco-NAS-Port=CALLNORMAL
h323-conf-id=18590CF7 9BC86F6D 980EA637 687D0E60
h323-conf-id=18590CF7 9BC86F6D 980EA637 687D0E60
h323-setup-time=11:36:37.110 UTC Tue Feb 3 2009
h323-call-origin=answer
h323-call-type=Telephony



Не понятно почему после авторизации влезает не тот ИП адрес....


Настройка НАС

Код:
service=10
acct.in=voip/originate
acct.out=telephony/answer
auth.out=all/all


Скрипт предобработки:

Код:
import bitel.billing.server.radius.*;

attributes = request.getVendorAttributes( Vendors.CISCO, 23 ); //h323-remote-address из dictionary.xml
callorigin = request.getVendorAttributes( Vendors.CISCO, 26 );
if ( callorigin != null ) { callorigins = callorigin.toString(); }

if( attributes != null )
{
for( it = attributes.iterator(); it.hasNext(); )
{
ra = (RadiusAttribute)it.next();
value = ra.getStringValue();
request.setStringAttribute( RadiusStandartAttributes.User_Name, value );
}
}




Почему после авторизации так происходит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 фев 2009, 02:39 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
у вас до "но вот" две оригинейт аккаунтинг сессии, а после "но вот" уже совсем другой звонок, где все как раз правильно: аутентикация, затем стоп оригинейта и затем стоп ансвера

я не телепат, но часто именно телепатии все ожидают, попробуем..

рассмотрим только ту часть которая после "но вот"

вероятнее всего звонок записывается на 77.94.212.155 дважды, а на 52.166.108.158 ничего не пишется, это происходит из за того что BGBilling фиксирует аутентикацию и ожидает продолжения, а именно аккаунтинга, который как бы присовокупится к этой аутентикации, прблема в том что делается это по h323-conf-id, а в вашей ситуации и оригинейт и ансвер часть звока имеют одинаковый conf-id (что, кстати, абсолютно правильно с точки зрения стандарта)

вообщем первый аккаунтинг который попался, тот и прилепился к аутентикации, при этом на то что в аккаунтинге другой юзер нейм не обратили внимания, вся информация о логине/догворе/услуге уже была получена при аутентикации

я вышел из ситуации очень просто, у меня мера, она генерирует аутентикации только на входящий звонок, а так же она создает уникальные Acct-Session-Id для каждого лега звонка, я просто отлавливаю в скрипе оригинейт аккаунтинг и меняю h323-conf-id на Acct-Session-Id, а ансвер части звонов не трогаю


P.S. еще раз посмотрел ваш пост, то что в самом начале вы назвале правильным так же не правильно, там к аутентикации прилепилась оригинейт сессия с другим юзер неймом и кстати Acct-Session-Id у вас тоже уникален, так что вот вам мой окончательный вариант скрипта, доводите его под свой софт-свич

Код:
import bitel.billing.server.radius.*;

/* поиск атрибута Cisco-AVPair = xpgk-destination-user=gateway */
destination     = "xpgk-destination-user";
gateway = null;
vsa = request.getVendorAttributes( Vendors.CISCO, CiscoVendor.Cisco_AVPair );
for ( it = vsa.iterator(); it.hasNext(); )
{
        ra = (RadiusAttribute) it.next();
        value = ra.getStringValue();
        if ( value.startsWith( destination ) )
        {
                gateway = value.substring( destination.length() + 1 );
                break;
        }
}

if ( request.getPacketType() == RadiusPacket.ACCOUNTING_REQUEST )
{
        /* Определяем к какой части звонка относится аккаунтинговая сессия (Cisco-AVPair h323-call-origin) */
        origin = request.getVendorStringAttribute(26);

        /* модификация аккаунтинг запроса */
        if ( origin != null )
        {
                if ( origin.equalsIgnoreCase( "originate" )     )
                {
                        /* для оригинационной части аккаунтинга меняем имя пользователя на имя терминирующего шлюза */
                        if ( gateway != null ) {
                                request.setStringAttribute( RadiusStandartAttributes.User_Name, gateway );
                        } else {
                                request.setStringAttribute( RadiusStandartAttributes.User_Name, "unknown");
                        }

                        /* MERA MVTS proprietary session ID (Acct-Session-Id), уникально для каждой части звонка */
                        /* заменяем идентификатор конференции (Cisco-AVPair h323-conf-id) на session ID          */
                        request.setVendorStringAttribute(24, request.getStringAttribute(44));
                } else if ( origin.equalsIgnoreCase( "answer" ) ) {
                        if ( gateway != null ) {
                                /* Терминация через Совинтел => код услуги 11 */
                                if ( gateway.equalsIgnoreCase( "T.0000.20" ) )
                                        request.setOption( "service", 11 );
                        }
                }
        }

} else if ( request.getPacketType() == RadiusPacket.AUTHENTICATION_REQUEST )
{
        /* установка типа звонка иначе биллинг не будет разбирать пакет */
        request.setFlag( 1 );

        /* Терминация через Совинтел => код услуги 11 */
        if ( gateway != null && gateway.equalsIgnoreCase( "T.0000.20" ) ) {
                        request.setOption( "service", 11 );
        }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 фев 2009, 16:21 
Не в сети

Зарегистрирован: 12 окт 2007, 15:14
Сообщения: 16
Карма: 0
Спасибо большое..
Добавил скрипт вроде как по биллингу заработало и данные правилньые.. но ошибка в логах
04.02.2009 13:17:14 java.lang.NullPointerException: Null Pointer in Method Invocation
04.02.2009 13:17:14 <-->at bsh.Name.invokeMethod(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHMethodInvocation.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHPrimaryExpression.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHPrimaryExpression.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHAssignment.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHStatementExpressionList.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHForStatement.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.Interpreter.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.Interpreter.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.Interpreter.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bitel.billing.server.processor.DefaultNASInfo.processRequestWithScript(DefaultNASInfo.java:275)
04.02.2009 13:17:14 <-->at bitel.billing.server.processor.voiceip.VoiceIpNASInfo.prepareAccountRequest(VoiceIpNASInfo.java:114)
04.02.2009 13:17:14 <-->at bitel.billing.server.radius.RadiusRequestThread.processRequest(RadiusRequestThread.java:135)
04.02.2009 13:17:14 <-->at bitel.billing.server.radius.RadiusRequestThread.run(RadiusRequestThread.java:48)
04.02.2009 13:17:14 <-->at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
04.02.2009 13:17:14 <-->at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
04.02.2009 13:17:14 <-->at java.lang.Thread.run(Thread.java:636)
04.02.2009 13:17:14 java.lang.NullPointerException: Null Pointer in Method Invocation
04.02.2009 13:17:14 <-->at bsh.Name.invokeMethod(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHMethodInvocation.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHPrimaryExpression.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHPrimaryExpression.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHAssignment.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHStatementExpressionList.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.BSHForStatement.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.Interpreter.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.Interpreter.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bsh.Interpreter.eval(Unknown Source)
04.02.2009 13:17:14 <-->at bitel.billing.server.processor.DefaultNASInfo.processRequestWithScript(DefaultNASInfo.java:275)
04.02.2009 13:17:14 <-->at bitel.billing.server.processor.voiceip.VoiceIpNASInfo.prepareAuthRequest(VoiceIpNASInfo.java:51)
04.02.2009 13:17:14 <-->at bitel.billing.server.radius.RadiusRequestThread.processRequest(RadiusRequestThread.java:117)
04.02.2009 13:17:14 <-->at bitel.billing.server.radius.RadiusRequestThread.run(RadiusRequestThread.java:48)
04.02.2009 13:17:14 <-->at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
04.02.2009 13:17:14 <-->at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
04.02.2009 13:17:14 <-->at java.lang.Thread.run(Thread.java:636)

Не подскажете как ее решить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 фев 2009, 20:49 
Не в сети

Зарегистрирован: 07 май 2008, 13:34
Сообщения: 594
Откуда: Москва
Карма: 27
да ошибки в скрипте у тебя, отлаживайся через print()
ты куда то суешь пустую переменную, туда где ожидается значение, например пытаешься пустоту записать в артибут радиус реквеста


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.124s | 24 Queries | GZIP : On ]