PHP 使用钉钉发送群消息
16lz
2022-06-02
我是分了几个层 , 所以代码需要你们自己整理下
获取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;}
更多相关文章
- android沉浸式状态栏的实现
- Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发
- Android(安卓)屏幕截图
- android之从Bmob获取数据显示在ListView中
- Android(安卓)利用url获取Bitmap图片
- FAQ00366]如何使Android应用程序获取系统权限
- Android开发面试经——4.常见Android进阶笔试题(更新中...)
- Android中获取网页表单中的数据实现思路及代码
- Bluetooth in Android(安卓)4.2 and 4.3(三):Enable Bluetooth