[OpenSIPS-Users] Callpickup using EBR

KSrigo ksrigo at gmail.com
Mon Oct 8 10:58:07 EDT 2018


Hi Bogdan,

- Yes calls to fs and Bob, fs and Charlie are 2 differents calls (different from-tag/call-id). 
- Yes EBR is done on each fs leg.

Yes for some reason when David takes the call, Opensips send an Invite to David and Cancel one of fs leg (which is the normal behavior) but then it send again an invite to David and Cancel it.
 
here is debug log: https://pastebin.com/48xqKi3Y <https://pastebin.com/48xqKi3Y>



Thanks in advance 
Srigo

> On Oct 5, 2018, at 6:08 PM, Bogdan-Andrei Iancu <bogdan at opensips.org> wrote:
> 
> Hi Srigo,
> 
> So, the calls between FS and Bob/Charlie are 2 different SIP calls, right ? and you do EBR on each of them (on the OpenSIPS with usrloc, rigth ?
> 
> As I understand from your description, the faulty step is the last one when David takes a CANCEL too, right ? Do you have pcaps + debug logs for this scenario ?
> 
> Regards,
> 
> Bogdan-Andrei Iancu
> 
> OpenSIPS Founder and Developer
>  http://www.opensips-solutions.com
> OpenSIPS Bootcamp 2018
>  http://opensips.org/training/OpenSIPS_Bootcamp_2018/
> 
> On 10/05/2018 12:40 PM, KSrigo wrote:
>> Hi,
>> 
>> I'm currently trying to add call pickup feature using event_routing module. It seems to work fine when I have only ONE inbound call to a given call group but when I have two calls to the same call group at the same, It's not working properly
>> 
>> Here is my scenario:
>> 
>> 								--> Opensips1 (usr_loc) --> Bob
>> Alice --> Opensips1 --> Freeswitch (fork)
>> 								--> Opensips1 (usr_loc) --> Charlie
>> 
>> David tries to pickup the phone ringing on Bob and Call (which is the same call because it's a fork but different A leg call_id)
>> Bob, Charlie and David are in the same pickup group.
>> 
>> When Bob and Charlies ring, David dials *0 to pick the call:
>> 	* Opensips immediately send an Invite to David for one of the incoming call (randomly choosen). Let's say for Bob
>> 	* Opensips send a Cancel to Bob
>> 	* Opensips send again the previous Invite to David (for the same A leg)
>> 	* Opensips send a Cancel to David
>> 
>> 
>> Here is my opensips code:
>> 
>>     dp_translate("DP_FEATURE", "$rU/$rU", "$var(attrs)");
>>     #Is it a callpickup?
>>     if($var(attrs) =~ "call_pickup" && $avp(caller_pickup_grp) != "") {
>>         t_newtran(); # 100 Trying is fired here
>>         send_reply("480","Gone");
>> 
>>         #extension can belong to multiple group so let's raise an event for each group
>>         $var(p) = 0;
>>         $var(caller_pickup_grp_len) = 0;
>>         $var(caller_pickup_grp_len) = $(avp(caller_pickup_grp){csv.count});
>>         while ($var(p) < $var(caller_pickup_grp_len)) {
>>             $avp(attr-name) = "group";
>>             $avp(attr-val) = $(avp(caller_pickup_grp){csv.value,$var(p)});
>>             xlog("L_NOTICE","$rm $ci hunting2: Caller pickup group [$avp(attr-val)] for [$fu]");
>>             $avp(attr-name) = "picker";
>>             $avp(attr-val) = $fu;
>>             raise_event("E_CALL_PICKUP", $avp(attr-name), $avp(attr-val));
>>             $var(p) = $var(p) + 1;
>>         }
>>         exit;
>>     }
>> 
>> 
>>     if (isbflagset(USRLOC_FOUND) && $avp(callee_pickup_grp) != ""){
>>         t_newtran();
>>         $var(p) = 0;
>>         $var(callee_pickup_grp_len) = 0;
>>         $var(callee_pickup_grp_len) = $(avp(callee_pickup_grp){csv.count});
>>         while ($var(p) < $var(callee_pickup_grp_len)) {
>>             #$avp(filter) = "group=1";
>>             $var(group)=$(avp(callee_pickup_grp){csv.value,$var(p)});
>>             $avp(filter) = "group="+$var(group);
>>             xlog("L_NOTICE","$rm $ci relay: Callee pickup group [$var(group)]. Raise event");
>>             notify_on_event("E_CALL_PICKUP","$avp(filter)","handle_pickup", "20");
>>             $var(p) = $var(p) + 1;
>>         }
>>     }
>> 
>>     if (!t_relay()) {
>>         xlog("L_WARN","$rm $ci relay: 500 Internal Server Error (t_relay failure)");
>>         t_reply("500","Internal Server Error");
>>         $avp(reason) = "SIP;cause=500;text=INTERNAL SERVER ERROR";
>>         route(REASON);
>>     }
>>     exit;
>> 
>> 
>> Any idea, what I missed here?
>> 
>> Thanks in advance for your help
>> Srigo
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20181008/4b50194c/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: call_pickup.pcap
Type: application/octet-stream
Size: 58106 bytes
Desc: not available
URL: <http://lists.opensips.org/pipermail/users/attachments/20181008/4b50194c/attachment-0001.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20181008/4b50194c/attachment-0003.html>


More information about the Users mailing list