[OpenSIPS-Users] Identify CDR accounting on dialog-timeout

Jayesh Nambiar jayesh.voip at gmail.com
Thu Jan 19 08:53:19 CET 2012


Hi Razvan,
I copied the acc directory of revision 8673 into my opensips-1.7.1 and also
applied the patch and it compiled properly. But I guess it does not work as
expected. I did the following:

modparam("acc", "db_extra_bye", "timeout=$dlg_val(timeout)")

if(has_totag()) {
     if(match_dialog()) { # --- Match dialog to associate sequential
requests ---
           if(is_method("BYE")) {
               $dlg_val(timeout) = "0";
               xlog("L_INFO", "Bye received and timeout is
$dlg_val(timeout)");
           }
        t_relay();
     }
}

if(is_method("INVITE")) {
   $dlg_val(timeout) = "1";
   route(call_logic);
   exit;
}

Now here, When BYE is received, I can see the XLOG logging the values
correct, but the value entered in the DB is still 1. Morepver now when
dialog times out, no CDR record is generated and I can see the following in
the syslog:

ERROR:acc:acc_dlg_callback: not enough info

Any pointers or directions that you can give me to test this properly. For
information, I use the topology_hiding function in dialog module to route
the calls. Also I have another 14 extra values that I enter in acc table
using the normal db_extra parameter.

Thanks,

--- Jayesh


2012/1/19 Jayesh Nambiar <jayesh.voip at gmail.com>

> Thank you very much Razvan. I will try this out.
>
> --- Jayesh
>
>
> On Wed, Jan 18, 2012 at 8:34 PM, Razvan Crainea <
> razvancrainea at opensips.org> wrote:
>
>>  Hi, Jayesh!
>>
>> First of all, there are not so many changes between the 1.7.1 and trunk
>> for the accounting module. Only this new parameter was added as far as I
>> know, and it should be pretty stable. If you do want to use the module from
>> trunk, you can simply copy it in your OpenSIPS 1.7.1 folder, and apply the
>> patch I've attached in order to compile properly.
>>
>> If you are using the automatic CDR accounting, then the scenario you
>> described above can not be implemented. The accounting backend is only set
>> at the initial invite.
>>
>> Regards,
>>
>> --
>> Răzvan Crainea
>> OpenSIPS Developer
>>
>>
>> On 01/18/2012 04:53 PM, Jayesh Nambiar wrote:
>>
>> Hi Razvan,
>> Not a very relevant question to ask, but is it possible to disable
>> accounting when dialog times out?? So that no record is entered in the DB
>> because of dialog timeout. I can probably setflag for syslog accounting
>> where such calls will also get logged !!
>>
>> --- Jayesh
>>
>> On Wed, Jan 18, 2012 at 7:14 PM, Jayesh Nambiar <jayesh.voip at gmail.com>wrote:
>>
>>> Hi Razvan,
>>> Thanks for your reply. Is it possible to use only the acc module of
>>> trunk version with the 1.7.1 stable version or do I have to download and
>>> configure the entire latest trunk version of opensips.
>>> I intend to use this in production setup, so just a little more worried
>>> about the reliability.
>>>
>>> Thanks again,
>>>
>>> --- Jayesh
>>>
>>>
>>>> Hello, Jayesh!
>>>>
>>>> You can not achieve this scenario in OpenSIPS 1.7.1, but you can wit the
>>>> acc module from trunk version. There you have a new parameter,
>>>> db_extra_bye[1], that can evaluate the pseudo variables after the BYE
>>>> message is received.
>>>>
>>>> An easier way to implement this, is to initialize a dlg_val with the
>>>> value 1, and if you receive a BYE message, change it to 0. If you don't
>>>> receive any BYE and a timeout is triggered, then the value will remain 1
>>>> and that is what you will see in the database. Otherwise, for a normal
>>>> hang up, you should set it to 0 and this will  reflect in the DB. But
>>>> once again, this will only work with the trunk version, adding the
>>>> dlg_val to the db_extra_bye parameter.
>>>>
>>>> [1] http://www.opensips.org/html/docs/modules/devel/acc.html#id293815
>>>>
>>>> Regards,
>>>>
>>>> --
>>>> Ra(zvan Crainea
>>>> OpenSIPS Developer
>>>>
>>>>
>>>>
>>>> On 01/18/2012 01:35 PM, Jayesh Nambiar wrote:
>>>> > Hi,
>>>> > I am using CDR accounting with mysql in my script. I want a way to
>>>> > know if the CDR record is because of a dialog_timeout. Is there some
>>>> > standard way of notifying it from the script. I was thinking of
>>>> > something like this:
>>>> > I have an extra column "timeout" in  my acc table which is inserted
>>>> > using db_extra parameter $avp(timeout) which is initialized to 0. If I
>>>> > know somewhere in the script that dialog has timed out, I set this
>>>> > $avp(timeout) to 1, so that the record inserted will have timeout
>>>> > column value as 1 and it will be easily identifiable.
>>>> >
>>>> > I understand that AVPs are not dialog persistent, but probably I can
>>>> > use some dlg_val variables. Also I dont find any function that
>>>> > indicates the dialog_timeout event. Another idea was to set the
>>>> > bye_on_timeout flag by calling create_dialog("B") and in local_route
>>>> > catch the BYE request and set the dlg_val variables there.
>>>> >
>>>> > Wanted to know if any of these ideas can work or is there some more
>>>> > standard way of doing it.
>>>> >
>>>> > --- Jayesh
>>>> >
>>>> >
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20120119/72133e04/attachment-0001.htm>


More information about the Users mailing list