在 twilio 的通话结束时发出 API 请求

Make an API request on call end in twilio

我正在寻找一种表达 'Thank you' 并在 Twilio 函数执行结束时进行 API 调用的方法。

像这样:

        responseObject = {
                "actions": [
                    {
                        "say": "Thank you!"
                    },
                    {
                        "redirect": {
                            "uri": "API_LINK",
                            "method": "POST"
                        }
                    }
                ]
            }

遗憾的是,如果您有重定向,twilio 会忽略所有其他消息。我试图通过首先重定向到 TwiML 来解决这个问题:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say>Thank you!</Say>
      <Redirect method="POST">API_LINK</Redirect>
</Response>

但是上面的也不起作用 - 它在最后的 'Thank you!' 之后说应用程序错误。此外,我正在传递查询参数以及 API 调用:https://example.link?a=value&b=value。不确定,如何使用 TwiML 传递它。

此 API 请求应该向 Microsoft 团队频道发送消息。

这里是 Twilio 开发人员布道者。

首先,您似乎在谈论自动驾驶仪对话的结束,而不是功能执行的结束。如果是这种情况,您将收到错误,因为您正在混合使用 Autopilot Actions 和 TwiML。当您与 Autopilot 助手交互时,您应该只使用 Actions JSON 响应它,而不是使用 TwiML。

此外,Autopilot 将期望对其发出的请求的所有响应(包括通过重定向)以操作 JSON 响应。因此不建议使用重定向操作发出 API 请求。

相反,我建议您使用 Twilio Function(或您自己的后端)从 JavaScript 发出 API 请求并以“say”动作响应.

Twilio 函数可能如下所示:

exports.handler = function (context, event, callback) {
  // make request to Teams API
  // I'm not sure the API method you are using, but use an http client like got, superagent or node-fetch, or a dedicated API client if there is one available

  // create your actions
  const actions = {
    actions: [
      {
        "say": "Thank you!"
      }
    ]
  };

  // return the actions JSON
  callback(null, actions);
});

或者,您可以设置为 receive an Autopilot webhook when a dialogue ends。通过这种方式,您可以仅通过“say”操作来响应 Autopilot,这将导致对话结束并触发 webhook。然后在您的 webhook 处理程序中,您可以向 Teams 发出 API 请求。

如果有帮助请告诉我。