新闻详情

新闻详情

首页 / 资讯中心 / 详情

企业微信二次开发如何实现机器人文件处理?API接口上传、解析与发送方案

发布时间:2026/9/30 13:55:33来源:尧图网络
企业微信二次开发如何实现机器人文件处理?API接口上传、解析与发送方案
最近做的企微二开机器人要能处理文件——客户发来订单 Excel机器人解析后回一份汇总报告销售让机器人发产品资料 PDF 给客户。和之前聊的文件自动处理不同那篇重点是接收客户文件做业务解析这篇重点是机器人自己上传、解析、发送文件的完整闭环——机器人怎么调 CDN 接口上传文件、怎么解析文件内容、怎么把文件发给客户。把调了哪些接口记下来。Eyun 平台开放的企微 API统一 POSTJSON鉴权用 App Token 加 appidAuthorization: Bearer eyk_xxxx路径{BASE_URL}/wx-api/api/模块/动作响应封套{code, data, detail, message, time}code 为 0 成功。文件上传调 CDN 接口机器人生成文件后比如解析完 Excel 生成汇总报告要上传到 CDN 拿 fileId再用 fileId 发送。上传调 CDN 模块import requests BASE https://api.eyun.com HEADERS {Authorization: Bearer eyk_xxxx, Content-Type: application/json} def upload_file(appid, file_path, file_name): with open(file_path, rb) as f: resp requests.post( f{BASE}/wx-api/api/cdn/upload, headers{Authorization: HEADERS[Authorization]}, # 上传不带Content-Type files{file: (file_name, f)}, data{appid: appid} ) body resp.json() if body[code] 0: return body[data][fileId] # 拿到fileId用于发送 raise Exception(body[message])上传是 multipart/form-data不是 JSON所以 Content-Type 要去掉让 requests 自动设。返回的 fileId 是文件在 CDN 的唯一标识后续发送文件用。文件下载调 CDN 接口客户发来文件机器人要下载解析。下载调 CDN 模块def download_file(appid, file_id, save_path): resp requests.post( f{BASE}/wx-api/api/cdn/download, headersHEADERS, json{appid: appid, fileId: file_id}, streamTrue ) if resp.json().get(code) 0: with open(save_path, wb) as f: for chunk in resp.iter_content(8192): f.write(chunk) return save_path raise Exception(resp.json()[message])下载是流式的大文件不会爆内存。fileId 从客户发文件消息的回调里拿。下载完存本地或 OSS解析完删本地文件。文件解析按类型处理下载完按扩展名识别类型分别解析import openpyxl import PyPDF2 def parse_file(file_path, file_name): ext file_name.rsplit(., 1)[-1].lower() if ext in [xlsx, xls]: return parse_excel(file_path) elif ext pdf: return parse_pdf(file_path) elif ext csv: return parse_csv(file_path) else: return {type: unknown, content: } def parse_excel(file_path): wb openpyxl.load_workbook(file_path) ws wb.active headers [c.value for c in ws[1]] rows [] for row in ws.iter_rows(min_row2, values_onlyTrue): rows.append(dict(zip(headers, row))) return {type: excel, headers: headers, rows: rows}解析返回结构化数据机器人基于数据生成回复或报告。表头别名匹配订单号/订单编号适应不同客户格式。发送文件调消息接口机器人解析完生成报告文件上传 CDN 拿 fileId 后调消息接口发文件给客户def send_file(appid, to_uin, file_id, file_name): resp requests.post( f{BASE}/wx-api/api/message/sendFile, headersHEADERS, json{ appid: appid, to: to_uin, fileId: file_id, fileName: file_name } ) return resp.json()[code] 0fileId是上传时拿到的fileName是客户看到的文件名。发送文件接口和发送文本接口走不同路径——sendFile 而不是 sendText。完整闭环接收→解析→生成→发送客户发 Excel机器人解析后生成汇总报告发回去完整流程def handle_file_and_reply(appid, from_uin, file_id, file_name): # 1. 下载文件 local_path f/tmp/{file_id}_{file_name} download_file(appid, file_id, local_path) # 2. 解析文件 parsed parse_file(local_path, file_name) if parsed[type] excel: # 3. 生成汇总报告 report_path generate_report(parsed[rows]) report_name f汇总报告_{file_name} # 4. 上传报告到CDN report_file_id upload_file(appid, report_path, report_name) # 5. 发送报告文件给客户 send_file(appid, from_uin, report_file_id, report_name) # 6. 发文字说明 requests.post( f{BASE}/wx-api/api/message/sendText, headersHEADERS, json{appid: appid, to: from_uin, content: f已解析 {len(parsed[rows])} 条数据汇总报告见文件} ) # 清理本地文件 import os os.remove(local_path) if report_path in locals(): os.remove(report_path)整个闭环涉及五个接口调用cdn/download 下载、解析本地、cdn/upload 上传、message/sendFile 发文件、message/sendText 发文字说明。关于文件处理相关接口在Eyun 企业微信 API 平台有完整说明。文件处理的几个坑上传是 multipart不是 JSONContent-Type 不能带fileId 有有效期几天过期的要重新上传大文件上传超时要设长timeout120解析 Excel 大文件要分批读不然内存爆发送文件后客户可能看不到预览企微客户端限制要配文字说明写在最后机器人文件处理这套东西本质是把企微的 CDN 接口和消息接口串起来——cdn/download 下载客户文件、本地解析、cdn/upload 上传处理结果、message/sendFile 发文件给客户。把上传下载做对、解析做扎实、闭环跑通机器人真正能处理文件——而不是只会发文字的半成品。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于SpringBoot+Vue的在线英语分级阅读平台设计与实现 2026/9/30 15:34:45

基于SpringBoot+Vue的在线英语分级阅读平台设计与实现

做这套“基于SpringBootVue的在线英语阅读分级平台”的时候,其实并没有多玄乎。核心就是一张表存储文章、一张表记录用户读到哪,再配合一个难度等级字段,就能把“分级阅读”这个看似复杂的产品逻辑跑通。今天我把整个系统的拆解思路、建表细节…

阅读更多 →
Linux目录结构详解:FHS、分区挂载与Java Web部署规范 2026/9/30 15:34:45

Linux目录结构详解:FHS、分区挂载与Java Web部署规范

1. 先搞明白一件事:Linux目录结构不是随手拍出来的很多人第一次登上一台Linux机器,敲完ls /看到一屏彩色目录名,第一反应是"这都啥"。bin、sbin、etc、var、usr、opt、proc、sys……看着像个杂乱的老仓库,实际上是几十年…

阅读更多 →
SpringBoot+Vue+MyBatis+MySQL在线英语阅读分级平台实战 2026/9/30 15:34:45

SpringBoot+Vue+MyBatis+MySQL在线英语阅读分级平台实战

最近把之前维护的一个在线英语阅读分级平台重新翻出来梳理了一遍,顺手把整个设计思路、核心代码逻辑和踩过的坑整理成这篇文字。这个项目用的是SpringBoot Vue MyBatis MySQL这套非常经典的组合,前端页面有大量部分是用原生HTML CSS完成的&#xff0…

阅读更多 →
低配电脑也能四倍放大老照片:分块处理避免内存爆炸,稳定输出大幅画作 2026/9/30 15:34:45

低配电脑也能四倍放大老照片:分块处理避免内存爆炸,稳定输出大幅画作

1. 为什么要4倍放大到3072万像素:打印尺寸的硬指标 最近接了个私活,要把一位客户家里留存的旧照片做成大幅挂画。照片是十多年前一台老数码相机拍的,原始分辨率只有16001200,算下来也就192万像素。客户要求做成A2大小的画框挂在客…

阅读更多 →
高校图书推荐系统实战:SSM+MySQL+协同过滤落地指南 2026/9/30 15:34:44

高校图书推荐系统实战:SSM+MySQL+协同过滤落地指南

简介:本资源是一份面向计算机专业本科生的毕业设计论文,聚焦大数据环境下图书馆图书推荐系统的工程实践,解决传统推荐中用户兴趣建模粗粒度、数据稀疏性高、实时性不足等实际问题。全文以协同过滤算法为核心,基于SSM框架完成后台开…

阅读更多 →
USACO P2919山丘计数:Flood Fill与BFS求解等高连通块 2026/9/30 15:34:37

USACO P2919山丘计数:Flood Fill与BFS求解等高连通块

1. 题目原文与核心考点1.1 P2919 在说什么这道题来自 USACO 2008 年 11 月月赛 Silver 组,在洛谷上的编号是 P2919。题目大意是:农夫约翰担心奶牛在农场里乱跑踩坏庄稼,就把农场看成一个 N 行 M 列的网格,每个格子上写着一个高度。…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉