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

news/2024/12/28 1:02:28/

当前飞书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/news/1558655.html

相关文章

uni-app 统一请求处理 请求拦截器 响应拦截器 请求封装

封装API接口 import {http} from ../utils/request.js export function login(code){return http({url:/wx/getSession,method: GET,data:{code}}) }调用接口 import {login,test,phoneMessage,updateAvatar} from ../../api/user.js function userLogin(){ login(code.value…

深度学习在图像识别中的最新进展与实践案例

深度学习在图像识别中的最新进展与实践案例 在当今信息爆炸的时代,图像作为信息传递的重要载体,其处理与分析技术显得尤为重要。深度学习,作为人工智能领域的一个分支,凭借其强大的特征提取与模式识别能力,在图像识别…

详细对比JS中XMLHttpRequest和fetch的使用

在JavaScript中,XMLHttpRequest 和 fetch 是两种用于进行 HTTP 请求的 API。它们的主要区别在于设计理念、用法和功能支持。以下是两者的详细对比: 1. 语法与用法 XMLHttpRequest: 较老的 API,最早出现在 2000 年代。支持异步和同步请求&…

Java 【数据结构】 哈希(Hash超详解)HashSetHashMap【神装】

登神长阶 第十神装 HashSet 第十一神装 HashMap 目录 👔一.哈希 🧥1.概念 🩳2.Object类的hashCode()方法: 👚3.String类的哈希码: 👠4.注意事项: 🎷二.哈希桶 🪗1.哈希桶原理 &#x…

#渗透测试#漏洞挖掘#红蓝攻防#漏洞挖掘#未授权漏洞-Es未授权漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Textual Dataset Distillation via Language Model Embedding

Method 将数据集丢入embedding模型,丢入embedding前可以加入prompt加强效果,然后获取k-means聚类的中心向量来作为需要的蒸馏embeddings,然后使用vec2text模型还原成原始文本。 Result Q: 这里有一点不清楚: 聚类中…

BAPI_BATCH_CHANGE在更新后不自动更新批次特征

1、问题介绍 在CL03中看到分类特性配置了制造日期字段,并绑定了生产日期字段MCH1~HSDAT MSC2N修改批次的生产日期字段时,自动修改了对应的批次特性 但是通过BAPI:BAPI_BATCH_CHANGE修改生产日期时,并没有更新到批次特性中 2、BAPI…

CSS系列(35)-- Subgrid详解

前端技术探索系列:CSS Subgrid详解 📐 致读者:探索子网格布局的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS Subgrid,这个强大的网格布局扩展特性。 基础概念 🚀 子网格设置 /* 父网格…