[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