Twilio - 返回后,statusCallback 中的 Twiml 不会被执行

问题描述 投票:0回答:1

在我们的后端,我们正在向多个客户端发出调用,一切都按预期进行,当调用完成时,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。

twilio twilio-api twilio-twiml
1个回答
0
投票

我发现了这个问题,我需要将 URL 添加到拨号盘,而不是客户端。我太深了一层。所以我需要做的是:

twiml.dial(
{ action: `handleFinishedCall?customerId=${customerId}&widgetId=${
        nextWidget ? nextWidget : ""
      }&caller=${caller}`,
 method: "POST"
})

dial.client(idToCall)
© www.soinside.com 2019 - 2024. All rights reserved.