将 Twilio 警报直接推送到 Slack Channel

Push Twilio alerts to Slack Channel directly

我不确定是否有办法,但我可以直接从 Twilio 控制台向 Slack 通道发送 Twilio 警报,而无需使用 Python 或任何将侦听 Twilio 请求并将数据发送到 Slack 通道的 Web 框架?

使用 Twilio 控制台,一旦出现新错误,我可以从那里触发 webhook,但 Slack 需要 API.

中的数据

谢谢

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

看起来好像 Slack 期望 webhooks 以特定格式的 JSON 格式,最简单的形式是具有 text 属性.

的对象

Twilio webhook 以 application/x-www-form-urlencoded 格式发送 the parameters listed here

为了将其转换为 Slack 能够理解的 webhook,您需要一些代码或服务来将表单编码请求转换为具有正确字段的 JSON 请求。

您似乎不太愿意自己构建和托管一些东西。如果托管有问题,我建议您查看 Twilio Functions 来构建它。 Twilio Functions 允许您托管 JavaScript 可以响应传入 HTTP 请求的函数。

可以将这些警报 webhook 转换为 Slack webhook 的 Twilio 函数示例可能如下所示:

const got = require('got');

exports.handler = async function (context, event, callback) {
  const slackUrl = context.SLACK_URL;
  const { ErrorCode, Description, AccountSid } = event;

  const message = `New error for Twilio Account ${AccountSid}.\n\n${ErrorCode}: ${Description}`

  try {
    await got(slackUrl, {
      method: "POST",
      headers: {
        "Content-Type": "application/json"
      },
      body: JSON.stringify({ text: message })
    })
    callback(null, "<Response/>");
  } catch(error) {
    callback(error);
  }
}

以上代码未经测试,但应该会给您一个良好的开端。它使用 got to make the HTTP request to the Slack webhook URL. In this case, the webhook URL is stored in an environment variable.