登录  /  注册
博主信息
博文 17
粉丝 0
评论 1
访问量 25533
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP 使用钉钉发送群消息
Ant.
原创
1475人浏览过

我是分了几个层 , 所以代码需要你们自己整理下

获取access token

    // 获取钉钉的accessToken
    //$accessTokenUrl = 'https://oapi.dingtalk.com/gettoken';
    //$AppKey $AppSecret 这两个不多介绍,钉钉上面有
    public static function getAccessTokenApi()
    {
        return Curl::get(DingTalk::$accessTokenUrl."?appkey=".DingTalk::$AppKey."&appsecret=".DingTalk::$AppSecret);
    }


这里调用的是上面那个获取钉钉access token的方法 存一下redis 存redis的方法就自己写一下

    private function getAccessToken()
    {
        $dingTalkCache = new DingTalkCache();
        // 获取缓存的accessToken , 没有的话重新请求
        if (!$accessToken = $dingTalkCache->getAccessToken()){
            $accessTokenApiResult = DingTalkLogic::getAccessTokenApi();
            if ($accessTokenApiResult->errcode){
                \App\Utils\Logger::error("钉钉获取Access Token 失败。错误码:{$accessTokenApiResult->errcode}。错误信息:{$accessTokenApiResult->errmsg}");
                return false;
            }
            if (!isset($accessTokenApiResult->access_token)){
                \App\Utils\Logger::error("钉钉接口请求参数中没有 access_token");
                return false;
            }
            if (!$dingTalkCache->setAccessToken($accessTokenApiResult->access_token)){
                \App\Utils\Logger::error("钉钉redis保存access_token缓存失败");
                return false;
            }
            return $accessTokenApiResult->access_token;
        }
        return $accessToken;
    }

    发送消息
        /**
     * 发送消息到群组
     * @param string $level 消息等级
     * @param string $class 当前位置 一般__CLASS__来定位
     * @param string $message 错误消息
     * @param string $data 数据
     * @return bool
     * @throws \JsonException
     */
    public function sendMessageToGroup(string $level, string $class, string $message, string $data=""): bool
    {
            // 获取sccesstoken
        $accessToken = $this->getAccessToken(); 
        if (!$accessToken){
            Logger::error("钉钉accessToken 获取失败");
            return false;
        }
        $url = \App\Define\DingTalk::$sendMessageToGroup."?access_token=". $accessToken;
        //这个是自己定义的一个根据错误等级显示不用字体颜色而已,不要也没事
        $color = $this->getLevelColor($level); 
        $result = Curl::post($url, json_encode([
                       /**
                         * 消息群ID , 也就是发送到哪个群的ID
                         * https://wsdebug.dingtalk.com/
                         * 通过这个链接进行扫码查看chatId值
                         */
            'chatid' => \App\Define\DingTalk::$chatId,
            'msg' => [
                'msgtype' => 'markdown',
                'markdown' => [
                    'title' => "{$level}消息",
                    'text' => "##### <font color=#".$color.">等级:".$level."</font>
                                \n  ###### 时间:".date("Y-m-d H:i:s")."
                                \n  ###### 位置:". $class ."
                                \n  ######  消息:**".$message."**
                                \n  ###### 数据:". $data
                ]
            ]
        ], JSON_THROW_ON_ERROR));
        if ($result->errcode){
            Logger::error($result->errmsg);
            return false;
        }
        return true;
    }



本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
1条评论
Ant. 2022-10-27 17:17:58
https://wsdebug.dingtalk.com/ 链接失效,可以通过https://open-dev.dingtalk.com/apiExplorer?spm=ding_open_doc.document.0.0.afb839b7W85NCP#/jsapi?api=biz.chat.chooseConversationByCorpId 链接获取chatId,具体方法可以百度,或者留言
1楼
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学