如何不借助Python等框架直接将Twilio告警推送至Slack频道
解决方案
可以实现,无需自行部署Python或其他Web框架监听服务,直接用Twilio平台内置的Serverless Functions做Twilio告警到Slack的格式适配即可,操作步骤如下:
- 第一步:在Slack侧创建传入Webhook
进入Slack的应用集成页面,创建一个传入Webhook,绑定目标告警频道,获取生成的Slack Webhook URL备用。 - 第二步:在Twilio控制台创建格式转换函数
进入Twilio控制台的Functions and Assets板块,新建一个公共访问权限的HTTP触发函数,函数内仅需要实现逻辑:接收Twilio告警参数、按Slack要求组装消息、推送到Slack Webhook即可。
最简示例代码参考:exports.handler = function(context, event, callback) { // 按Slack要求组装告警消息,可自定义字段和样式 const slackPayload = { text: `Twilio告警触发
错误代码:${event.ErrorCode}
错误信息:${event.ErrorMessage}
触发时间:${event.Timestamp}
关联服务SID:${event.ResourceSid}`
};
const fetch = require('node-fetch'); // 替换为你自己的Slack传入Webhook地址 fetch('YOUR_SLACK_WEBHOOK_URL', { method: 'POST', body: JSON.stringify(slackPayload), headers: { 'Content-Type': 'application/json' } }) .then(() => callback(null, { statusCode: 200 })) .catch(err => callback(err));
};
- 第三步:替换告警触发地址 把你之前配置的Twilio错误告警规则的触发Webhook地址,替换为第二步创建的Twilio Function的访问地址,保存配置即可生效。 # 注意事项 - 必须将Twilio Function的访问权限设置为`public`,否则Twilio的告警服务无法触发函数执行 - 如果用到第三方依赖,可在Twilio Functions的依赖配置页自行添加,比如示例中用到的`node-fetch` - 可根据需求调整Slack消息的格式,比如添加@指定成员、卡片样式、附件等,仅需调整函数内组装的`slackPayload`结构即可 内容的提问来源于stack exchange,提问作者Amodon
相关产品推荐
相关产品推荐

