Laravel能用釘釘接收系統警報!

下面由laravel教程欄目給大家介紹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=*******",         &#39;robot/send?access_token=*********&#39;     ];      /**      * 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'?=&gt;?'text', ????????????'text'????=&gt;?['content'?=&gt;?$data], ????????????'at'??????=&gt;?['atMobiles'?=&gt;?$at,?'isAtAll'?=&gt;?$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()-&gt;format('Y-m-d?H:i:s')."n".$data['text']; ????????$pushData?=?[ ????????????'msgtype'??=&gt;?'markdown', ????????????'markdown'?=&gt;?$data, ????????????'at'???????=&gt;?['atMobiles'?=&gt;?$at,?'isAtAll'?=&gt;?$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'?=&gt;?self::BASE_URI,?'timeout'?=&gt;?3.0]); ????????????$res????=?$client-&gt;request('POST', ????????????????$notice_url, ????????????????['headers'?=&gt;?['Content-Type'?=&gt;?'application/json;charset=utf-8',], ????????????????????'json'????=&gt;?$pushData, ????????????????????'verify'??=&gt;?false]); ????????????$result?=?json_decode($res-&gt;getBody()-&gt;getContents(),?true);  ????????????if?($result['errmsg']?!=?'ok'?&amp;&amp;?$result['errcode']?!=?0)?{ ????????????????Log::debug('釘釘推送數據失敗',?['result'?=&gt;?$result,'url'=&gt;$notice_url]); ????????????} ????????} ????????catch?(Exception?$e)?{ ????????????Log::debug('釘釘推送異常!',['data'=&gt;$pushData,'url'=&gt;$notice_url,'env'=&gt;App::environment()]); ????????} ????} }

4.其他建議

推薦使用redis隊列進行操作,具體需要Event,Listener,redis相關操作具體可查看laravel官方文檔

推薦:《最新的五個Laravel視頻教程》

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享