当前位置: 首页 > 编程笔记 >

java实现钉钉机器人消息推送的示例代码

田晨
2023-03-14
本文向大家介绍java实现钉钉机器人消息推送的示例代码,包括了java实现钉钉机器人消息推送的示例代码的使用技巧和注意事项,需要的朋友参考一下

先建个钉钉群,并加好机器人







此时,机器人已经添加完毕,接下来编写我们连接机器人小哥的代码

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

}

运行结果如下:

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

钉钉群显示消息:


ok,简单的消息推送,这就完成了!

我们再来测试一下通知所有人和通知具体人

将isAtAll更改为true

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

增加通知人号码列表(注:isAtAll和mobileList 不能同时生效)

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

再来测试一下特殊符号

换行标识符

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

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

String content = sb.toString();

emoji图片

先获取emoji图片的unicode编码


编写代码如下:

/**
 * 苹果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();

通常在我们的项目中,作为一些告警加入,方便且实用
很有意思的钉钉机器人,很多实用技巧,可以深入去探索一波!

更新于2019-12-05

很多小伙伴留言咨询http请求,这边给大家2个http请求代码

1. maven项目

添加依赖

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

http请求代码

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. 非maven项目

添加jar包
httpclient-xxx.jar
commons-logging-xxx.jar

http请求代码

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();
 }

方法仅供参考,项目里面有现成的http请求,可以直接用!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍钉钉群自定义机器人消息Python封装的实例,包括了钉钉群自定义机器人消息Python封装的实例的使用技巧和注意事项,需要的朋友参考一下 一、钉钉群自定义机器人介绍 钉钉群机器人是钉钉群的一个高级扩展功能,然而使用起来却非常简单,只有注册一个钉钉账号即可,就可以将第三方服务的信息聚合到钉钉群中,实现信息的自动化同步,例如:通过聚合Github、Gitlab等源码管理服务,实现源码更新

  • 更新时间:2019-05-30 11:36:38 节点简介 钉钉机器人节点可以将消息推送至钉钉群中,可以应用在设备消息推送、监控报警、信息公示等多种场景。目前仅支持信息推送,不支持用户消息返回处理。 使用场景 使用钉钉机器人将消息推送至钉钉群中,可将设备告警信息、设备属性信息、业务逻辑处理结果以定时/触发的方式推送到钉钉群中。 配置项 要使得上游节点中的内容能够推送到一个钉钉群中,首先要在该钉钉群

  • 本文向大家介绍Python调用钉钉自定义机器人的实现,包括了Python调用钉钉自定义机器人的实现的使用技巧和注意事项,需要的朋友参考一下 前言:由于公司使用钉钉,之前告警都是使用邮箱,但是这种协同效率比较低,所以调用钉钉机器人来实现实时告警。 创建机器人:创建钉钉群,然后添加群机器人。 python代码如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍shell 操作钉钉机器人实现告警提醒的方法,包括了shell 操作钉钉机器人实现告警提醒的方法的使用技巧和注意事项,需要的朋友参考一下 我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看。随着手机APP的发展,很多告警开始发送到IM软件上去。目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉上。群机器人是钉钉群的高级扩展功能,群机器人可以

  • 1.5米内0.6秒多人行进间人脸识别考勤,复杂光环境轻松识别。 包材清单 主机、电源适配器 摆放方式 摆放方式 挂墙摆放 挂墙摆放 产品结构 产品结构 产品结构 设备配置 设备通电,扫描设备上的二维码 通过蓝牙搜索设备 链接网络 选择设备关联团队 设备使用 手机端-工作-智能考勤机-人脸录入管理 添加员工,录入人脸 选择人脸录入方式 完成人脸录入 完成后展示人脸 员工关怀 考勤规则设置 体验极速/

  • 活的数字化名片,实时更新,名片认证身份真实可信,商务会面互换名片只需3秒。智能人脉管理,名片自动分类,轻松整理,快速找人。 编辑对外名片 完善名片信息,全面展示个人及企业信息 点击编辑对外名片 编辑流程 1.编辑名片样式 可以选择基础名片样式,企业主管理员也可自定义名片样式,组织内成员同步开启,实时更新。 选择名片基础样式或定制名片样式 主管理员自定义定制名片样式 2.编辑名片个人信息 编辑每项个