我是分了几个层 , 所以代码需要你们自己整理下
获取access token
// 获取钉钉的accessToken //$accessTokenUrl = 'https://oapi.dingtalk.com/gettoken'; //$AppKey $AppSecret 这两个不多介绍,钉钉上面有 public static function getAccessTokenApi() { return Curl::get(DingTalk::$accessTokenUrl."?appkey=".DingTalk::$AppKey."&appsecret=".DingTalk::$AppSecret); }
这里调用的是上面那个获取钉钉access token的方法 存一下redis 存redis的方法就自己写一下
private function getAccessToken() { $dingTalkCache = new DingTalkCache(); // 获取缓存的accessToken , 没有的话重新请求 if (!$accessToken = $dingTalkCache->getAccessToken()){ $accessTokenApiResult = DingTalkLogic::getAccessTokenApi(); if ($accessTokenApiResult->errcode){ \App\Utils\Logger::error("钉钉获取Access Token 失败。错误码:{$accessTokenApiResult->errcode}。错误信息:{$accessTokenApiResult->errmsg}"); return false; } if (!isset($accessTokenApiResult->access_token)){ \App\Utils\Logger::error("钉钉接口请求参数中没有 access_token"); return false; } if (!$dingTalkCache->setAccessToken($accessTokenApiResult->access_token)){ \App\Utils\Logger::error("钉钉redis保存access_token缓存失败"); return false; } return $accessTokenApiResult->access_token; } return $accessToken; }
发送消息
/** * 发送消息到群组 * @param string $level 消息等级 * @param string $class 当前位置 一般__CLASS__来定位 * @param string $message 错误消息 * @param string $data 数据 * @return bool * @throws \JsonException */ public function sendMessageToGroup(string $level, string $class, string $message, string $data=""): bool { // 获取sccesstoken $accessToken = $this->getAccessToken(); if (!$accessToken){ Logger::error("钉钉accessToken 获取失败"); return false; } $url = \App\Define\DingTalk::$sendMessageToGroup."?access_token=". $accessToken; //这个是自己定义的一个根据错误等级显示不用字体颜色而已,不要也没事 $color = $this->getLevelColor($level); $result = Curl::post($url, json_encode([ /** * 消息群ID , 也就是发送到哪个群的ID * https://wsdebug.dingtalk.com/ * 通过这个链接进行扫码查看chatId值 */ 'chatid' => \App\Define\DingTalk::$chatId, 'msg' => [ 'msgtype' => 'markdown', 'markdown' => [ 'title' => "{$level}消息", 'text' => "##### <font color=#".$color.">等级:".$level."</font> \n ###### 时间:".date("Y-m-d H:i:s")." \n ###### 位置:". $class ." \n ###### 消息:**".$message."** \n ###### 数据:". $data ] ] ], JSON_THROW_ON_ERROR)); if ($result->errcode){ Logger::error($result->errmsg); return false; } return true; }