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
的电话,然后重试。