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

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

前言

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

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

http://www.lryc.cn/news/2402632.html

相关文章:

  • Redux 实践与中间件应用
  • ModBus总线协议
  • 【计算机网络】非阻塞IO——poll实现多路转接
  • 在.NET Core控制器中获取AJAX传递的Body参数
  • snprintf函数用法及注意事项详解
  • vue-20(Vuex 状态管理的最佳实践)
  • DAX权威指南8:DAX引擎与存储优化
  • 智慧货运飞船多维度可视化管控系统
  • 电脑开不了机,主板显示67码解决过程
  • Spring Boot 类加载机制深度解析
  • Python 训练营打卡 Day 45
  • 自托管图书搜索引擎Bookologia
  • 前端flex、grid布局
  • Maven相关问题:jna版本与ES冲突 + aop失效
  • Tomcat全方位监控实施方案指南
  • 开源PHP在线客服系统源码搭建教程
  • centos7升级glibic-2.28
  • 在Docker里面运行Docker
  • 设计模式复习小结
  • To be or Not to be, That‘s a Token——论文阅读笔记——Beyond the 80/20 Rule和R2R
  • 【基础】每天掌握一个Linux命令 - awk
  • 《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
  • AWS API Gateway配置日志
  • Towards Open World Object Detection概述(论文)
  • 轻松备份和恢复 Android 系统 | 4 种解决方案
  • 具备强大的数据处理和分析能力的智慧地产开源了
  • RK3588和FPGA桥片之间IO电平信号概率性不能通信原因
  • 【iSAQB软件架构】软件架构中构建块的视图:黑箱、灰箱和白箱及其交互机制
  • .net jwt实现
  • LangChain【7】之工具创建和错误处理策略