在我们的应用程序中,我们有代理人进行外拨电话。所有入站和出站呼叫都转换为会议,因此我们可以轻松地将呼叫置于保持状态,转接呼叫和中等呼叫。
以上代码中的8次完美无瑕地运行
这是我们的index.js文件的一部分。我们进行外拨呼叫时会调用会议功能。
function conference(sid1, sid2, i, agent){
if(i < 240){
setTimeout(function(){
i++;
client.calls(sid2).get(function(err, call) {
if(call.status == 'in-progress'){
client.calls(sid2).update({
url:"https://" + config.socket + "/inbound/trans/agent/" + agent,
method: "POST"
}, function(err, call) {
s1 = true;
if(err){console.log("Error 299: "); console.log(err)};
});
console.log("SID 2: " + sid2);
client.calls(sid1).update({
url:"https://" + config.socket + "/inbound/trans/agent/" + agent,
method: "POST"
}, function(err, call) {
s2 = true;
if(err){console.log("Error 299: "); console.log(err)};
});
}else if(call.status == 'completed'){
}else{
conference(sid1, sid2, i, agent);
}
});
}, 1000);
}
}
router.post('/inbound/trans/agent/:agent', function(req, res, next){
res.locals = {
name: req.params.agent,
}
res.render('twilio/connect');
});
twilio /连接
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Conference record="record-from-start" startConferenceOnEnter="true" endConferenceOnExit="true">
{{name}}
</Conference>
</Dial>
</Response>
现在正如我所说的那样,8/10次这完美无缺。现在另外2/10次,由sid1识别的出站呼叫在接听时就会丢失。
在测试中,我们拨打同一部手机10次,并在接听电话时丢了10次。
当发生这种下降时,日志显示没有异常。我们没有发起任何活动。
它只是从调用twilio / connect和播放音乐到我们/回调阶段的呼叫结束。