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

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

首先需要创建钉钉内部群

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

通过Webhook接入自定义服务

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

下面就是干货 代码部分了

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

Util如下

java 复制代码
/**
 * 钉钉机器人工具类
 * @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或者秒数后点击开启

相关推荐
敢敢のwings15 小时前
ACT-2 深度解析:家用机器人如何把“会做”推进到“可靠地做”
人工智能·机器人
朗宇芯工控16 小时前
注塑机械手自动化上下料原理、流程与应用优势
机器人·自动化·制造·工业·运动控制系统
GrepowTattu17 小时前
从2026世界机器人大会看机器人补能:为什么智能充电正在成为重要一环
人工智能·机器人
微小冷18 小时前
ROS2 Xacro机器人建模初步教程
机器人·ros·rviz·urdf·xacro
ms365copilot18 小时前
Excel Copilot分析机器人客户反馈,生成改进方案
机器人·copilot
tianxuanjg20 小时前
工业/协作机器人连接法兰采购指南|高精度安装定位零件怎么选
经验分享·机器人·无人机·制造·材质
QYR-分析1 天前
机器人扭矩传感器行业深度研究:技术迭代、市场格局与增量前景
机器人
沫儿笙1 天前
弧机器人混合气节气设备
机器人
YH行业报告分析1 天前
2026具身智能产业爆发:具身智能训练平台如何破解机器人策略迭代效率痛点?
机器人
天空属于哈夫克31 天前
企业微信API:企业微信机器人如何开发?
python·机器人·企业微信