拨打twilio呼叫时如何获取会议Sid

时间:2018-12-12 14:38:04

标签: node.js twilio twilio-api

我一直在使用twilio,使用Node.js,并在两个Web端点之间拨打电话。一个是客户,另一个是代理。我正在使用以下代码拨打电话。

    function dialCall(calledNumber, url) {

    client.calls.create({
        to: `client:${calledNumber}`,
        from: twilioNumber,
        url: url
      })
      .then(call => call.sid));
}

我正在使用以下twiml建立通话。

 const generateTwiml = (conferenceName) => {
      let twimlResponse = new VoiceResponse();
  twimlResponse.say(`Welcome to unity dialer.`, {
    voice: 'alice',
  });
  const dial = twimlResponse.dial({
    timeLimit: '600',
  });
  dial.conference({
  startConferenceOnEnter: true,
  endConferenceOnExit: true
}, "Test Room");
  return twimlResponse.toString();
};

我已经成功呼叫了座席和客户,并获得了两个呼叫的callSid。但是,我的问题是,在这个时间点上,我还希望获得会议Sid以及在拨打会议电话。有什么方法可以做到这一点。根据文档,有一种使用会议名称和状态来获取会议的方法。但是,如果我使用这段时间,由于竞赛条件而不会返回相同的值,并且我必须为相同的任意延迟实现set time out功能。我一直在得到结果,但是有没有其他可用的解决方案。

1 个答案:

答案 0 :(得分:1)

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

在您返回TwiML创建会议时,尚无会议资源,因此在该阶段无法获取会议SID。

正如您所描述的,您可以使用会议资源的名称list conferences and filter。但是,您在返回TwiML时无法列出会议,因为当时尚未创建该会议。

我建议您使用<Conference> TwiML的statusCallback attribute来设置一个URL以回调到会议开始时的时间,而不是设置可能有点麻烦的超时。在该回调的参数中,您将获得ConferenceSid