钉钉机器人接入定时器(钉钉API+XXL-JOB)

钉钉机器人接入定时器(钉钉API+XXL-JOB)

首先需要创建钉钉内部群

 

在群设置中找到机器人选项
选择“自定义”机器人

通过Webhook接入自定义服务

创建完成后会生成一个send URL和一个加签码

下面就是干货 代码部分了

DingDingUtil.sendMessageByText(webhook, sign, text, mobileList, isAtAll);
// 其中webhook为机器人生成的 sendUrl
// sign为加签码
// text为机器人播报文本
// mobileList为List<String>格式的手机号
// isAtAll 为是否@全体人员 boolean值

Util如下


/**
 * 钉钉机器人工具类
 * @author zhangjiaxuan
 */
@Slf4j
public class DingDingUtil {
    /**
     ** 发送普通文本消息
     *
     * @param content    文本消息
     * @param mobileList 指定@ 联系人
     * @param isAtAll    是否@ 全部联系人
     * @return OapiRobotSendResponse
     */
    public static OapiRobotSendResponse sendMessageByText(String ACCESS_TOKEN, String SECRET, String content, List<String> mobileList, boolean isAtAll) {
        String sign = null;
        try {
            Long timestamp = System.currentTimeMillis();
            String stringToSign = timestamp + "\n" + SECRET;
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(new SecretKeySpec(SECRET.getBytes("UTF-8"), "HmacSHA256"));
            byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
            sign = "&timestamp=" + timestamp + "&sign=" + URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        } catch (InvalidKeyException e) {
            throw new RuntimeException(e);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
        DingTalkClient client = null;
        client = new DefaultDingTalkClient(ACCESS_TOKEN + sign);
        if (StringUtils.isEmpty(content)) {
            return null;
        }

        //参数	参数类型	必须	说明
        //msgtype	String	是	消息类型,此时固定为:text
        //content	String	是	消息内容
        //atMobiles	Array	否	被@人的手机号(在content里添加@人的手机号)
        //isAtAll	bool	否	@所有人时:true,否则为:false
        OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
        text.setContent(content);
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        if (!CollectionUtils.isEmpty(mobileList)) {
            // 发送消息并@ 以下手机号联系人
            OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
            at.setAtMobiles(mobileList);
            at.setIsAtAll(isAtAll);
            request.setAt(at);
        }
        request.setMsgtype("text");
        request.setText(text);

        OapiRobotSendResponse response = new OapiRobotSendResponse();
        try {
            response = client.execute(request);
            System.out.println("【DingTalkUtils】发送普通文本消息 响应参数:" + JSON.toJSONString(response));
        } catch (ApiException e) {
            log.error("[发送普通文本消息]: 发送消息失败, 异常捕获{}", e.getMessage());
        }
        return response;
    }
}

简单说一下XXL-JOB

java中的引入方式为

XXL面板上

先创建执行器

需要和yml文件中的job地址/token/app-name 全部对应

然后打开 - 任务管理 - 后选择对应的执行器创建任务

创建完成后可以选择执行一次 或者配置好Corn或者秒数后点击开启 

相关推荐

  1. vue+Django接入登录

    2023-12-28 18:26:05       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-28 18:26:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-28 18:26:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-28 18:26:05       82 阅读
  4. Python语言-面向对象

    2023-12-28 18:26:05       91 阅读

热门阅读

  1. 加速 SQL 查询的 9 种方法

    2023-12-28 18:26:05       58 阅读
  2. Redis实现限流

    2023-12-28 18:26:05       58 阅读
  3. 统计商品各项数据sql&统计历史数据sql

    2023-12-28 18:26:05       66 阅读
  4. 【量化】商品期货换月的处理思路(old)

    2023-12-28 18:26:05       65 阅读
  5. 利用ChatGPT在不同教学场景中的应用

    2023-12-28 18:26:05       62 阅读
  6. 【Web2D/3D】Canvas(第三篇)

    2023-12-28 18:26:05       50 阅读
  7. 测试工程师年终总结

    2023-12-28 18:26:05       48 阅读
  8. P8722 [蓝桥杯 2020 省 AB3] 日期识别(C语言)

    2023-12-28 18:26:05       54 阅读
  9. 不限带宽是否意味着无限带宽

    2023-12-28 18:26:05       61 阅读