java通過釘釘機器人發(fā)消息的實現(xiàn)示例
釘釘自定義機器人使用 加簽的配置 發(fā)送消息
注意:內(nèi)部群才可以創(chuàng)建自定義機器人
釘釘網(wǎng)址-自定義機器人創(chuàng)建
1、獲得的釘釘配置信息workhook和secret
//url路徑 private String URL = "https://oapi.dingtalk.com/robot/send?access_token=08ebaa04f98f7faacbacd80fa879463d85cdccdd6cef184ef01bb5a8b6ae6f6c"; //加簽密鑰 private String DINGDING_SECRET = "SEC27596efd776991b2f6786270fa59552459f64612b17adf377295669361af3fae";
2、配置加簽
配置路徑
private String getSign() { Long timestamp = System.currentTimeMillis(); String stringToSign = timestamp + "\n" + DINGDING_SECRET; Mac mac = null; String sign = null; try { mac = Mac.getInstance("HmacSHA256"); mac.init(new SecretKeySpec(DINGDING_SECRET.getBytes("UTF-8"), "HmacSHA256")); byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); } catch (Exception e) { throw new IllegalArgumentException("加簽處理有誤"); } return "×tamp=" + timestamp + "&sign=" + sign; }
3、按照釘釘要求整理json數(shù)據(jù)結(jié)構(gòu)
如果phone為null則發(fā)送普通消息,不為空則發(fā)送給特定的人
private JSONObject buildDingDingMessage(String phone, String message) { //2、按要求配置參數(shù)格式 JSONObject json = new JSONObject(); json.put("msgtype", "text"); json.put("text", new JSONObject() {{ put("content", message); }}); if (!UtilString.isBlank(phone)) { ArrayList<String> list = new ArrayList<>(); list.add(phone); json.put("at", new JSONObject() {{ put("atMobiles", list.toArray()); }}); } return json; }
@Override public void doSendMessage(String phone, String message) { //1、檢查數(shù)據(jù) if (UtilString.isBlank(message)) { throw new IllegalArgumentException("請輸入釘釘服務(wù)機器人要輸出的信息"); } //2、配置釘釘信息 JSONObject json = buildDingDingMessage(phone, message); //3、請求 String url = URL + getSign(); String responseText = HttpClient.textBody(url) .json(json.toJSONString()) .connectTimeout(60) .readTimeout(5 * 60) .writeTimeout(5 * 60) .asString(); //無錯則不發(fā)送日志消息 JSONObject responseJson = JSON.parseObject(responseText); if (!responseJson.getString("errmsg").equals("ok")) { log.error(responseJson.getString("errmsg")); } }
到此這篇關(guān)于java通過釘釘機器人發(fā)消息的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)java 釘釘機器人發(fā)消息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)組高級算法與Arrays類常見操作小結(jié)【排序、查找】
這篇文章主要介紹了Java數(shù)組高級算法與Arrays類常見操作,結(jié)合實例形式總結(jié)分析了Java數(shù)組常見的排序算法、查找算法相關(guān)原理、實現(xiàn)與使用技巧,需要的朋友可以參考下2019-03-03基于Springboot的漫畫網(wǎng)站平臺設(shè)計與實現(xiàn)
本文將基于Springboot實現(xiàn)開發(fā)一個漫畫主題的網(wǎng)站,實現(xiàn)一個比漂亮的動漫連載的網(wǎng)站系統(tǒng),界面設(shè)計優(yōu)雅大方,比較適合做畢業(yè)設(shè)計和課程設(shè)計使用,需要的可以參考一下2022-08-08關(guān)于yml文件字符串,List,Map的書寫方式并使用@ConfigurationProperties注入配置類
這篇文章主要介紹了關(guān)于yml文件字符串,List,Map的書寫方式并使用@ConfigurationProperties注入配置類,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12