php对接钉钉和企业微信机器人需分别处理其webhook协议:钉钉要求正确构造json并校验加签(timestamp+sign),企业微信群机器人类似,url回调模式则需签名验证与aes解密;推荐使用guanguans/notify统一封装,敏感凭证须从环境变量读取。

PHP对接钉钉和企业微信机器人,核心是用HTTP POST向它们各自的Webhook地址发送结构化消息。两者协议相似但细节不同,不能混用,需分别处理。
钉钉机器人:发消息只需三步
钉钉机器人依赖Webhook URL(含access_token参数)和可选的加签密钥(开启后必须校验)。PHP调用时注意:URL末尾不能有空格,否则请求直接失败。
- 构造标准JSON数据,msgtype设为text、markdown或link等类型
- 使用curl或file_get_contents发送POST请求,Header需包含Content-Type: application/json
- 若启用加签,需按钉钉文档规则生成timestamp + sign,拼到URL后面再发
企业微信机器人:URL回调更灵活
企业微信支持两种接入方式:一种是群机器人(直发Webhook),另一种是自建应用+URL回调(需验证签名、解密消息)。日常告警推送推荐用群机器人,开发成本最低。
- 群机器人:直接POST到webhook地址,消息格式与钉钉类似,支持text、markdown、image、news四种类型
- URL回调模式:需在企业微信后台配置Token和EncodingAESKey,PHP服务端要实现签名验证、AES解密、消息解析全流程
- 关键点:收到消息后必须在5秒内返回success,否则企业微信会重试;响应体不能含HTML或多余空格
统一封装建议:避免重复写胶水代码
可用一个轻量类管理多平台通知,比如用guanguans/notify这个PHP SDK,它已内置钉钉、企业微信、飞书等适配器,调用简洁:
- 安装:
composer require guanguans/notify - 发钉钉:
Factory::dingtalk()->setWebhook('xxx')->setMessage($msg)->send() - 发企微:
Factory::workweixin()->setWebhook('xxx')->setMessage($msg)->send()
安全与调试要点
Webhook地址属于敏感凭证,切勿硬编码进Git或日志;生产环境应从环境变量或配置中心读取。
- 本地调试时,可用
ngrok或localtunnel暴露回调地址供企业微信验证 - 钉钉返回
{"errcode":0,"errmsg":"ok"}才算成功;企微返回success(纯文本,无JSON) - 遇到400/403错误,优先检查JSON格式是否合法、时间戳是否超时、签名是否匹配
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











