ASCII码 ASCII码

PHP 使用钉钉发送群消息

发布于:2022-06-05 11:51:51  栏目:技术文档

我是分了几个层 , 所以代码需要你们自己整理下

获取access token

//获取钉钉的accessToken
//$accessTokenUrl='https://oapi.dingtalk.com/gettoken';
//$AppKey$AppSecret这两个不多介绍,钉钉上面有
publicstaticfunctiongetAccessTokenApi()
{
returnCurl::get(DingTalk::$accessTokenUrl."?appkey=".DingTalk::$AppKey."&appsecret=".DingTalk::$AppSecret);
}

这里调用的是上面那个获取钉钉access token的方法 存一下redis 存redis的方法就自己写一下

privatefunctiongetAccessToken()
{
$dingTalkCache=newDingTalkCache();
//获取缓存的accessToken,没有的话重新请求
if(!$accessToken=$dingTalkCache->getAccessToken()){
$accessTokenApiResult=DingTalkLogic::getAccessTokenApi();
if($accessTokenApiResult->errcode){
\App\Utils\Logger::error("钉钉获取AccessToken失败。错误码:{$accessTokenApiResult->errcode}。错误信息:{$accessTokenApiResult->errmsg}");
returnfalse;
}
if(!isset($accessTokenApiResult->access_token)){
\App\Utils\Logger::error("钉钉接口请求参数中没有access_token");
returnfalse;
}
if(!$dingTalkCache->setAccessToken($accessTokenApiResult->access_token)){
\App\Utils\Logger::error("钉钉redis保存access_token缓存失败");
returnfalse;
}
return$accessTokenApiResult->access_token;
}
return$accessToken;
}
发送消息
/**
*发送消息到群组
*@paramstring$level消息等级
*@paramstring$class当前位置一般__CLASS__来定位
*@paramstring$message错误消息
*@paramstring$data数据
*@returnbool
*@throws\JsonException
*/
publicfunctionsendMessageToGroup(string$level,string$class,string$message,string$data=""):bool
{
//获取sccesstoken
$accessToken=$this->getAccessToken();
if(!$accessToken){
Logger::error("钉钉accessToken获取失败");
returnfalse;
}
$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'=>"#####<fontcolor=#".$color.">等级:".$level."</font>
\n######时间:".date("Y-m-dH:i:s")."
\n######位置:".$class."
\n######消息:**".$message."**
\n######数据:".$data
]
]
],JSON_THROW_ON_ERROR));
if($result->errcode){
Logger::error($result->errmsg);
returnfalse;
}
returntrue;
}

相关推荐
阅读 +