我一直在使用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功能。我一直在得到结果,但是有没有其他可用的解决方案。
答案 0 :(得分:1)
这里是Twilio开发人员的传播者。
在您返回TwiML创建会议时,尚无会议资源,因此在该阶段无法获取会议SID。
正如您所描述的,您可以使用会议资源的名称list conferences and filter。但是,您在返回TwiML时无法列出会议,因为当时尚未创建该会议。
我建议您使用<Conference>
TwiML的statusCallback
attribute来设置一个URL以回调到会议开始时的时间,而不是设置可能有点麻烦的超时。在该回调的参数中,您将获得ConferenceSid
。