多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

EasyWeChat 企业微信群机器人开发指南:Webhook 消息发送全解析

EasyWeChat 企业微信群机器人开发指南:Webhook 消息发送全解析 后端即时通讯【免费下载链接】easywechat 一个 PHP 微信 SDK项目地址https://gitcode.com/gh_mirrors/ea/easywechat点击查看免费下载企业微信群机器人是 EasyWeChat 企业微信Work模块中一个轻量且实用的能力无需接入corp_id/secret与 Access Token 体系只要在群内添加机器人并取得 Webhook 地址中的key即可向群聊推送文本、Markdown、图片和图文消息。本文以 docs/src/4.x/wework/group-robot.md 为骨架结合仓库源码与配置系统讲解从取 key、初始化应用到四类消息发送的完整流程读完即可在监控告警、CI/CD 通知、定时提醒等场景中落地使用。前置准备添加机器人并提取 Webhook Key使用群机器人前必须先在企业微信的目标群组中完成机器人添加进入目标群聊 → 点击右上角「...」→「群机器人」→「添加机器人」添加成功后群内会生成一个形如下方的Webhook 地址https://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyab4f609a-3feb-427c-ae9d-b319ca712d36将 URL 中key后面那一段 UUID如ab4f609a-3feb-427c-ae9d-b319ca712d36取出作为后续所有示例中$groupKey的值。需要特别说明的是群机器人鉴权完全依赖这个key不需要企业微信的corp_id、secret和 access_token。因此从 EasyWeChat 的架构看群机器人是一个与 src/Work/Application.php 中AccessToken体系解耦的独立能力——文档也专门为其保留了group_robot_messenger/group_robot两个服务入口。这也是它适合做零配置快速通知的原因。在 docs/src/4.x/sidebar.js 中群机器人作为企业微信子菜单登记为「群机器人」/4.x/wework/group-robot.html与消息发送、通讯录、JSSDK 等并列对应的 5.x 文档 docs/src/5.x/wework/group-robot.md 内容与之完全一致本文示例在 4.x/5.x 版本下均可直接使用。初始化企业微信应用群机器人消息最终仍由企业微信应用实例$app发起。按 docs/src/4.x/wework/index.md 的说明使用\EasyWeChat\Factory::work($config)初始化$config [ corp_id xxxxxxxxxxxxxxxxx, agent_id 100020, // 如果有 agent_id 则填写 secret xxxxxxxxxx, // 指定 API 调用返回结果的类型array(default)/collection/object/raw/自定义类名 response_type array, log [ level debug, file __DIR__./wechat.log, ], ]; $app Factory::work($config);之后即可通过$app获取群机器人 Messenger 实例本文档 4.x 版本采用该命名空间约定文档中以$app-group_robot_messenger访问。发送文本类型消息文本消息是最常用的通知载体EasyWeChat 提供两种写法。快速发送字符串直传// 获取 Messenger 实例 $messenger $app-group_robot_messenger; // 群组 key $groupKey ab4f609a-3feb-427c-ae9d-b319ca712d36; $messenger-message(大家好我是本群的喝水提醒小助手)-toGroup($groupKey)-send(); // 或者写成 $messenger-toGroup($groupKey)-send(大家好我是本群的喝水提醒小助手);可以看到message()与send()均接受字符串参数message()负责装配消息send()负责发送二者与toGroup($groupKey)组合顺序可以互换语义完全一致。使用 Text 消息类当需要携带提及等复杂能力时改用消息类对象use EasyWeChat\Work\GroupRobot\Messages\Text; // 准备消息 $text new Text(hello); // 发送 $messenger-message($text)-toGroup($groupKey)-send();Text类位于EasyWeChat\Work\GroupRobot\Messages命名空间下与下文Markdown、Image、News等消息类同属该目录是群机器人消息体系的核心模型。某人 / 所有人文本消息支持通过构造函数、mention()、mentionByMobile()三种方式实现提及use EasyWeChat\Work\GroupRobot\Messages\Text; // 通过构造函数传参 $text new Text(hello, her-cat, 18700000000); //$text new Text(hello, [her-cat, overtrue], [18700000000, 18700000001]); // 通过 userId $text-mention(her-cat); //$text-mention([her-cat, overtrue]); // 通过手机号 $text-mentionByMobile(18700000000); //$text-mentionByMobile([18700000000, 18700000001]); // 所有人 $text-mention(all); //$text-mentionByMobile(all); $messenger-message($text)-toGroup($groupKey)-send();提及参数的对应规则如下方式方法参数类型典型值按成员 userIdmention()字符串或字符串数组her-cat/[her-cat, overtrue]按手机号mentionByMobile()字符串或字符串数组18700000000/[18700000000, 18700000001]所有人mention()或mentionByMobile()特殊值all构造函数第二、三参数与上述两个方法一一对应第二个参数按 userId 提及第三个参数按手机号提及两种提及方式也可以同时混用。发送 Markdown 类型消息Markdown 消息适合需要结构化排版的通知标题、引用、彩色文字等内容由Markdown消息类包装use EasyWeChat\Work\GroupRobot\Messages\Markdown; $content # 标题一 ## 标题二 font colorinfo绿色/font font colorcomment灰色/font font colorwarning橙红色/font 引用文字 ; $markdown new Markdown($content); $messenger-message($markdown)-toGroup($groupKey)-send();使用要点内容直接以多行字符串传入Markdown构造函数支持#/##标题、引用、font color...彩色文字等企业微信 Markdown 语法font color支持三种取值info绿色、comment灰色、warning橙红色发送时同样遵循message()-toGroup()-send()的链式调用约定与文本消息完全一致。发送图片类型消息图片消息需要提供图片内容的base64 编码与md5 摘要二者缺一不可use EasyWeChat\Work\GroupRobot\Messages\Image; $img file_get_contents(http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png); $image new Image(base64_encode($img), md5($img)); $result $messenger-message($image)-toGroup($groupKey)-send();实现细节说明Image构造函数的第一个参数是图片文件的 base64 编码base64_encode($img)第二个参数是同一份原始内容的 md5 摘要md5($img)用于服务端校验图片完整性实际项目中图片多来自本地文件file_get_contents(/path/to/image.png)或 OSS/CDN 下载流这里以官方测试图 URL 作示例发送结果会赋值给$result可用于后续的返回值检查与日志记录。发送图文类型消息图文消息News由若干NewsItem条目组成每个条目包含标题、描述、跳转链接与封面图use EasyWeChat\Work\GroupRobot\Messages\News; use EasyWeChat\Work\GroupRobot\Messages\NewsItem; $items [ new NewsItem([ title 中秋节礼品领取, description 今年中秋节公司有豪礼相送, url https://easywechat.com, image http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png, ]), //... ]; $news new News($items); $messenger-message($news)-toGroup($groupKey)-send();NewsItem支持的关键字段字段说明title图文标题description图文描述摘要文字url点击后跳转的链接image封面图片 URL多个NewsItem组成数组后整体传入News构造函数即可一次发送多条图文用//...继续追加条目。其他方式直接使用 group_robot除了group_robot_messenger还可以直接通过group_robot发送两者底层逻辑一致$app-group_robot-message(大家好我是本群的喝水提醒小助手)-toGroup($groupKey)-send();也就是说在企业微信应用实例$app上存在两个可用的群机器人入口$app-group_robot_messenger与$app-group_robot选择任一即可便于在不同代码风格与命名习惯下使用。消息类型速查将上述内容汇总为一张对照表方便开发时快速查阅消息类型消息类构造参数备注文本Textcontent可选userIdList、mobileList支持mention()/mentionByMobile()/allMarkdownMarkdowncontent支持标题、引用、font color彩色文字图片Imagebase64Content、md5base64 与 md5 均基于同一份原始图片内容图文NewsNewsItem[]每条含title/description/url/image所有消息统一通过$messenger-message($msg)-toGroup($groupKey)-send()发送$groupKey即群机器人 Webhook 地址中的key。注意事项与最佳实践Key 即凭证$groupKey等价于群聊的推送令牌任何人拿到它都可以向该群发消息务必妥善保管避免提交到公开仓库或日志中无需 Access Token群机器人走 Webhook 通道不依赖corp_id/secret这也意味着它与 src/Work/Application.php 中基于AccessToken的企业应用接口如通讯录、应用消息在使用前提上有明显区别调用频率企业微信官方对群机器人接口设有频率限制高频轮询推送如每秒级别的告警风暴可能被限流建议在业务侧做消息聚合与节流内容约束文本、Markdown、图文、图片四类已覆盖绝大多数通知场景若需发送文件或模板卡片等更多类型可在掌握上述 Messenger 模式后自行扩展发送链路保持一致典型落地场景定时喝水/值班提醒文档示例、CI/CD 构建结果通知、线上监控告警聚合、日报/周报自动推送等均可基于本文的四类消息快速实现。总结企业微信群机器人是 EasyWeChat 中门槛最低、接入最快的通知能力添加机器人取key→ 初始化$app→ 组装消息 →toGroup()-send()四步即可完成向任意企业微信群推送消息。文本含 提及、Markdown含彩色排版、图片base64 md5、图文NewsItem 列表四类消息完整覆盖了日常自动化通知场景而group_robot_messenger与group_robot双入口的设计也让接入方式更加灵活。结合 docs/src/4.x/wework/group-robot.md 原文与本文的源码级补充你可以直接在项目中投入生产使用。赞分享后端即时通讯【免费下载链接】easywechat 一个 PHP 微信 SDK项目地址https://gitcode.com/gh_mirrors/ea/easywechat点击查看免费下载相关推荐企业微信Webhook机器人Java SDK5步实现自动化消息推送企业微信Webhook机器人Java SDK5步实现自动化消息推送 企业微信Webhook机器人Java SDK是一款专为开发者设计的消息推送解决方案通过面企业微信机器人消息推送的Java实战指南企业微信机器人消息推送的Java实战指南 在现代企业协作环境中高效的消息推送机制已成为团队协同的重要支撑。企业微信作为国内主流的企业级通讯工具其机器人Web企业微信Webhook机器人Java SDK简化消息推送的终极解决方案企业微信Webhook机器人Java SDK简化消息推送的终极解决方案 在当今企业协作场景中实时消息推送已成为提升团队效率的关键环节。 wework weh上一篇Podcast Bulk Downloader解决播客离线存储的3大核心痛点下一篇终极指南解锁ComfyUI ControlNet图像控制新维度创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表