添加群机器人

可以查看这篇文章:添加机器人到钉钉群 使用命令行工具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);
    }

可以看到如下通知效果:

添加通知人后效果如下:

官方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));
    }

到此这篇关于Java利用钉钉机器人实现发送群消息的文章就介绍到这了,更多相关Java发送群消息内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Java利用钉钉机器人实现发送群消息的更多相关文章

  1. xcode-server – Xcode服务器在哪里存储机器人?如何将机器人转移到另一台机器上?

    我使用Xcode和Xcode服务器创建了多个机器人.我想备份这些机器人并将其转移到另一台机器上.如何才能做到这一点?

  2. ios – Xcode服务:选择Git Branch

    我开始在小牛身上建立新的Xcode服务.我创建了一个新的机器人–但是我没有要求它应该构建的分支机构?我不仅要建立主人,而且要建立不同的分支.解决方法在当前版本中,当您在Xcode中创建机器人时,它将链接到当前活动的分支.您可以轻松地验证它从Web界面,当您浏览到机器人–>Bot设置.或者,您可以通过Web界面创建机器人,您可以在其中指定分支名称纯文本.

  3. 我们如何在iOS应用程序中集成Captcha?

    我在iOS应用程序中加入了Captcha,但没有找到任何相关的方法.即使我注册了reCAPTCHA,搜索了Captcha的插件是否适用于iOS?我没有发现任何iOS插件.在RND的某个地方,我知道“它不需要移动应用程序”,但客户端希望Captcha在他的应用程序,所以我想知道:>是否可以在iOS应用程序/移动应用程序中集成Captcha:>如果是的话那么那么将它相关的方法是什么呢?

  4. ios – 如何在Xcode中创建机器人?获取“创建机器人需要一个受源代码控制的项目”.

    ]单击取消或配置遥控器会打开我的文件夹的配置,我看到我的遥控器添加得很好.我还尝试使用不同的名称再次添加远程存储库.我该如何前进?解决方法似乎这个问题发生在没有名为“origin”的远程时,因为这就是Xcode正在寻找的东西.当我将我的遥控器重命名为原点时,Xcode停止了抱怨,让我通过XcodeUI添加机器人.

  5. Swift 开发 Uther 小记 - 一个简单的蠢萌机器人

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. android – Webview没有在某些机器人上显示Twitter

    这是一个模糊的,可能是硬件相关的错误.我有一个webview试图显示这样的Twitter提要:http://twitter.com/HP该视图在Droid2上工作正常,但在Droid和DroidX上失败.它只显示twitter徽标并永久挂起,而不是显示页面.关于设备:所有运行相同的软件和Android2.2.但是,他们正在运行不同风格的Android2.2.DroidX:2.2.1机器人1:2.2

  7. Lottie动画慢机器人

    我正在使用Airbnb的新库Lottie在我的应用程序中制作动画.动画由70kbJSON文件和328kb图像文件夹组成.这个文件夹中有13个小png.根据GitHub回购的指示,我宣布我的观点是这样的然后,在我调用的相关java类上:但是,我有一个问题.动画很笨拙,而且我的记忆用量在屋顶上跳跃.它从13MB到89,所有这些都发生在主线程上.你能告诉我有没有办法解决这个问题?

  8. 如何录制视频内部发生的事情? (机器人)

    是否可以将Android中某些View中的所有操作记录为视频?也许使用C/C++或其他任何东西?我知道有使用shell记录的方法,但需要root.没有它会更好.我们也将从SDKVersion16开始.解决方法您可以使用javacv库来组合从视图中获取的一组位图;代码看起来像这样:这里有一个关于如何记录的fullexample

  9. 如何找到未翻译的字符串? (机器人)

    我有一个应该支持几种不同语言的应用程序.有时我会忘记为其中一种语言翻译.有没有找到在strings.xml文件之一中没有翻译的字符串的原因?

  10. 如何在android中删除FAB按钮的自动填充?

    我正在使用FAB按钮获取个人资料图片,但它已经有了一些填充.我使用以下代码创建FAB按钮.

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部