国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java 通過API調(diào)用釘釘機(jī)器人通知

這篇具有很好參考價(jià)值的文章主要介紹了java 通過API調(diào)用釘釘機(jī)器人通知。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.釘釘群中申請(qǐng)釘釘機(jī)器人

第一步:群管理–> 智能群助手–> 添加機(jī)器人–> 自定義

java 通過API調(diào)用釘釘機(jī)器人通知

第二步:通過加簽的形式,需要記住加簽的密碼

java 通過API調(diào)用釘釘機(jī)器人通知
第三步:獲取webhook的access_token=***的值記錄下來

java 通過API調(diào)用釘釘機(jī)器人通知

2.釘釘相關(guān)配置

#釘釘消息配置
#對(duì)應(yīng)Webhook中的access_token值
ding.robot.token= ****
#對(duì)應(yīng)安全設(shè)置->加簽方式中的密鑰
ding.robot.key=***
#手機(jī)號(hào)可以@到具體某人,以;分割
ding.robot.at=****

3.釘釘集成代碼

/**
 * @Description: 釘釘消息管理
 * @author: wanjun
 */
public interface IDingManager
{
	/**
	 * @Description: 發(fā)送釘釘消息
	 * @param robotKey 對(duì)應(yīng)Webhook中的access_token值
	 * @param robotToken 對(duì)應(yīng)安全設(shè)置->加簽方式中的密鑰
	 * @param dingRobotAt 根據(jù)手機(jī)號(hào)可以@到具體某人,以;分割
	 * @param content 發(fā)送內(nèi)容
	 * @return: void
	 */
	String sendDingMsg(String robotKey,String robotToken,String dingRobotAt,String content);
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;

import com.booway.cloud.commons.util.Func;
import com.booway.uums.dingrobot.IDingManager;

/**
 * @Description: 釘釘消息管理
 * @author: wanjun
 */
public class DingManager implements IDingManager
{

	private static final Logger log = LoggerFactory.getLogger(DingManager.class);
	
	private static RestTemplate restTemplate = new RestTemplate();
	
	/**
     * 通知人名單
     */
    private List<String> mobileList = new ArrayList<String>();
	
	@Override
	public String sendDingMsg(String robotKey,String robotToken,String dingRobotAt,String content)
	{
		String timestamp = String.valueOf(System.currentTimeMillis());
        String sign = Func.dingHmacSHA256(timestamp, robotKey);
        // 釘釘機(jī)器人地址(配置機(jī)器人的webhook)
        String dingUrl = "https://oapi.dingtalk.com/robot/send?access_token=" + robotToken + "&timestamp=" + timestamp + "&sign=" + sign;
        if (mobileList.isEmpty())
		{
        	//填入手機(jī)號(hào),可以具體@到某個(gè)人
        	if (!StringUtils.isEmpty(dingRobotAt))
        	{
        		String [] all = StringUtils.split(dingRobotAt, ";");
        		if (all != null)
        		{
        			mobileList.addAll(Arrays.asList(all));
        		}
        	}
		}
        //組裝請(qǐng)求內(nèi)容
        Map<String, Object> reqStr = buildReqStr(content, mobileList.isEmpty(), mobileList);
        return invokeGeneralApi(dingUrl, reqStr);
		
	}
	
	
	 /**
     * 組裝請(qǐng)求報(bào)文
     * @param content
     * @return
     */
    private Map<String, Object> buildReqStr(String content, boolean isAtAll, List<String> mobileList) {
        //消息內(nèi)容
        Map<String, String> contentMap = new HashMap<String, String>();
        contentMap.put("content", content);

        //通知人
        Map<String, Object> atMap = new HashMap<String, Object>();
        //1.是否通知所有人
        atMap.put("isAtAll", isAtAll);
        //2.通知具體人的手機(jī)號(hào)碼列表
        atMap.put("atMobiles", mobileList);

        Map<String, Object> reqMap = new HashMap<String, Object>();
        reqMap.put("msgtype", "text");
        reqMap.put("text", contentMap);
        reqMap.put("at", atMap);

        return reqMap;
    }

    private String invokeGeneralApi(String url, Map<String, Object> params) {
        String body = "";
        try {
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params, headers);
            ResponseEntity<String> entity = restTemplate.postForEntity(url, httpEntity, String.class);
            body = entity.getBody();
            log.info("invokeGeneralApi()>>>[{}]", body);
        } catch (RestClientException e) {
        	log.error("API調(diào)用錯(cuò)誤,接口地址:[{}],請(qǐng)求參數(shù):[{}]", url, params, e);
        }
        return body;
    }
	

}

public class Func
{
	/**
     * 釘釘自定義機(jī)器人安全設(shè)置
     * 把timestamp+"\n"+密鑰當(dāng)做簽名字符串,使用HmacSHA256算法計(jì)算簽名,然后進(jìn)行Base64 encode,最后再把簽名參數(shù)再進(jìn)行urlEncode,得到最終的簽名(需要使用UTF-8字符集)
     * @param secret
     * @return
     */
    public static String dingHmacSHA256(String timestamp, String secret) {
        try {
            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");
            return sign;
        } catch (Exception e) {
        	ERROR_LOG.error("dingHmacSHA256加密失敗", e);
        }
        return null;
    }
 }

4.調(diào)用

dingManager.sendDingMsg(robotKey, robotToken, robotAt, “截止到0點(diǎn),發(fā)現(xiàn)以下賬號(hào)登錄異常(括號(hào)里面為異常次數(shù)):8);

java 通過API調(diào)用釘釘機(jī)器人通知文章來源地址http://www.zghlxwxcb.cn/news/detail-513411.html

到了這里,關(guān)于java 通過API調(diào)用釘釘機(jī)器人通知的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【釘釘】通過釘釘機(jī)器人抓取群消息

    【釘釘】通過釘釘機(jī)器人抓取群消息

    一、進(jìn)入釘釘開放平臺(tái)中的開發(fā)者后臺(tái) ?二、進(jìn)入應(yīng)用開發(fā)的企業(yè)內(nèi)部開發(fā)? ?三、選擇機(jī)器人創(chuàng)建應(yīng)用 ?四、進(jìn)入開發(fā)管理點(diǎn)擊修改 ?五、配置公網(wǎng)的服務(wù)器出口IP以及消息接收地址 ?六、消息接收代碼部分 七、釘釘群@機(jī)器人發(fā)送消息 ?后端即可獲取到消息,因?yàn)橐呀?jīng)和我的

    2024年02月12日
    瀏覽(30)
  • 在釘釘群通過機(jī)器人發(fā)送信息

    在第三方API接口對(duì)接中,需要及時(shí)獲取第三方接口請(qǐng)求結(jié)果情況,所以在代碼中融合釘釘機(jī)器人,對(duì)請(qǐng)求的異常結(jié)果及時(shí)發(fā)送通知。 自定義機(jī)器人參考鏈接 通用響應(yīng)參數(shù)-封裝API的錯(cuò)誤碼 通用響應(yīng)參數(shù)-狀態(tài)碼 通過返回類定義 在釘釘群可以通過手機(jī)號(hào)碼@指定人員 關(guān)于釘釘群

    2024年02月01日
    瀏覽(31)
  • 網(wǎng)站項(xiàng)目通過釘釘機(jī)器人向釘釘群發(fā)送信息

    網(wǎng)站項(xiàng)目通過釘釘機(jī)器人向釘釘群發(fā)送信息

    PC網(wǎng)站內(nèi)填好的數(shù)據(jù)發(fā)送至釘釘群,以釘釘機(jī)器人卡片形式發(fā)送 樣例如圖: 首先我使用的是vue前端和egg.js后端(基于node.js) 開發(fā)思路流程: 網(wǎng)頁(yè)內(nèi)填寫數(shù)據(jù)(表單或者其他都可以) 將數(shù)據(jù)整理到一個(gè)data里 將釘釘API相關(guān)信息與data一起通過釘釘API接口傳過去 實(shí)現(xiàn)功能,釘釘機(jī)

    2024年02月13日
    瀏覽(25)
  • ElastAlert通過飛書機(jī)器人發(fā)送報(bào)警通知

    ElastAlert通過飛書機(jī)器人發(fā)送報(bào)警通知

    公司采用ELK架構(gòu)搜集業(yè)務(wù)系統(tǒng)的運(yùn)行日志,以前開發(fā)人員只有在業(yè)務(wù)出現(xiàn)問題的時(shí)候,才會(huì)去kibana上進(jìn)行日志搜索操作,每次都是被用戶告知系統(tǒng)出問題了,這簡(jiǎn)直是被啪啪打臉~ 于是痛定思痛,決定主動(dòng)出擊,查閱了許多資料,發(fā)現(xiàn)ElastAlert這個(gè)服務(wù)能夠?qū)lasticsearch的索引按

    2024年02月07日
    瀏覽(24)
  • 如何用JS寫一套釘釘?shù)臋C(jī)器人自動(dòng)回復(fù),要求調(diào)用chatgpt

    請(qǐng)注意,本文由chatgpt 3.5完成,請(qǐng)自行驗(yàn)證該回答的嚴(yán)謹(jǐn)性。 為了用JS編寫一套釘釘機(jī)器人自動(dòng)回復(fù),調(diào)用ChatGPT,可以按照以下步驟: 創(chuàng)建一個(gè)釘釘機(jī)器人:在釘釘開放平臺(tái)上創(chuàng)建一個(gè)機(jī)器人,并獲取機(jī)器人的Webhook地址和密鑰。 安裝必要的依賴:使用Node.js環(huán)境,在項(xiàng)目根目

    2024年02月02日
    瀏覽(17)
  • java實(shí)現(xiàn)釘釘群機(jī)器人@機(jī)器人獲取信息后,機(jī)器人回復(fù)(機(jī)器人接收消息)

    java實(shí)現(xiàn)釘釘群機(jī)器人@機(jī)器人獲取信息后,機(jī)器人回復(fù)(機(jī)器人接收消息)

    1.需求 鑒于需要使用釘釘群機(jī)器人回復(fù),人們提出的問題,需要識(shí)別提出的問題中的,后端進(jìn)行處理實(shí)現(xiàn)對(duì)應(yīng)的業(yè)務(wù)邏輯 2.實(shí)現(xiàn)方式 用戶@群機(jī)器人,附帶提出的問題,后端接收消息后識(shí)別消息內(nèi)容,讀取到進(jìn)行對(duì)應(yīng)的業(yè)務(wù)邏輯操作后,機(jī)器人獲取返回的信息后

    2024年02月14日
    瀏覽(39)
  • java實(shí)現(xiàn)釘釘自定義機(jī)器人發(fā)送消息

    java實(shí)現(xiàn)釘釘自定義機(jī)器人發(fā)送消息

    ? ? ? ?釘釘作為現(xiàn)在很多企業(yè)的移動(dòng)辦公平臺(tái),具有很多很強(qiáng)大的功能,可以幫助我們更加及時(shí)的發(fā)現(xiàn)問題,解決問題,今天我們做一個(gè)java實(shí)現(xiàn)釘釘自定義機(jī)器發(fā)送消息的功能。 ? ? ? ? 首先,先放出官方文檔地址:https://open.dingtalk.com/document/orgapp/custom-robot-access ? ? ? ?

    2024年02月15日
    瀏覽(23)
  • Java實(shí)現(xiàn)釘釘企業(yè)內(nèi)部應(yīng)用機(jī)器和自定義機(jī)器人發(fā)送消息

    Java實(shí)現(xiàn)釘釘企業(yè)內(nèi)部應(yīng)用機(jī)器和自定義機(jī)器人發(fā)送消息

    ?公司讓寫一個(gè)服務(wù)監(jiān)控的功能,當(dāng)監(jiān)測(cè)到服務(wù)停止時(shí),向釘釘群里推送報(bào)警信息。之前大概看到釘釘?shù)拈_放平臺(tái)的API文檔,好像能群發(fā)消息的只有機(jī)器人。 釘釘開放平臺(tái)目前提供三種機(jī)器人: 企業(yè)內(nèi)部應(yīng)用機(jī)器人 群模板機(jī)器人 自定義機(jī)器人 本來向用自己比較熟悉的自定義

    2024年02月12日
    瀏覽(26)
  • 【AI】智能機(jī)器人回復(fù)調(diào)用青云客API

    【AI】智能機(jī)器人回復(fù)調(diào)用青云客API

    隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了如何制作一款智能機(jī)器人回復(fù),降低了網(wǎng)站維護(hù)成本 ai機(jī)器人指它是計(jì)算機(jī)科學(xué)的一個(gè)分支。它涉及開發(fā)計(jì)算機(jī)程序來完成否則需要人類智能的任務(wù)。AI機(jī)器人可以解決

    2024年02月11日
    瀏覽(23)
  • AIGC開發(fā):調(diào)用openai的API接口實(shí)現(xiàn)簡(jiǎn)單機(jī)器人

    AIGC開發(fā):調(diào)用openai的API接口實(shí)現(xiàn)簡(jiǎn)單機(jī)器人

    開始進(jìn)行最簡(jiǎn)單的使用:通過API調(diào)用openai的模型能力 OpenAI的能力如下圖: OpenAI 的文本生成模型(通常稱為生成式預(yù)訓(xùn)練 Transformer 或大型語(yǔ)言模型)經(jīng)過訓(xùn)練可以理解自然語(yǔ)言、代碼和圖像。這些模型提供文本輸出來響應(yīng)其輸入。這些模型的輸入也稱為“提示”。設(shè)計(jì)提示本

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包