如何用ThinkPHP封装Webhook并通过钉钉机器人发送Markdown格式告警通知?

2026-04-27 19:070阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1083个文字,预计阅读时间需要5分钟。

如何用ThinkPHP封装Webhook并通过钉钉机器人发送Markdown格式告警通知?

直接使用+cURL或+file_get_contents+发起POST请求即可,无需安装SDK。锤子机器人只认+POST+application/json+。传递过去的是标准的JSON格式,ThinkPHP自带的+Http+类或原生+cURL+都能搞定。

关键不是“能不能发”,而是「怎么发才不被钉钉拒收」——比如签名失效、timestampsign 不匹配、JSON 格式错一个逗号就 400。

  • 必须带上 timestamp(毫秒时间戳)和 sign(HMAC-SHA256 签名),否则返回 {"errcode":310000,"errmsg":"invalid signature"}
  • sign 计算时,原始字符串是 "<timestamp>\n<secret>"</secret></timestamp>,注意换行符 \n 是必须的,不是空格也不是回车
  • Webhook 地址里的 access_tokensign 要动态拼,不能硬编码在 URL 里再 GET 请求 —— 钉钉只接受 POST body 里带签名

Markdown 消息体怎么写才不被截断或渲染失败

钉钉对 Markdown 支持有限,不是所有 GitHub 风格都管用。

阅读全文

本文共计1083个文字,预计阅读时间需要5分钟。

如何用ThinkPHP封装Webhook并通过钉钉机器人发送Markdown格式告警通知?

直接使用+cURL或+file_get_contents+发起POST请求即可,无需安装SDK。锤子机器人只认+POST+application/json+。传递过去的是标准的JSON格式,ThinkPHP自带的+Http+类或原生+cURL+都能搞定。

关键不是“能不能发”,而是「怎么发才不被钉钉拒收」——比如签名失效、timestampsign 不匹配、JSON 格式错一个逗号就 400。

  • 必须带上 timestamp(毫秒时间戳)和 sign(HMAC-SHA256 签名),否则返回 {"errcode":310000,"errmsg":"invalid signature"}
  • sign 计算时,原始字符串是 "<timestamp>\n<secret>"</secret></timestamp>,注意换行符 \n 是必须的,不是空格也不是回车
  • Webhook 地址里的 access_tokensign 要动态拼,不能硬编码在 URL 里再 GET 请求 —— 钉钉只接受 POST body 里带签名

Markdown 消息体怎么写才不被截断或渲染失败

钉钉对 Markdown 支持有限,不是所有 GitHub 风格都管用。

阅读全文