Home  >  Article  >  Java  >  Learn Java to implement sample code for DingTalk robot message push

Learn Java to implement sample code for DingTalk robot message push

coldplay.xixi
coldplay.xixiforward
2020-08-13 17:16:423239browse

Learn Java to implement sample code for DingTalk robot message push

First create a DingTalk group and add robots

Learn Java to implement sample code for DingTalk robot message push

Learn Java to implement sample code for DingTalk robot message push

Learn Java to implement sample code for DingTalk robot message push

Learn Java to implement sample code for DingTalk robot message push

Learn Java to implement sample code for DingTalk robot message push

Learn Java to implement sample code for DingTalk robot message push

#At this point, the robot has been added. Next, write the code for us to connect to the robot brother

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;

/**
 * @author yanghao
 * @version DingTalkTest.java, v 0.1 2019-03-29 11:36
 */
public class DingTalkTest {

 public static void main(String[] args){

 try {
  //钉钉机器人地址(配置机器人的webhook)
  String dingUrl = "https://oapi.dingtalk.com/robot/send?access_token=............";

  //是否通知所有人
  boolean isAtAll = false;
  //通知具体人的手机号码列表
  List<String> mobileList = Lists.newArrayList();

  //钉钉机器人消息内容
  String content = "小哥,你好!";
  //组装请求内容
  String reqStr = buildReqStr(content, isAtAll, mobileList);

  //推送消息(http请求)
  String result = HttpUtil.postJson(dingUrl, reqStr);
  System.out.println("result == " + result);

 }catch (Exception e){
  e.printStackTrace();

 }

 }

 /**
 * 组装请求报文
 * @param content
 * @return
 */
 private static String buildReqStr(String content, boolean isAtAll, List<String> mobileList) {
 //消息内容
 Map<String, String> contentMap = Maps.newHashMap();
 contentMap.put("content", content);

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

 Map<String, Object> reqMap = Maps.newHashMap();
 reqMap.put("msgtype", "text");
 reqMap.put("text", contentMap);
 reqMap.put("at", atMap);

 return JSON.toJSONString(reqMap);
 }

}

The running results are as follows:

result == {"errmsg":"ok","errcode":0}

DingTalk group display message:


Learn Java to implement sample code for DingTalk robot message push

ok, simple message push, that’s it!

Let’s test notifying everyone and notifying specific people

Change isAtAll to true

//是否通知所有人
boolean isAtAll = true;
//通知具体人的手机号码列表
List<String> mobileList = Lists.newArrayList();

Learn Java to implement sample code for DingTalk robot message push

Add the notifier number list(Note: isAtAll and mobileList cannot take effect at the same time)

//是否通知所有人
boolean isAtAll = false;
//通知具体人的手机号码列表
List<String> mobileList = Lists.newArrayList();
mobileList.add("182********");

Learn Java to implement sample code for DingTalk robot message push

Let’s test the special Symbol

Line break identifier

/**
 * 换行标识符
 */
private static final String NEWLINE = "\n";

//钉钉机器人消息内容
//String content = "小哥,你好!";
StringBuffer sb = new StringBuffer();
sb.append("小哥,你好!")
 .append(NEWLINE)
 .append("看会书");

String content = sb.toString();

Learn Java to implement sample code for DingTalk robot message push

##emoji picture


Get the unicode encoding of the emoji image first


Learn Java to implement sample code for DingTalk robot message push
Write the code as follows:

/**
 * 苹果unicode编码
 */
private static final String APPLE = "\ud83c\udf4e";

//钉钉机器人消息内容
//String content = "小哥,你好!";
StringBuffer sb = new StringBuffer();
sb.append("小哥,你好!")
 .append(NEWLINE)
 .append("看会书")
 .append(NEWLINE)
 .append("吃个").append(APPLE);

String content = sb.toString();

Learn Java to implement sample code for DingTalk robot message push Usually in our projects, it is added as some alarms, which is convenient and practical

Very interesting DingTalk robot, with many practical skills, you can explore it in depth!


Updated on 2019-12-05

Many friends have left messages asking about http requests. Here are 2 http request codes for you

1. maven project

Add dependency

<!--糊涂工具-->
<dependency>
 <groupId>cn.hutool</groupId>
 <artifactId>hutool-all</artifactId>
 <version>4.0.12</version>
</dependency>

http request code

private static final int timeout = 10000; 

public static String postJson(String url, String reqStr) {
 String body = null;
 try {
  body = HttpRequest.post(url).body(reqStr).timeout(timeout).execute().body();
 } catch (Exception e) {
  e.printStackTrace();
 }
 return body;
}

2. Non-maven project

Add jar package

httpclient-xxx.jar

commons-logging-xxx.jar

http request code

public static String postJson(String url, String body) {
  // 创建Httpclient对象
  CloseableHttpClient httpClient = createCustomClient();
  CloseableHttpResponse response = null;
  String resultString = null;
  try {
   // 创建Http Post请求
   HttpPost httpPost = new HttpPost(url);
   httpPost.addHeader("Content-Type", "application/json");

   if (body != null) {
    httpPost.setEntity(new StringEntity(body, "utf-8"));
   }
   // 执行http请求
   response = httpClient.execute(httpPost);
   resultString = EntityUtils.toString(response.getEntity(), "utf-8");
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    if (response != null) {
     response.close();
    }
   } catch (Exception e) {
    e.printStackTrace();
   }
  }

  return resultString;
 }

 public static CloseableHttpClient createCustomClient() {
  RequestConfig defaultRequestConfig = RequestConfig.custom()
    .setSocketTimeout(120 * 1000)
    .setConnectTimeout(120 * 1000)
    .setConnectionRequestTimeout(120 * 1000)
    .setStaleConnectionCheckEnabled(true)
    .build();

  return HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
 }

The method is for reference only, there are ready-made ones in the project http request can be used directly!

Related learning recommendations:
java basic tutorial

The above is the detailed content of Learn Java to implement sample code for DingTalk robot message push. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:jb51.net. If there is any infringement, please contact admin@php.cn delete