实现需求之前:先准备好钉钉软件 ---> 在钉钉里面创建技术群 --> 设置里面有个 机器人什么的, 把它打开。 然后按照流程配置,这个可以百度,完事了,会有个链接, 算是一个接口吧。这个链接是独一无二的。
https://oapi.dingtalk.com/robot/send?access_token=**********************************
项目中找到 钉钉 的类 我的是在 commen oolsDingNotify
然后 写方法,目的在于这个方法,放在某个功能下面,如果程序跑到该功能的部分了,就会触发钉钉报告,机器人会根据数据,自动在群里发信息,说发生了什么事。
我这里写的是用户举报的提醒。 如果用户举报了什么东西,钉钉群里就会自动通知。
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配置进去,
我的配置文件在commenconfigparams.php里面。
找到
return[
'ding-notify-url' => [
// 在这里面加入
'Report' => 'https://oapi.dingtalk.com/robot/send?access_token=**********************************' //这个链接 就是文章开头写的
],
];
好了,这样只要用户举报, 钉钉就可以自动在群里提醒了,