我正在研究Twilio电话会议场景。我的代码段在实时电话会议中添加了主管。现在,我想将“客户” callid,“代理” callid和“主管” callid发送到前端。使用以下代码段。因此,根据我的情况,将返回三个callid,但是在某些情况下,将返回两个call sid。我不知道为什么,但是我已经通过if else结构处理了这种情况。但是面临的问题是,主管sid总是返回正确的值,但在某些情况下会切换agentcallsid和clientcallsid。需要任何其他方法的指导。代码段如下所示。
const joinConference = (conferenceSid, supervisorName, callback) => {
let participantsArray = [];
client.conferences(conferenceSid)
.participants
.create({
from: '+18xxxxxxxxx',
to: `client:${supervisorName}`
})
.then(participant => {
const supervisorCallSid = participant.callSid;
console.log(`Supervisor Call Sid in Join conference is ${supervisorCallSid}`);
client.conferences(conferenceSid)
.participants
.list((error, results) => {
if (error) {
console.error(error);
return;
}
participantsArray = results.map((participantsResult, index) => {
return {
[`agent${index}CallSid`]: participantsResult.callSid
}
});
console.log(participantsArray);
let result = {};
if (participantsArray.length > 2) {
result = {
"supervisorCallSid": participantsArray[0].agent0CallSid,
"clientCallSid": participantsArray[1].agent1CallSid,
"agentCallSid": participantsArray[2].agent2CallSid
}
} else {
result = {
"supervisorCallSid": supervisorCallSid,
"clientCallSid": participantsArray[0].agent0CallSid,
"agentCallSid": participantsArray[1].agent1CallSid
}
}
callback(result);
})
})
.done();
}
问题在于,每次调用该函数时,agentcallsid和clientcallsid的位置都会更改。地图有问题吗?
答案 0 :(得分:0)
这里是Twilio开发人员的传播者。
首先,您有时会收到主管呼叫sid,有时却不是,因为主管参加会议时您的API调用处于竞争状态。我将依赖于呼叫创建API请求返回的sid,而不是参与者列表。
列出呼叫中的参与者没有隐式顺序,因此您可能会发现,座席和呼叫者在给定不同呼叫的情况下被切换。在这种情况下,我可能会在呼叫开始时以某种方式存储座席和呼叫者的呼叫sid。然后,您可以参考有关谁是代理人和谁是呼叫者的记录,而不必联系API。
我对您的设置不了解太多,因此我无法提出任何可以帮助您解决问题的建议。我希望这可以使您朝正确的方向前进。