한국어

소프트스위치

온누리070 플레이스토어 다운로드
    acrobits softphone
     온누리 070 카카오 프러스 친구추가온누리 070 카카오 프러스 친구추가친추
     카카오톡 채팅 상담 카카오톡 채팅 상담카톡
    
     라인상담
     라인으로 공유

     페북공유

   ◎위챗 : speedseoul


  
     PAYPAL
     
     PRICE
     

pixel.gif

    before pay call 0088 from app


1.6.2.  Call pickup

https://opensips.org/html/docs/modules/3.2.x/event_routing.html


The scenario is Alice calling to bob, Bob does not pickup and Charlie is performing call pickup (to get the call from Alice)

We use notify_on_event to link the two calls: the one from Alice to Bob and the one from Charlie to call pickup service.

Schematics: when we send a call to a user within a pickup group, we subscribe to see if there is any call to the pickup service (from another member of the same pickup group). 

When we have a call to the pickup service, we raise from script an event - this event will be notified to the first call and we cancel the branches to Bob and inject the registered contacts for the user calling to pickup group (Charlie).


... route[handle_call] if ($rU=="33") { ## this is a call to the pickup service ## (Charlie calling 33) # reject incoming call as we will generate an back call # from the original call (Alice to Bob) t_newtran(); send_reply(480,"Gone"); # raise the pickup custom event # with pickup group 1 and picker being Charlie (caller) $avp(attr-name) = "group"; $avp(attr-val) = "1"; $avp(attr-name) = "picker"; $avp(attr-val) = $fu; raise_event("E_CALL_PICKUP", $avp(attr-name), $avp(attr-val)); exit; } else { ## this is a call to a subscriber ## (Alice calls Bob) # apply user location if (!lookup("location","m")) { send_reply(404, "Not Found"); exit; } # prepare transaction for branch injection; it is mandatory # to create the transaction before the subscription, otherwise # the EBR module will not pass the transaction ID into the # notification route t_newtran(); # subscribe to a call pickup event, but for our group only $avp(filter) = "group=1"; notify_on_event("E_CALL_PICKUP",$avp(filter), "handle_pickup", 20); t_relay(); } exit; } route[handle_pickup] { xlog("call picked by $avp(picker), fetching its contacts\n"); if (lookup("location","", $avp(picker))) { # take the contacts retured by lookup() (for Charlie) # and inject them into the original call, but also cancel # any existing ongoing branch (ringing to Bob) t_inject_branches("msg","cancel"); } }


조회 수 :
9980
등록일 :
2023.07.27
16:20:30 (*.7.25.5)
엮인글 :
http://webs.co.kr/index.php?document_srl=3349444&act=trackback&key=ad0
게시글 주소 :
http://webs.co.kr/index.php?document_srl=3349444
List of Articles