【保姆式】python调用api通过机器人发送文件到飞书指定群聊

ops/2024/12/27 11:58:40/

当前飞书webhook机器人还不支持发送文件类型的群消息,它目前仅支持文本,富文本,卡片等文字类型的数据。
我们可以申请创建一个机器人应用来实现群发送文件消息。

创建飞书应用

创建飞书应用、配置权限、添加机器人

  1. 来到飞书开发者后台

创建企业自建应用
输入名称、描述
在这里插入图片描述

  1. 创建应用后,需要开通一系列权限,然后发布。由管理员审核通过后,才可使用
    在这里插入图片描述
    在上述位置下添加下述权限并开通
    在这里插入图片描述

  2. 创建机器人
    在这里插入图片描述
    在上述位置添加好机器人

  3. 在你要发送的群里中添加刚刚创建的机器人(我这的机器人取名为“推送报表”)
    在这里插入图片描述

  4. 最后提交发布, 在凭证和基础信息这里获取

app id
app secret

在这里插入图片描述

调用API上传文件

流程顺序如下:通过app_id,app_secret获取token -> 上传文件(获取文件id)-> 获取群聊chat_id -> 通过文件id将文件上传到指定chat_id

  1. 获取token
python">def get_token():""" 获取飞书 access_token """url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"headers = {"Content-Type": "application/json"}data = {"app_id": APP_ID,"app_secret": APP_SECRET}response = requests.post(url, headers=headers, json=data)if response.status_code == 200:return response.json()["tenant_access_token"]else:return ""
  1. 上传文件到飞书,并获取文件id
python">def upload_file(file_name, file_path):""" 上传文件到飞书 """url = "https://open.feishu.cn/open-apis/im/v1/files"headers = {"Authorization": "Bearer "+get_token()}form = {"file_type": "stream","file_name": file_name,"file": (file_name, open(file_path, "rb"), "text/plain")}multi_form = MultipartEncoder(form)headers["Content-Type"] = multi_form.content_typeresponse = requests.post(url, headers=headers, data=multi_form)if response.status_code == 200 and response.json().get("code") == 0:# print(f"上传文件到飞书成功,msg={response.json()},{file_path=}")media_id = response.json().get("data", {}).get("file_key")return media_idelse:return "" 
  1. 获取群chat_id
    有两种方式,通过api,或者直接通过平台粘贴对应群聊id,这里使用后者,因为是发送到固定群聊
    去到api调试页面,按照如下操作获取对应群聊chat_id
    在这里插入图片描述
  2. 发送文件到群里
python">def send_file(file_path, media_id=None):"""机器人应用上传文件"""if not media_id:media_id = upload_file(file_name=file_path, file_path=file_path)time.sleep(1)url = 'https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id'msgContent = {"file_key": media_id}form = {"content": json.dumps(msgContent),"msg_type": "file","receive_id": CHAT_ID}headers = {'Authorization': 'Bearer ' + get_token()}response = requests.post(url=url, data=json.dumps(form), headers=headers)print(response.json())

完成文件发送
在这里插入图片描述


http://www.ppmy.cn/ops/145367.html

相关文章

人、机、环境中各有其神经网络系统

在人、机、环境的交互过程中,可以从神经网络系统的角度进行分析,尽管它们的具体实现和功能有所不同。 1. 人类神经网络系统 人类的大脑和神经系统是非常复杂的神经网络,它由数十亿个神经元组成,负责感知、思考、学习、记忆和决策等…

‘ieee-be‘ 对字节调换顺序

对于int16来说 16位 2个字节 00000000 00000001 是数字一 ieee-be是 认为字节顺序颠倒 00000001 0000000是正确的 所以对正常的1 取用ieee-be读取 会变成256 a [1;2;3;4;5;6]; fid fopen(data.bin, wb); % 写入数据到文件 % 注意:fwrite 会自动根据数据类型…

DataCap MongoDB Driver: 全面解析MongoDB在DataCap中的使用指南

在大数据时代,MongoDB作为一款广受欢迎的NoSQL数据库,其灵活的文档存储模型和强大的查询能力使其成为许多现代应用的首选数据存储方案。今天,我们将深入探讨DataCap MongoDB Driver,这是一个强大的工具,它让在DataCap环…

地理数据库Telepg面试内容整理-解释什么是地理空间数据和普通数据的区别

地理空间数据(Geospatial Data)和普通数据(Non-Spatial Data)是两类不同的数据类型,它们的核心区别在于是否包含地理位置信息,及其在应用中的处理和存储方式。 定义 ● 地理空间数据:是指与地理位置相关的数据。它不仅包含数据的属性信息(如名称、类型等),还包括空间…

AndroidStudio之logcat使用技巧

在Android开发和调试过程中,日志记录是一个非常重要的工具。Android系统提供了一个名为logcat的日志系统,开发者可以通过它查看系统和应用程序的日志输出。日志输出通常包含大量的信息,包括错误、警告、调试信息等。为了更有效地分析和解决问…

Chapter 03 复合数据类型-2

1.元组 tuple 元组(tuple)是Python中的一种数据结构,它与列表(list)类似,但有一个重要的区别:元组是不可变的,即一旦创建,其元素就不能被修改。 元组的定义:…

软件老化分析

软件老化 课程:软件质量分析 作业 解答 Python代码如下: n int(input("类别数:")) theta list(map(float, input("各个类别的权重:").split())) m list(map(int, input("各个类别的度量元数量&…

CES Asia是一个关于什么的展会?

自2015年创办以来,CES Asia(赛逸展)一直是亚洲消费电子领域的盛会,展会汇聚了全球顶尖科技企业,展示了众多前沿创新成果,成为引领消费电子行业发展的风向标。 2015年,CES Asia首次大规模展示了虚…