企业飞书应用机器人,使用python发送图文信息到群

企业飞书应用的自动化,需要创建企业应用,应用开通机器人能力,并获取机器人所需的app_idapp_secret(这一部分大家可以在飞书的控制台获取:https://open.feishu.cn/api-explorer/)

文章目录

  • 步骤1:上传图片
  • 步骤2:构造富文本信息

飞书发送图文信息到群需要以下几个步骤:

  1. 使用机器人先上传图片,获取图片对应的file_key
  2. 将图片对应的file_key与文字内容构造成一个富文本(核心)
  3. 在群里发送构造好的富文本

步骤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"]}],]}}

发送富文本,博主这里提供一个工具函数,其中几个参数:

  1. rich_content:字典格式的富文本内容
  2. 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)

发送后的效果如下:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【开源】基于JAVA+Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

提高效率!企业短信通道账单拆分一键处理,干货分享

**提高效率!企业短信通道账单拆分一键处理,干货分享! 昨天从硬盘里看到2019年写的 账单拆分案列,这里分享给大家 文章目录 **提高效率!企业短信通道账单拆分一键处理,干货分享!背景企业短信通道账单展示干货来了用python拆分短信账号最后短信通道账单拆分后的处理。最后…

微信小程序上传代码教程

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 小程序上传代码到gogs上面来 整体架构流程 小程序也要远程连接仓库,实现代码上传 技术名词解释 微信开发者工具gogs 技术细节 连接gogs仓库地址 微信小程序需要head将本地代码和gogs代码同步 小结 …

hexo 博客搭建以及踩雷总结

搭建时的坑 文章置顶 安装一下这个依赖 npm install hexo-generator-topindex --save然后再文章的上面设置 top: number,数字越大,权重越大,也就是越靠顶部 hexo 每次推送 nginx 都访问不到 宝塔自带的 nginx 的 config 里默认的角色是 …

LayUI中表格树折叠 --

1、先将插件源码进行下载,新建 tableTree.js 文件,将源码放进去 2、将 tableTree.js 文件 配置之后,在需要使用的页面进行引入: layui.define(["tableTree"],function (exports) {var tableTree layui.tableTree;// …

RabbitMQ之五种消息模型

1、 环境准备 创建Virtual Hosts 虚拟主机:类似于mysql中的database。他们都是以“/”开头 设置权限 2. 五种消息模型 RabbitMQ提供了6种消息模型,但是第6种其实是RPC,并不是MQ,因此不予学习。那么也就剩下5种。 但是其实3、4…

python执行js代码

1. Python执行JavaScript代码 假如在爬虫逆向分析时,发现某个js加密算法比较繁琐,用Python还原同样的算法比较费劲。此时,可以不必使用Python还原,而是利用Python去直接调用JavaScript中定义的功能。 想实现Python调用JavaScrip…

svg基础(八)滤镜-feTurbulence(湍流)

feTurbulence:湍流滤镜 湍流滤镜,不稳定气流,能够实现半透明的烟熏或波状图像。 通常用于实现一些特殊的纹理。滤镜利用 Perlin 噪声函数创建了一个图像。噪声在模拟云雾效果时非常有用,能产生非常复杂的质感,利用它可…

Spring Native 解放 JVM

一、Spring Native 是什么 Spring Native可以通过GraalVM将Spring应用程序编译成原生镜像,提供了一种新的方式来部署Spring应用。与Java虚拟机相比,原生镜像可以在许多场景下降低工作负载,包括微服务,函数式服务,非常…

Linux内核有什么之内存管理子系统有什么——基础篇之struct vm_area_struct(2)

接前一篇文章:Linux内核有什么之内存管理子系统有什么——基础篇之struct vm_area_struct(1) 本文内容参考: linux进程虚拟地址空间 《趣谈Linux操作系统 核心原理篇:第四部分 内存管理—— 刘超》 4.6 深入理解 Li…

绕过安全狗

本节我们想要绕过的安全狗版本为v4.023957 ,它是网站安全狗的Apache版。 首先搭建环境。渗透环境选用DVWA漏洞集成环境,下载地址 为http://www.dvwa.co.uk/ 。DVWA是一款集成的渗透测试演练环境,当刚刚入门 并且找不到合适的靶机时&#xff…

【java】笔记10:类与对象——本章练习

题目1: 代码如下: import java.util.Scanner; public class Input{public static void main(String[]args){Circle cnew Circle();PassObject yuannew PassObject();System.out.println("r""\t""times");yuan.printAreas…

阿里云服务器搭建frps实现内网穿透

简介 frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。官网 服务端运行,监听一个主端口,等待客户端的连接;客户端连接到服务端的主端口,同时告诉服务端要监听的端口和…

c语言游戏实战(4):人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

学了很多知识,没多久就忘光了,怎么办?

读了很多书,回想起来,却总是觉得一片空白,想不出究竟留下了些什么; 付费参加了一堆课程,听的时候觉得醍醐灌顶,没过多久却发现都还给了老师; 看文章、听讲座,记了一大堆东西&#xf…

C++引用(内含和指针的对比)

1.引用的概念 概念:引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间。 类型& 引用变量名(对象名) 引用实体;(&这个符…

Python:解析获取连续的重叠对pairwise

简介:pairwise函数,返回从输入迭代器获取的重叠对的迭代器,是Python 3.10 新特性,表示一个迭代器从对象中获取连续的重叠对,在某些场景中可以优化代码运行效率。pairwise 函数是一种用于处理列表中元素之间配对操作的通…

leaflet 显示自己geoserver发布的中国地图

安装vscode 安装 通义灵码 问题&#xff1a; 用leaflet显示一个wms地图 修改下代码&#xff0c;结果如下&#xff1a; 例子代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&q…

代码随想录算法训练营第四十九天(动态规划篇之01背包)| 474. 一和零, 完全背包理论基础

474. 一和零 题目链接&#xff1a;https://leetcode.cn/problems/ones-and-zeroes/submissions/501607337/ 思路 之前的背包问题中&#xff0c;我们对背包的限制是容量&#xff0c;即每个背包装的物品的重量和不超过给定容量&#xff0c;这道题的限制是0和1的个数&#xff0…

Docker容器输入汉字触发自动补全

一、描述 输入汉字自动触发补全&#xff1a; Display all 952 possibilities? (y or n)是因为容器中没有中文字符集和中文字体导致的&#xff0c;安装中文字体&#xff0c;并设置字符集即可。 二、解决 1、安装字符集 &#xff08;1&#xff09;查看系统支持的字符集 lo…