通知神器——java调用钉钉群自定义机器人

创建群自定义机器人

在指定钉钉群(或者随便拉两个人建个群,然后把别人T出去)的群设置里选择 群机器人 -> 自定义,如图:

然后,添加机器人,设置名字,添加成功时如下图:

其中webhook非常重要,下文详述。点击设置说明可以看相关使用文档,文档链接见本文末尾。

使用HTTP POST请求发送消息

直接向上文所述的webhook链接发送POST请求已达到自定义机器人向群内发消息的功能

按照文档中所属的参数格式直接向链接发送请求即可,我使用Postman发送请求如下:

效果如下:

发送其他格式(如:链接消息、markdown、ActionCard)的消息效果如下:




确定你需要哪种消息了吗?如果需要使用,通过这种方式来实现,组织参数还是挺麻烦的,不过我们可以使用sdk来简化操作

使用sdk调用自定义机器人

钉钉服务端API SDK下载

 public static void main(String[] args) throws ApiException {
    final String serverUrl =
        "https://oapi.dingtalk.com/robot/send?access_token=*******************************************************";

    DingTalkClient client = new DefaultDingTalkClient(serverUrl);
    OapiRobotSendRequest request = new OapiRobotSendRequest();

    At at = new At();
    at.setIsAtAll("true");
    request.setAt(at);

   // 若上一步isAtAll没有设置true,则根据此处设置的手机号来@指定人
    List<String> mobiles = new ArrayList<>();
    mobiles.add("166********");
    at.setAtMobiles(mobiles);

    // 以下是设置各种消息格式的方法
    sentText(request);
    //    sendLink(request);
    //    sendMarkdown(request);
    //    sendActionCard(request);
    //    sendFeedCard(request);

    OapiRobotSendResponse response = client.execute(request);
    System.out.println(response.getErrmsg());
  }

text文本消息

  public static void sentText(OapiRobotSendRequest request) {
    Text text = new Text();
    text.setContent("sdk demo");

    request.setMsgtype("text");
    request.setText(text);
  }

link链接消息

  public static void sendLink(OapiRobotSendRequest request) {
    Link link = new Link();
    link.setTitle("好消息!好消息!");
    link.setText("本群与百度成功达成合作关系,今后大家有什么不懂的可以直接百度搜索,不用再群里提问浪费时间啦!");
    link.setMessageUrl("https://www.baidu.com");
    link.setPicUrl("http://www.baidu.com/img/bd_logo1.png");

    request.setMsgtype("link");
    request.setLink(link);
  }

markdown消息

  public static void sendMarkdown(OapiRobotSendRequest request) {
    Markdown markdown = new Markdown();
    markdown.setTitle("好消息!好消息!");
    markdown.setText(
        "#### 杭州天气 @156xxxx8827\n> 9度,西北风1级,空气良89,相对温度73%\n\n"
            + "> ![screenshot](https://img2018.cnblogs.com/blog/1775867/201908/1775867-20190823214506246-1471056011.png)\n"
            + "> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n");

    request.setMsgtype("markdown");
    request.setMarkdown(markdown);
  }

ActionCard消息

  public static void sendActionCard(OapiRobotSendRequest request) {
    Actioncard actioncard = new Actioncard();
    actioncard.setTitle("乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身");
    actioncard.setText(
        "![screenshot](@lADOpwk3K80C0M0FoA) \n"
            + " ### 乔布斯 20 年前想打造的苹果咖啡厅  Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划");
    actioncard.setHideAvatar("0");
    actioncard.setBtnOrientation("1");
    //    actioncard.setSingleTitle("阅读全文");
    //    actioncard.setSingleURL("https://www.baidu.com/");
    List<Btns> btns = new ArrayList<>();
    Btns btn0 = new Btns();
    btn0.setTitle("内容不错");
    btn0.setActionURL("https://www.qq.com/");
    btns.add(btn0);

    Btns btn1 = new Btns();
    btn1.setTitle("不感兴趣");
    btn1.setActionURL("https://www.baidu.com/");
    btns.add(btn1);

    actioncard.setBtns(btns);
    request.setMsgtype("actionCard");
    request.setActionCard(actioncard);
  }

FeedCard消息

类似公众号头条、次条消息

 public static void sendFeedCard(OapiRobotSendRequest request) {
    Feedcard feedcard = new Feedcard();
    List<Links> linksList = new ArrayList<>();

    Links links0 = new Links();
    links0.setTitle("时代的火车向前开1");
    links0.setMessageURL(
        "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI");
    links0.setPicURL("https://www.dingtalk.com/");
    linksList.add(links0);

    Links links1 = new Links();
    links1.setTitle("时代的火车向前开2");
    links1.setMessageURL(
        "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI");
    links1.setPicURL("https://www.dingtalk.com/");
    linksList.add(links1);

    feedcard.setLinks(linksList);

    request.setMsgtype("feedCard");
    request.setFeedCard(feedcard);
  }

参考资源

钉钉自定义机器人

钉钉开放平台附录

钉钉服务端API SDK下载

原文地址:https://www.cnblogs.com/lw5946/p/11402822.html

时间: 2024-11-06 09:38:40

通知神器——java调用钉钉群自定义机器人的相关文章

Java调用存储过程返回数组

Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMBER; begin SELECT id INTO poet_id FROM poets WHERE name = poet; INSERT INTO deaths (mort_id, age) VALUES (poet_id, poet_age); end set_death_age; 下面是调用上

用Python实现阿里钉钉机器人读取数据库内容自动发群通知

最近想把一些预警数据信息按照一定的要求自动发送到移动端APP,最终把目标放在了腾讯的微信和阿里的钉钉软件上,由于刚开始学习python,于是编程工具想用python来实现.微信使用群体最广,通过一天的研究用itchat库已经实现,但由于itchat需要用web微信方式登录,发现微信对新注册的用户关闭了web微信功能,于是考虑用备选方案阿里钉钉来实现,其实阿里钉钉虽然没有微信用户群体庞大,但是在企业应用方面比微信强大了太多,很多企业已经开始开始用钉钉作为内部沟通工具. 一.工作准备 1.Pytho

钉钉机器人自定义通知-python

创建一个钉钉群然后添加一个自定义的机器人 安全设置是必填项 自定义关键字:报警 钉钉发送通知时,必须包含 关键子 "报警" 不然会 报 keyword not in content. 钉钉文档: https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq 机器人创建成功后,针对文档中发送钉消息类型选择合适的进行触发. python 脚本 body={ "msgtype": "markdown", &q

调用钉钉群组机器人在当前群组发送Zabbix报警信息

关于钉钉机器人的创建,基本用法详见我另一篇文章<创建自定义机器人> 本实验测试zabbix版本为3.4 接下来我们将直接通过下面的操作完成zabbix报警往我们的钉钉机器人所在群组发送: 首先在附件中下载对应的程序到我们的zabbix server的AlertScriptsPath目录,可以通过以下命令查看目录所在位置 grep "AlertScriptsPath" zabbix_server.conf 更改文件的权限为运行zabbix的用户,并给执行权限 chmod 75

TFS发布计划发送到钉钉消息群

由于工作中需要用到钉钉,每天都要和钉钉打交道:上下班打卡.出差请假流程.各种工作讨论组,不一而足,工作已然和钉钉绑在了一起,难怪有广告词: 微信是一个生活方式,钉钉是一个工作方式. 我们是钉钉机器人内测版的首批用户,使用自定义机器人功能做了预警消息推送,效果还不错,目前钉钉机器人已经正式发布,支持与Github.Gitlab.Jira等集成: 由于我们研发过程管理重度依赖微软TFS(Team Foundation Server),研发.测试及运维同学(DevOps)希望将发布计划通知到钉钉群,由

钉钉自定义机器人配合SVN钩子事件进行消息的推送实践

目前很多公司还是使用SVN(TortoiseSVN)进行版本控制,使用简单,适合管理一般项目.协同办公软件目前钉钉比较成熟,阿里也一直在宣传推广,这两年公司也在使用,主要用于信息的沟通,其它的绩效.考勤.日志.审批等都是挂载的我们公司内部的系统,很方便,之后钉钉推出了钉钉机器人,一开始觉得没用,也就一直没关注,但是最近我看了钉钉自定义机器人,觉得这个可以好好利用起来,看到网上也有这方面的应用说明,看着很简单,但是按照流程操作起来各种坑,而且相关知识过于碎片化,今天我在这里进行一下简单的整合,梳理

自动化执行 - 钉钉机器人通知

背景 公司内部用钉钉来办公,钉钉支持机器人提醒,有各种各样的机器人提供选择,可以根据需求来定制机器人,达到提醒功能,如提醒某人请下午茶,233 思路 1. 添加机器人到群组中,这次将的是“自定义”机器人: 2. 添加后会发现有一个webhook的链接,可以点击“设置说明”查看详情 3. 可以通过post请求网这个webhook发送信息,机器人就可以在群里展示信息,文档里有定义不同的请求body: 文档地址:https://open-doc.dingtalk.com/docs/doc.htm?sp

【转】[钉钉通知系列]Jenkins发布后自动通知

转载请注明出处:https://www.cnblogs.com/jianxuanbing/p/7211006.html 阅读目录 一.前言 二.使用钉钉推送的优势 三.配置 一.前言 最近使用Jenkins进行自动化部署,但是发布署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于大家接受的设置,导致不能及时看到相关的发布内容.由于之前有用Gitlab推送消息到钉钉的方式,因此考虑Jenkins是否能通知到钉钉的实现方式. 二.使用钉钉推送的优势 实时提醒项目参与人员信息的更新 便于

shell+钉钉机器人完成java程序中断后自启动和实时监控

java实时程序在运行过程中偶尔出现异常信息中断的情况,通过shell脚本即可完成自启动. 以下为监控一个实时的java程序的shell脚本. 通过每10秒检查一次java程序的进程,来判断程序是否处于运行中.如果未发现程序,则执行程序的启动脚本. 对于启动过程中的状态信息,会通过钉钉机器人实时发送到监控群中,让维护人员了解到程序的异常. 在脚本中通过maxRetry来设置最大尝试的次数. #!/bin/sh # 最大尝试次数 maxRetry=3 # 尝试次数计数器 retryTimes=0