加入新代理后如何获取twilio会议中的参与者列表

时间:2018-11-29 07:39:42

标签: node.js twilio twilio-api

我正在研究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的位置都会更改。地图有问题吗?

1 个答案:

答案 0 :(得分:0)

这里是Twilio开发人员的传播者。

首先,您有时会收到主管呼叫sid,有时却不是,因为主管参加会议时您的API调用处于竞争状态。我将依赖于呼叫创建API请求返回的sid,而不是参与者列表。

列出呼叫中的参与者没有隐式顺序,因此您可能会发现,座席和呼叫者在给定不同呼叫的情况下被切换。在这种情况下,我可能会在呼叫开始时以某种方式存储座席和呼叫者的呼叫sid。然后,您可以参考有关谁是代理人和谁是呼叫者的记录,而不必联系API。

我对您的设置不了解太多,因此我无法提出任何可以帮助您解决问题的建议。我希望这可以使您朝正确的方向前进。