项目背景
最近在做一个项目,需要接入钉钉机器人来推送一些消息,废话不多说直接上教程!
教程
1.打开钉钉随机挑选一个群聊–>群设置–>机器人
2.添加机器人
3选择它
4这里要拿到两个东西 一个是accessToken 一个是appSecret
5.好了直接上代码
import cn.hutool.http.HttpUtil;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URLEncoder;
public class DingTest {
public static void main(String[] args) throws Exception {
long timestamp = System.currentTimeMillis();
// 这个就是上面加签的密钥appSecret
String **secret** = "SEC34a7b0f17e018**********************";
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 s ="{\n" +
"\t\"at\": {\n" +
"\t\t\"atMobiles\": [\n" +
"\t\t\t\"12345678909\"\n" +
"\t\t],\n" +
"\t\t\"isAtAll\": false\n" +
"\t},\n" +
"\n" +
"\t\"text\": {\n" +
"\t\t\"content\": \"我就是我是不一样的烟火\"\n" +
"\t},\n" +
"\t\"msgtype\": \"text\"\n" +
"}";
System.out.println(s);
// 这个就是上面创建机器人webhook后面的token
String **accessToken** = "293cc0f0d359299ebd6d7e*****************************";
String url = "https://oapi.dingtalk.com/robot/send"
+ "?access_token=" + accessToken
+ "×tamp=" + timestamp
+ "&sign=" + sign;
HttpUtil.createPost(url)
.body(s)
.execute().body();
}
}
6成功示例
6.整体代码如上 接下里说一下细节
注意上面的
String s =“{\n” +
“\t"at”: {\n" +
“\t\t"atMobiles”: [\n" +
“\t\t\t"12345678909”\n" +
“\t\t],\n” +
“\t\t"isAtAll”: false\n" +
“\t},\n” +
“\n” +
“\t"text”: {\n" +
“\t\t"content”: “我就是我是不一样的烟火”\n" +
“\t},\n” +
“\t"msgtype”: “text”\n" +
“}”;
注意 :这的s是jsonString类型的
这一块是要根据钉钉开发文档的消息发送类型来的 https://open.dingtalk.com/document/orgapp/robot-message-types-and-data-format
这里面都是不同类型的
总结
主要是首先获取一个accessToken和secert这两个东西,代码的编写大同小异,
然后就是钉钉机器人主要的发送消息类型 你可以直接拿它的实例 然后写成string ,丢进发送体里面