>PHP 프레임워크 >Laravel >Laravel은 DingTalk를 사용하여 시스템 경고를 받을 수 있습니다!

Laravel은 DingTalk를 사용하여 시스템 경고를 받을 수 있습니다!

藏色散人
藏色散人앞으로
2022-01-13 10:24:152051검색

다음 Laravel Tutorial 칼럼에서는 DingTalk 챗봇을 사용하여 Laravel 프레임워크에서 시스템 알림을 받는 방법을 소개하겠습니다. 도움이 되길 바랍니다!

1. DingTalk Chatbot 액세스 토큰 획득

이 확장 프로그램을 사용하기 전에 관련 정보를 얻으려면 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 대기열을 사용하는 것이 좋습니다. laravel 공식 문서를 확인하세요.

추천: "

최신 5개 Laravel 비디오 튜토리얼

"

위 내용은 Laravel은 DingTalk를 사용하여 시스템 경고를 받을 수 있습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제