参考官方文档:
注意
-
当需要发送一条任务类的通知提醒给员工,比如审批任务等,这类情况下请优先使用发起待办
-
2020年11月27日以后创建的第三方企业应用,请调用使用模板发送工作通知消息接口发送工作通知。
-
如果接口发送成功,接收人没有收到信息,可调用获取工作通知消息的发送结果查询结果,并对比文档中的返回错误码。
发送工作通知消息需要注意以下事项:
-
同一个应用相同内容的消息,同一个用户一天只能接收一次。
-
同一个企业内部应用在一天之内,最多可以给一个用户发送500条消息通知。
-
通过设置to_all_user参数全员推送消息,一天最多3次。且企业发送消息单次最多只能给5000人发送,ISV发送消息单次最多能给1000人发送。
-
超出以上限制次数后,接口返回成功,但用户无法接收到。详细的限制说明,请参考工作通知消息限制。
-
该接口是异步发送消息,接口返回成功并不表示用户一定会收到消息,需要通过获取工作通知消息的发送结果接口查询是否给用户发送成功。
-
消息类型和样例可参考消息类型与数据格式。
调用前置条件:
需要获取企业内部应用的accesstoken,提前在钉钉应用开发平台注册app。
//发送给多人
/*接口参数:
userid_list user123,user456 接收者的userid列表,最大用户列表长度100。
dept_id_list user123,user456 接收者的部门id列表,最大列表长度20。
接收者是部门ID时,包括子部门下的所有用户。
to_all_user 是否发送给企业全部用户。
说明 当设置为false时必须指定userid_list或dept_id_list其中一个参数的值。
msg { "msgtype": "text", "text": { "content": "请提交日报。" } }*/
public class Main {
public static void main(String[] args) {
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
OapiMessageCorpconversationAsyncsendV2Request req = new OapiMessageCorpconversationAsyncsendV2Request();
req.setAgentId(agentId);
req.setUseridList("user123,user456");
Msg obj1 = new Msg();
obj1.setMsgtype("text");
Text obj2 = new Text();
obj2.setContent("test");
obj1.setText(obj2);
req.setMsg(obj1);
OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(req, accessToken);
System.out.println(rsp.getBody());
} catch (ApiException e) {
e.printStackTrace();
}
}
}
【无效通知不提示】查询通知接口返回信息
{"errcode":0,"send_result":{"read_user_id_list":[],"failed_user_id_list":[],"forbidden_list":[],"invalid_user_id_list":["111"],"unread_user_id_list":[],"invalid_dept_id_list":[]},"errmsg":"ok","request_id":"158872qaseg6q"}