微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 twilio 调用结束时发出 API 请求

如何解决在 twilio 调用结束时发出 API 请求

我正在寻找一种方式来表达“谢谢”,并在 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>

但以上也不起作用 - 在“谢谢!”之后显示应用程序错误在末尾。此外,我将查询参数与 API 调用一起传递:https://example.link?a=value&b=value。不确定,如何使用 TwiML 传递它。

这个 API 请求应该向微软团队频道发送消息。

解决方法

这里是 Twilio 开发者布道者。

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

此外,Autopilot 将期望对它发出的请求的所有响应(包括通过重定向)以 Actions 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。通过这种方式,您可以仅通过“说”操作来响应 Autopilot,这将导致对话结束并触发 webhook。然后在您的 webhook 处理程序中,您可以向 Teams 发出 API 请求。

让我知道这是否有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。