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

飞书开发学习笔记(七)-添加机器人及发送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消息

  1. 简单格式,只有文本
{"msg_type":"text","content":{"text":"测试简单信息"}}
  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"}] ]}}} 
}

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

import requests
import 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 hashlib
import base64
import hmacdef gen_sign(timestamp, secret):# 拼接timestamp和secretstring_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) 张三
  1. 第二部分为图片,alt为图片提示,migkey为图片索引,定位到拖动上传的图片
  2. 第三部分为按钮,在actions中定义了按钮文字content,以及按钮类型primary以及跳转地址url
  3. 第四部分为标题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消息就完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/146216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子学会C/C++编程等级考试2021年09月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数字判断 输入一个字符,如何输入的字符是数字,输出yes,否则输出no 输入 一个字符 输出 如何输入的字符是数字,输出yes,否则输出no 样例1输入 样例1输入 5样例1输出 yes样例2输入 A 样例2输出 …

MySQL中全文索引和普通索引的区别

MySQL中的全文索引&#xff08;Full-Text Index&#xff09;和普通索引&#xff08;比如B-Tree索引&#xff09;是为了提高查询效率而设计的&#xff0c;但它们适用于不同的场景和查询类型。 普通索引&#xff08;如B-Tree索引&#xff09; 适用场景&#xff1a;普通索引适用于…

Ubuntu搭建FTP服务

在Ubuntu上配置FTP服务通常使用vsftpd&#xff08;Very Secure FTP Daemon&#xff09;是一种常见的选择。以下是在Ubuntu上配置vsftpd的基本步骤&#xff1a; 步骤 1&#xff1a;安装vsftpd 打开终端&#xff0c;并运行以下命令以安装vsftpd&#xff1a; sudo apt-get upda…

【算法】算法题-20231118

这里写目录标题 一、16.17. 连续数列二、合并两个有序数组&#xff08;力扣88&#xff09;三、存在重复元素&#xff08;217&#xff09;四、有效的字母异位词&#xff08;242&#xff09; 一、16.17. 连续数列 简单 给定一个整数数组&#xff0c;找出总和最大的连续数列&…

golang学习笔记——编写 FizzBuzz 程序

编写 FizzBuzz 程序 首先&#xff0c;编写一个用于输出数字&#xff08;1 到 100&#xff09;的程序&#xff0c;其中有以下变化&#xff1a; 如果数字可被 3 整除&#xff0c;则输出 Fizz。 如果数字可被 5 整除&#xff0c;则输出 Buzz。 如果数字可同时被 3 和 5 整除&…

暖阳脚本_ 定制企业软件开发的4个趋势:AI、RPA、云应用、边缘计算

根据 Statista 的统计数据显示&#xff0c;企业级软件市场在全球范围内占据了领先地位&#xff0c;预测到2028年&#xff0c;市场规模将接近3760亿美元。企业应用软件市场的稳健增长&#xff0c;甚至在经济不景气的时候也能持续&#xff0c;这充分表明软件解决方案对于提升企业…

Git新建分支

修改代码之Git策略思考&#xff1a; 有三种办法&#xff1a; 需要在主分支上新建一个分支&#xff0c;不合并新建版本。其实也是先新建一个分支&#xff0c;然后合并到主分支&#xff0c;再删除分支。直接新建远程仓库。 考虑&#xff0c;3&#xff09;最浪费&#xff0c;其…

直接插入排序

一.介绍. 其基本思想为数据元素被已经放入一个已经排好的有序数组中&#xff0c;现插入一个元素进入该数组&#xff0c;按顺序&#xff08;即大小关系&#xff09;放进适当位置&#xff0c;并且其后面的元素都向后移动移位。 如图&#xff1a; 对于上述问题&#xff1a; 代码…

【Java】ExcelWriter自适应宽度工具类(支持中文)

工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…

云计算的发展趋势

云计算的发展一直是一个极具活力和创新的领域。随着技术的不断进步和应用场景的拓展&#xff0c;云计算将在未来继续发挥重要作用。以下是云计算发展的一些趋势&#xff1a; 边缘计算的崛起&#xff1a; 随着物联网设备的普及和应用场景的增多&#xff0c;边缘计算成为一个重要…

在Linux系统上检测GPU显存和使用情况

在Linux系统上&#xff0c;你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法&#xff1a; 1. 使用nvidia-smi&#xff08;仅适用于NVIDIA GPU&#xff09; 如果你使用的是NVIDIA的显卡&#xff0c;你可以使用nvidia-smi命令来获取显卡信息&#xff0c…

【Spring】使用三方包进行数据源对象(数据库)管理

在这里使用alibaba的druid来连接数据库&#xff0c;然后再Spring Config下配置数据库 目录 第一步&#xff1a;在pom.xml中导入坐标第二步&#xff1a;在bean中配置连接注 第一步&#xff1a;在pom.xml中导入坐标 在dependencies下写&#xff1a; <dependency><grou…

C#WPF属性触发器实例

本文讲解C#WPF属性触发器的实例 在属性触发器中,当一个属性发生更改时,它将立即或动画更改另一个属性 实例 <Windowx:Class="TriggerDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://sch…

汇编-间接寻址(处理数组)

直接寻址很少用于数组处理&#xff0c;因为用常数偏移量来寻址多个数组元素时&#xff0c;直接寻址并不实用。取而代之的是使用寄存器作为指针(称为间接寻址(indirect addressing) ) 并控制该寄存器的值。如果一个操作数使用的是间接寻址&#xff0c; 就称之为间接操作数(indie…

Android 9.0 屏蔽设备的定位功能

Android 9.0 屏蔽设备的定位功能 最近收到客户需求想要屏蔽设备的定位功能&#xff0c;具体修改参照如下&#xff1a; /vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/security_dashboard_settings.xml - <Preference<!--Preferenceandroid:…

GB28181学习(十六)——基于jrtplib实现tcp被动和主动收流

前言 GB/T28181-2022实时流的传输方式介绍&#xff1a;https://blog.csdn.net/www_dong/article/details/134255185 tcp passive收流 流程图 注意&#xff1a; m字段指定传输方式为TCP/RTP/AVP&#xff1b;sdp信息中增加"asetup:passive"&#xff1b;SIP服务器启…

AWS实战(一)-创建S3 存储桶

1&#xff09;登录AWS账号&#xff0c;选择服务—>存储—>S3。 2&#xff09;查看存储桶列表 3&#xff09;点击"创建存储桶"创建bucket。 4&#xff09;设置跨域 点击编辑&#xff0c;修改跨域设置即可。

Arduino驱动DHT22温湿度传感器(温湿度传感器)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 DHT22数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。 传感器包括一个电容式感湿元件和一个NTC…

关于Ultra HDR Image的那些事

一、什么是Ultra HDR Image 2023年10月初&#xff0c;google正式发布了Android 14。该版本中引入了一个新的功能Ultra HDR Image&#xff0c;被誉为”图像技术的未来”。之前Android版本各手机厂商或许有自己的HDR图片技术&#xff0c;本文这里重点分析下Android14上google的实…

在test用户下创建test1表并插入数据,然后将tes1t表的查询权限授予test2用户

文章目录 1、以 test 用户登录2、创建 test1 表3、插入数据4、查看数据5、授予权限创建用户test2以 test 用户登录并授予权限&#xff1a;使用test2用户登录查询&#xff0c;测试结果 1、以 test 用户登录 首先&#xff0c;您需要以 test 用户登录到数据库 sqlplus test/1232…