• 飞书开发学习笔记(七)-添加机器人及发送webhook消息


    飞书开发学习笔记(七)-添加机器人及发送webhook消息

    一.添加飞书机器人

    1.1 添加飞书机器人过程

    在群的右上角点击折叠按键…选择 设置
    在这里插入图片描述
    群机器人中选择 添加机器人
    在这里插入图片描述
    选择自定义机器人,通过webhook发送消息
    在这里插入图片描述
    弹出的信息中有webhook地址,选择复制。
    安全设置后续可以设置,比如将信任的IP地址加入IP白名单。
    选择仅群主和添加者可以编辑移除机器人。
    在这里插入图片描述
    至此,群机器人添加成功。

    1.2 利用webhook使用群机器人发送消息

    机器人概述:机器人概述
    发送复杂信息可使用消息卡片,在后续有详细说明,此处只发送简单信息。
    简单信息格式

    {"msg_type":"text","content":{"text":"request example"}}
    
    • 1

    windows使用cmd命令行发送:

    curl -X POST -H "Content-Type: application/json" -d "{\"msg_type\":\"text\",\"content\":{\"text\":\"request example\"}}" https://open.feishu.cn/open-apis/bot/v2/hook/XXXXXXXXXXXXX
    
    • 1

    报错了,因此先要安装curl
    在这里插入图片描述
    下载curl,下载地址 https://curl.se/download.html
    安装好以后,切换到curl命令目录 重新运行

    curl -X POST -H "Content-Type: application/json" -d "{\"msg_type\":\"text\",\"content\":{\"text\":\"request example\"}}" https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxx
    
    • 1

    群里收到了机器人发来的消息
    在这里插入图片描述
    这只是简单信息,如果复杂一点,则需使用消息卡片搭建工具发送卡片信息。

    1.3 python发送webhook消息

    1. 简单格式,只有文本
    {"msg_type":"text","content":{"text":"测试简单信息"}}
    
    • 1
    1. 富文本格式,支持
    {
    	"msg_type": "post",
    	"content": {
    	        "post": {
    	                "zh_cn": {
    	                        "title": "富文本信息",
    	                        "content": [
    	                                [{ "tag": "text", "text": "富文本信息: "},
    	                                 { "tag": "a", "text": "请查看","href": "http://www.example.com/"},
    	                                 {"tag": "at","user_id": "ou_18eac8********17ad4f02e8bbbb"}] 
    	                                 ]
    	                         }
    	                }
    	            } 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    写个简单的Python程序也可以发送webhook消息,注意消息是要json编码的

    import requests
    import json
    
    msg = {
    "msg_type": "text",
    "content": {"text": "你好"}
    }
    
    webhook_url=" https://open.feishu.cn/open-apis/bot/v2/hook/XXXX"
    
    headers = {
    "Content-type": "application/json",
    "charset":"utf-8"
    }
    
    msg_encode=json.dumps(msg,ensure_ascii=True).encode("utf-8")
    reponse=requests.post(url=webhook_url,data=msg_encode,headers=headers)
    print(reponse)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    发送效果:
    简单信息
    在这里插入图片描述
    富文本信息
    在这里插入图片描述

    1.3 安全设置

    安全设置中有三个选项。

    如果勾选自定义关键词,最多可以同时设置 10 个关键词,多个关键词之间使用回车键间隔。设置后,只有包含至少一个关键词的消息才会被成功发送。
    例如,关键词设置了“应用报警”与“项目更新”,则请求 webhook 的信息中至少需要包含“应用报警”或“项目更新”其中一个关键词。

    如果勾选设置 IP 白名单,支持添加 IP 地址或地址段,最多可设置 10 个,使用回车键间隔。支持段输入,例如 123.12.1.* 或 123.1.1.1/24。设置后,机器人 webhook 地址只处理来自 IP 白名单范围内的请求。

    如果勾选 签名校验,则系统会提供一个密钥,需要利用python等程序制作一个加密算法,生成加密后字符串。
    所校验的签名需要通过时间戳与秘钥进行算法加密,即将timestamp + “\n” + 密钥当做签名字符串,使用 HmacSHA256 算法计算签名,再进行 Base64 编码。其中,timestamp是指距当前时间不超过 1 小时(3600 秒)的时间戳,时间单位:s。例如,1599360473。
    在这里插入图片描述
    python的加密算法,返回sign即为加密后消息

    import hashlib
    import base64
    import hmac
    
    def gen_sign(timestamp, secret):
        # 拼接timestamp和secret
        string_to_sign = '{}\n{}'.format(timestamp, secret)
        hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()
    
        # 对结果进行base64处理
        sign = base64.b64encode(hmac_code).decode('utf-8')
    
        return sign
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    二.消息卡片搭建工具

    2.1 了解消息卡片搭建工具

    消息卡片搭建工具
    是飞书的卡片消息格式制作工具,即自定义的消息模板,可以为飞书开发提供丰富的消息格式。
    以下为示例格式:
    在这里插入图片描述

    2.2 卡片的超文本格式定义##

    elements为卡片的内容:
    1.第一部分卡片文字, tag为markdown,内容Content中,文字常用的格式如下(MarkDown格式)

    • 加粗 **张三** 张三
    • 斜体 *斜体* 斜体
    • 斜体加粗 ***张三*** 张三
    • 删除 ~~张三~~ 张三
    • 颜色 张三 张三
    • 链接 [张三](https://www.feishu.cn) 张三
    1. 第二部分为图片,alt为图片提示,migkey为图片索引,定位到拖动上传的图片
    2. 第三部分为按钮,在actions中定义了按钮文字content,以及按钮类型primary以及跳转地址url
    3. 第四部分为标题header,定义了卡片标题title和模板template
      在这里插入图片描述
    {
      "config": {
        "wide_screen_mode": true
      },
      "elements": [
        {
          "tag": "markdown",
          "content": "请单件文档查看昨天讨论的方案相关飞书文档,注意作者为  **张三**  版本为 \n*002* ,版本 ~~001~~ 已经删除。文件地址是 [https://www.feishu.cn](https://www.feishu.cn),打开次数:${doc_read_num}次""
        },
        {
          "alt": {
            "content": "图片",
            "tag": "plain_text"
          },
          "img_key": "img_v3_025c41g",
          "tag": "img"
        },
        {
          "tag": "action",
          "actions": [
            {
              "tag": "button",
              "text": {
                "tag": "plain_text",
                "content": "打开文档链接"
              },
              "type": "primary",
              "url": "https://nio.feishu.cn/docx/UM8c1oNxnkh"
            }
          ]
        }
      ],
      "header": {
        "template": "blue",
        "title": {
          "content": "查看讨论的飞书文档",
          "tag": "plain_text"
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    在这里插入图片描述
    定义完成以后,可以利用"向我发送预览",查看效果。
    开发者小助手会将消息推送给作者。
    在这里插入图片描述

    2.3 利用Python程序发送webhook卡片

    这里的卡片必须按照下列格式才能用webhook发送。

    {
        "msg_type": "interactive",
        "card": {
            "elements": [{
                    "tag": "div",
                    "text": {
                            "content": "**西湖**,位于浙江省杭州市西湖区龙井路1号,杭州市区西部,景区总面积49平方千米,汇水面积为21.22平方千米,湖面面积为6.38平方千米。",
                            "tag": "lark_md"
                    }
            }, {
                    "actions": [{
                            "tag": "button",
                            "text": {
                                    "content": "更多景点介绍 :玫瑰:",
                                    "tag": "lark_md"
                            },
                            "url": "https://www.example.com",
                            "type": "default",
                            "value": {}
                    }],
                    "tag": "action"
            }],
            "header": {
                    "title": {
                            "content": "今日旅游推荐",
                            "tag": "plain_text"
                    }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    再次调用上面的Python程序,将msg改为卡片内容发送:
    得到卡片消息效果:
    在这里插入图片描述
    以上,利用python通过机器人发送webhook消息就完成了。

  • 相关阅读:
    [附源码]计算机毕业设计springboot校园订餐系统
    发现广告的是什么?
    UVa 762 - We Ship Cheap
    Ubuntu的SELinux
    【Linux】线程安全问题①——如何实现资源访问互斥(附图解与代码实现)
    12种发朋友圈黄金模板
    史上最全的mysql数据类型汇总(下)
    数学建模学习笔记(8):图论最短路径问题
    Banana Pi开源社区开源硬件瑞芯微RK3568/RK3588全国产化支持计划
    java计算机毕业设计web家庭财务管理系统MyBatis+系统+LW文档+源码+调试部署
  • 原文地址:https://blog.csdn.net/qq_43662503/article/details/134346625