参考api:企业内部机器人支持的消息类型 - 钉钉开放平台
抛出项目错误: app/Exceptions/Handler.php
1、准备工作
钉钉创建一个群,然后智能群助手
2、添加一个自定义机器人
3、设置安全设置,记录下Webhook
4、撸代码:【根据需要的封装】
public function report(Exception $exception)
{
if ($this->shouldReport($exception)) {
$msg = $exception->getMessage();
$url = 'webhook';
// 第一步,把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。
$time = time() * 1000;//毫秒级时间戳,我这里为了方便,直接把时间*1000了
$secret = '秘钥';
$sign = hash_hmac('sha256', $time . "\n" . $secret, $secret, true);
$sign = base64_encode($sign);
$sign = urlencode($sign);
$msg = [
'msgtype' => 'text',//这是文件发送类型,可以根据需求调整
'text' => [ // 发送钉钉群接收到的信息
'content' => [
'url' => Request::url(),
'params' => Request::getRequestUri(),
'msg' => $msg
],
],
];
$url = "{$url}×tamp={$time}&sign={$sign}";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($msg));
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
curl_close($curl);
// Log::info('Exception Happen', [
// 'url' => Request::url(),
// 'params' => Request::getRequestUri(),
// ]);
}
parent::report($exception);
}