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

zeng31403 2024-06-12 16:33:02 阅读 50

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

一.添加飞书机器人

1.1 添加飞书机器人过程

在群的右上角点击折叠按键…选择 设置

在这里插入图片描述

群机器人中选择 添加机器人

在这里插入图片描述

选择自定义机器人,通过webhook发送消息

在这里插入图片描述

弹出的信息中有webhook地址,选择复制。

安全设置后续可以设置,比如将信任的IP地址加入IP白名单。

选择仅群主和添加者可以编辑移除机器人。

在这里插入图片描述

至此,群机器人添加成功。

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

机器人概述:机器人概述

发送复杂信息可使用消息卡片,在后续有详细说明,此处只发送简单信息。

简单信息格式

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

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

报错了,因此先要安装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.3 python发送webhook消息

简单格式,只有文本

{ "msg_type":"text","content":{ "text":"测试简单信息"}} 富文本格式,支持

{ "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"}] ] } } } }

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

import requestsimport jsonmsg = { "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.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 hashlibimport base64import hmacdef 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

二.消息卡片搭建工具

2.1 了解消息卡片搭建工具

消息卡片搭建工具

是飞书的卡片消息格式制作工具,即自定义的消息模板,可以为飞书开发提供丰富的消息格式。

以下为示例格式:

在这里插入图片描述

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

elements为卡片的内容:

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

加粗 **张三** 张三斜体 *斜体* 斜体斜体加粗 ***张三*** 张三删除 ~~张三~~ 张三颜色 <font color=red> 张三<font> 张三链接 [张三](https://www.feishu.cn) 张三 第二部分为图片,alt为图片提示,migkey为图片索引,定位到拖动上传的图片第三部分为按钮,在actions中定义了按钮文字content,以及按钮类型primary以及跳转地址url第四部分为标题header,定义了卡片标题title和模板template

在这里插入图片描述

{ "config": { "wide_screen_mode": true }, "elements": [ { "tag": "markdown", "content": "请单件文档查看昨天讨论的方案相关飞书文档,注意作者为 <font color=red> **张三** <font> 版本为 \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" } }}

在这里插入图片描述

定义完成以后,可以利用"向我发送预览",查看效果。

开发者小助手会将消息推送给作者。

在这里插入图片描述

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" } } }}

再次调用上面的Python程序,将msg改为卡片内容发送:

得到卡片消息效果:

在这里插入图片描述

以上,利用python通过机器人发送webhook消息就完成了。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。