[SR-Users] Terminate dialog from another dialog

Henning Westerholt hw at kamailio.org
Tue Mar 27 21:50:58 CEST 2018


Am Montag, 26. März 2018, 01:57:31 CEST schrieb Joel Serrano:
> I'm trying to set kamailio to not allow simultaneous calls from the same
> user, but if a second call comes in, the behavior desired is to process
> that second call and terminate the previous (already active) one.
> 
> Say you have call A that creates dialog A.
> 
> Then you have call B come in, creates dialog B.
> 
> Can I save some info from dialog (call) A in a htable for example, then
> check that htable for the needed info from dialog (call) B and terminate
> dialog (call) A if it exists?
> 
> I think using dlg_get() and dlg_bye() would do the trick but not 100% sure
> how they work..
> 
> 
> The example in the docs seems exactly the case:
> 
> dlg_get --> "Search and set current dialog based on Call-ID, From-Tag and
> To-Tag parameters"
> 
> if(dlg_get("abcdef", "123", "456"))
> {
> dlg_bye("all");
> }
> 
> After the dlg_get() and dlg_bye() what happens to call B? Does the route
> continue running or does it end? Will it automatically switch back to the
> current dialog or do you have to manually switch back running dlg_get()
> again? (Sorry if I'm not explaining myself correctly, let me know if it
> sounds confusing)

Hello Joel,

you coult track the number of current dialogs per user with the dialog 
profiles function.

Have a look to the set_dlg_profile and get_profile_size function in the 
module. Its also explained generally in the top of the module docs. You could 
store the dialog information for the termination also in a htable, as you 
already mentioned. Then call dlg_bye() for the first call.

If you would reverse your logic, like not allowing the second call setup if 
there is already one call, it would be much easier only with the two dialog 
functions mentioned above.

Best regards,

Henning



More information about the sr-users mailing list