日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

钉钉api 获取 accesstoken_Thinkphp5.X异常接管后通过钉钉机器人推送通知

發布時間:2025/3/15 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 钉钉api 获取 accesstoken_Thinkphp5.X异常接管后通过钉钉机器人推送通知 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大多團隊在生產環境下都會關閉app_debug,所以相對應的錯誤信息就不能實時查看到。以下分享一個目前團隊項目正在用的生產環境下相關技術人員能第一時間獲取通知的方法:

先上效果圖:

以上通知是在釘釘中顯示!

下面介紹開發步驟:

1:Thinkphp版本需在5.X或以上,在config/app.php中接管異常處理

(個人案例中調用方式,具體命名依照對應項目建立)

'exception_handle' => 'appCommonControllerException',

具體操作可以參考官方文檔:https://www.kancloud.cn/manual/thinkphp5_1/354092

2:在異常接管方法中實現以下代碼

<?php /* * 異常接管 */namespace appCommonController;use Exception;use thinkexceptionHandle;use thinkexceptionHttpException;use thinkexceptionValidateException;class Exception extends Handle { public function render(Exception $e) { if (method_exists($e, 'getStatusCode')) { // 參數驗證錯誤 if ($e instanceof ValidateException) { return json($e->getError(), 422); } // 請求異常 if ($e instanceof HttpException && request()->isAjax()) { return response($e->getMessage(), $e->getStatusCode()); } if ($e->getStatusCode() == 404) { $module = hinkfacadeRequest::module(); !$module and $module = 'index'; return view($module . '@public/404'); } if ($e->getStatusCode() == 500) { return parent::render($e); } } else { $file = $e->getFile(); $line = $e->getLine(); $code = parent::getCode($e); $message = parent::getMessage($e); $error_message = '[' . $code . '] ErrorException in ' . $file . ' line ' . $line . PHP_EOL . $message; // 此處為釘釘server $server = new appServerDingdingServer(); $data = [ 'text' => ['content' => $error_message] ]; $server->robotSend($data); } // 其他錯誤交給系統處理 return parent::render($e); }}

3:釘釘Server的創建

<?php /** * 釘釘開放API * https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq */namespace appServer;class DingdingServer { private $API_URL = "https://oapi.dingtalk.com/robot/send?access_token=xxxxx"; public function __construct() { } /** * * @param array $data * @param string $msgtype text link markdown actionCard * @return boolean */ public function robotSend($data = [], $msgtype = 'text') { if (empty($data)) { return false; } $final_data = $data + ['msgtype' => $msgtype]; $data_string = json_encode($final_data); $webhook = $this->API_URL; $result = $this->request_by_curl($webhook, $data_string); return $result; } protected function request_by_curl($remote_server, $post_string) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $remote_server); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset = utf-8')); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 線下環境不用開啟curl證書驗證, 未調通情況可嘗試添加該代碼 // curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); // curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); curl_close($ch); return $data; }}

此處釘釘接口需要一個access_token參數,具體操作步驟參考:

1:先下載PC版釘釘

2:發起群聊,添加至少2人創建群聊

3:點擊群聊界面右上角三個點中的 群機器人,選擇 添加機器人,選擇最后一個 自定義

4:釘釘API地址就在webhook中

到這里,生產環境下即使關閉了app_debug,我們也能第一時間收到異常記錄了!特別提醒,釘釘貌似每分鐘只能發送20條推送。

關于釘釘的API,代碼中默認調用text文本形式,其實還有很多,例如 link markdown actionCard 方式,小伙伴們可以自行研究~

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的钉钉api 获取 accesstoken_Thinkphp5.X异常接管后通过钉钉机器人推送通知的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。