java如何发送ding消息_JAVA 推送钉钉消息

importcom.dingtalk.api.DefaultDingTalkClient;importcom.dingtalk.api.DingTalkClient;importcom.dingtalk.api.request.OapiRobotSendRequest;importcom.dingtalk.api.response.OapiRobotSendResponse;importcom.zy.core.model.BDic;importcom.zy.model.ding.in.SendMessageIn;importlombok.extern.slf4j.Slf4j;importorg.apache.commons.codec.binary.Base64;importjavax.crypto.Mac;importjavax.crypto.spec.SecretKeySpec;importjava.net.URLEncoder;importjava.util.ArrayList;importjava.util.List;/***@authorzxq

* @description 钉钉推送服务类

* @date 2020/11/26*/@Slf4jpublic classDingTalkService {//文本消息

private static final String TEXT = "text";private static final String LINK = "link";private static final String MARKDOWN = "markdown";private static final String ACTION_CARD = "actionCard";private static final String FEED_CARD = "feedCard";/*** @description: 推送消息

*@paramin

*@return: void

*@author: zxq

* @Date: 2020/11/26 13:28*/

public static void sendMessage(SendMessageIn in) throwsException {

log.info("开始推送钉钉消息:" +in);

Long timestamp=System.currentTimeMillis();

String secret=in.getSecret();

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");

DingTalkClient client= new DefaultDingTalkClient(in.getWebhook() + "&timestamp=" + timestamp + "&sign=" +sign);

OapiRobotSendRequest request= newOapiRobotSendRequest();

OapiRobotSendRequest.At at= newOapiRobotSendRequest.At();if (in.isAtAll() || in.getMobileList() == null || in.getMobileList().size() == 0) {//推送所有人

at.setIsAtAll(true);

}else{//推送指定用户

at.setAtMobiles(in.getMobileList());

at.setIsAtAll(false);

}

request.setAt(at);//文本消息

if(TEXT.equals(in.getMsgType())) {

request.setMsgtype(BDic.DING_TALK_MSG_TYPE.TEXT);

OapiRobotSendRequest.Text text= newOapiRobotSendRequest.Text();

text.setContent(in.getText());

request.setText(text);

}

OapiRobotSendResponse response=client.execute(request);

log.info("钉钉推送返回结果:" +response);

}public static void main(String[] args) throwsException {

List mobileList = new ArrayList<>();

mobileList.add("156xxxxxxxx");

SendMessageIn in= newSendMessageIn();

in.setMsgType(TEXT);

in.setAtAll(false);

in.setMobileList(mobileList);

in.setWebhook("https://oapi.dingtalk.com/robot/send?access_token=xxxxx");

in.setSecret("签");

in.setText("桃花坞里桃花庵,桃花庵下桃花仙");

sendMessage(in);

}

}importlombok.Data;importjava.util.List;/***@authorzxq

* @description 发送钉钉消息 入参

* @date 2020/11/13*/@Datapublic classSendMessageIn {//消息类型

privateString msgType;//webhook

privateString webhook;//密钥

privateString secret;//文本

privateString text;//指定对象

private ListmobileList;//是否推送所有人

private booleanisAtAll;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值