在我们的后端,我们正在向多个客户端发出调用,一切都按预期进行,当调用完成时,Webhook 将按预期发送到我们的 statusCallback URL。从那时起,我们正在对呼叫进行更多工作,并使用 Twiml 进行响应,以便在无人接听并播放消息等情况下保持呼叫继续进行。端点按预期返回 Twiml,但无论如何呼叫都会中断。不确定发生了什么,但任何见解都值得赞赏。
这是向客户端发出调用的代码部分,它按预期工作,并且在调用“完成”后调用 statusCallback。:
await dial.client(
{
statusCallbackEvent: "completed",
statusCallback: `handleFinishedCall?customerId=${customerId}&widgetId=${
nextWidget ? nextWidget : ""
}&caller=${caller}`,
statusCallbackMethod: "POST",
},
idToCall
);
这是接收回调的端点:
router.post("/handleFinishedCall", async (req, res) => {
var twimlObject = new VoiceResponse();
twimlObject.say('some message');
res.type("text/xml");
res.send(twimlObject.toString());
res.status(200).send();
});
回调 URL 完成后,响应将被发送回来
<?xml version="1.0" encoding="UTF-8"?><Response><Say>some message</Say></Response>
我不太明白为什么通话直接结束而不是继续返回 Twiml。
我发现了这个问题,我需要将 URL 添加到拨号盘,而不是客户端。我太深了一层。所以我需要做的是:
twiml.dial(
{ action: `handleFinishedCall?customerId=${customerId}&widgetId=${
nextWidget ? nextWidget : ""
}&caller=${caller}`,
method: "POST"
})
dial.client(idToCall)