文档首页/ 消息通知服务 SMN/ 最佳实践/ 通过SMN发送到FunctionGraph实现转发至Slack
更新时间: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软件。

操作流程

通过SMN发送到FunctionGraph实现转发至Slack的操作步骤如下:

  1. Slack配置
  2. 函数配置
  3. SMN配置

Slack配置

以下操作仅供参考,详情请参见Slack官网

  1. 在Slack上创建或选择自己需要的channel。
    图1 创建channel
  2. 依次选择“Apps > Manage > Browse apps”。
    图2 选择Apps
  3. 在搜索框中查找“Incoming Webhooks”,单击“Add”
    图3 添加Incoming Webhooks
  4. 单击“Configuration”到配置页面,在配置页面上获取Webhook URL。
    图4 选择配置页面
    图5 获取Webhook URL
  5. 保存选择的Webhook URL。
    图6 保存Webhook URL

函数配置

  1. 登录函数工作流控制台,在左侧的导航栏选择“函数 > 函数列表”。
  2. 单击右上方的“创建函数”,进入“创建函数”页面,使用模板创建函数。
  3. 参考图7,选择如下模板并单击“使用模板”。
    图7 选择模板
  4. 输入函数名称,选择已创建的委托,其他设置保持不变,单击“创建函数”,进入配置详情页。
    图8 填写基本信息
  5. 在配置详情页选择“代码”页签,在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
  6. 编辑完成后,单击“Ctrl+S”保存,更新代码。
  7. 单击“创建触发器”,弹出“创建触发器”对话框。
  8. 设置以下信息。
    • 触发器类型:选择“消息通知服务 (SMN)”。
    • 主题名称:选择主题名称,例如:smn-test。
    图10 创建触发器
  9. 单击“确定”。创建完成后,发送给当前主题的所有消息通过FunctionGraph转发到需要的地址。

SMN配置

  1. 登录消息通知服务控制台,在左侧的导航栏选择“主题管理” > “主题”
  2. 在主题列表中选择主题“smn-test”,在右侧“操作”栏单击“添加订阅”。
  3. 设置以下信息。
    • 协议:选择“FunctionGraph(函数)”。
    • 订阅终端:选择已创建的函数,例如:smn-test。
    图11 添加订阅
  4. 单击“确定”,完成订阅添加。
  5. 在主题列表中选择主题“smn-test”,在右侧“操作”栏单击“发布消息”。
  6. 设置以下信息。
    • 消息类型:选择“文本消息”。
    • 消息内容:输入消息内容。
  7. 单击“确定”,完成消息发布。

发送效果展示

发布消息完成后,即可在Slack终端接收到对应的消息。发送效果如图12所示。

图12 Slack接收消息