ホームページ  >  記事  >  PHPフレームワーク  >  Laravel は DingTalk を使用してシステムアラートを受信できます。

Laravel は DingTalk を使用してシステムアラートを受信できます。

藏色散人
藏色散人転載
2022-01-13 10:24:151932ブラウズ

次のコラム Laravel チュートリアル では、DingTalk チャットボットを使用して Laravel フレームワークでシステム アラートを受信する方法を紹介します。

1. DingTalk チャットボット アクセス トークンを取得する

この拡張機能を使用する前に、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(&#39;Y-m-d H:i:s&#39;)."n".$data;
            $pushData = [
                &#39;msgtype&#39; => &#39;text&#39;,
                &#39;text&#39;    => [&#39;content&#39; => $data],
                &#39;at&#39;      => [&#39;atMobiles&#39; => $at, &#39;isAtAll&#39; => $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[&#39;text&#39;] = "#### 异常触发时间".Carbon::now()->format(&#39;Y-m-d H:i:s&#39;)."n".$data[&#39;text&#39;];
            $pushData = [
                &#39;msgtype&#39;  => &#39;markdown&#39;,
                &#39;markdown&#39; => $data,
                &#39;at&#39;       => [&#39;atMobiles&#39; => $at, &#39;isAtAll&#39; => $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([&#39;base_uri&#39; => self::BASE_URI, &#39;timeout&#39; => 3.0]);
                $res    = $client->request(&#39;POST&#39;,
                    $notice_url,
                    [&#39;headers&#39; => [&#39;Content-Type&#39; => &#39;application/json;charset=utf-8&#39;,],
                        &#39;json&#39;    => $pushData,
                        &#39;verify&#39;  => false]);
                $result = json_decode($res->getBody()->getContents(), true);
    
                if ($result[&#39;errmsg&#39;] != &#39;ok&#39; && $result[&#39;errcode&#39;] != 0) {
                    Log::debug(&#39;钉钉推送数据失败&#39;, [&#39;result&#39; => $result,&#39;url&#39;=>$notice_url]);
                }
            }
            catch (Exception $e) {
                Log::debug(&#39;钉钉推送异常!&#39;,[&#39;data&#39;=>$pushData,&#39;url&#39;=>$notice_url,&#39;env&#39;=>App::environment()]);
            }
        }
    }
  • 4.その他提案
操作にはredisキューを使用することを推奨します。イベント、リスナー、およびredis関連の操作の詳細については、laravel公式ドキュメントを確認してください

推奨事項: "

最新の 5 つの Laravel ビデオ チュートリアル

>>

以上がLaravel は DingTalk を使用してシステムアラートを受信できます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。