企业飞书应用机器人,使用python发送图文信息到群
企业飞书应用的自动化,需要创建企业应用,应用开通机器人能力,并获取机器人所需的app_id与app_secret(这一部分大家可以在飞书的控制台获取:https://open.feishu.cn/api-explorer/)
文章目录
- 步骤1:上传图片
- 步骤2:构造富文本信息
飞书发送图文信息到群需要以下几个步骤:
- 使用机器人先上传图片,获取图片对应的
file_key - 将图片对应的
file_key与文字内容构造成一个富文本(核心) - 在群里发送构造好的富文本
步骤1:上传图片
比如说上传这样的一个图片叫robot.jpg:

博主提供一个整理好的工具函数:
def fs_upload_pic(pic_path, app_id=None, app_secret=None):"""上传图片"""# 创建clientclient = lark.Client.builder().app_id(app_id).app_secret(app_secret).log_level(lark.LogLevel.DEBUG).build()# 构造请求对象request: CreateImageRequest = CreateImageRequest.builder().request_body(CreateImageRequestBody.builder().image_type("message").image(open(pic_path, "rb")).build()).build()# 发起请求response: CreateImageResponse = client.im.v1.image.create(request)# 处理失败返回if not response.success():lark.logger.error(f"client.im.v1.image.create failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}")return None# 处理业务结果return eval(lark.JSON.marshal(response.data))['image_key']
使用方法:
app_id="cli_xxxx",
app_secret="xxxxx",
img_key = fs_upload_pic("robot.jpg", app_id, app_secret)
print(img_key)
成功上传后得到如下img_key:
img_v3_02xxxxxxxx
步骤2:构造富文本信息
发送富文本的更多信息可以参考:https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json
富文本的内容需要构造成字典的格式:
{"zh_cn": {"title": "我是一个标题","content": [[{"tag": "text","text": "第一行:","style": ["bold", "underline"]},{"tag": "a", "href": "http://www.feishu.cn", "text": "超链接", "style": ["bold", "italic"]},{"tag": "at", "user_id": "ou_1avnmsbv3k45jnk34j5", "style": ["lineThrough"]}],]}}
发送富文本,博主这里提供一个工具函数,其中几个参数:
- rich_content:字典格式的富文本内容
- chat_id:发送的群id,在API调试台可以直接获取(https://open.feishu.cn/api-explorer/)
在工具函数中,富文本会经过处理:str(rich_content).replace("'", "\""),这样处理后的字典格式数据就能直接发送了
def fs_send_rich_text(rich_content: dict, chat_id, app_id=None, app_secret=None):"""发送富文本"""# 创建clientclient = lark.Client.builder().app_id(app_id).app_secret(app_secret).log_level(lark.LogLevel.DEBUG).build()# 构造请求对象request: CreateMessageRequest = CreateMessageRequest.builder() \.receive_id_type("chat_id") \.request_body(CreateMessageRequestBody.builder().receive_id(chat_id).msg_type("post").content(str(rich_content).replace("'", "\"")).build()) \.build()# 发起请求response: CreateMessageResponse = client.im.v1.message.create(request)# 处理失败返回if not response.success():lark.logger.error(f"client.im.v1.message.create failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}")return# 处理业务结果lark.logger.info(lark.JSON.marshal(response.data, indent=4))
使用方法:
img_key = "img_v3_02xxxxxx"chat_id = "oc_00xxxxxxx"# 构造富文本send_info = {"zh_cn": {"title": f"测试发送富文本信息","content": [[{"tag": "text","text": "下面是图片:","style": ["bold", "underline"]},],[{"tag": "img", "image_key": img_key}],]},}fs_send_rich_text(send_info, chat_id, app_id, app_secret)
发送后的效果如下:

相关文章:
企业飞书应用机器人,使用python发送图文信息到群
企业飞书应用的自动化,需要创建企业应用,应用开通机器人能力,并获取机器人所需的app_id与app_secret(这一部分大家可以在飞书的控制台获取:https://open.feishu.cn/api-explorer/) 文章目录 步骤1ÿ…...
设计模式1-访问者模式
访问者模式是一种行为设计模式,它允许你定义在对象结构中的元素上进行操作的新操作,而无需修改这些元素的类。这种模式的主要思想是将算法与元素的结构分离开,使得可以在不修改元素结构的情况下定义新的操作。 所谓算法与元素结构分离&#x…...
Android meminfo 查看方法及解析
目录 Android 上查看memory 信息的方法 内存限制的信息 手动释放缓存 例 adb shell dumpsys meminfo pid 解析 adb shell dumpsys meminfo 汇总信息说明 Total RAM Free RAM ION Used RAM Lost RAM ZRAM /proc/meminfo 参考文档 Android 上查看memory 信息的方法 …...
微信小程序解决华为手机保存图片到相册失败
1.新增隐私设置 2.优化代码 新增uni.authorize判断 _saveCode() {let that this;console.log(点击了保存图片)console.log(this.result)uni.authorize({scope: scope.writePhotosAlbum,success(e) {console.log(e)if (this.result ! "") {uni.saveImageToPhotosAlb…...
板块零 IDEA编译器基础:第三节 下载和在IDEA中集成 Tomcat服务器 来自【汤米尼克的JAVAEE全套教程专栏】
板块零 IDEA编译器基础:第三节 下载和在IDEA中集成 Tomcat服务器 一、为什么选择Tomcat(1)常见的JAVA WEB服务器(2)选择Tomcat的理由 二、Tomcat 8.5下载解压三、Tomcat 结构目录四、在IDEA中集成Tomcat 假设我们已经…...
2024/2/6
一、填空题 1、一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改num为10,并使用show()函数输出num的值10。 #include <iostream.h> class Test { private: static int num; public: Test(int); void sho…...
mysql清空表数据后如何让自增ID仍从1开始
有2种方法: 1、清空表时使用truncate命令,而不用delete命令 truncate test; 使用truncate命令的好处: 1)、速度快 2)、可以对自增ID进行重排,使自增ID仍从1开始计算 2、清空表数据后,使用alter…...
C++集群聊天服务器 数据模块+业务模块+CMake构建项目 笔记 (上)
跟着施磊老师做C项目,施磊老师_腾讯课堂 (qq.com) 本文在此篇博客的基础上继续实现数据模块和业务模块代码: C集群聊天服务器 网络模块业务模块CMake构建项目 笔记 (上)-CSDN博客https://blog.csdn.net/weixin_41987016/article…...
#Js篇:字符串的使用方法es5和es6
字符串 \ :单引号(\u0027)\" :双引号(\u0022) charAt 定义: 返回指定位置的字符,参数时从0开始编号的位置 参数: 位置下标 abc.charAt(1) // "b" …...
SpringBoo+Vue构建简洁日志文件查看系统
点击下载《SpringBooVue构建日志文件查看系统(源代码)》 1. 前言 想必经常做java开发的小伙伴,其大多数服务都是运行在linux系统上的,当遇到一些比较棘手的bug需要处理时,经常要上服务器去捞日志,然后通过…...
JavaScript基础第二天
JavaScript基础第二天 今天我们学习if分支语句、三元表达式和switch-case语句。 1. if分支语句 1.1 语法 if (条件表达式){// 满足条件要执行的语句 } else {// 不满足条件要执行的语句 }if中的内容如果为true,就执行大括号的代码块,如果为false执行…...
2、卷积和ReLU激活函数
python了解集合网络如何创建具有卷积层的特性。 文章目录 简介特征提取(Feature Extraction)卷积过滤(Filter with Convolution)Weights(权重)激活(Activations)用ReLU检测示例 - 应用卷积和ReLU结论In [1]: import numpy as np from itertools import productdef show_kerne…...
SQL世界之基础命令语句
目录 一、SQL SELECT 语句 1.SQL SELECT 语法 2.SQL SELECT 实例 3.SQL SELECT * 实例 二、SQL SELECT DISTINCT 语句 1.语法 2.使用 DISTINCT 关键词 三、SQL SELECT WHERE 语句 1.WHERE 子句 2.语法 3.使用 WHERE 子句 4.引号的使用 四、SQL SELECT AND&OR …...
Facebook未来展望:社交媒体的下一个篇章
社交媒体一直是连接人与人之间的纽带,而Facebook则一直在推动这一领域的发展。随着科技不断演进和社会需求的不断变迁,Facebook正积极筹谋社交媒体的下一个篇章。本文将深入剖析Facebook的未来展望,探讨其在社交媒体领域所迎接的新时代。 1. …...
源码搭建教学:直播带货商城小程序开发
结合小程序开发的直播带货商城,不仅可以提供更便捷的购物体验,还可以实现更高效的销售。因此,学习如何搭建一个直播带货商城小程序将成为您拓展商业领域的利器。 步骤一:准备工作 在开始开发之前,您需要进行一些准备工…...
vue-cli引入本地json数据:封装为js文件,无需请求直接读取
vue-cli引入本地json数据 1、新建js文件(路径自定义),写入JSON数据 /* jsonData.js */export let jsonData { // 声明变量,存储数据// JSON源数据 }2、组件内引入js文件,读取数据 /* Example.vue */import { json…...
20240202在Ubuntu20.04.6下使用whisper.cpp的显卡模式
20240202在Ubuntu20.04.6下使用whisper.cpp的显卡模式 2024/2/2 19:43 【结论:在Ubuntu20.04.6下,确认large模式识别7分钟中文视频,需要356447.78 ms,也就是356.5秒,需要大概5分钟!效率太差!】 …...
前端面试拼图-数据结构与算法
摘要:总结一些前端算法题,持续更新! 一、数据结构与算法 时间复杂度-程序执行时需要的计算量(CPU) 空间复杂度-程序执行时需要的内存空间 前端开发:重时间,轻空间 1.把一个数组旋转k步 arr…...
在C++的union中使用std::string(非POD对象)的陷阱
struct和union的对比 union最开始是C语言中的关键字,在嵌入式中比较常见,由于嵌入式内存比较稀缺,所以常用union用来节约空间,在其他需要节省内存的地方也可以用到这个关键字,写一个简单程序来说明union的用途 struc…...
Spring Cloud Netflix Eureka的参数调优
下面主要分为Client端和Server端两大类进行简述,Eureka的几个核心参数 客户端参数 Client端的核心参数 参数默认值说明eureka.client.availability-zones告知Client有哪些region以及availability-zones,支持配置修改运行时生效eureka.client.filter-o…...
CosyVoice语音克隆实战:如何用300M轻量级模型实现跨语种音色复制
CosyVoice语音克隆实战:如何用300M轻量级模型实现跨语种音色复制 在数字内容创作领域,语音合成技术正经历着从机械朗读到情感化表达的质变。CosyVoice-300M作为一款轻量级语音克隆模型,以其仅300MB的体量实现了专业级的音色复制与跨语种转换能…...
拯救变砖的STM32:利用BOOT0/1组合实现三种烧录救机方案(含串口/JTAG异常处理)
STM32紧急救援指南:BOOT引脚组合的三种烧录方案与异常处理实战 引言:当STM32突然"变砖"时 深夜的实验室里,王工盯着眼前毫无反应的STM32开发板,额头渗出细密的汗珠——距离项目交付只剩12小时,核心控制程序却…...
Landsat8温度反演结果不准?可能是这5个参数没搞对(ENVI实战经验分享)
Landsat8温度反演精度提升:5个关键参数优化与ENVI实战解析 当你在深夜盯着屏幕上那些明显偏离预期的温度反演结果时,是否曾怀疑过ENVI软件出了问题?事实上,90%的温度反演误差都源于几个关键参数的设置不当。作为一位经历过数十个遥…...
SeqGPT-560M智能客服问答系统部署指南
SeqGPT-560M智能客服问答系统部署指南 1. 引言 想象一下这样的场景:你的电商平台每天收到上千条客户咨询,从"这个衣服有货吗"到"怎么申请退货",问题五花八门。传统客服需要一个个手动回复,效率低下还容易出…...
3D Face HRN效果验证:使用MeshLab量化评估3D重建PSNR与SSIM指标
3D Face HRN效果验证:使用MeshLab量化评估3D重建PSNR与SSIM指标 1. 项目背景与验证意义 3D人脸重建技术近年来取得了显著进展,但如何客观评估重建质量一直是个关键问题。传统的主观视觉评估方法存在明显局限性——不同观察者可能有不同的判断标准&…...
Winhance中文版深度解析:Windows系统优化的C解决方案
Winhance中文版深度解析:Windows系统优化的C#解决方案 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh…...
如何搭建与使用 `ZhongFuCheng3y/austin` 开源项目
如何搭建与使用 ZhongFuCheng3y/austin 开源项目 【免费下载链接】austin 消息推送平台🔥 推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型。 项目地址: https://gitcode.com/GitHub_Trending/au/austin 本教程旨在帮助…...
Realistic Vision V5.1效果展示:这些惊艳的人像作品都是AI生成的
Realistic Vision V5.1效果展示:这些惊艳的人像作品都是AI生成的 1. 当AI画师遇上专业摄影师 你有没有见过这样的AI生成人像?皮肤纹理清晰到能看见毛细血管,发丝在阳光下呈现自然的半透明质感,眼神光的位置精准符合物理反射规律…...
微信H5支付v3版Java实战:从零构建移动端支付解决方案
1. 微信H5支付的应用场景与优势 移动端支付已经成为现代商业不可或缺的一部分。微信H5支付作为微信支付生态中的重要一环,特别适合那些需要在非微信客户端浏览器中实现支付功能的场景。想象一下这样的画面:用户在手机浏览器中浏览你的电商网站ÿ…...
PP-DocLayoutV3实操手册:display_formula公式块检测准确率提升的3个微调技巧
PP-DocLayoutV3实操手册:display_formula公式块检测准确率提升的3个微调技巧 1. 引言:为什么公式检测这么重要? 在文档数字化处理过程中,数学公式的准确检测一直是个技术难点。传统的OCR系统往往把公式误判为普通文本或图像&…...
