将 Twilio 警报直接推送到 Slack Channel

问题描述 投票:0回答:2
我不确定是否有办法,但我可以直接将 Twilio 警报从 Twilio 控制台发送到 Slack 通道,而不使用 Python 或任何监听 Twilio 请求并将数据发送到 Slack 通道的 Web 框架吗?

使用 Twilio 控制台,一旦出现新错误,我可以从那里触发 Webhook,但 Slack 需要 API 中的数据。

谢谢你

twilio slack twilio-api
2个回答
4
投票
这里是 Twilio 开发者布道者。

看起来 Slack 期望 webhooks 采用特定格式的 JSON 格式,最简单的形式是具有

text

 属性的对象。

Twilio webhook 以

application/x-www-form-urlencoded

 格式发送,并带有 
此处列出的参数

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

您似乎不愿意自己构建和托管一些东西。如果托管是问题,我可以建议您查看

Twilio Functions 来构建它。 Twilio Functions 允许您托管可响应传入 HTTP 请求的 JavaScript 函数。

可以将这些警报 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

 向 Slack webhook URL 发出 HTTP 请求。在这种情况下,Webhook URL 存储在环境变量中。
    


0
投票
看起来 twilio 改变了一些东西,这里稍微更新了 @philnash 代码,对我来说效果很好:

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 { const { default: got } = await import('got') await got(slackUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text: message }) }) callback(null, '<Response/>') } catch (error) { callback(error) } }
    
© www.soinside.com 2019 - 2024. All rights reserved.