下面由laravel教程欄目給大家介紹laravel框架怎么使用釘釘聊天機器人接收系統警報?,希望對大家有所幫助!
釘釘提供的聊天機器人功能,可以使用自定義機器人的 webhook 我們可以將錯誤日志及時的推送到相關人員。
1.獲取釘釘聊天機器人 Access Token
在使用本擴展之前,你需要ding-doc.dingtalk.com/doc#/servera…獲取相關信息。
2.所需知識
- Carbon
- GuzzleHttp
3.編寫代碼
<?php namespace 所在命名空間; use CarbonCarbon; use GuzzleHttpClient; use GuzzleHttpExceptionGuzzleException; use IlluminateSupportFacadesLog; class Ding { CONST BASE_URI = "https://oapi.dingtalk.com/"; CONST NOTICE_URL = [ "robot/send?access_token=*******", 'robot/send?access_token=*********' ]; /** * Description: 釘釘文本通知 * @param $data * @param array $at * @param bool $isAtAll * @throws GuzzleException */ public static function text($data, $at = [], $isAtAll = false) { $notice_url = self::NOTICE_URL[rand(0, count(self::NOTICE_URL) - 1)]; $data = "#### 異常觸發時間".Carbon::now()->format('Y-m-d?H:i:s')."n".$data; ????????$pushData?=?[ ????????????'msgtype'?=>?'text', ????????????'text'????=>?['content'?=>?$data], ????????????'at'??????=>?['atMobiles'?=>?$at,?'isAtAll'?=>?$isAtAll], ????????]; ????????self::getData($notice_url,?$pushData); ????} ????/** ?????*?Description:?釘釘預警markdown ?????*?@param????????$data ?????*?@param?array?$at ?????*?@param?bool?$isAtAll ?????*?@throws?GuzzleException ?????*/ ????public?static?function?markdown($data,?$at?=?[],?$isAtAll?=?false) ????{ ????????$notice_url?=?self::NOTICE_URL[rand(0,?count(self::NOTICE_URL)?-?1)]; ????????$data['text']?=?"####?異常觸發時間".Carbon::now()->format('Y-m-d?H:i:s')."n".$data['text']; ????????$pushData?=?[ ????????????'msgtype'??=>?'markdown', ????????????'markdown'?=>?$data, ????????????'at'???????=>?['atMobiles'?=>?$at,?'isAtAll'?=>?$isAtAll], ????????]; ????????self::getData($notice_url,?$pushData); ????} ????/** ?????*?Description:?釘釘預警處理 ?????*?@param?$notice_url ?????*?@param?$pushData ?????*?@throws?GuzzleException ?????*/ ????public?static?function?getData($notice_url,?$pushData) ????{ ????????try?{ ????????????$client?=?new?Client(['base_uri'?=>?self::BASE_URI,?'timeout'?=>?3.0]); ????????????$res????=?$client->request('POST', ????????????????$notice_url, ????????????????['headers'?=>?['Content-Type'?=>?'application/json;charset=utf-8',], ????????????????????'json'????=>?$pushData, ????????????????????'verify'??=>?false]); ????????????$result?=?json_decode($res->getBody()->getContents(),?true); ????????????if?($result['errmsg']?!=?'ok'?&&?$result['errcode']?!=?0)?{ ????????????????Log::debug('釘釘推送數據失敗',?['result'?=>?$result,'url'=>$notice_url]); ????????????} ????????} ????????catch?(Exception?$e)?{ ????????????Log::debug('釘釘推送異常!',['data'=>$pushData,'url'=>$notice_url,'env'=>App::environment()]); ????????} ????} }
4.其他建議
推薦使用redis隊列進行操作,具體需要Event,Listener,redis相關操作具體可查看laravel官方文檔
推薦:《最新的五個Laravel視頻教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END