当前位置: 首页 > news >正文

钉钉 - 机器人消息推送(签名版)

前言

在日常生活中,我们可能会遇到某些异常发生后需要紧急通知到群里,让相关人员看到紧急处理的事件触发机制。 消息群我采用的是钉钉推送,本文介绍了如何用php 推送钉钉机器人消息。

源码封装

<?php
/*** 钉钉通知 - 签名版*/
class DingDingNoticeSign
{/*** 钉钉access_token 创建机器人时获得** @var string*/protected $accessToken;/*** 钉钉签名 类型为签名内容可获取** @var string*/protected $sign;public function __construct($accessToken,$sign){$this->accessToken = $accessToken;$this->sign = $sign;}public function sendMsg($msg){$this->sendDingMessage($this->structApiUrl(),$this->sign,$msg);}protected function generateSign($timestamp, $secret) {return urlencode(base64_encode(hash_hmac('sha256', $timestamp . "\n" . $secret, $secret, true)));}protected function sendDingMessage($webhookUrl, $secret, $message) {$timestamp = time() * 1000; // 当前时间戳$sign = $this->generateSign($timestamp, $secret); // 生成签名$headers = ['Content-Type: application/json;charset=utf-8;'];$body = json_encode(['msgtype' => 'text', // 消息类型,例如 text, markdown 等'text' => ['content' => $message // 消息内容]]);$webhookUrl.="&timestamp={$timestamp}&sign={$sign}";
//        dd($webhookUrl);$options = [CURLOPT_URL => $webhookUrl,CURLOPT_POST => true,CURLOPT_RETURNTRANSFER => true,CURLOPT_SSL_VERIFYPEER => false, // 注意:实际使用中应设置为 true 以增强安全性,此处为示例简化设置CURLOPT_POSTFIELDS => $body,CURLOPT_HTTPHEADER => $headers];$ch = curl_init();curl_setopt_array($ch, $options);$response = curl_exec($ch);
//        if ($response === false) {
            echo 'Curl error: ' . curl_error($ch);
//        } else {
            echo 'Response: ' . $response;
//        }curl_close($ch);}protected function structApiUrl(){$url = "https://oapi.dingtalk.com/robot/send";$query = ['access_token'  =>  $this->accessToken];$url = "{$url}?".http_build_query($query);return $url;}
}

如何使用?(见下文)

 //钉钉消息通知$accessToken = "xxxxxxxxxxxxxx";//access_token 创建机器人时获得的参数 get param中的access_token$sign = "xxxxxxxxxxxxx";//sign  选择为签名时获得的参数$dingdingService = new DingDingNoticeSign($accessToken,$sign);$dingdingService->sendMsg("我是消息通知");

很简单吧,内容封装好了,直接拿下来使用即可

相关文章:

  • IDEA 打开文件乱码
  • 红花基因组2-文献精读141
  • 【Qt】之【Get√】【Bug】通过值捕获(或 const 引用捕获)传进 lambda,会默认复制成 const
  • ​减少交通拥堵、提高效率、改善交通安全的智慧交通开源了。
  • (30)课48: 联合查询 SELECT 列名 FROM 表A UNION [ ALL ] SELECT 列名 FROM 表B...;*补充范围 in 关键字的语法 in (“A“, ‘B‘) 即可
  • IDEA:配置 Git 需要完成 Git 路径设置、账号认证以及仓库关联三个主要步骤
  • VisDrone无人机视觉挑战赛观察解析2025.6.5
  • 【bug】Error: /undefinedfilename in (/tmp/ocrmypdf.io.9xfn1e3b/origin.pdf)
  • 基于cornerstone3D的dicom影像浏览器 第二十八章 LabelTool文字标记,L标记,R标记及标记样式设置
  • ArcGIS Pro 3.4 二次开发 - 公共设施网络
  • 3ds Max 渲染技术突破:一键解锁照片级真实感!
  • GC1809:高性能音频接收与转换芯片
  • 自动化办公集成工具:一站式解决文档处理难题
  • Django之表格上传
  • 浅谈 Linux 防火墙:从原理到实践
  • Neovim - 常用插件,提升体验(三)
  • 【虚拟机版本号】如果忘记了版本号,这样查找版本号
  • 【Linux】网络--数据链路层--以太网
  • 空间利用率提升90%!小程序侧边导航设计与高级交互实现
  • MPNet:旋转机械轻量化故障诊断模型详解python代码复现
  • 湖北移动网站建设/营销网店推广的软文
  • 发票项目网站建设费/seo推广费用
  • 陕西江川建设有限公司公司网站/百度收录工具
  • 网站标题间隔符/seo营销名词解释
  • 金乡做网站 亿九/hao123上网从这里开始官方
  • 网站服务器做下载链接/宁波江北区网站推广联系方式