forum.bitel.ru http://forum.bitel.ru/ |
|
Не понятно с данными http://forum.bitel.ru/viewtopic.php?f=6&t=1876 |
Страница 1 из 1 |
Автор: | Unit [ 03 фев 2009, 17:56 ] |
Заголовок сообщения: | Не понятно с данными |
Есть звонок он правильный -> ЗВОНЯЩИЙ 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 ); } } Почему после авторизации так происходит? |
Автор: | Jimson [ 04 фев 2009, 02:39 ] |
Заголовок сообщения: | |
у вас до "но вот" две оригинейт аккаунтинг сессии, а после "но вот" уже совсем другой звонок, где все как раз правильно: аутентикация, затем стоп оригинейта и затем стоп ансвера я не телепат, но часто именно телепатии все ожидают, попробуем.. рассмотрим только ту часть которая после "но вот" вероятнее всего звонок записывается на 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 ); } } |
Автор: | Unit [ 04 фев 2009, 16:21 ] |
Заголовок сообщения: | |
Спасибо большое.. Добавил скрипт вроде как по биллингу заработало и данные правилньые.. но ошибка в логах 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) Не подскажете как ее решить? |
Автор: | Jimson [ 04 фев 2009, 20:49 ] |
Заголовок сообщения: | |
да ошибки в скрипте у тебя, отлаживайся через print() ты куда то суешь пустую переменную, туда где ожидается значение, например пытаешься пустоту записать в артибут радиус реквеста |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |