• PHP调用钉钉机器人


    采用php代码调用钉钉机器人,只在工作日发送一些提醒

    一、添加自定义机器人方法

    您好,群主/群管理员可以在电脑端通过如下的路径添加自定义机器人:

    步骤一:【电脑钉钉 】-【群聊】-【群设置】-【智能群助手】-【添加更多】-【添加机器人】-【自定义】-【添加】,编辑机器人名称和选择添加的群组。完成必要的安全设置(至少选择一种),勾选 我已阅读并同意《自定义机器人服务及免责条款》,点击“完成”即可。

    步骤二:复制出机器人的Webhook地址(格式如下截图),可用于向这个群发送消息。并点击【完成】,自定义机器人就添加成功了。

    更加详细的设置介绍,请参考链接:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq/9e91d73c


    【温馨提示】:

    1、若关闭【仅群主和群成员可管理】,群成员也是可以添加机器人

    2、出于对于群信息的安全,安全设置必须要选择一项。

    3、由于目前自定义机器人需要进行安全配置,需要在电脑端添加。手机端不支持添加自定义机器人哦。

    4、如果设置或者自定义机器人遇到问题可以查看下开发平台文档中心里关于机器人的介绍,更多的技术求助,可登录开发者后台(https://open-dev.dingtalk.com/)查看相关知识。开发平台文档中心:https://open.dingtalk.com/

     

     

    二、代码:

    <?php
    /**
     * 钉钉相关接口和curl接口
     */
    class DingDing
    {
        const HOST = "https://oapi.dingtalk.com";
    
        public static function sendTxt($token, $content, $isAtAll = true)
        {
            $url  = self::HOST . "/robot/send?access_token=$token";
            $data = array(
                'msgtype' => 'text',
                'text'    => array( 'content' => $content ),
                'at'      => array(
                    'atMobiles' => array(),
                    'isAtAll'   => $isAtAll,
                ),
            );
            $ret  = self::reqDing($url, $data);
    
            return $ret;
        }
    
        /**
         * 发起http请求,post为true用POST方式,false为GET方式请求
         */
        public static function reqDing($url, $postData, $post = true)
        {
            if (is_array($postData)) {
                $postData = json_encode($postData);
            }
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            if($post) {
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
            }
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json;charset=utf-8' ));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            $data = curl_exec($ch);
            curl_close($ch);
            $data = empty($data) ? array() : json_decode($data, true);
    
            return $data;
        }
    
        public static function getHoliday1($date = '')
        {
            $holidayUrl = 'http://api.k780.com/?app=life.workday&date=%s&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json';
    
            if($date === '') {
                $date = date('Ymd', time());
            }
            $url = sprintf($holidayUrl, $date);
            $judgeHolidayRet = self::reqDing($url, []);
            $worknm = $judgeHolidayRet['result']['worknm'];
            if(!isset($judgeHolidayRet['result']['worknm'])) {
                return false;
            }
            if($worknm == '工作日') {
                return 'yes';
            }
            return 'no';
        }
    
        public static function getHoliday2($date = '')
        {
            $holidayUrl = 'http://timor.tech/api/holiday/info/%s';
    
            if($date === '') {
                $date = date('Y-m-d', time());
            }
            $url = sprintf($holidayUrl, $date);
            $judgeHolidayRet = self::reqDing($url, [], false);
            $worknm = $judgeHolidayRet['type']['type'];
            if(!isset($judgeHolidayRet['type']['type'])) {
                return false;
            }
            if(($worknm == 0) || ($worknm == 3)) {
                return 'yes';
            }
            return 'no';
        }
    
        /**
         * 判断当天是否为工作日
         *
        public static function judgeWorkDay()
        {
            $ret1 = self::getHoliday1();
            if($ret1 == 'yes') {
                return 'yes';
            } elseif($ret1 == 'no') {
                return 'no';
            }
            return self::getHoliday2();
        }
    }
    

    三、git地址:https://github.com/A07110517/dingding-request

  • 相关阅读:
    数据结构与算法_20 _ 散列表(下):为什么散列表和链表经常会一起使用?
    数据结构与算法_19 _ 散列表(中):如何打造一个工业级水平的散列表?
    数据结构与算法_17 _ 跳表:为什么Redis一定要用跳表来实现有序集合?
    数据结构与算法_18 _ 散列表(上):Word文档中的单词拼写检查功能是如何实现的?
    数据结构与算法_16 _ 二分查找(下):如何快速定位IP对应的省份地址
    数据结构与算法_15 _ 二分查找(上):如何用最省内存的方式实现快速查找功能
    线程池ThreadPoolExecutor源码详解
    用信鸽来解释 HTTPS
    并发集合类之图解CopyOnWriteArrayList
    认识RabbitMQ从这篇文章开始
  • 原文地址:https://www.cnblogs.com/asif/p/13819609.html
Copyright © 2020-2023  润新知