Java利用钉钉机器人实现发送群消息

2023-01-21 0 4,407

目录

添加群机器人

可以查看这篇文章添加机器人到钉钉群 使用命令行工具curl快速验证自定义机器人是否可以正常工作。可以使用如下命令,把对应的链接调整成对应群的webhook地址即可。

curl \'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx\' \\
-H \'Content-Type: application/json\' \\ 
-d \'{\"msgtype\": \"text\",\"text\": {\"content\":\"嗨,我来啦\"}}\'

Java请求示例

设置如下方法进行消息通知

    /**
     * 通知消息发送到群聊
     * @param webhook 钉钉机器人地址(配置机器人的webhook)
     * @param isAtAll 是否通知所有人
     * @param mobileList 通知具体人的手机号码列表
     * @param content 消息内容
     */
    public static void sendMsgToGroupChat(String webhook,boolean isAtAll,List<String> mobileList,String content){
        try {
            //组装请求内容
            String reqStr = buildReqStr(content, isAtAll, mobileList);
            //推送消息(http请求)
            String result = HttpUtil.post(webhook, reqStr);
            log.info(\"通知响应结果:{}\",result);
        }catch (Exception e){
            log.error(\"webhook通知失败\",e);
        }
    }
    
    /**
     * 组装请求报文(Map封装)
     * @param content 通知内容
     * @param isAtAll 是否@所有人
     * @param mobileList 通知具体人的手机号码
     * @return
     */
    private static String buildReqStr(String content, boolean isAtAll, List mobileList) {

        //消息内容
        Map contentMap = Maps.newHashMap();
        contentMap.put(\"content\", content);

        //通知人
        Map atMap = Maps.newHashMap();
        //1.是否通知所有人
        atMap.put(\"isAtAll\", isAtAll);
        //2.通知具体人的手机号码列表
        atMap.put(\"atMobiles\", mobileList);

        Map reqMap = Maps.newHashMap();
        reqMap.put(\"msgtype\", \"text\");
        reqMap.put(\"text\", contentMap);
        reqMap.put(\"at\", atMap);

        return JSON.toJSONString(reqMap);

    }
    
    /**
     * 获取通知消息
     * @return
     */
    private static String getContent() {
        //钉钉机器人消息内容
        String content;
        //通过转码网站http://tool.chinaz.com/Tools/unicode.aspx
        // 选择中文转Unicode把钉钉表情转换成unicode编码,也可以直接用表情对应的中文设置
        String milkyTea = \"过来请我喝奶茶[奶茶][流鼻血][流鼻血]\\u005b\\u6d41\\u9f3b\\u8840\\u005d\";
        String NEWLINE = \"\\n\";
        StringBuffer sb = new StringBuffer();
        sb.append(\"小哥哥,你好!\")
                .append(NEWLINE)
                .append(milkyTea);
        content = sb.toString();
        return content;
    }

通过main函数执行调用

    public static void main(String[] args) throws ApiException {
        //把webhook设置成对应群的即可
        String webhook = \"https://oapi.dingtalk.com/robot/send?access_token=xxx\";
        String content = getContent();
        ArrayList<String> mobileList = Lists.newArrayList();
		sendMsgToGroupChat(webhook,false,mobileList,content);
    }

可以看到如下通知效果:

Java利用钉钉机器人实现发送群消息

添加通知人后效果如下:

Java利用钉钉机器人实现发送群消息

官方SDK请求示例

如果只是为了发起一个简单的消息通知上述动态配置后足够使用,要使用更多消息类型推荐使用官方SDK进行消息发送,毕竟官方进行了一层封装,使用起来会更方便些。

pom引入官方SDK

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
            <version>2.0.0</version>
        </dependency>

群消息通知方法

可以通过如下案例实现对应消息的通知。自定义机器人支持文本 (text)、链接 (link)、markdown(markdown)、ActionCard、FeedCard消息类型。

 /**
     * 通知SDK消息发送到群聊
     * @param webhook 钉钉机器人地址(配置机器人的webhook)
     *
     */
    public static void sendMsgToGroupChatSDK(String webhook) throws ApiException {
        DingTalkClient client = new DefaultDingTalkClient(webhook);
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        //普通文本消息
        request.setMsgtype(\"text\");
        OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
        text.setContent(\"你好,测试文本消息\");
        request.setText(text);
        OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
        at.setAtMobiles(Arrays.asList(\"176xxx\"));
        // isAtAll类型如果不为Boolean,请升级至最新SDK
        at.setIsAtAll(true);
        at.setAtUserIds(Arrays.asList(\"109929\",\"32099\"));
        request.setAt(at);

        //md格式消息
        request.setMsgtype(\"markdown\");
        OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
        markdown.setTitle(\"杭州天气\");
        markdown.setText(\"#### 杭州天气 @156xxxx8827\\n\" +
                \"> 9度,西北风1级,空气良89,相对温度73%\\n\\n\" +
                \"> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\\n\"  +
                \"> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \\n\");
        request.setMarkdown(markdown);
      
        //链接
        request.setMsgtype(\"link\");
        OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link();
        link.setMessageUrl(\"https://blog.csdn.net/qq_35427589\");
        link.setPicUrl(\"\");
        link.setTitle(\"时代的火车向前开\");
        link.setText(\"这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林\");
        request.setLink(link);

        OapiRobotSendResponse response = client.execute(request);
        log.info(\"执行结果回执{}\",JSON.toJSONString(response));
    }

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 Java利用钉钉机器人实现发送群消息 http://www.20zxx.cn/463803/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务