更新时间:2024-12-17 GMT+08:00
通过SMN发送到FunctionGraph实现转发至Slack
应用场景
本文介绍了如何通过在FunctionGraph上转发SMN订阅消息至Slack。Slack是由Slack Technologies所开发的一款基于云计算的即时通信软件,Slack没有适配SMN发送https协议消息的接口,无法直接添加Slack订阅并获取消息,需要通过在FunctionGraph上进行转发,转发到指定URL。
前提条件
- 已创建SMN消息主题,此处以smn-test为例,具体操作请参见创建主题。
- 已下载Slack软件。
Slack配置
以下操作仅供参考,详情请参见Slack官网。
- 在Slack上创建或选择自己需要的channel。
图1 创建channel
- 依次选择“Apps > Manage > Browse apps”。
图2 选择Apps
- 在搜索框中查找“Incoming Webhooks”,单击“Add”。
图3 添加Incoming Webhooks
- 单击“Configuration”到配置页面,在配置页面上获取Webhook URL。
图4 选择配置页面
图5 获取Webhook URL
- 保存选择的Webhook URL。
图6 保存Webhook URL
函数配置
- 登录函数工作流控制台,在左侧的导航栏选择“函数 > 函数列表”。
- 单击右上方的“创建函数”,进入“创建函数”页面,使用模板创建函数。
- 参考图7,选择如下模板并单击“使用模板”。
- 输入函数名称,选择已创建的委托,其他设置保持不变,单击“创建函数”,进入配置详情页。
图8 填写基本信息
- 在配置详情页选择“代码”页签,在index.py里面编辑代码。
图9 编辑代码
发给Slack的代码示例如下:(以下代码片段仅供参考,使用时需要将参数修改为Slack上获取的Webhook URL,或根据需要做其他处理)
# -*- coding:utf-8 -*- import json import requests def handler (event, context): # 公共部分:在这里构造目标地址需要的body体字段, event是SMN发出去的全部字段 payload = {'text': event["record"][0]["smn"]["message"]} # 转发部分:调用Slack接口,转发到Slack平台 try: webhook_url = '填写Slack上获取的Webhook URL' response = requests.post(webhook_url, json=payload) response.raise_for_status() print('Message sent successfully') except requests.exceptions.RequestException as e: print(f"Error sending message to Slack: {e}") return event
- 编辑完成后,单击“Ctrl+S”保存,更新代码。
- 单击“创建触发器”,弹出“创建触发器”对话框。
- 设置以下信息。
- 触发器类型:选择“消息通知服务 (SMN)”。
- 主题名称:选择主题名称,例如:smn-test。
图10 创建触发器
- 单击“确定”。创建完成后,发送给当前主题的所有消息通过FunctionGraph转发到需要的地址。
SMN配置
- 登录消息通知服务控制台,在左侧的导航栏选择“主题管理” > “主题”。
- 在主题列表中选择主题“smn-test”,在右侧“操作”栏单击“添加订阅”。
- 设置以下信息。
- 协议:选择“FunctionGraph(函数)”。
- 订阅终端:选择已创建的函数,例如:smn-test。
图11 添加订阅
- 单击“确定”,完成订阅添加。
- 在主题列表中选择主题“smn-test”,在右侧“操作”栏单击“发布消息”。
- 设置以下信息。
- 消息类型:选择“文本消息”。
- 消息内容:输入消息内容。
- 单击“确定”,完成消息发布。