企业微信 API:主动发送外部群消息实战指南
在企业微信的开发场景中向“外部群”发送消息与向“内部群”发送消息逻辑略有不同。通常有两种主流方式群机器人Webhook最简单但需要群主开启机器人。应用消息App Chat通过自建应用调用appchat接口。注意发送外部群消息的前提是该群必须由企业成员创建且应用需要有对应的客户联系权限。1. 前置准备在编码之前你需要获取以下信息CorpID企业标识。AppSecret自建应用的密钥。ChatID外部群的群聊 ID通过“获取客户群列表”接口获取。2. Python 实现简洁高效Python 适合快速原型开发和自动化脚本。import requests import json def get_access_token(corp_id, secret): url fhttps://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid{corp_id}corpsecret{secret} res requests.get(url).json() return res.get(access_token) def send_external_group_msg(token, chat_id, content): url fhttps://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token{token} data { chatid: chat_id, msgtype: text, text: {content: content}, safe: 0 } res requests.post(url, datajson.dumps(data)) return res.json() # 调用示例 token get_access_token(YOUR_CORPID, YOUR_SECRET) print(send_external_group_msg(token, EXTERNAL_CHAT_ID, Hello from Python!))3. Go 实现并发与性能Go 语言适合处理高频的推送任务。package main import ( bytes encoding/json fmt net/http ) type Msg struct { ChatID string json:chatid MsgType string json:msgtype Text struct { Content string json:content } json:text } func sendMessage(accessToken string, chatID string, text string) { url : https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token accessToken msg : Msg{ChatID: chatID, MsgType: text} msg.Text.Content text payload, _ : json.Marshal(msg) resp, err : http.Post(url, application/json, bytes.NewBuffer(payload)) if err ! nil { fmt.Println(Error:, err) return } defer resp.Body.Close() fmt.Println(Message sent!) } func main() { // 实际开发中建议将 token 缓存避免频繁请求 sendMessage(YOUR_ACCESS_TOKEN, EXTERNAL_CHAT_ID, Hello from Go!) }4. Java 实现企业级规范Java 方案通常配合OkHttp或RestTemplate使用。import com.google.gson.JsonObject; import okhttp3.*; public class QyWechatAppChat { private static final OkHttpClient client new OkHttpClient(); public static void sendMsg(String accessToken, String chatId, String content) throws Exception { String url https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token accessToken; JsonObject text new JsonObject(); text.addProperty(content, content); JsonObject body new JsonObject(); body.addProperty(chatid, chatId); body.addProperty(msgtype, text); body.add(text, text); RequestBody requestBody RequestBody.create( body.toString(), MediaType.parse(application/json; charsetutf-8)); Request request new Request.Builder().url(url).post(requestBody).build(); try (Response response client.newCall(request).execute()) { System.out.println(response.body().string()); } } } 技术要点总结Token 缓存机制access_token有效期为 2 小时千万不要每发一条消息就请求一次 Token会导致接口触发频率限制。建议存储在 Redis 中并设置过期时间。ChatID 获取外部群的chatid与内部群不同通常需要先调用externalcontact/groupchat/list接口获取列表再根据需求匹配目标群。消息类型限制主动发送外部群消息支持text、image、voice、video、file及textcard。注意textcard文本卡片在外部群展示效果最好最常用于业务提醒。安全合规企业微信对外部群消息推送有较严格的合规审计。严禁通过该接口发送任何垃圾营销信息否则会导致自建应用甚至整个企业主体被封禁。QiWe开放平台提供了后台直登功能登录成功后获取相关参数快速Apifox在线测试所有登录功能都是基于QiWe平台API自定义开发。

相关新闻

REPENTOGON完整指南:解锁以撒结合终极模组开发体验

REPENTOGON完整指南:解锁以撒结合终极模组开发体验

REPENTOGON完整指南:解锁以撒结合终极模组开发体验 【免费下载链接】REPENTOGON Script extender for The Binding of Isaac: Repentance 项目地址: https://gitcode.com/gh_mirrors/re/REPENTOGON 想要彻底改变《以撒的结合:悔改》的游戏体验吗&…

2026/10/11 4:03:34 阅读更多 →
如何用免费离线OCR工具Umi-OCR实现高效文字识别:完整配置指南

如何用免费离线OCR工具Umi-OCR实现高效文字识别:完整配置指南

如何用免费离线OCR工具Umi-OCR实现高效文字识别:完整配置指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置…

2026/10/11 2:13:46 阅读更多 →
Java JSON转换实战:安全选型、三大场景解析与性能优化

Java JSON转换实战:安全选型、三大场景解析与性能优化

1. JSON转换:从新手到老手的必经之路 如果你写过Java,那你一定处理过JSON。这玩意儿就像程序员世界里的“普通话”,前后端沟通、系统间数据交换、配置文件存储,几乎无处不在。但就是这个看似简单的数据格式,在实际操作…

2026/10/6 13:01:39 阅读更多 →

最新新闻

Mac外接硬盘无法写入?一文讲透文件系统格式、NTFS与exFAT的选择

Mac外接硬盘无法写入?一文讲透文件系统格式、NTFS与exFAT的选择

很多人第一次把移动硬盘插到 Mac 上,会遇到两种特别抓狂的情况:一种是从 Windows 电脑拿过来的 NTFS 硬盘,插上之后所有文件都能看,但想删一个、拖一个进去,系统直接提示“磁盘是只读的”;还有一种更离谱&a…

2026/10/11 4:52:24 阅读更多 →
企业微信API开发:修改配置为什么需要重启服务?

企业微信API开发:修改配置为什么需要重启服务?

在企业微信自动化系统中,接口地址、消息模板、发送规则和业务开关通常需要根据实际情况调整。 如果每次修改配置都必须重新部署或重启服务,不仅操作麻烦,还可能影响正在执行的任务。 可以根据配置类型,设计适合的更新机制。 一…

2026/10/11 4:52:24 阅读更多 →
跨会话记忆实战:用claude-mem为AI助手构建可检索记忆库

跨会话记忆实战:用claude-mem为AI助手构建可检索记忆库

上周我照常打开一个新的终端会话,让 AI 助手继续处理一个跟了三天的项目。它上来就问我要项目背景、依赖关系、之前定好的技术方案——那一刻我真的有点崩溃:同样的背景我至少解释过三次了。也就是从那时候起,我开始动手折腾 claude-mem 这类…

2026/10/11 4:52:24 阅读更多 →
多目标函数优化实战:从Pareto前沿到NSGA-II工程落地

多目标函数优化实战:从Pareto前沿到NSGA-II工程落地

简介:这份资源面向需要在MATLAB环境下处理多目标优化问题的学生、科研人员与数学建模竞赛选手,核心是提供一套可直接运行的多目标优化模型代码与遗传算法工具箱。包内共64个文件,以60个m脚本为主体,辅以txt说明、ps与pdf文档&…

2026/10/11 4:52:24 阅读更多 →
二进制全一序列算法:从位运算到大数取模的工程实践

二进制全一序列算法:从位运算到大数取模的工程实践

“算法111111”,这名字乍看像随手敲的占位符,但在我代码仓库里,它是个正经编号。所谓“111111”,不是六个一凑热闹,而是二进制下的全一序列:一位的 1、两位的 11、三位的 111,一直到六位的 1111…

2026/10/11 4:52:24 阅读更多 →
n8n集成APITemplate.io节点:自动化生成PDF报告完整指南

n8n集成APITemplate.io节点:自动化生成PDF报告完整指南

1. 这个节点到底解决什么问题我先说一个场景:你辛辛苦苦用n8n把订单数据、客户信息、库存报表全部串成了自动化流程,每天定时跑、遇到异常自动告警,一切都很顺利。直到有一天业务同事跑过来说:“能不能每天自动生成一份带logo、带…

2026/10/11 4:51:24 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →