问题描述
我正在使用 Studio 流程来管理对呼叫我们号码的最终用户进行身份验证,并假设他们通过身份验证,然后将他们添加到电话会议中 - 但是这样我就可以设置用于开始电话会议的各种参数,我正在尝试在从 Studio 调用的函数中启动加入会议功能。
例如: 如果确认最终用户,Studio 流程中的下一步将调用一个名为“开始调用”的函数。传递给开始调用函数的变量包括会议名称。
exports.handler = function(context,event,callback) {
console.log('Function - /startCall');
const conference_id = event.conference_id;
let twiml = new Twilio.twiml.VoiceResponse();
twiml.say('Please wait while we dial you into the call.');
twiml.dial().conference(conference_id);
console.log('TWIML',twiml);
return callback(null,twiml);
};
然后返回到 Studio Flow,因此作为测试,我的下一部分是将第 3 方拨入同一个电话会议 - 所以从 Flow 到一个名为 meetingOperator 的函数的另一个请求:
exports.handler = function (context,callback) {
console.log('Function - /conferenceOperator');
const conference_id = event.conference_id;
console.log('CONFERENCE',conference_id );
const twilioClient = context.getTwilioClient();
console.log(twilioClient.studio);
twilioClient.studio.flows('FWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx').executions.create({
to: '+44xxxxxxxxxxxx',from: '+44xxxxxxxxxx',parameters: JSON.stringify({
call_id: conference_id
})
})
.then(function(execution) {
console.log(execution.sid);
callback(null,execution.sid);
})
.catch(error => {
console.error(`problem with request: ${error.message}`);
callback(error.message);
});
该号码已拨出,并被搁置,等待会议开始。但是,在此流程开始的那一刻,原始入站呼叫将被丢弃。查看 Studio 流程的日志,它显示为仍在执行。
所以问题:
- 为什么呼入电话会掉线?
- 我是否正确处理了通过该功能将呼入呼叫转移到会议的问题?
- 我错过了什么陷阱?
谢谢
解决方法
我现在已经解决了这个问题 - 流程的另一部分出现了一个奇怪的错误,它返回了一个 http-error 500 - 这导致整个流程失败,因此结束调用而不报告!