CMS对接企业微信,表单提交推送消息提醒
表单提交后没有及时通知,很容易错过客户线索。
本文介绍如何将CMS系统与企业微信对接,实现表单提交自动推送消息提醒,适合使用WordPress、Z-Blog、帝国CMS等常见建站程序的站长和运维人员,按步骤操作即可完成配置。
准备工作:获取企业微信接口凭证
开始配置前,需要在企业微信管理后台创建一个应用,并拿到三个关键参数。
- 登录企业微信管理后台,进入「应用管理」→「应用」→「自建」,点击「创建应用」。
- 填写应用名称(例如“网站表单通知”),选择可见范围(建议只选需要接收通知的成员或部门),点击创建。
- 创建后进入应用详情页,记录以下信息:
AgentId:应用ID,在应用详情页顶部显示。Secret:应用密钥,点击“查看”并复制。企业ID:进入「我的企业」→「企业信息」,页面底部可找到CorpID。
还需要一个接收消息的成员账号。
建议单独创建一个名为“表单通知”的成员,将其加入应用可见范围,后续推送消息时使用该成员的UserID(在「通讯录」中点击成员查看,或通过API获取)。
CMS端配置:以通用PHP表单为例
不同CMS的表单处理逻辑不同,但核心都是调用企业微信的message/send接口。
以下以原生PHP表单为例,WordPress可改用wp_remote_post,帝国CMS可写入自定义函数文件。
获取access_token
企业微信接口需要先获取access_token,有效期为7200秒,建议缓存。
新建wecom.php文件:
发送消息提醒
在表单提交成功的逻辑后,添加推送代码:
$corpid = '你的企业ID';
$secret = '你的应用Secret';
$agentid = '你的AgentId';
$to_user = '接收消息的UserID';
$token = getWecomToken($corpid, $secret);
if ($token) {
$msg = [
'touser' => $to_user,
'msgtype' => 'text',
'agentid' => $agentid,
'text' => ['content' => "收到新表单提交:\n姓名:{$name}\n电话:{$phone}\n内容:{$message}"]
];
$url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={$token}";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($msg, JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json']
]);
$result = curl_exec($ch);
curl_close($ch);
// 可记录日志便于排查
file_put_contents('/tmp/wecom_send.log', date('Y-m-d H:i:s') . ' ' . $result . PHP_EOL, FILE_APPEND);
}
若使用WordPress,可将上述代码封装成函数,挂载到wp_mail或表单插件的提交钩子上。
注意替换参数中的中文引号,确保JSON编码正确。
避坑指南:常见配置错误
配置过程中容易遇到以下问题,提前注意可以少走弯路。
- IP白名单限制:企业微信应用默认可能开启“企业可信IP”,若服务器IP未加入白名单,接口会返回
60020错误。需在应用详情页的“开发者接口”中配置可信IP,或暂时关闭该限制。 - Secret泄露风险:Secret等同于应用密码,不要直接写在公开的代码仓库或前端JS里。建议存入环境变量或独立的配置文件,并设置文件权限为
600。 - UserID错误:
touser必须填写成员的企业微信UserID,不是手机号或姓名。在通讯录中点击成员,查看“账号”字段。 - 消息类型不匹配:
msgtype若为text,内容需放在text.content中,不要写成content顶级字段,否则返回40008错误。 - 表单重复提交:如果CMS没有防重复机制,用户刷新页面可能触发多次推送。建议在表单提交后设置session或token,避免重复发送。
验证推送是否生效
完成配置后,按以下顺序检查:
- 手动访问表单页面,填写测试数据并提交。
- 查看服务器日志文件
/tmp/wecom_send.log,确认返回{"errcode":0,"errmsg":"ok"}表示发送成功。 - 检查接收成员的企业微信,应收到一条文本消息,内容包含表单字段。
- 如果未收到,根据
errcode排查:40001表示Secret错误,40013表示CorpID错误,60011表示无权限,81013表示UserID不存在。
建议在正式使用前,将接收成员设置为测试账号,验证通过后再切换到正式通知群或负责人。
常见疑问
表单提交后推送延迟很大怎么办?
企业微信接口本身响应较快,延迟通常来自CMS的表单处理逻辑或服务器网络。可以检查是否在提交后同步等待接口返回,建议改为异步推送,例如写入队列后由后台任务发送,避免阻塞用户提交。
能否推送到企业微信群聊而不是个人?
可以。企业微信支持群机器人Webhook,但群机器人不需要AgentId和Secret,只需在群聊中添加机器人并获取Webhook地址,然后向该地址POST消息即可。如果只需要简单通知,群机器人更轻量。
多个表单需要不同接收人怎么处理?
可以在推送代码中根据表单来源设置不同的touser值,或者使用部门ID(toparty)和标签ID(totag)来分组发送。企业微信接口支持同时指定多个接收者,用|分隔即可。
配置完成后,建议定期检查token缓存文件和发送日志,确保长期稳定运行。
如果更换了服务器或调整了应用设置,记得同步更新代码中的参数。