| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package jnpf.util.third;
- import com.alibaba.fastjson.JSONObject;
- import com.dingtalk.api.DefaultDingTalkClient;
- import com.dingtalk.api.DingTalkClient;
- import com.dingtalk.api.request.OapiGettokenRequest;
- import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
- import com.dingtalk.api.response.OapiGettokenResponse;
- import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
- import com.taobao.api.ApiException;
- import jnpf.util.RandomUtil;
- /**
- * 通过钉钉用户ID串进行发送消息,传入就是接收人的钉钉用户ID串
- *
- * @版本: V3.1.0
- * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
- * @作者: JNPF开发平台组
- * @日期: 2021/4/21 16:10
- */
- public class DingTalkUtil {
- /**
- * 钉钉发送消息的接口路径
- */
- public static final String SEND_MESSAGE = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2";
- /**
- * 钉钉获取TOKEN的接口路径
- */
- public static final String TOKEN = "https://oapi.dingtalk.com/gettoken";
- /**
- * 获取token
- * @param appkey
- * @param appsecret
- * @return
- */
- // public static String getToken (String appkey,String appsecret){
- // DefaultDingTalkClient client = new
- // DefaultDingTalkClient(TOKEN);
- // OapiGettokenRequest request = new OapiGettokenRequest();
- // request.setAppkey(appkey);
- // request.setAppsecret(appsecret);
- // request.setHttpMethod("GET");
- // try {
- // OapiGettokenResponse response = client.execute(request);
- //// LocalCacheClient.set("access_token", response.getAccessToken(),7200*1000);
- // return response.getAccessToken();
- // } catch (ApiException e) {
- // e.printStackTrace();
- // }
- // return null;
- // }
- /**
- * 获取token
- * @param appkey
- * @param appsecret
- * @return
- */
- public static JSONObject getAccessToken(String appkey, String appsecret){
- JSONObject retMsg = new JSONObject();
- retMsg.put("code",true);
- retMsg.put("error","");
- try{
- DingTalkClient client = new DefaultDingTalkClient(TOKEN);
- OapiGettokenRequest req = new OapiGettokenRequest();
- req.setAppkey(appkey);
- req.setAppsecret(appsecret);
- req.setHttpMethod("GET");
- OapiGettokenResponse rsp = client.execute(req);
- retMsg.put("access_token", rsp.getAccessToken());
- if (!rsp.isSuccess()) {
- retMsg.put("code", false);
- retMsg.put("error",rsp.getErrmsg());
- retMsg.put("access_token", "");
- }
- } catch (ApiException e) {
- retMsg.put("code", false);
- retMsg.put("error",e.toString());
- retMsg.put("access_token", "");
- }
- return retMsg;
- }
- /**
- * 给用户推送消息(文字消息)
- * @param appkey
- * @param appsecret
- * @param agentid
- * @param userIds
- * @param content
- * @return
- * 收到消息格式如下:
- * 发送的内容
- */
- public static JSONObject sendDingMessage(String appkey, String appsecret, String agentid, String userIds, String content){
- JSONObject retMsg = new JSONObject();
- DingTalkClient client = new DefaultDingTalkClient(SEND_MESSAGE);
- OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
- request.setUseridList(userIds);
- request.setAgentId(Long.parseLong(agentid));
- request.setToAllUser(false);
- OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
- msg.setMsgtype("text");
- msg.setText(new OapiMessageCorpconversationAsyncsendV2Request.Text());
- String randomCode = "随机验证码:"+ RandomUtil.uuId();
- msg.getText().setContent(content+randomCode);
- request.setMsg(msg);
- try {
- retMsg = getAccessToken(appkey,appsecret);
- if(retMsg.getBoolean("code")){
- // OapiMessageCorpconversationAsyncsendV2Response response = client.execute(request,getToken(appkey,appsecret));
- OapiMessageCorpconversationAsyncsendV2Response response = client.execute(request,retMsg.getString("access_token"));
- if(response.getErrcode()>0){
- retMsg.put("code",false);
- retMsg.put("error",response.getErrmsg());
- }else{
- retMsg.put("code",true);
- retMsg.put("error","");
- }
- }else{
- retMsg.put("code",false);
- retMsg.put("error","获取token失败:"+retMsg.getString("error"));
- }
- return retMsg;
- } catch (ApiException e) {
- retMsg.put("code",false);
- retMsg.put("error",e.toString());
- return retMsg;
- }
- }
- }
|