【钉钉】通过自定义机器人向钉钉群发送消息
生活随笔
收集整理的這篇文章主要介紹了
【钉钉】通过自定义机器人向钉钉群发送消息
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、創(chuàng)建自定義機器人獲取webhook和加簽
?
二、引入依賴
<!--釘釘服務端SDK--><dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>2.0.0</version></dependency><!-- 阿里fastjson包JSON轉(zhuǎn)換--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>三、用上我寫的工具類
package cn.sdata.baseframe.util;import com.alibaba.fastjson.JSON; import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.request.OapiRobotSendRequest; import com.dingtalk.api.response.OapiRobotSendResponse; import com.taobao.api.ApiException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.tomcat.util.codec.binary.Base64; import org.springframework.util.CollectionUtils;import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.List;/*** @author lzw* @create 2022-08-11-11:52*/ //釘釘機器人工具類 @Slf4j public class DingTalkUtil {/**** 發(fā)送普通文本消息** @param content 文本消息* @param mobileList 指定@ 聯(lián)系人* @param isAtAll 是否@ 全部聯(lián)系人* @return OapiRobotSendResponse*/public static OapiRobotSendResponse sendMessageByText(String ACCESS_TOKEN, String SECRET, String content, List<String> mobileList, boolean isAtAll) {String sign = null;try {Long timestamp = System.currentTimeMillis();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"));sign = "×tamp=" + timestamp + "&sign=" + URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);} catch (InvalidKeyException e) {throw new RuntimeException(e);} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);}DingTalkClient client = null;client = new DefaultDingTalkClient(ACCESS_TOKEN + sign);if (StringUtils.isEmpty(content)) {return null;}//參數(shù) 參數(shù)類型 必須 說明//msgtype String 是 消息類型,此時固定為:text//content String 是 消息內(nèi)容//atMobiles Array 否 被@人的手機號(在content里添加@人的手機號)//isAtAll bool 否 @所有人時:true,否則為:falseOapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();text.setContent(content);OapiRobotSendRequest request = new OapiRobotSendRequest();if (!CollectionUtils.isEmpty(mobileList)) {// 發(fā)送消息并@ 以下手機號聯(lián)系人OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();at.setAtMobiles(mobileList);at.setIsAtAll(isAtAll);request.setAt(at);}request.setMsgtype("text");request.setText(text);OapiRobotSendResponse response = new OapiRobotSendResponse();try {response = client.execute(request);System.out.println("【DingTalkUtils】發(fā)送普通文本消息 響應參數(shù):" + JSON.toJSONString(response));} catch (ApiException e) {log.error("[發(fā)送普通文本消息]: 發(fā)送消息失敗, 異常捕獲{}", e.getMessage());}return response;} }三、業(yè)務代碼直接調(diào)用
@GetMapping("sendTask")public void sendTask() {String webhook = "https://**************";//webhookString sign = "SECa11e807dac9d805c8f93f8974c5f53217ef2d140f399d";//加簽ArrayList<String> strings = ListUtil.toList("135****8888");//@用戶的手機號Boolean isAtAll = true;//是否@所有人String data = "測試測試測試";//消息內(nèi)容DingTalkUtil.sendMessageByText(webhook, sign, data, strings, isAtAll);}四、消息發(fā)送成功
總結(jié)
以上是生活随笔為你收集整理的【钉钉】通过自定义机器人向钉钉群发送消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 帮我写一篇外骨骼文献综述
- 下一篇: 全国计算机等级考试科目有,全国计算机等级