首页 > 其他分享 >小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人

时间:2022-10-04 21:31:57浏览次数:73  
标签:小玩意 OapiRobotSendRequest SpringBoot request 玩转 new import com String


故事背景

为什么想着去捣腾这个玩意呢?因为最近有一些定时任务每天都需要重复的人工去执行、审核,于是就想到了能不能有一个定时任务执行完,但是需要一个机器人通知我,之前想到用邮箱(玩腻了),但是这次想看下 DingTalk 的能力——机器人

使用教程

 

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_钉钉开发平台

  • 1、创建 Ding 群

首先在钉钉软件里创建一个群聊,这个比较简单就不多说啥了,主要注意的地方是一个群聊至少三个人,但是如何做到 1 个人创建一个群呢?也很简单,只要一开始拉 2 个人进来,然后创建成功后把他们踢出去就行,这样就实现 1 个人在一个群里,就可以和机器人愉快地玩耍啦~

  • 2、添加自定义机器人

因为我们这篇主要讲解的是自定义机器人,其他机器人也半斤八两的操作,所以我们还是拿自定义机器人来举例说明,如图所是,完全傻瓜式操作

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_SpringBoot Java_02

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_DingTalk_03

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_机器人_04

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_SpringBoot Java_05

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_群聊 聊天_06

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_群聊 聊天_07

Ps1:这一步安全设置有三种安全设置可供选择,这里只演示加签安全设置(推荐)

Ps2:记得先复制来这串密钥,下文会用到

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_机器人_08

Ps1:这一步也一样,提前复制好 Webhook 信息,下文需要用到

Ps2:当然如果以上密钥和Webhook都忘记了的话,可以重新打开上面的机器人那边可以重新查看的噢

  • 3、开始编码(Java)
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibaba-dingtalk-service-sdk</artifactId>
<version>2.0.0</version>
</dependency>

Ps:添加依赖

import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.taobao.api.ApiException;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

/**
* @author Lux Sun
* @date 2022/7/5
*/
public class DingUtil {

private static final String SECRET = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd2233f6165930cfd78539369";
private static final String URL = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxx7e1d6e711a3a5ef8e9908467a0f667";

public static void send(String content) throws ApiException, NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
Long timestamp = System.currentTimeMillis();
String stringToSign = timestamp + "\n" + SECRET;
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(SECRET.getBytes("UTF-8"), "HmacSHA256"));
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
String signResult = "×tamp=" + timestamp + "&sign=" + sign;
// 得到拼接后的 URL
String url = URL + signResult;

DingTalkClient client = new DefaultDingTalkClient(url);
OapiRobotSendRequest request = new OapiRobotSendRequest();
request.setMsgtype("text");
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent(content);
request.setText(text);
// OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
// at.setAtMobiles(Arrays.asList("132xxxxxxxx"));
// isAtAll类型如果不为Boolean,请升级至最新SDK
// at.setIsAtAll(true);
// at.setAtUserIds(Arrays.asList("109929","32099"));
// request.setAt(at);

// request.setMsgtype("link");
// OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link();
// link.setMessageUrl("https://www.dingtalk.com/");
// link.setPicUrl("");
// link.setTitle("时代的火车向前开");
// link.setText("这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林");
// request.setLink(link);
//
// request.setMsgtype("markdown");
// OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
// markdown.setTitle("杭州天气");
// markdown.setText("#### 杭州天气 @156xxxx8827\n" +
// "> 9度,西北风1级,空气良89,相对温度73%\n\n" +
// "> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n" +
// "> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n");
// request.setMarkdown(markdown);
OapiRobotSendResponse response = client.execute(request);
}
}

 Ps:中间注释掉的部分,一个是 @ 功能,还有一些是其他的传参内容方式,因为我这边只需要用到 Text 方式即可

DingUtil.send("测试文本消息");

Ps:运行后看如下效果图

小玩意 - 一篇带你玩转 SpringBoot 钉钉机器人_群聊 聊天_09

  • Tips:最后,其他消息传参方式可见官方文档,其实也非常简单噢~

标签:小玩意,OapiRobotSendRequest,SpringBoot,request,玩转,new,import,com,String
From: https://blog.51cto.com/u_10980859/5731703

相关文章