Maison > cadre php > Laravel > Laravel peut utiliser DingTalk pour recevoir des alertes système !

Laravel peut utiliser DingTalk pour recevoir des alertes système !

藏色散人
Libérer: 2022-01-17 10:17:15
avant
2055 Les gens l'ont consulté

La section suivante de la colonne Tutoriel Laravel vous présentera comment utiliser le chatbot DingTalk pour recevoir des alertes système dans le framework Laravel. J'espère que cela vous sera utile !

1. Obtenez le jeton d'accès DingTalk Chatbot

Avant d'utiliser cette extension, vous avez besoin de ding-doc.dingtalk.com/doc#/servera... pour obtenir des informations pertinentes.

2. Connaissances requises

Carbon

GuzzleHttp

  • 3. Écrivez le code
  • <?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()]);
            }
        }
    }
    Copier après la connexion
  • 4 Autres suggestions
Il est recommandé d'utiliser la file d'attente Redis pour les opérations pour plus de détails sur les opérations liées à l'événement, à l'écouteur et à Redis. veuillez consulter le document officiel de Laravel

Recommandé : "

Les cinq derniers didacticiels vidéo Laravel

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal