起因
事情是这样的,老大不知道从什么地方找了一个钉钉发送消息的代码,什么说明都没有,让把代码调试通!
调查
首先钉钉开发平台查资料。
[图片上传中...(截屏2021-06-09 10.17.28.png-553604-1623205062677-0)]
截屏2021-06-09 10.17.28.png
这些都是消息,一个一个看太麻烦,找了的代码的关键字 看到一个webhook 百度搜索webhook 然后就看到群机器人资料
截屏2021-06-09 10.19.10.png
应该就是这个,然后在开始看钉钉群机器人相关的资料。
操作步骤
按照官方文档第一步 1.新建一个群 2.群管理选择智能群助手
截屏2021-06-09 10.22.32.png
3.添加机器人
截屏2021-06-09 10.23.16.png
4.添加成功后复制出机器人的Webhook地址
截屏2021-06-09 10.25.28.png
到此调用Api接口就可以。但是为什么会报"errcode":310000,"errmsg":"sign not match这个错误了?
原因是我选择了自定义机器人。但是没有阅读自定义机器的文档,所以报签名不匹配的错误
代码语言:javascript复制// 签名不匹配
{
"errcode":310000,
"errmsg":"sign not match"
}
回过头来在看下自定义机器人的文档
截屏2021-06-09 10.44.14.png
我新建机器人的时候选择的 加签
截屏2021-06-09 10.45.14.png
也提供了加签算法
代码语言:javascript复制import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import java.net.URLEncoder;
public class Test {
public static void main(String[] args) throws Exception {
Long timestamp = System.currentTimeMillis();
String secret = "this is secret";
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");
System.out.println(sign);
}
}
截屏2021-06-09 10.45.59.png
最后拼接到url中就好了