Re: [Openh323gk-developer] Request for new feature: gk acct parameter %{Called-Station-Id-Out}
H.323 Gatekeeper for VoIP and videconferencing
Brought to you by:
willamowius
From: Tusar <tu...@gm...> - 2008-12-28 13:08:33
|
Hi, I am very much interested with this new feature which will help us for accounting and for debug also. Thanks a lot. Best Regards, //Tusar\\ On Sat, Dec 27, 2008 at 11:16 PM, Alex Golyshev <ale...@ma...> wrote: > Hi all. > > Some time ago I encountered the problem that there is no way to get the > number that actually sent to called party. > We have: > 1) |%{dest-info}| - a colon separated list of destination aliases > 2) |%{Called-Station-Id}| - called party number (rewritten) > 3) |%{Dialed-Number}| - dialed number (as received from the calling party) > > The second parameter is not the "final" number. It is connected to the the > global rewrite tool, not per-gw outbound. > So we don't know that number at the accounting level. > > I suggest to add new accounting parameter %{Called-Station-Id-Out} to > resolve this problem. > I wrote the patch to add this feature, but I'm not sure that it is done in > the right way... Patch adds new information variable at "call" level, not > "route" level. > Nevertheless, it works for the my situation. > > In any case, I think it would be useful to get this information from CDR. > > The patch is added to this letter. > > Regards, > Alex. > > ? acct_station_id_out.patch > ? configure.lineno > ? gnugkbuildopts.h > Index: ProxyChannel.cxx > =================================================================== > RCS file: /cvsroot/openh323gk/openh323gk/ProxyChannel.cxx,v > retrieving revision 1.282 > diff -u -r1.282 ProxyChannel.cxx > --- ProxyChannel.cxx 18 Dec 2008 16:57:30 -0000 1.282 > +++ ProxyChannel.cxx 27 Dec 2008 21:22:58 -0000 > @@ -2153,6 +2153,7 @@ > toolkit->GWRewriteE164(out_rewrite_id, false, > setupBody.m_destinationAddress); > } > } > + > m_call->SetCalledStationIdOut(AsString(setupBody.m_destinationAddress)); > } > > if (q931.HasIE(Q931::CalledPartyNumberIE)) { > @@ -2168,6 +2169,7 @@ > q931.SetCalledPartyNumber(calledNumber, plan, > type); > } else if (toolkit->GWRewritePString(out_rewrite_id, > false, calledNumber)) > q931.SetCalledPartyNumber(calledNumber, plan, > type); > + m_call->SetCalledStationIdOut(calledNumber); > } > } > > Index: RasTbl.cxx > =================================================================== > RCS file: /cvsroot/openh323gk/openh323gk/RasTbl.cxx,v > retrieving revision 1.246 > diff -u -r1.246 RasTbl.cxx > --- RasTbl.cxx 16 Nov 2008 12:54:15 -0000 1.246 > +++ RasTbl.cxx 27 Dec 2008 21:22:58 -0000 > @@ -2665,6 +2665,20 @@ > return m_dialedNumber; > } > > +PString CallRec::GetCalledStationIdOut() > +{ > + PWaitAndSignal lock(m_usedLock); > + return m_calledStationIdOut; > +} > + > +void CallRec::SetCalledStationIdOut( > + const PString& id > + ) > +{ > + PWaitAndSignal lock(m_usedLock); > + m_calledStationIdOut = id; > +} > + > void CallRec::SetDialedNumber( > const PString& number > ) > Index: RasTbl.h > =================================================================== > RCS file: /cvsroot/openh323gk/openh323gk/RasTbl.h,v > retrieving revision 1.147 > diff -u -r1.147 RasTbl.h > --- RasTbl.h 16 Nov 2008 12:54:16 -0000 1.147 > +++ RasTbl.h 27 Dec 2008 21:22:58 -0000 > @@ -991,6 +991,17 @@ > ); > > /** @return > + Called party's number (after final rewrite) or an empty > + string, if the number has not been yet determined. > + */ > + PString GetCalledStationIdOut(); > + > + /// Set calling party's number (after final rewrite) > + void SetCalledStationIdOut( > + const PString& id /// Called-Station-Id-Out > + ); > + > + /** @return > Fixed destination address for the call (NULL if not set). > */ > H225_AliasAddress* GetRouteToAlias() const; > @@ -1116,6 +1127,8 @@ > PString m_callingStationId; > /// called party's number > PString m_calledStationId; > + /// called party's number (after final rewrite) > + PString m_calledStationIdOut; > /// party to be charged for the call > PString m_callLinkage; > /// dialed number (called party's number before rewrite) > Index: gkacct.cxx > =================================================================== > RCS file: /cvsroot/openh323gk/openh323gk/gkacct.cxx,v > retrieving revision 1.36 > diff -u -r1.36 gkacct.cxx > --- gkacct.cxx 10 Jul 2008 08:21:20 -0000 1.36 > +++ gkacct.cxx 27 Dec 2008 21:22:59 -0000 > @@ -302,6 +302,7 @@ > params["dest-info"] = call->GetDestInfo(); > params["Called-Station-Id"] = GetCalledStationId(call); > params["Dialed-Number"] = GetDialedNumber(call); > + params["Called-Station-Id-Out"] = GetCalledStationIdOut(call); > > endptr caller; > if (caller = call->GetCallingParty()) { > @@ -544,6 +545,21 @@ > return id; > } > > +PString GkAcctLogger::GetCalledStationIdOut( > + /// call associated with the accounting event > + const callptr& call > + ) const > +{ > + if (!call) > + return PString(); > + > + PString id = call->GetCalledStationIdOut(); > + if (!id) > + return id; > + else > + return call->GetCalledStationId(); > +} > + > PString GkAcctLogger::GetInfo() > { > return "No information available\r\n"; > Index: gkacct.h > =================================================================== > RCS file: /cvsroot/openh323gk/openh323gk/gkacct.h,v > retrieving revision 1.20 > diff -u -r1.20 gkacct.h > --- gkacct.h 8 May 2008 08:22:40 -0000 1.20 > +++ gkacct.h 27 Dec 2008 21:22:59 -0000 > @@ -282,6 +282,15 @@ > const callptr& call > ) const; > > + /** @return > + A string that can be used to identify a calling number after > + final rewrite. > + */ > + virtual PString GetCalledStationIdOut( > + /// call associated with the accounting event > + const callptr& call > + ) const; > + > private: > GkAcctLogger(); > GkAcctLogger(const GkAcctLogger&); > > ------------------------------------------------------------------------------ > > _______________________________________________________ > > List: Ope...@li... > Archive: > http://sourceforge.net/mailarchive/forum.php?forum_name=openh323gk-developer > Homepage: http://www.gnugk.org/ > |