[OpenSIPS-Users] Miliseconds precision for accounting module
Maciej Bylica
mbsip at gazeta.pl
Sun Apr 27 18:17:59 CEST 2014
Hello,
ad1) I am just wondering why get_timestamp must be fired before has_totag
part of the script?
I've found some threads on discussion group describing the same thing, but
without explaination.
ad2) i have set following rule:
if (is_method("INVITE") && t_check_status("200") ) {
xlog("L_INFO","[INFO] Inside.... okay -> $var(okay)");
get_timestamp($avp(sec),$avp(usec));
}
then i think reINVITE/OK/ transaction will generate new timestamps, which
is wrong.
Is there any dialog variable that could be checked and then set inside the
{ } to last more than just one transaction.
Possible usage inside onreply_route...
if (is_method("INVITE") && (t_check_status("200")) &&
($var(okay)==NULL))
{
$var(okay)=1;
xlog("L_INFO","[INFO] Inside .... okay -> $var(okay)");
get_timestamp($avp(sec),$avp(usec));
}
Thanks
Mac.
2014-04-15 17:04 GMT+02:00 Maciej Bylica <mbsip at gazeta.pl>:
> Hello,
>
> It works, but:
> 1) get_timestamp doesnt work inside has_totag section
> if (has_totag()) {
> if (loose_route()) {
> if (is_method("BYE")) {
> get_timestamp($avp(secbye),$avp(usecbye));
> .....
> .....
> but works if called before that section
>
> 2) because i need to count duration, i should rather place it inside
> onreply_route
> if (t_check_status("200")) {
> get_timestamp($avp(sec),$avp(usec));
> }
> but the question is how it will behave in case of reINVITE is triggered
> from the originating side.
> I think $avp(sec),$avp(usec) will be overwritten.
> So maybe wise idea will be to set some flag in first 200 message and make
> another statement like if ((t_check_status("200")) && !(isflagset(XX)))
>
> What do you think about p1 and p2?
>
> Thanks
> Mac
>
>
>
> 2014-04-14 12:56 GMT+02:00 Maciej Bylica <mbsip at gazeta.pl>:
>
> Hi Vlad,
>>
>> Thanks for reply.
>> I am using OpenSIPS (1.9.1-notls (x86_64/linux)) so get_timestamp is
>> available there.
>> Let me check this.
>>
>> Regards,
>> Mac
>>
>>
>> 2014-04-14 10:57 GMT+02:00 Vlad Paiu <vladpaiu at opensips.org>:
>>
>> Hello,
>>>
>>> Which OpenSIPS version are you using ?
>>> You could use get_timestamp [1] from the Core to get the current second
>>> and microsecond,
>>> and set the two variables at INVITE time, and set them as db_extra [2] .
>>>
>>> Then, at BYE time call again the get_timestamp function, store them in
>>> some AVPs and set those AVPs in [3]. This way you should get both the
>>> INVITE and BYE timestamps with microseconds precision in the CDR record.
>>>
>>> [1]
>>> http://www.opensips.org/Documentation/Script-CoreFunctions-1-10#toc18
>>> [2] http://www.opensips.org/html/docs/modules/1.10.x/acc.html#id295028
>>> [3] http://www.opensips.org/html/docs/modules/1.10.x/acc.html#id295056
>>>
>>> Best Regards,
>>>
>>> Vlad Paiu
>>> OpenSIPS Developerhttp://www.opensips-solutions.com
>>>
>>> On 12.04.2014 23:44, Maciej Bylica wrote:
>>>
>>> Hello Ryan,
>>>
>>> I am using dialog accounting, so each row is fully qualified cdr
>>> record, not only single transaction of a call.
>>> Couldn't i just use two extra db variables which will gather the $time
>>> inside INVITE {} and BYE {}?
>>>
>>> Thanks,
>>> Mac
>>>
>>>
>>> 2014-04-12 6:39 GMT+02:00 Ryan Mitchell <rjm at tcl.net>:
>>>
>>>> Hello Mac,
>>>>
>>>> Each row in the acc table is for a transaction. To make a proper CDR
>>>> out of the data, you have to combine rows to find the start and end of the
>>>> call. That can be harder than it sounds, especially with forking
>>>> (parallel, or the more common case of serial forking when you are LCR
>>>> routing or simply sending calls to alt destinations after a timeout). I
>>>> wrote scripts that implement a simple dialog state machine to make sense of
>>>> all the distinct legs of a call, though there should be an easier way with
>>>> the auto-cdr / multi call-legs accounting feature of the acc module (anyone
>>>> comment on this please?).
>>>>
>>>> The time field in the acc table will be the timestamp of the response
>>>> for the given transaction. If you assign an extra field for another
>>>> timestamp, it will depend on where you assign that var in your script. In
>>>> my case I assign it in the main routing section so the timestamp indicates
>>>> the start of the transaction.
>>>>
>>>> best regards,
>>>> Ryan
>>>>
>>>>
>>>>
>>>> On Fri, Apr 11, 2014 at 10:06 AM, Maciej Bylica <mbsip at gazeta.pl>wrote:
>>>>
>>>>> Ryan,
>>>>>
>>>>> One more question.
>>>>> Currently i have some db extra attrs setup. My acc table looks like
>>>>> following:
>>>>>
>>>>>
>>>>> +------------+------------------+------+-----+---------+----------------+
>>>>>
>>>>> | Field | Type | Null | Key | Default | Extra
>>>>> |
>>>>>
>>>>>
>>>>> +------------+------------------+------+-----+---------+----------------+
>>>>>
>>>>> | id | int(10) unsigned | NO | PRI | NULL |
>>>>> auto_increment |
>>>>>
>>>>> | method | char(16) | NO | | |
>>>>> |
>>>>>
>>>>> | from_tag | char(64) | NO | | |
>>>>> |
>>>>>
>>>>> | to_tag | char(64) | NO | | |
>>>>> |
>>>>>
>>>>> | callid | char(64) | NO | MUL | |
>>>>> |
>>>>>
>>>>> | sip_code | char(3) | NO | | |
>>>>> |
>>>>>
>>>>> | sip_reason | char(32) | NO | | |
>>>>> |
>>>>>
>>>>> | time | datetime | NO | | NULL |
>>>>> |
>>>>>
>>>>> | duration | int(11) unsigned | NO | | 0 |
>>>>> |
>>>>>
>>>>> | setuptime | int(11) unsigned | NO | | 0 |
>>>>> |
>>>>>
>>>>> | SourceAddr | char(30) | NO | | NULL |
>>>>> |
>>>>>
>>>>> | DestAddr | char(30) | NO | | NULL |
>>>>> |
>>>>>
>>>>> | Anum | char(30) | NO | | NULL |
>>>>> |
>>>>>
>>>>> | Bnum_rU | char(30) | NO | | NULL |
>>>>> |
>>>>>
>>>>> | Bnum_tU | char(30) | NO | | NULL |
>>>>> |
>>>>>
>>>>> | created | datetime | YES | | NULL |
>>>>> |
>>>>>
>>>>>
>>>>> +------------+------------------+------+-----+---------+----------------+
>>>>>
>>>>>
>>>>> modparam("acc", "db_extra", "SourceAddr=$si; DestAddr=$rd; Anum=$fU;
>>>>> Bnum_rU=$rU; Bnum_tU=$tU")
>>>>>
>>>>>
>>>>> Now using additional data like $time will give me the exact moment
>>>>> the call is ended, nothing more, am i right?
>>>>>
>>>>> To have detailed call duration i need to know exact answer and
>>>>> disconnect timestamps.
>>>>>
>>>>>
>>>>> Btw: i am using OpenSIPS (1.9.1-notls (x86_64/linux))
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Mac
>>>>>
>>>>>
>>>>> 2014-04-10 22:03 GMT+02:00 Ryan Mitchell <rjm at tcl.net>:
>>>>>
>>>>>> Using db_extra to stuff custom data into your acc table, use the
>>>>>> $time var with a format such as "%s.%N" or similar.
>>>>>>
>>>>>> Or, as you suggested, do it on the database level with a trigger or
>>>>>> auto-update column.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 10, 2014 at 10:01 AM, Maciej Bylica <mbsip at gazeta.pl>wrote:
>>>>>>
>>>>>>> Hello
>>>>>>>
>>>>>>> I just want to know how to achieve miliseconds precision for
>>>>>>> accounting module.
>>>>>>> This is quite important while trying to sum up total traffic
>>>>>>> duration with the accuracy of hundred of ms.
>>>>>>>
>>>>>>> As i see there is no rounding feature implemented as well, but
>>>>>>> heaving ms precision it could be done directly on DB level.
>>>>>>>
>>>>>>> Could somebody give me a hand.
>>>>>>>
>>>>>>> Thanks in advanced
>>>>>>> Mac
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Users mailing list
>>>>>>> Users at lists.opensips.org
>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Ryan Mitchell <rjm at tcl.net>
>>>>>> Telecom Logic, LLC
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Users mailing list
>>>>>> Users at lists.opensips.org
>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at lists.opensips.org
>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Ryan Mitchell <rjm at tcl.net>
>>>> Telecom Logic, LLC
>>>>
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.opensips.org
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> Users mailing listUsers at lists.opensips.orghttp://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20140427/a2e3bfe2/attachment-0001.htm>
More information about the Users
mailing list