钉钉机器人webhook推送

maven依赖

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

一、机器人webhook推送支持的消息类型

消息类型
钉钉机器人webhook推送插图

二、文本text类型

消息结构

{
    "at": {
        "atMobiles": [
            "180xxxxxx"
        ],
        "atUserIds": [
            "user123"
        ],
        "isAtAll": false
    },
    "text": {
        "content": "我就是我, @180xxxxxx 是不一样的烟火"
    },
    "msgtype": "text"
}
1. 不@人
    /**
     * 机器人Webhook发送消息
     * 文本类型
     * 不at
     *
     * @throws ApiException
     */
    public static  void textNotAtWebhook() throws ApiException {
        //创建钉钉客户端
        DingTalkClient client = new DefaultDingTalkClient(url);

        //创建请求
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        //设置请求的消息类型、消息内容
        request.setMsgtype(RobotMessageTypeEnum.TEXT.getCode());
        OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
        text.setContent("333测试文本消息");
        request.setText(text);
        //设置消息的 提醒人:无

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

效果
钉钉机器人webhook推送插图(1)

2. @一个或几个
/**
     * 机器人Webhook发送消息
     * 文本类型
     * at一个人,几个人
     *
     * @throws ApiException
     */
    public static  void textAtOneWebhook() throws ApiException {
        //创建钉钉客户端
        DingTalkClient client = new DefaultDingTalkClient(url);
        //创建请求
        OapiRobotSendRequest request = new OapiRobotSendRequest();


        //设置请求的消息类型、消息内容
        request.setMsgtype(RobotMessageTypeEnum.TEXT.getCode());
        OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
        text.setContent("333测试@153xxxx940x文本消息");
        request.setText(text);
        //设置消息的 提醒人:一个人、几个人、必须在文本内容加入 @153xxxx940x
        OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
        at.setIsAtAll(false);
        at.setAtMobiles(Arrays.asList("153xxxx940x"));
        request.setAt(at);

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

效果
钉钉机器人webhook推送插图(2)

3. @ 所有人
  /**
     * 机器人Webhook发送消息
     * 文本类型
     * at所有人
     *
     * @throws ApiException
     */
    public static  void textAtAllWebhook() throws ApiException {
        //创建钉钉客户端
        DingTalkClient client = new DefaultDingTalkClient(url);

        //创建请求
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        //设置请求的消息类型、消息内容
        request.setMsgtype(RobotMessageTypeEnum.TEXT.getCode());
        OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
        text.setContent("333测试文本消息");
        request.setText(text);
        //设置消息的 提醒人:所有人
        OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
        at.setIsAtAll(true);
        request.setAt(at);

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

效果
钉钉机器人webhook推送插图(3)

二、 文本markdown类型

支持的markdown语法

标题
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
 
引用
> A man who stands for nothing will fall for anything.
 
文字加粗、斜体
**bold**
*italic*
 
链接
[this is a link](https://www.dingtalk.com/)
 
图片
![](http://name.com/pic.jpg)
 
无序列表
- item1
- item2
 
有序列表
1. item1
2. item2

代码

  /**
     * 机器人Webhook发送消息
     * markdown类型
     * 不at
     *
     * @throws ApiException
     */
    public static  void markdownAtWebhook() throws ApiException {
        //创建钉钉客户端
        DingTalkClient client = new DefaultDingTalkClient(url);

        //创建请求
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        //设置请求的消息类型、消息内容
        request.setMsgtype(RobotMessageTypeEnum.MARKDOWN.getCode());
        OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();

        markdown.setTitle("我的markdown类型");
        markdown.setText("#### 杭州天气 @150XXXXXXXX 
> 9度,西北风333级,空气良89,相对温度73%
" +
                "> ![screenshot](http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)
" +
                "> ###### 10点20分发布 [天气](http://www.dingtalk.com) 
");



        request.setMarkdown(markdown);
        //设置消息的 提醒人:无
        OapiRobotSendResponse response = client.execute(request);
        System.out.println(response.getBody());
    }

效果
钉钉机器人webhook推送插图(4)

三、链接类型

 /**
     * 机器人Webhook发送消息
     * 链接类型
     *
     * @throws ApiException
     */
    public static  void linkWebhook() throws ApiException {
        //创建钉钉客户端
        DingTalkClient client = new DefaultDingTalkClient(url);

        //创建请求
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        //设置请求的消息类型、消息内容
        request.setMsgtype(RobotMessageTypeEnum.LINK.getCode());
        OapiRobotSendRequest.Link link=new OapiRobotSendRequest.Link();
        link.setTitle("我的title");
        link.setText("333消息内容");
        link.setMessageUrl("http://www.baidu.com");
       //        link.setPicUrl("picture.url");
        request.setLink(link);

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

效果:点击链接跳转到百度
钉钉机器人webhook推送插图(5)
钉钉机器人webhook推送插图(6)

四、ActionCard类型

1.整体跳转
/**
     * 机器人Webhook发送消息
     * 跳转类型 --整体跳转
     *
     * @throws ApiException
     */
    public static  void actionCard_All_Webhook() throws ApiException {
        //创建钉钉客户端
        DingTalkClient client = new DefaultDingTalkClient(url);

        //创建请求
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        //设置请求的消息类型、消息内容
        request.setMsgtype(RobotMessageTypeEnum.ACTION_CARD.getCode());
        OapiRobotSendRequest.Actioncard actioncard=new OapiRobotSendRequest.Actioncard();
        actioncard.setTitle("我的title:打造一间咖啡厅");
        actioncard.setText("![screenshot](http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png) 
 #### 333乔布斯 20 年前想打造的苹果咖啡厅 

 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划");
       actioncard.setSingleTitle("阅读全文");
       actioncard.setSingleURL("http://www.baidu.com");
       request.setActionCard(actioncard);

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

效果:点击任何一个文字,都会跳转到 百度
钉钉机器人webhook推送插图(7)

2.独立跳转
 /**
     * 机器人Webhook发送消息
     * 跳转类型 --独立跳转
     *
     * @throws ApiException
     */
    public static  void actionCard_Part_Webhook() throws ApiException {
        //创建钉钉客户端
        DingTalkClient client = new DefaultDingTalkClient(url);

        //创建请求
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        //设置请求的消息类型、消息内容
        request.setMsgtype(RobotMessageTypeEnum.ACTION_CARD.getCode());
        OapiRobotSendRequest.Actioncard actioncard=new OapiRobotSendRequest.Actioncard();
        actioncard.setTitle("我的title:乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身");
        actioncard.setText("![screenshot](http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png) 
 #### 333乔布斯 20 年前想打造的苹果咖啡厅 

 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划");

        OapiRobotSendRequest.Btns b1=new OapiRobotSendRequest.Btns();
        b1.setTitle("独立跳转1");
        b1.setActionURL("http://www.baidu.com");
        OapiRobotSendRequest.Btns b2=new OapiRobotSendRequest.Btns();
        b2.setTitle("独立跳转2");
        b2.setActionURL("http://www.dingtalk.com");
        OapiRobotSendRequest.Btns b3=new OapiRobotSendRequest.Btns();
        b3.setTitle("独立跳转3");
        b3.setActionURL("http://www.emqx.io/docs/zh/latest/messaging/mqtt-wildcard-subscription.html");
        actioncard.setBtns(Arrays.asList(b1,b2,b3));

        request.setActionCard(actioncard);

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

效果:点击跳转链接,可以跳到百度,钉钉,emqx
钉钉机器人webhook推送插图(8)
五、FeedCard类型

效果:点击不同的区域,跳转不同的链接

    /**
     * 机器人Webhook发送消息
     * 跳转类型 --FeedCard类型(也是单独跳转)
     *
     * @throws ApiException
     */
    public static  void feedCard_Webhook() throws ApiException {
        //创建钉钉客户端
        DingTalkClient client = new DefaultDingTalkClient(url);

        //创建请求
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        //设置请求的消息类型、消息内容
        request.setMsgtype(RobotMessageTypeEnum.FEED_CARD.getCode());
        OapiRobotSendRequest.Feedcard feedcard=new OapiRobotSendRequest.Feedcard();

        OapiRobotSendRequest.Links links1 =new OapiRobotSendRequest.Links();
        links1.setTitle("333--l1");
        links1.setMessageURL("http://www.baidu.com");
        links1.setPicURL("http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png");
        OapiRobotSendRequest.Links links2 =new OapiRobotSendRequest.Links();
        links2.setTitle("333--l2");
        links2.setMessageURL("http://www.emqx.io/docs/zh/latest/messaging/mqtt-wildcard-subscription.html");
        links2.setPicURL("http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png");

        feedcard.setLinks(Arrays.asList(links1,links2));
        request.setFeedCard(feedcard);

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

钉钉机器人webhook推送插图(9)

六、完整的测试代码

package com.example.demo.dingding.common;

public enum RobotMessageTypeEnum {
    TEXT("text", "Text类型"),
    MARKDOWN("markdown", "Markdown类型"),
    ACTION_CARD("actionCard", "跳转ActionCard类型"),
    FEED_CARD("feedCard", "FeedCard类型"),
    LINK("link", "Link链接消息");

    private final String code;
    private final String desc;

    RobotMessageTypeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }
}

package com.example.demo.dingding.send.api;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.example.demo.dingding.common.RobotMessageTypeEnum;
import com.taobao.api.ApiException;
import java.util.Arrays;
public class ApiSend {
//机器人的 webhook的地址
public static final  String url="http://oapi.dingtalk.com/robot/send?access_token=0a479815aa31d1e5a08abcfc505716499f46d1fbec805b852a4e8bd0d4e7332c";
public static void main(String[] args) throws ApiException {
//        textAtAllWebhook();
//        textAtOneWebhook();
//        textNotAtWebhook();
markdownAtWebhook();
//        linkWebhook();
//        actionCard_All_Webhook();
//        actionCard_Part_Webhook();
//        feedCard_Webhook();
}
//----------------------------------文本类型--------------------------------------
/**
* 机器人Webhook发送消息
* 文本类型
* at所有人
*
* @throws ApiException
*/
public static  void textAtAllWebhook() throws ApiException {
//创建钉钉客户端
DingTalkClient client = new DefaultDingTalkClient(url);
//创建请求
OapiRobotSendRequest request = new OapiRobotSendRequest();
//设置请求的消息类型、消息内容
request.setMsgtype(RobotMessageTypeEnum.TEXT.getCode());
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent("333测试文本消息");
request.setText(text);
//设置消息的 提醒人:所有人
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
at.setIsAtAll(true);
request.setAt(at);
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getBody());
}
/**
* 机器人Webhook发送消息
* 文本类型
* at一个人,几个人
*
* @throws ApiException
*/
public static  void textAtOneWebhook() throws ApiException {
//创建钉钉客户端
DingTalkClient client = new DefaultDingTalkClient(url);
//创建请求
OapiRobotSendRequest request = new OapiRobotSendRequest();
//设置请求的消息类型、消息内容
request.setMsgtype(RobotMessageTypeEnum.TEXT.getCode());
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent("333测试@15342279文本消息");
request.setText(text);
//设置消息的 提醒人:一个人、几个人、必须在文本内容加入 @153422
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
at.setIsAtAll(false);
at.setAtMobiles(Arrays.asList("153422794"));
request.setAt(at);
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getBody());
}
/**
* 机器人Webhook发送消息
* 文本类型
* 不at
*
* @throws ApiException
*/
public static  void textNotAtWebhook() throws ApiException {
//创建钉钉客户端
DingTalkClient client = new DefaultDingTalkClient(url);
//创建请求
OapiRobotSendRequest request = new OapiRobotSendRequest();
//设置请求的消息类型、消息内容
request.setMsgtype(RobotMessageTypeEnum.TEXT.getCode());
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent("333测试文本消息");
request.setText(text);
//设置消息的 提醒人:无
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getBody());
}
//-----------------------------------------markdown类型-------------------------------------------
/**
* 机器人Webhook发送消息
* markdown类型
* 不at
*
* @throws ApiException
*/
public static  void markdownAtWebhook() throws ApiException {
//创建钉钉客户端
DingTalkClient client = new DefaultDingTalkClient(url);
//创建请求
OapiRobotSendRequest request = new OapiRobotSendRequest();
//设置请求的消息类型、消息内容
request.setMsgtype(RobotMessageTypeEnum.MARKDOWN.getCode());
OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
markdown.setTitle("我的markdown类型");
markdown.setText("#### 杭州天气 @150XXXXXXXX 
> 9度,西北风333级,空气良89,相对温度73%
" +
"> ![screenshot](http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)
" +
"> ###### 10点20分发布 [天气](http://www.dingtalk.com) 
");
request.setMarkdown(markdown);
//设置消息的 提醒人:无
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getBody());
}
/*                       支持的markdown语法
标题
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
引用
> A man who stands for nothing will fall for anything.
文字加粗、斜体
**bold**
*italic*
链接
[this is a link](http://www.dingtalk.com/)
图片
![](http://name.com/pic.jpg)
无序列表
- item1
- item2
有序列表
1. item1
2. item2
*/
//-----------------------------------------链接---------------------------------------------------
/**
* 机器人Webhook发送消息
* 链接类型
*
* @throws ApiException
*/
public static  void linkWebhook() throws ApiException {
//创建钉钉客户端
DingTalkClient client = new DefaultDingTalkClient(url);
//创建请求
OapiRobotSendRequest request = new OapiRobotSendRequest();
//设置请求的消息类型、消息内容
request.setMsgtype(RobotMessageTypeEnum.LINK.getCode());
OapiRobotSendRequest.Link link=new OapiRobotSendRequest.Link();
link.setTitle("我的title");
link.setText("333消息内容");
link.setMessageUrl("http://www.baidu.com");
link.setPicUrl("http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png");
request.setLink(link);
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getBody());
}
//------------------------------------------跳转--------------------------------------------------
/**
* 机器人Webhook发送消息
* 跳转类型 --整体跳转
*
* @throws ApiException
*/
public static  void actionCard_All_Webhook() throws ApiException {
//创建钉钉客户端
DingTalkClient client = new DefaultDingTalkClient(url);
//创建请求
OapiRobotSendRequest request = new OapiRobotSendRequest();
//设置请求的消息类型、消息内容
request.setMsgtype(RobotMessageTypeEnum.ACTION_CARD.getCode());
OapiRobotSendRequest.Actioncard actioncard=new OapiRobotSendRequest.Actioncard();
actioncard.setTitle("我的title:打造一间咖啡厅");
actioncard.setText("![screenshot](http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png) 
#### 333乔布斯 20 年前想打造的苹果咖啡厅 
Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划");
actioncard.setSingleTitle("阅读全文");
actioncard.setSingleURL("http://www.baidu.com");
request.setActionCard(actioncard);
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getBody());
}
/**
* 机器人Webhook发送消息
* 跳转类型 --独立跳转
*
* @throws ApiException
*/
public static  void actionCard_Part_Webhook() throws ApiException {
//创建钉钉客户端
DingTalkClient client = new DefaultDingTalkClient(url);
//创建请求
OapiRobotSendRequest request = new OapiRobotSendRequest();
//设置请求的消息类型、消息内容
request.setMsgtype(RobotMessageTypeEnum.ACTION_CARD.getCode());
OapiRobotSendRequest.Actioncard actioncard=new OapiRobotSendRequest.Actioncard();
actioncard.setTitle("我的title:乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身");
actioncard.setText("![screenshot](http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png) 
#### 333乔布斯 20 年前想打造的苹果咖啡厅 
Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划");
OapiRobotSendRequest.Btns b1=new OapiRobotSendRequest.Btns();
b1.setTitle("独立跳转1");
b1.setActionURL("http://www.baidu.com");
OapiRobotSendRequest.Btns b2=new OapiRobotSendRequest.Btns();
b2.setTitle("独立跳转2");
b2.setActionURL("http://www.dingtalk.com");
OapiRobotSendRequest.Btns b3=new OapiRobotSendRequest.Btns();
b3.setTitle("独立跳转3");
b3.setActionURL("http://www.emqx.io/docs/zh/latest/messaging/mqtt-wildcard-subscription.html");
actioncard.setBtns(Arrays.asList(b1,b2,b3));
request.setActionCard(actioncard);
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getBody());
}
//----------------------------------FeedCard类型----------------------------------------------------------
/**
* 机器人Webhook发送消息
* 跳转类型 --FeedCard类型(也是单独跳转)
*
* @throws ApiException
*/
public static  void feedCard_Webhook() throws ApiException {
//创建钉钉客户端
DingTalkClient client = new DefaultDingTalkClient(url);
//创建请求
OapiRobotSendRequest request = new OapiRobotSendRequest();
//设置请求的消息类型、消息内容
request.setMsgtype(RobotMessageTypeEnum.FEED_CARD.getCode());
OapiRobotSendRequest.Feedcard feedcard=new OapiRobotSendRequest.Feedcard();
OapiRobotSendRequest.Links links1 =new OapiRobotSendRequest.Links();
links1.setTitle("333--l1");
links1.setMessageURL("http://www.baidu.com");
links1.setPicURL("http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png");
OapiRobotSendRequest.Links links2 =new OapiRobotSendRequest.Links();
links2.setTitle("333--l2");
links2.setMessageURL("http://www.emqx.io/docs/zh/latest/messaging/mqtt-wildcard-subscription.html");
links2.setPicURL("http://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png");
feedcard.setLinks(Arrays.asList(links1,links2));
request.setFeedCard(feedcard);
OapiRobotSendResponse response = client.execute(request);
System.out.println(response.getBody());
}
}
本站无任何商业行为
个人在线分享 » 钉钉机器人webhook推送
E-->