企业微信 API 接口:内部应用发送文本与卡片消息

企微内部应用发消息,和向客户发消息是两套逻辑。内部应用面向的是企业成员,消息类型更丰富,支持卡片、按钮、跳转链接。这篇讲清楚内部应用消息怎么发。

先分清内部应用和外部联系人

内部应用消息发给的是企业成员(员工),不是外部客户。成员的标识是uin(int64),和外部客户的 uin 范围不同。

发送接口还是message/sendText,但conversationId指向的是成员的单聊会话。关键问题变成:怎么从成员 uin 拿到单聊会话 id。

从成员到会话

没有"给 uin 返回会话 id"的直接接口。实际做法:

  • 本地缓存:之前发过消息,会话 id 已存

  • 历史消息捞:调message/getHistoryMessageList传 uin,挑messageType=0的记录

def get_conv_id(uin): cached = redis.get(f"conv:{uin}") if cached: return int(cached) resp = call("message", "getHistoryMessageList", {"uin": uin}) for item in resp["data"]["list"]: if item["messageType"] == 0: redis.set(f"conv:{uin}", item["conversationId"]) return item["conversationId"] return None

发文本消息

拿到会话 id 后发文本:

resp = requests.post( f"{BASE}/wx-api/api/message/sendText", headers=HEADERS, json={ "appid": APPID, "conversationId": conv_id, "content": "审批已通过,请查收", } )

发卡片消息

企微的卡片消息比纯文本体验好得多。支持标题、摘要、封面图、跳转链接:

content = { "title": "新工单提醒", "description": "您有一条新工单待处理", "url": "https://your-system.com/ticket/123", "picurl": "https://cdn.example.com/cover.png", } resp = requests.post( f"{BASE}/wx-api/api/message/sendRichText", headers=HEADERS, json={"appid": APPID, "conversationId": conv_id, "content": content} )

卡片消息的字段和企微后台的"应用消息"格式对应,url是点击跳转的地址。

批量发送

向多个成员发同一条消息,循环调单发接口:

def batch_send(uins, content): for uin in uins: conv_id = get_conv_id(uin) if conv_id: send_text(conv_id, content)

注意限流。批量发送时加间隔,或提前预热好所有会话 id。

发送回执

消息发出去后,调message/getMessageReceipt查送达状态:

resp = call("message", "getMessageReceipt", {"msgId": msg_id}) # 返回里带 status 字段

回执用于确认消息真的到了,重要通知建议核对。

内部应用消息的典型场景

场景

消息类型

说明

审批结果通知

卡片

带跳转链接,点进去看详情

工单派单

富文本

高亮工单号、优先级

日报提醒

文本

简单直接

系统告警

富文本

红色高亮关键指标

小结

内部应用消息的核心是"从成员到会话"这一步。会话 id 拿到后,文本、卡片、富文本都是同一个接口的不同参数。批量发送时注意限流,重要消息核对回执。

接口用的是Eyun 平台的企业微信 API,路径统一是/wx-api/api/<模块>/<动作>,鉴权Bearer eyk_xxxx。凭证在官网开通实例时拿到,消息类型和字段在开发文档里有完整说明。

相关新闻

接口测试技能包:面向Agent的可组合能力设计

接口测试技能包:面向Agent的可组合能力设计

1. 为什么“接口测试技能包”不是又一个自动化脚本合集“Agent Skills 实战&#xff1a;手把手做一个接口测试技能包”——这个标题里藏着三个容易被忽略的关键词&#xff1a;“Agent”、“Skills”和“技能包”。它不是教你写一个Postman集合&#xff0c;也不是让你堆砌一堆re…

2026/10/20 18:56:58 阅读更多 →
宇树G1人形机器人开发实践:从基础运动控制到PPT汇报复盘

宇树G1人形机器人开发实践:从基础运动控制到PPT汇报复盘

年底了&#xff0c;各种项目汇报堆在一起。我最近刚把一轮宇树G1开发实践的阶段性成果&#xff0c;整理成了一份基础版的PPT汇报稿。在整理和准备讲稿的过程中&#xff0c;踩了不少坑&#xff0c;也理清了不少思路。这篇博文就来聊聊&#xff1a;拿到宇树G1这类通用人形机器人之…

2026/10/20 18:56:58 阅读更多 →
基于滑模控制的五车编队自适应巡航仿真与验证

基于滑模控制的五车编队自适应巡航仿真与验证

先说个细节&#xff1a;标题里的“滑膜”我理解是“滑模”的笔误&#xff0c;本文按“滑模控制&#xff08;Sliding Mode Control, SMC&#xff09;”来展开。我做了一段时间多车协同控制方向的仿真研究&#xff0c;正好借这篇内容把五车编队自适应巡航里最核心的建模、控制策略…

2026/10/20 18:56:58 阅读更多 →

最新新闻

用Design.md构建符合产品风格的原型设计:设计令牌实战指南

用Design.md构建符合产品风格的原型设计:设计令牌实战指南

上周跟某团队聊原型评审&#xff0c;对方把三个页面的设计稿拍在我面前&#xff0c;主色蓝就出现了五种&#xff0c;没有两个颜色值相同。评审会开了一个小时&#xff0c;快一半时间在争论“这个蓝到底是不是我们品牌那个蓝”。原型阶段最让人心累的从来不是画得快不快&#xf…

2026/10/20 20:19:47 阅读更多 →
跨学科类比提升创意新颖度:IdeaScientist实践指南

跨学科类比提升创意新颖度:IdeaScientist实践指南

做创意类工作的人&#xff0c;最能共鸣的一句话大概是&#xff1a;我知道要创新&#xff0c;可我没有新东西。过去三年&#xff0c;我一直在跟各种“点子枯竭”问题搏斗。做过竞品扫描&#xff0c;做过用户访谈&#xff0c;也试过各种头脑风暴法&#xff0c;但方案的新颖度始终…

2026/10/20 20:19:47 阅读更多 →
给AI编程助手装上开发方法论:六阶段工作流设计复盘

给AI编程助手装上开发方法论:六阶段工作流设计复盘

最近我在重构自己日常使用的 AI 编程工作流时&#xff0c;越来越明显地感受到一个现象&#xff1a;AI 编程助手本身的能力已经不缺了&#xff0c;缺的是“约束”。就像给一个执行力超强但毫无章法的实习生配了个无限量的咖啡&#xff0c;你让他“写个登录模块”&#xff0c;他能…

2026/10/20 20:19:47 阅读更多 →
JDBC连接MySQL全链路详解:驱动配置、PreparedStatement、事务与连接池实战

JDBC连接MySQL全链路详解:驱动配置、PreparedStatement、事务与连接池实战

JDBC 这个东西&#xff0c;很多 Java 开发天天在用&#xff0c;但真要自己从零写一遍“Java 连 MySQL 并完成增删改查”&#xff0c;不少人反而会卡在几个很基础的环节上。驱动版本不一致、时区报错、连接池参数不会填、PreparedStatement 和 Statement 搞混&#xff0c;这些坑…

2026/10/20 20:19:47 阅读更多 →
MATLAB调用REFPROP 64位DLL避坑指南

MATLAB调用REFPROP 64位DLL避坑指南

简介&#xff1a;本资源是面向工程热物理、制冷空调、化学工程等领域科研与工程人员的MATLAB-REFPROP高效调用方案&#xff0c;专为64位Windows平台设计&#xff0c;解决MATLAB环境下调用NIST官方REFPROP热力学数据库时常见的环境配置复杂、接口编译困难、DLL加载失败等痛点。压…

2026/10/20 20:19:47 阅读更多 →
技能拆解与能力建模:从抽象描述到可执行单元的系统方法

技能拆解与能力建模:从抽象描述到可执行单元的系统方法

1. 从“skills”这个词说起&#xff1a;它到底指什么“skills”这个词看起来简单&#xff0c;但放在不同语境里&#xff0c;含义差别很大。在职场语境下&#xff0c;它指的是一个人完成某项任务所具备的能力单元&#xff1b;在技术社区里&#xff0c;它常常指代一组可复用的技能…

2026/10/20 20:18:46 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →