实现需求之前:先准备好钉钉软件 ---> 在钉钉里面创建技术群 --> 设置里面有个 机器人什么的, 把它打开。 然后按照流程配置,这个可以百度,完事了,会有个链接, 算是一个接口吧。这个链接是独一无二的。
https://oapi.dingtalk.com/robot/send?access_token=********************************** 项目中找到 钉钉 的类 我的是在 commen\tools\DingNotify 然后 写方法,目的在于这个方法,放在某个功能下面,如果程序跑到该功能的部分了,就会触发钉钉报告,机器人会根据数据,自动在群里发信息,说发生了什么事。 我这里写的是用户举报的提醒。 如果用户举报了什么东西,钉钉群里就会自动通知。
public static function Report($title,$text) { //$_SERVER['HTTP_HOST'] 当前请求的 Host: 头部的内容 。 // 这里只有用户在 http://v2.admin.haiwaiuni.com 举报时才提醒
if($_SERVER['HTTP_HOST'] == 'http://v2.admin.haiwaiuni.com') { try { $webHook = \Yii::$app->params['ding-notify-url']['Report']; $client = new Client();i //下面有颜色的这个格式是钉钉手册里面的。直接看手册,需要什么数据,拿来改巴改巴就行 $response = $client->request("POST", $webHook, [ 'json' => [ "actionCard" => [ "title" => $title, "text" => $text, "hideAvatar" => "0", "btnOrientation" => 0, "singleTitle" => "请点击打开举报页面,查看详情", "singleURL" => "http://v2.admin.test1.ukwelife.com" // 该网址就是钉钉报的信息,你点击它就会进到相应页面 ], "msgtype" => "actionCard" ] ]); return true; } catch (\Exception $e) { \Yii::error($e); // 出错的话,可以在这里var_dump($e->getMessage) 查看错误是因为什么产生的 return false; } } } 因为用户举报需要点击举报按钮吧? 然后找到该按钮的接口, 把该方法写在接口方法里去调用。
这个函数就是举报接口下面的,那么在该方法下面调用钉钉提醒 public function actionReportCreate() { ...... // 巴拉巴拉连接数据库取了一堆举报的 内容的相关数据 .... //
DingNotify::Report( "有用户举报", // 对应上面的 $title " // 下面的对应上面的$test 举报原因 :$data[reason] 举报说明 :$data[content] 话题文字 :$data[topic] " );
} 程序到这里还没完,你运行会报错, 说是方法Report没定义, 为啥会这样 ? 因为你还没配置好呢
$webHook = \Yii::$app->params['ding-notify-url']['Report']; 没有配置 ding-notify-url 呀,数组不是瞎写的。 应该在 ding-notify-url 下面把Report配置进去, 我的配置文件在commen\config\params.php里面。 找到 return[
'ding-notify-url' => [ // 在这里面加入
'Report' => 'https://oapi.dingtalk.com/robot/send?access_token=**********************************' //这个链接 就是文章开头写的
],
];
好了,这样只要用户举报, 钉钉就可以自动在群里提醒了,