行业知识
钉钉机器人webhook推送
2026-10-31 23:37:57
来源:互联网转载
钉钉机器人webhook推送
maven依赖
com.aliyunalibaba-dingtalk-service-sdk2.0.0
一、机器人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()); } 效果
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()); } 效果
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()); } 效果
二、 文本markdown类型
支持的markdown语法
标题# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题 引用> A man who stands for nothing will fall for anything. 文字加粗、斜体**bold***italic* 链接this is a link 图片 无序列表- item1- item2 有序列表1. item12. 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 \n> 9度,西北风333级,空气良89,相对温度73%\n" + "> \n" + "> ###### 10点20分发布 天气 \n"); request.setMarkdown(markdown); //设置消息的 提醒人:无 OapiRobotSendResponse response = client.execute(request); System.out.println(response.getBody()); } 效果
三、链接类型
/** * 机器人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("https://www.baidu.com"); // link.setPicUrl("picture.url"); request.setLink(link); OapiRobotSendResponse response = client.execute(request); System.out.println(response.getBody()); } 效果:点击链接跳转到百度
四、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(" \n #### 333乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划"); actioncard.setSingleTitle("阅读全文"); actioncard.setSingleURL("https://www.baidu.com"); request.setActionCard(actioncard); OapiRobotSendResponse response = client.execute(request); System.out.println(response.getBody()); } 效果:点击任何一个文字,都会跳转到 百度
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(" \n #### 333乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划"); OapiRobotSendRequest.Btns b1=new OapiRobotSendRequest.Btns(); b1.setTitle("独立跳转1"); b1.setActionURL("https://www.baidu.com"); OapiRobotSendRequest.Btns b2=new OapiRobotSendRequest.Btns(); b2.setTitle("独立跳转2"); b2.setActionURL("https://www.dingtalk.com"); OapiRobotSendRequest.Btns b3=new OapiRobotSendRequest.Btns(); b3.setTitle("独立跳转3"); b3.setActionURL("https://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()); } 效果:点击跳转链接,index.php/tags-653.html" >可以跳到百度,钉钉,emqx
五、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("https://www.baidu.com"); links1.setPicURL("https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"); OapiRobotSendRequest.Links links2 =new OapiRobotSendRequest.Links(); links2.setTitle("333--l2"); links2.setMessageURL("https://www.emqx.io/docs/zh/latest/messaging/mqtt-wildcard-subscription.html"); links2.setPicURL("https://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()); } 六、完整的测试代码
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="https://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 \n> 9度,西北风333级,空气良89,相对温度73%\n" + "> \n" + "> ###### 10点20分发布 天气 \n"); 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图片无序列表- item1- item2有序列表1. item12. 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("https://www.baidu.com"); link.setPicUrl("https://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(" \n #### 333乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划"); actioncard.setSingleTitle("阅读全文"); actioncard.setSingleURL("https://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(" \n #### 333乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划"); OapiRobotSendRequest.Btns b1=new OapiRobotSendRequest.Btns(); b1.setTitle("独立跳转1"); b1.setActionURL("https://www.baidu.com"); OapiRobotSendRequest.Btns b2=new OapiRobotSendRequest.Btns(); b2.setTitle("独立跳转2"); b2.setActionURL("https://www.dingtalk.com"); OapiRobotSendRequest.Btns b3=new OapiRobotSendRequest.Btns(); b3.setTitle("独立跳转3"); b3.setActionURL("https://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("https://www.baidu.com"); links1.setPicURL("https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"); OapiRobotSendRequest.Links links2 =new OapiRobotSendRequest.Links(); links2.setTitle("333--l2"); links2.setMessageURL("https://www.emqx.io/docs/zh/latest/messaging/mqtt-wildcard-subscription.html"); links2.setPicURL("https://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()); }}
上一篇:怎么申请服务器搭建ip?