[OpenSIPS-Devel] Get Dialog from callid or h_entry/h_id

Daniel Zanutti daniel.zanutti at gmail.com
Fri Jul 15 18:59:35 CEST 2016


Actually I did register to receive the dialog callback and it's working
fine.

The problem happens when I receive a 200 OK of the Invite, simultaneously
with BYE. On BYE i delete the call from my controls, then process the 200
OK, dialog has all info of the call and I load it back. I'm not sure if
it's a bug but the fact is that I need to check if dialog still exist.

Will it embarrass so much the system to return a different positive value?

On Fri, Jul 15, 2016 at 12:48 PM, Bogdan-Andrei Iancu <bogdan at opensips.org>
wrote:

> Hi,
>
> Why don't you register dialog callback to get notified when the call is
> terminated ? in this case, the dialog module will trigger you if a call
> gets terminated (expired or bye'ed)
>
> Regards,
>
> Bogdan-Andrei Iancu
> OpenSIPS Founder and Developerhttp://www.opensips-solutions.com
>
> On 15.07.2016 17:58, Daniel Zanutti wrote:
>
> Hi Bogdan
>
> I developed a billing mecanism to control how long calls can last, so I
> need to keep tracking all calls until they hangup. Every X seconds, I check
> all calls on Opensips and hangup some of them if necessary.
>
> For some reason (maybe a bug), some random calls (1 in a 1M or more) still
> exist in my mecanism after call is hangup, so I try to hangup this call
> using terminate_dlg() and wait until I receive a trigger from dialog
> module, confirming that it is finalized. In fact, I never receive the
> trigger from dialog module, because the call no longer exist and I have no
> way to check this.
>
> I think just changing the terminate_dlg function to return any number that
> identifies this dialog is no longer valid, it's OK to me and I can remove
> this call from my structure. A possibility to check if call is UP would be
> even better.
>
> What do you think can be done?
>
> Thanks for responding.
>
>
> On Thu, Jul 14, 2016 at 1:18 PM, Bogdan-Andrei Iancu <
> <bogdan at opensips.org>bogdan at opensips.org> wrote:
>
>> Hi Daniel,
>>
>> Indeed, there is none. Why is so important to know if the dialog really
>> existed ? you want to know if it was terminated by YOU and not by something
>> else prior to your terminate_dlg() ?
>>
>> We may consider returning a different positive code if no dialog was
>> found.
>>
>> Regards,
>>
>> Bogdan-Andrei Iancu
>> OpenSIPS Founder and Developerhttp://www.opensips-solutions.com
>>
>> On 13.07.2016 21:21, Daniel Zanutti wrote:
>>
>> Hi
>>
>> Anyone could please help on this?
>>
>> Thanks
>>
>>
>> On Mon, Jul 11, 2016 at 3:23 PM, Daniel Zanutti <
>> <daniel.zanutti at gmail.com>daniel.zanutti at gmail.com> wrote:
>>
>>> Hi
>>>
>>> I need to confirm if a call is UP and terminate it from my code. I have
>>> previously stored callid, h_entry and h_id on an internal list, so I'm
>>> executing at a specific time:
>>>
>>> dlg_api.terminate_dlg(h_entry, h_id);
>>>
>>> If the call is still running, it works nicely and hangup the call. If
>>> there is a problem, I get a negative value and solve too. The problem is if
>>> the call is not up anymore, I get a return == 0. This is the code of
>>> terminate_dlg function:
>>>
>>> struct dlg_cell * dlg = NULL;
>>>
>>> dlg = lookup_dlg(h_entry, h_id);
>>>
>>>         if(!dlg)
>>>                 return 0;
>>>
>>> This function "lookup_dlg" isn't exported.
>>>
>>> Is there anyway to confirm if the call is still running, if I have these
>>> values Callid, h_entry and h_id?
>>>
>>> Thanks!
>>>
>>>
>>
>>
>> _______________________________________________
>> Devel mailing listDevel at lists.opensips.orghttp://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/devel/attachments/20160715/1dcea1da/attachment.htm>


More information about the Devel mailing list