当代理将呼叫转移给另一个代理商时,Twilio如何断开呼叫



e.g .->如果代理A向用户拨打电话,并且现在代理A转到呼叫the Agent B现在如何从呼叫中解开连接代理A并让用户和B仍在电话。

1.当我打电话时,我使用此twiml。

<Response>
        <Dial  callerId="id">
            <Number  statusCallback="statusCallbackurl" statusCallbackMethod="POST">ag1_num</Number>
        </Dial>
        <Redirect>music_url</Redirect> 
    </Response>

2.我是使用更新方法传输呼叫,并使用此代码拨打其他代理 -

function transfer_call($Sid,&ag2_num){
    $childCalls = $this->client->calls->read(array("ParentCallSid" => $Sid));
    $childSid = $childCalls[0]->sid;
    $rr = array(
        "url" => "tr_url".$ag2_num,
        "method" => "POST"
    );
    $call = $this->client->calls($childSid)->update($rr);
    return $call->to;
}

,在tr_url上,我使用了twiml-

<Response>
  <Dial>ag2_num</Dial>
  <Redirect>disconnectedcallurl-usingemptyqueue(todisconnectthefirstagent)</Redirect>
</Response> 

并断开呼叫,我调用了此方法并通过callID-

function disconnect_call($callsid){
        $rr = array("status" => "completed");
        $call = $this->client->calls($callsid)->update($rr);
        echo $call->direction;
    }

我使用呼叫SID将代理与呼叫断开连接,并断开整个呼叫的连接。

twilio开发人员在这里。

在您说转移后直接使用disconnect_call方法的评论中,并且您都使用相同的SID。这意味着您转移了从第一个代理挂断的呼叫,但随后您也立即挂断了转移的电话,因此它永远不会拨打第二代理。

您不需要断开第一个代理的连接,将呼叫从他们那里转移会做到这一点。删除您对disconnect_child的电话,然后重试。

最新更新