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

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

藏色散人
藏色散人avant
2022-01-13 10:24:152018parcourir

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()]);
            }
        }
    }
  • 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer