CMS对接钉钉,表单提交推送钉钉消息提醒:CMS对接钉钉

很多站长希望网站表单有人提交时,能立刻在钉钉收到提醒,避免错过客户留言。
实现思路很简单:在钉钉群创建自定义机器人,拿到 Webhook 地址,再在 CMS 的表单提交处理逻辑里调用这个地址发送消息。
本文按零基础可操作的方式,讲清配置、代码接入和验证方法。

动手前需要确认的三件事

开始配置前,先确认你的环境满足以下条件,否则后面容易卡住:

  • 一个钉钉账号,并且能创建或加入至少一个群聊。
  • CMS 后台能编辑表单处理文件,或者支持自定义表单提交后的回调。如果 CMS 完全封闭、不允许改代码,就需要用「表单提交到第三方接口」或「数据库触发」的替代方案。
  • 服务器能访问外网,特别是能请求 https://oapi.dingtalk.com。如果服务器在内网且限制出站,需要先放行。

在钉钉群里创建自定义机器人

进入目标钉钉群,点击右上角群设置,找到「智能群助手」或「机器人管理」,选择「添加机器人」中的「自定义机器人」。

创建时重点填写两项:

  • 机器人名称:例如「网站表单提醒」,方便群里识别。
  • 安全设置:推荐勾选「加签」,这是目前兼容性最好、也最安全的方式。如果选「自定义关键词」,消息内容必须包含你设置的关键词,否则会被钉钉拒绝。

创建完成后,钉钉会给出一个 Webhook 地址,格式类似:

https://oapi.dingtalk.com/robot/send?access_token=你的token

如果启用了加签,还会同时给出一个以 SEC 开头的密钥。这个密钥只显示一次,务必先复制保存,关闭页面后就看不到了。

在 CMS 表单提交逻辑中接入推送

不同 CMS 的表单处理文件位置不同。
常见位置是 application/form/controller/Index.php、includes/form.php 或主题目录下的 post.php。
找到表单数据入库或发送邮件的那一段代码,在成功之后加入推送逻辑。

下面以 PHP 为例,给出一个可直接改用的推送函数:

function sendDingTalk($content) {
    $webhook = '你的Webhook地址';
    $secret  = '你的SEC密钥';

    $timestamp = round(microtime(true) * 1000);
    $stringToSign = $timestamp . "\n" . $secret;
    $sign = urlencode(base64_encode(hash_hmac('sha256', $stringToSign, $secret, true)));

    $url = $webhook . "×tamp={$timestamp}&sign={$sign}";

    $data = [
        'msgtype' => 'text',
        'text' => ['content' => $content]
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_exec($ch);
    curl_close($ch);
}

然后在表单提交成功的位置调用:

$msg = "收到新表单提交\n姓名:{$name}\n电话:{$phone}\n内容:{$content}";
sendDingTalk($msg);

注意:推送代码要放在数据确认保存成功之后,避免表单校验失败也发消息。
同时建议用 try 包裹或加超时控制,钉钉接口异常不应导致用户提交失败。

容易踩坑的地方

  • 签名计算错误:timestamp 和 secret 之间必须是换行符 \n,不是空格,也不是字符串拼接。用错会导致返回 310000 错误。
  • 忘记 URL 编码:sign 必须经过 urlencode,否则特殊字符会破坏请求。
  • IP 白名单没配:如果安全设置里填了服务器 IP,但服务器出口 IP 变了,推送会失败。建议先不加白名单,调通后再按需收紧。
  • 消息频率超限:钉钉自定义机器人有发送频率限制,短时间内大量表单提交可能被限流。高频场景建议在代码里加简单队列或合并推送。
  • 服务器时间不准:加签依赖时间戳,服务器时间偏差过大会导致签名失效。可以用 date 命令检查,必要时同步 NTP。

验证推送是否真的生效

配置完成后,不要只看代码有没有报错,要实际验证:

  1. 在网站前台提交一条测试表单,内容填「测试」。
  2. 观察钉钉群是否收到消息,消息里应包含你拼装的字段。
  3. 如果没收到,先查看 CMS 日志或 PHP 错误日志,确认 curl_exec 是否返回了内容。
  4. 手动访问一次 Webhook 地址(配合正确的签名参数),看钉钉返回的 JSON 里 errcode 是否为 0。返回非 0 时,错误码会直接说明原因。

只要钉钉群能收到测试消息,并且表单字段完整,整个 CMS 对接钉钉的消息提醒就算配置成功了。
后续如果更换机器人或密钥,只需更新代码里的 $webhook 和 $secret 两个变量即可。

分享到:
上一篇
CMS模板缓存机制原理,修改模板不生效原因
下一篇
CMS后台多管理员角色,不同权限分配方案
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意