起因
事情是这样的,老大不知道从什么地方找了一个钉钉发送消息的代码,什么说明都没有,让把代码调试通!
调查
首先钉钉开发平台查资料。


这些都是消息,一个一个看太麻烦,找了的代码的关键字 看到一个webhook
百度搜索webhook 然后就看到群机器人资料

应该就是这个,然后在开始看钉钉群机器人相关的资料。
操作步骤
按照官方文档第一步
1.新建一个群
2.群管理选择智能群助手

3.添加机器人

4.添加成功后复制出机器人的Webhook地址

到此调用Api接口就可以。但是为什么会报"errcode":310000,"errmsg":"sign not match这个错误了?
原因是我选择了自定义机器人。但是没有阅读自定义机器的文档,所以报签名不匹配的错误
// 签名不匹配
{
"errcode":310000,
"errmsg":"sign not match"
}
回过头来在看下自定义机器人的文档

我新建机器人的时候选择的 加签

也提供了加签算法
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);
}
}

最后拼接到url中就好了
网友评论