钉钉机器人接入定时器(钉钉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或者秒数后点击开启

相关推荐
皮皮虾❀14 小时前
钉钉排班冲突预警+人员错配调度+加班费动态核算一体化实战:从“高峰期没人低峰期白请”到“排班用工实时最优解”的门店实践
钉钉
拓维运动科技15 小时前
机器人动态模拟训练台:从并联机构原理到工程化落地的技术全解
机器人·六自由度运动模拟平台·六自由度定制厂家·南京拓维运动科技·机器人动态模拟训练平台
BOBY_KEJI17 小时前
技术科普:AI迎宾机器人在超大型展馆的应用原理与功能优势
人工智能·机器人
HAHAXX818 小时前
RPA机器人开发全解:Copilot+大模型接口集成,从源码到架构的深度拆解
机器人·copilot·rpa
集萃智造机器人18 小时前
便携式焊接机器人品牌怎么选?高性价比品牌推荐
人工智能·机器人
具身智能进化论1 天前
国产协作机器人品牌如何选择,企业长期使用更看重什么
大数据·人工智能·机器人·工厂方法模式
阿Q论文1 天前
机械设计制造及其自动化/ 机械电子工程 / 机电一体化技术(四自由度的工业机器人)
机器人·自动化·制造
zhangrelay1 天前
ROS 2 Lyrical 第4章 URDF机器人建模与Gazebo Garden仿真
linux·笔记·学习·ubuntu·机器人·ros2
吴少风1 天前
机器人仿真软件比较
机器人·仿真软件
QQ5416451211 天前
【驿帮查件助手python开源】开源聚合查件机器人,实现 24 类驿站批量查件取代短信通知。技术方案分享
python·机器人·开源·驿站查件机器人