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

釘釘企業(yè)機(jī)器人單聊消息發(fā)送實(shí)踐-大數(shù)據(jù)平臺(tái)(XSailboat)消息中心消息推送

這篇具有很好參考價(jià)值的文章主要介紹了釘釘企業(yè)機(jī)器人單聊消息發(fā)送實(shí)踐-大數(shù)據(jù)平臺(tái)(XSailboat)消息中心消息推送。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. 背景

在筆者開(kāi)發(fā)的大數(shù)據(jù)平臺(tái)XSailboat中有 消息中心 模塊,用來(lái)全平臺(tái)的消息收集,整理分拆、訂閱發(fā)送等功能。消息推送方式支持釘釘群聊、釘釘單聊、短信通知?,F(xiàn)記錄一下企業(yè)機(jī)器人消息單聊推送的實(shí)現(xiàn)過(guò)程。

2. 釘釘開(kāi)發(fā)文檔

這是官方的開(kāi)發(fā)文檔地址:《機(jī)器人發(fā)送、查詢和撤回單聊消息》

將其中的主要過(guò)程抄錄一下:

步驟一:登錄開(kāi)發(fā)者后臺(tái),點(diǎn)擊應(yīng)用開(kāi)發(fā)-企業(yè)內(nèi)部開(kāi)發(fā),創(chuàng)建機(jī)器人。
步驟二:點(diǎn)擊機(jī)器人應(yīng)用-基礎(chǔ)信息,獲取AppKey和AppSecret。
步驟三:添加接口調(diào)用權(quán)限,點(diǎn)擊“機(jī)器人”,申請(qǐng)企業(yè)內(nèi)機(jī)器人發(fā)送消息權(quán)限。申請(qǐng)權(quán)限無(wú)需審批,默認(rèn)開(kāi)通。
步驟四:上線機(jī)器人。進(jìn)入版本管理與發(fā)布頁(yè)面,點(diǎn)擊上線,機(jī)器人的狀態(tài)變更為已發(fā)布。
步驟五:獲取應(yīng)用訪問(wèn)憑證獲取企業(yè)內(nèi)部應(yīng)用的accessToken。調(diào)用接口時(shí),通過(guò)accessToken鑒權(quán)調(diào)用者身份。
步驟六:調(diào)用機(jī)器人單聊相關(guān)的API:

  • 調(diào)用服務(wù)端API-批量發(fā)送單聊消息,獲取消息processQueryKey。
  • 根據(jù)消息processQueryKey,調(diào)用服務(wù)端API-批量查詢單聊機(jī)器人是否已讀,查詢機(jī)器人發(fā)送的單聊消息對(duì)方是否已讀。
  • 根據(jù)消息processQueryKey,調(diào)用服務(wù)端API-批量撤回單聊消息,撤回機(jī)器人發(fā)送的單聊消息。

3. 記錄自己的操作過(guò)程

  1. 上企業(yè)的 開(kāi)發(fā)者后臺(tái) 創(chuàng)建應(yīng)用(應(yīng)用名:大數(shù)據(jù)平臺(tái)-消息中心)。
  2. 創(chuàng)建了應(yīng)用之后,再點(diǎn)進(jìn)應(yīng)用,創(chuàng)建機(jī)器人,創(chuàng)建好了之后發(fā)布。
    釘釘企業(yè)機(jī)器人單聊消息發(fā)送實(shí)踐-大數(shù)據(jù)平臺(tái)(XSailboat)消息中心消息推送,大數(shù)據(jù)平臺(tái)開(kāi)發(fā)技術(shù),釘釘,機(jī)器人,大數(shù)據(jù)
  3. 申請(qǐng)“機(jī)器人”里面的 “企業(yè)內(nèi)機(jī)器人發(fā)送消息權(quán)限” 和“通訊錄管理”中的 “根據(jù)手機(jī)號(hào)姓名獲取成員信息的接口訪問(wèn)權(quán)限”。
  4. 根絕Appkey和AppSecret獲取token。
  • 《獲取企業(yè)內(nèi)部應(yīng)用的access_token》
  1. 定向向某人發(fā)送釘釘消息時(shí)需要指定userId,而消息中心配置的消息訂閱人設(shè)置的是手機(jī)號(hào)。所以需要將手機(jī)號(hào)翻譯成userId。
  • 《根據(jù)手機(jī)號(hào)查詢企業(yè)賬號(hào)用戶》
  1. 發(fā)送消息的API。
  • 《批量發(fā)送人與機(jī)器人會(huì)話中機(jī)器人消息》

4. 示例代碼

package com.cimstech.sailboat.ms.msg;

import com.cimstech.sailboat.ms.msg.sender.Letter;
import com.cimstech.xfront.common.http.HttpClient;
import com.cimstech.xfront.common.http.Request;
import com.cimstech.xfront.common.json.JSONArray;
import com.cimstech.xfront.common.json.JSONObject;
import com.cimstech.xfront.common.text.XString;
import com.cimstech.xfront.common.time.XTime;

public class Test
{
	/**
	 * 獲取token,查詢userId的服務(wù)地址
	 */
	static final String sDingService = "https://oapi.dingtalk.com" ;
	
	/**
	 * 發(fā)送釘釘消息的服務(wù)地址
	 */
	static final String sDingSendService = "https://api.dingtalk.com" ;
	
	/**
	 * 憑借appKey和appSecret獲取token
	 */
	static final String sPath_GetToken = "/gettoken" ;
	
	/**
	 * 通過(guò)手機(jī)號(hào)獲取企業(yè)賬號(hào)用戶
	 */
	static final String sPath_GetUserByMobile = "/topapi/v2/user/getbymobile" ;
	
	static final String sPath_SendMsgOfSingleChat = "/v1.0/robot/oToMessages/batchSend" ;
	
	static final String sDetailPtn_n = "[以及另外{}條詳情..]({})" ;
	static final String sDetailPtn_1 = "[詳情..]({})" ;
	
	static final String sNoLink = "以及另外{}條" ;
	
	static String[] sColors = new String[] {"#FF0000"
			, "#ffa500"
			, "#0fdbdb"
			, "#12e512"} ;
	
	static String sDetailLink = "http://XXXXX/sailmsg/msgrow?sendBatch={}&totalAmount={}" ;
	
	static JSONObject toJSON(Letter aLetter)
	{
		int level = aLetter.getLevel() ;
		String color = level < sColors.length? sColors[level]:null ;
		StringBuilder strBld = new StringBuilder("【消息中心-").append(aLetter.getSubscriberItemName())
				.append("】")
				.append("-[") ;
		if(color != null)
			strBld.append("<font color=").append(color).append(">") ;
		strBld.append(level).append("級(jí)") ;
		if(color != null)
			strBld.append("</font>") ;
//		String partition = aLetter.getPartition() ;
		strBld.append("]") ; // .append(sSiteMap.getOrDefault(partition , partition)) ;
		String title = strBld.toString() ;
		
		strBld.setLength(0);
		strBld.append("**").append(title).append("**  \n  > ")
				.append("<font color=#000000>")
				.append(aLetter.getContent())
				.append("</font>")
				.append("  \n  \n  ") ;
		strBld.append("<font color=#666666>")
				.append(aLetter.getEventTime())
				.append("</font>")
				.append("&nbsp;&nbsp;&nbsp;&nbsp;") ;
		
		if(XString.isEmpty(sDetailLink))
		{
			if(aLetter.getReduceAmount() > 0)
				strBld.append(XString.msgFmt(sNoLink , aLetter.getReduceAmount())) ;
		}
		else
		{
			if(aLetter.getReduceAmount() > 1)
			{
				strBld.append(XString.msgFmt(sDetailPtn_n, aLetter.getReduceAmount()
						, XString.msgFmt(sDetailLink , aLetter.getSendBatch() , aLetter.getReduceAmount()))) ;
			}
			else
			{
				strBld.append(XString.msgFmt(sDetailPtn_1
						, XString.msgFmt(sDetailLink , aLetter.getSendBatch() , aLetter.getReduceAmount()))) ;
			}
		}
		String content = strBld.toString() ;
		
		return new JSONObject().put("title" , title)
						.put("text", content)
				;
	}

	public static void main(String[] args) throws Exception
	{
		String appKey = "ddddddddddddddd" ;
		String appSecret = "ssssssssssssssssssssssssssssssss" ;
		String mobile = "130XXXXXXXXX" ;
		String robotCode = "dingXXXXXXXXX" ;
		
		// 1.獲取AccessToken
		HttpClient client = HttpClient.ofUrl(sDingService) ;
		long expireTime = System.currentTimeMillis() ;
		/**
		 * {
		 *   "errcode": 0,
		 *   "access_token": "aaaaaaaaaaaaaaaaa",
		 *   "errmsg": "ok",
		 *   "expires_in": 7200
		 * }
		 */
		JSONObject jo = client.askJo(Request.GET().path(sPath_GetToken)
				.queryParam("appkey" , appKey)
				.queryParam("appsecret", appSecret)) ;
		System.out.println("獲取到的Token:"+jo) ;
		String accessToken = jo.optString("access_token") ;
		expireTime += jo.optLong("expires_in") * 1000 ;
		
		/**
		 * {
         *   "errcode": 0,
         *   "errmsg": "ok",
         *   "result":
         *   {
         *     "exclusive_account_userid_list": [],
         *     "userid": "bbbbbbbbbbbbb"
         *   },
         *   "request_id": "ccccccc"
         * }
		 */
		// 2. 查詢userId
		jo = client.askJo(Request.POST().path(sPath_GetUserByMobile).queryParam("access_token" , accessToken)
				.setJsonEntity(new JSONObject().put("mobile" , mobile)
						.put("support_exclusive_account_search" , true))) ;
		System.out.println("獲取到的User信息:"+jo);
		
		String userId = jo.pathString(null , "result" , "userid") ;
		
		
		Letter letter = new Letter(null) ;
		letter.setLevel(5);
		letter.setContent("單聊測(cè)試") ;
		letter.setEventTime(XTime.current$yyyyMMddHHmmss());
		letter.setReduceAmount(1) ;
		letter.setSendBatch("xxxxxxxxxxxxxxx") ;
		letter.setSubscriberItemName("單聊測(cè)試訂閱項(xiàng)");
		
		String msgParam = toJSON(letter).toJSONString() ;
		
		/**
		 * {
         *   "flowControlledStaffIdList": [],
         *   "invalidStaffIdList": [],
         *   "processQueryKey": "xxxxxxxxxxxxxx"
         * }
		 */
		// 3.發(fā)送消息
		jo = HttpClient.ofUrl(sDingSendService).askJo(Request.POST().path(sPath_SendMsgOfSingleChat)
				.header("x-acs-dingtalk-access-token" , accessToken)
				.setJsonEntity(new JSONObject().put("robotCode" , robotCode)
						.put("userIds", new JSONArray().put(userId))
						.put("msgKey", "sampleMarkdown")
						.put("msgParam" , msgParam))) ;
		
		System.out.println("發(fā)送消息收到的回復(fù):"+jo);
	}

}

效果:
釘釘企業(yè)機(jī)器人單聊消息發(fā)送實(shí)踐-大數(shù)據(jù)平臺(tái)(XSailboat)消息中心消息推送,大數(shù)據(jù)平臺(tái)開(kāi)發(fā)技術(shù),釘釘,機(jī)器人,大數(shù)據(jù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-823624.html

到了這里,關(guān)于釘釘企業(yè)機(jī)器人單聊消息發(fā)送實(shí)踐-大數(shù)據(jù)平臺(tái)(XSailboat)消息中心消息推送的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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ī)器人定時(shí)發(fā)送消息(超詳細(xì))

    釘釘自定義機(jī)器人定時(shí)發(fā)送消息(超詳細(xì))

    ? ? ? ? 因?yàn)楣ぷ餍枰?,需要在釘釘群里添加一個(gè)可以每天定時(shí)發(fā)送消息的機(jī)器人,我找了很多網(wǎng)頁(yè)查看,發(fā)現(xiàn)資料并不是很全,現(xiàn)在做出來(lái)了,就想發(fā)表出來(lái),看看能不能幫到大家。接下來(lái)就進(jìn)入正題。 ? ? ? ? 詳細(xì)步驟可以參考:釘釘群設(shè)置創(chuàng)建一個(gè)機(jī)器人-CSDN博客 ?

    2024年03月11日
    瀏覽(17)
  • 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)問(wèn)題,解決問(wèn)題,今天我們做一個(gè)java實(shí)現(xiàn)釘釘自定義機(jī)器發(fā)送消息的功能。 ? ? ? ? 首先,先放出官方文檔地址:https://open.dingtalk.com/document/orgapp/custom-robot-access ? ? ? ?

    2024年02月15日
    瀏覽(22)
  • C#實(shí)現(xiàn)釘釘自定義機(jī)器人發(fā)送群消息幫助類

    C#實(shí)現(xiàn)釘釘自定義機(jī)器人發(fā)送群消息幫助類

    ????????在企業(yè)中,針對(duì)一些關(guān)鍵指標(biāo)內(nèi)容(如每天的生產(chǎn)產(chǎn)量、每天的設(shè)備報(bào)警信息等信息),需要同時(shí)給多人分享,此時(shí)就可以將需要查看這些數(shù)據(jù)的人員都拉到一個(gè)群中,讓群里的機(jī)器人將這些關(guān)鍵指標(biāo)內(nèi)容推送到群里即可【(目前已實(shí)現(xiàn)在釘釘群里創(chuàng)建自定義機(jī)器

    2024年02月04日
    瀏覽(24)
  • 【辦公自動(dòng)化】釘釘機(jī)器人每日定時(shí)向不同群組發(fā)送消息

    【辦公自動(dòng)化】釘釘機(jī)器人每日定時(shí)向不同群組發(fā)送消息

    ????????實(shí)現(xiàn)每日上午10點(diǎn)自動(dòng)向各供應(yīng)商群同步前一日產(chǎn)品數(shù)據(jù)。通過(guò)python+釘釘機(jī)器人實(shí)現(xiàn)該功能。具體步驟如下: 目錄 1.創(chuàng)建機(jī)器人獲得token 2.編寫(xiě)腳本 2.1 數(shù)據(jù)整理 2.2 消息發(fā)送 3.設(shè)置定時(shí)任務(wù) 群設(shè)置--智能群助手--添加機(jī)器人--自定義(通過(guò)Webhook接入自定義服務(wù))

    2024年02月08日
    瀏覽(23)
  • Outlook無(wú)需API開(kāi)發(fā)連接釘釘群機(jī)器人,實(shí)現(xiàn)新增會(huì)議日程自動(dòng)發(fā)送群消息通知

    Outlook無(wú)需API開(kāi)發(fā)連接釘釘群機(jī)器人,實(shí)現(xiàn)新增會(huì)議日程自動(dòng)發(fā)送群消息通知

    Outlook用戶使用場(chǎng)景: 在企業(yè)中,會(huì)議和活動(dòng)的順利舉行對(duì)于業(yè)務(wù)運(yùn)轉(zhuǎn)和團(tuán)隊(duì)協(xié)作至關(guān)重要。然而,計(jì)劃的變動(dòng)總是無(wú)法避免,這可能會(huì)導(dǎo)致其他人的計(jì)劃受到影響,打亂原有的安排。為了解決這個(gè)問(wèn)題,許多企業(yè)開(kāi)始使用各種工具和技術(shù)來(lái)確保信息的及時(shí)傳遞和更新。其中

    2024年02月09日
    瀏覽(30)
  • 如何使用企業(yè)微信群機(jī)器人定時(shí)發(fā)送消息

    如何使用企業(yè)微信群機(jī)器人定時(shí)發(fā)送消息

    每天早上8點(diǎn)鐘通過(guò)企業(yè)微信群機(jī)器人發(fā)消息提醒大家打卡。在Aboter中該如何實(shí)現(xiàn)呢? 首先創(chuàng)建一個(gè)IPaaS流程,觸發(fā)條件組件編輯區(qū)選擇【定時(shí)觸發(fā)】類型。編輯區(qū)進(jìn)行如下設(shè)置: 拖動(dòng)左側(cè)【應(yīng)用連接器 即時(shí)通訊 企業(yè)微信群機(jī)器人】組件到執(zhí)行流程塊中,并配置好相關(guān)參數(shù)。

    2024年02月06日
    瀏覽(52)
  • 【Java】企業(yè)微信群機(jī)器人發(fā)送消息(文字、圖片、MarkDown、文件消息)

    【Java】企業(yè)微信群機(jī)器人發(fā)送消息(文字、圖片、MarkDown、文件消息)

    2022/4/22更新:新增可發(fā)送文件消息。 發(fā)送文件消息需要先將文件上傳到企業(yè)微信的臨時(shí)素材,url為https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?type=filekey=**********,這個(gè)key就是群機(jī)器人Webhook地址的key參數(shù),在代碼里我已經(jīng)處理好了,只要有Webhook地址就行。獲取到media_id,再拿

    2023年04月08日
    瀏覽(18)
  • 封裝Python腳本:使用企業(yè)微信機(jī)器人發(fā)送消息至企業(yè)微信

    官方文檔地址:https://developer.work.weixin.qq.com/document/path/91770#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%BE%A4%E6%9C%BA%E5%99%A8%E4%BA%BA 可以通過(guò)如下步驟設(shè)置企業(yè)微信機(jī)器人: 首先建立或者進(jìn)入某個(gè)群聊 進(jìn)入群聊設(shè)置頁(yè)面, 點(diǎn)擊“群機(jī)器人添加”可添加一個(gè)機(jī)器人成功 添加成功后,復(fù)制并保

    2024年02月09日
    瀏覽(27)
  • 工作隨記-Java利用企業(yè)微信群機(jī)器人定時(shí)發(fā)送消息

    工作隨記-Java利用企業(yè)微信群機(jī)器人定時(shí)發(fā)送消息

    hi,大家好,我是恰恰 閱讀本文需要2分鐘~ 最近利用企業(yè)微信群機(jī)器人做的需求主要有 1.返獎(jiǎng)率通知與告警: 抽獎(jiǎng)箱能抽出垃圾也能抽出大貨,每隔5分鐘查詢一下這個(gè)返獎(jiǎng)率,如果用戶頻繁抽出大貨,這個(gè)抽獎(jiǎng)箱的返獎(jiǎng)率已經(jīng)高出了閾值,那么我們就將其下架。 2.自動(dòng)發(fā)送導(dǎo)

    2024年02月09日
    瀏覽(18)
  • 對(duì)接釘釘機(jī)器人發(fā)送釘釘通知

    對(duì)接釘釘機(jī)器人發(fā)送釘釘通知

    實(shí)現(xiàn)效果 話不多說(shuō) 直接上代碼 http工具類

    2024年01月25日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包