1. 钉钉向个人发送通知
登录钉钉开放平台
创建小程序应用
创建完后可得到AppKey、AppSecret等信息
添加出口IP,该IP为公网IP
添加开发人员
获取钉钉用户ID
登录钉钉后台管理界面,并进入通讯录,点击要发送的用户,选择“员工UserID”
代码demo
获取access_token
/**
* 获取access_token工具类
*/
public class AccessTokenUtil {
private static final Logger bizLogger = LoggerFactory.getLogger(AccessTokenUtil.class);
public static String getToken() throws RuntimeException {
try {
DefaultDingTalkClient client = new DefaultDingTalkClient(URL_GET_TOKKEN);
OapiGettokenRequest request = new OapiGettokenRequest();
request.setAppkey(Constant.APPKEY);
request.setAppsecret(Constant.APPSECRET);
request.setHttpMethod("GET");
OapiGettokenResponse response = client.execute(request);
String accessToken = response.getAccessToken();
return accessToken;
} catch (ApiException e) {
bizLogger.error("getAccessToken failed", e);
throw new RuntimeException();
}
}
}其中:
1. URL_GET_TOKKEN是“钉钉网关gettoken地址”:"
https://oapi.dingtalk.com/gettoken";
2. AppKey和AppSecret是第步中申请到的信息。
发送个人通知信息
String addr = "https://oapi.dingtalk.com/message/send?access_token=" + AccessTokenUtil.getToken();
String content = "{"
+ "\"touser\": \"" + "manager9533" +"\"," //发送用户ID,多个用,分割
+ "\"toparty\": \"\"," //发送部门ID,多个用,分割
+ "\"agentid\": \""+ "" +"\"," // 应用id
+ "\"msgtype\": \"text\","
+ "\"text\": {\"content\": \"" + System.currentTimeMillis() + "\"}"
+ "}";
result = HttpClientUtil.doPostJson(robotHookAddr, content);注意:
1. content是固定格式,不能错;
2. 因发送消息过于频繁或超量而被流控过滤后实际未发送的userid。未被限流的接收者仍会被成功发送。限流规则包括:1、给同一用户发相同内容消息一天仅允许一次;2、如果是ISV接入方式,给同一用户发消息一天不得超过次;如果是企业接入方式,此上限为。
2钉钉向群发送信息
登录钉钉电脑版,获得钉钉机器人的webhook
选择一个群,点击右上角的设置,选择“智能群助手”
添加机器人
设置机器人名称和关键字
得到webhook的url
代码demo
String robotHookAddr = "https://oapi.dingtalk.com/robot/send?access_token= 8df13f2e3fc211b7c9237ad08f98e9019660276da19c816f4c0c8a6xxxxx";
String contentJson = "{ \"msgtype\": \"text\", \"text\": {\"content\": \"" + "alerthhhhhhhhhhh" + "\"}}";
String result = HttpClientUtil.doPostJson(robotHookAddr, contentJson);注意:
1. access_token就是Webhook,直接拷贝过来就能用
2. contentJson内容格式固定,不要变更
3. contentJson中的content,必须以“关键字”开头。
