[OpenSIPS-Devel] Get Dialog from callid or h_entry/h_id
Bogdan-Andrei Iancu
bogdan at opensips.org
Fri Jul 15 17:48:56 CEST 2016
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 Developer
http://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 <mailto: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 Developer
> http://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 <mailto: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 list
>> Devel at lists.opensips.org <mailto:Devel at lists.opensips.org>
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/devel/attachments/20160715/dfcc4cbd/attachment-0001.htm>
More information about the Devel
mailing list