[OpenSIPS-Users] Callpickup using EBR
Bogdan-Andrei Iancu
bogdan at opensips.org
Tue Oct 23 09:48:03 EDT 2018
Hi Srigo,
I checked the output, but I see no messages/logs from the event_routing
module. Maybe I got it wrong :( ?
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/22/2018 03:31 PM, Srigo Kanapathipillai wrote:
> Hi Bogdan,
>
> Any updates regarding this issue?
>
> Thanks
> Srigo Kana
> On 8 Oct 2018, at 16:58, KSrigo <ksrigo at gmail.com
> <mailto:ksrigo at gmail.com>> wrote:
>
> 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
>
>
> Thanks in advance
> Srigo
>
>> On Oct 5, 2018, at 6:08 PM, Bogdan-Andrei Iancu <
>> bogdan at opensips.org <mailto: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 <mailto: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/20181023/bd959f88/attachment.html>
More information about the Users
mailing list