? ? ? ?釘釘作為現(xiàn)在很多企業(yè)的移動(dòng)辦公平臺(tái),具有很多很強(qiáng)大的功能,可以幫助我們更加及時(shí)的發(fā)現(xiàn)問(wèn)題,解決問(wèn)題,今天我們做一個(gè)java實(shí)現(xiàn)釘釘自定義機(jī)器發(fā)送消息的功能。
? ? ? ? 首先,先放出官方文檔地址:https://open.dingtalk.com/document/orgapp/custom-robot-access
? ? ? ? 接下來(lái),先創(chuàng)建一個(gè)釘釘?shù)娜?,打開釘釘群,在群的右上角點(diǎn)擊齒輪圖標(biāo) - 群設(shè)置,
再打開的群設(shè)置按鈕,點(diǎn)擊機(jī)器人,選擇機(jī)器人 -?添加機(jī)器人 - 自定義機(jī)器人?
添加機(jī)器人
?自定義機(jī)器人
?進(jìn)入到機(jī)器人設(shè)置頁(yè)面
設(shè)置完成之后,會(huì)生成一個(gè)webhook地址,復(fù)制該地址出來(lái)。
? ? ? ? 然后點(diǎn)擊完成,群內(nèi)自定義機(jī)器人就添加完成了。
? ? ? ? ?機(jī)器人添加完成之后,我們需要在代碼中實(shí)現(xiàn)對(duì)機(jī)器人發(fā)送消息的功能。
? ? ? ? ?在java代碼中,我們可以創(chuàng)建一個(gè)釘釘發(fā)送消息的utils類,代碼如下
public class DingdingTalkUtils { public static String url = "webhook地址"; //生成機(jī)器人申城webhook地址 public static String keyWords = "安全設(shè)置-關(guān)鍵字內(nèi)容" public static String access__secret = "安全設(shè)置-加簽"; //安全設(shè)置 - 加簽方式下生成的秘鑰 public static String sendKeyWordMessage(String json) { try { if (!StringUtils.contains(json, keyWords)) { log.error("使用了釘釘群發(fā)送消息但是沒有關(guān)鍵詞 :{} >>> {} 將無(wú)法發(fā)送消息,直接退回", json, keyWords); return null; } Map<String, String> tmpMap = new HashMap<>(); tmpMap.put("content", json); Map<String, Object> contentMap = new HashMap<>(); contentMap.put("msgtype", "text"); contentMap.put("text", tmpMap); Map<String, String> headers = new HashMap<>(); headers.put("Content-Type", "application/json; charset=utf-8"); headers.put("Accept", "application/json"); return HttpSupport.makeFastConnect().doPostBody(url, JsonUtil.obj2Json(contentMap), headers).result(); } catch (Exception e) { log.error("發(fā)送釘釘消息出現(xiàn)異常:{}", e.getMessage()); } return null; } public static String sendEncryptMessage(String json, String secretKey) { try { String url = getUrl(secretKey); Map<String, String> tmpMap = new HashMap<>(); tmpMap.put("content", json); Map<String, Object> contentMap = new HashMap<>(); contentMap.put("msgtype", "text"); contentMap.put("text", tmpMap); Map<String, String> headers = new HashMap<>(); headers.put("Content-Type", "application/json; charset=utf-8"); headers.put("Accept", "application/json"); return HttpSupport.makeFastConnect().doPostBody(url, JsonUtil.obj2Json(contentMap), headers).result(); } catch (Exception e) { log.error("發(fā)送釘釘消息出現(xiàn)異常:{}", e.getMessage()); } return null; } private static String getUrl(String secretKey) throws Exception { String result = url; long timestamp = System.currentTimeMillis(); String stringToSign = timestamp + "\n" + secretKey; Mac mac = Mac.getInstance("HmacSHA256"); mac.init(new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256")); byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)); String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); result += "×tamp=" + timestamp + "&sign=" + sign; return result; } }
?上面的代碼提供了通過(guò)關(guān)鍵字匹配發(fā)送,以及加簽方式發(fā)送消息的兩種方法,其中
contentMap.put("msgtype", "text"); 這里面指定了發(fā)送的消息以何種形式展現(xiàn),目前釘釘提供了五種展現(xiàn)消息的形式:
-
文本 (text)
-
鏈接 (link)
-
markdown(markdown)
-
ActionCard
-
FeedCard文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-555009.html
?另外,如果引入釘釘?shù)膕dk,還能實(shí)現(xiàn)@功能,有興趣的同學(xué)可以看一下官方文檔,實(shí)現(xiàn)釘釘機(jī)器人發(fā)送消息的功能并不難實(shí)現(xiàn),相信難不倒大家,不過(guò)還是希望這篇文章能對(duì)大家有一點(diǎn)點(diǎn)的幫助,好了,今天的分享就到這里了,感謝大家!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-555009.html
到了這里,關(guān)于java實(shí)現(xiàn)釘釘自定義機(jī)器人發(fā)送消息的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!