企微群机器人定时提醒

在工作小组群,当我们每周需提醒群内成员写周报,提醒群内成员开周会点时候,为了更方便,我们可以在企微群内设置一个机器人来提醒大家。

我们先要在群内添加一个机器人️
右击群聊天 --> 点击"添加群机器人"
企微群机器人定时提醒_第1张图片
一定要保存好webhook地址。
企微群机器人定时提醒_第2张图片

代码可以直接放在一些在运行的项目中,比如内部使用的工具的代码中。

     /**
     * xxx提醒
     * @return
     */

	//提醒时间
    @Scheduled(cron = "0 0 19 ? * MON")
    
    public  boolean remindTask(){
        String url = "(此处为webhook地址)";
        ArrayList<String> mobiles = new ArrayList<>();
        mobiles.add("134xxxxxxxx");
        mobiles.add("180xxxxxxxx");
        ....(群内成员电话号码)
        JSONObject object_text = new JSONObject();
        JSONObject object = new JSONObject();
        object_text.put("content", "提醒语句:我来提醒大家xxx");
        object_text.put("mentioned_mobile_list", mobiles);
        object.put("msgtype", "text");
        object.put("text", object_text);
        String httpRes = HttpUtils.getProxydoPost(url, object, null);
        if (!StringUtils.isEmpty(httpRes) && JSON.parseObject(httpRes).getInteger("errcode") == 0) {
            return true;
        }
        return false;
    }

如果说我们需要一周提醒一个人,比如开周会,需要群内成员轮流主持,那我们可以这样做。

    /**
     * 周会记录者提醒
     * @return
     */


	public static int getDaysBetween() {
        DateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date star = dft.parse("2021-10-19");//开始时间

            Date today=dft.parse(dft.format(new Date()));//当前时间
            Long starTime=star.getTime();
            Long endTime=today.getTime();
            Long num=endTime-starTime;//时间戳相差的毫秒数
            //System.out.println("相差天数为:"+num/24/60/60/1000);//除以一天的毫秒数
            return (int) (num/24/60/60/1000);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 1;
    }
     
    //提醒时间
    @Scheduled(cron = "0 0 17 ? * TUE")
    
    public static boolean mettingsRemind2(){
        String url = "(此处为webhook地址)";
        ArrayList<String> mobiles = new ArrayList<>();
        mobiles.add("137xxxxxxxx");
        mobiles.add("139xxxxxxxx");
        mobiles.add("131xxxxxxxx");
        mobiles.add("134xxxxxxxx");
        mobiles.add("180xxxxxxxx");
        mobiles.add("132xxxxxxxx");
        mobiles.add("130xxxxxxxx");
        mobiles.add("181xxxxxxxxx");
       
        int weeks = getDaysBetween()/7;
        
        String phone = mobiles.get(weeks%mobiles.size());

        JSONObject object_text = new JSONObject();
        JSONObject object = new JSONObject();

        object_text.put("content", "本周周会记录者:");
        object_text.put("mentioned_mobile_list", phone);
        object.put("msgtype", "text");
        object.put("text", object_text);
        String httpRes = HttpUtils.getProxydoPost(url, object, null);
        if (!StringUtils.isEmpty(httpRes) && JSON.parseObject(httpRes).getInteger("errcode") == 0) {
            return true;
        }
        return false;
    }

提醒时间可以参考Cron表达式
Cron表达式举例

0 30 15 * * WED *

为每周三的15:30点触发,其中第一位0代表秒,30代表分钟,15代表时(24时计时法),WED为周三

*/5 * * * * * *

表示每5秒触发一次

0 0 2 1 * * *

表示在每月的1日的凌晨2点触发

`0 0 10,14,16 * * * *` 

表示在每天上午10点,下午2点,4点触发

更多cron表达式说明,可参考https://cloud.tencent.com/document/product/583/9708#cron-.E8.A1.A8.E8.BE.BE.E5.BC.8F

你可能感兴趣的:(其他,Spring)