如果我将呼叫挂起,则表示主号码处于挂起状态,但辅助号码已断开。。
$arrR = array();
$callSid = "sample callsid here";
$client = new Client(SmsSpool::$arrTwilioSetting['sid'],
SmsSpool::$arrTwilioSetting['auth_token']);
$rr = array(
"url" => "http://demo.twilio.com/docs/voice.xml",
"method" => "POST"
);
$call = $client->calls($callSid)->update($rr);
$op = $call->to;
$arrR[] = $op;
return $arrR;
在这里,它在主呼叫保持时工作,并断开辅助呼叫方的连接。
请引导我取消挂断电话。
这里是Twilio开发人员的传道者。
处理挂起电话的最简单方法是使用会议来主持电话。一旦您有与会者参加会议,您可以通过向与会者资源发出更新请求,将hold
设置为True
,并为保持音乐设置holdUrl
来将他们置于暂停状态。
$participant = $client
->conferences("CFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
->participants("CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
->update([
"hold" => True,
"holdUrl" => "http://www.myapp.com/hold_music"
]);
然后,您可以再次更新参与者,将hold
设置为False
以使他们返回呼叫。
如果你想使用常规呼叫,还有更多的工作要做。正如你所发现的,当你更新呼叫的一个分支以将其发送到其他地方时,另一个分支会完成呼叫并挂断。为了解决这个问题,你需要为另一条腿提供一个地方。您可以通过在<Dial>
之后提供更多的TwiML来实现这一点。
<Response>
<Dial>+CUSTOMER_NUMBER</Dial>
<Redirect>https://example.com/hold</Redirect>
</Response>
在上面的TwiML中,如果您更新调用的另一个分支,则<Dial>
将完成,调用将转到<Redirect>
(尽管您可以在此处放置任何TwiML)。解除呼叫时,需要重新连接呼叫的两个分支。最好通过<Enqueue>
取消挂起的呼叫,然后在取消挂起时,将另一条腿更新为<Dial>
并将其更新为<Queue>
。
但是,正如我所说,使用<Conference>
比像这样处理单独的调用腿要容易得多。