中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

python網(wǎng)站開發(fā)書籍推薦it培訓(xùn)班大概需要多少錢

python網(wǎng)站開發(fā)書籍推薦,it培訓(xùn)班大概需要多少錢,河北seo推廣方法,wordpress anzhuo目錄 1.通過自定義機器人方式發(fā)送群消息 1.1說明 1.2發(fā)送普通消息示例(采用加簽方式) 1.3注意事項 2.通過企業(yè)內(nèi)部應(yīng)用發(fā)送釘釘消息 2.1說明 2.2示例 2.3注意 1.通過自定義機器人方式發(fā)送群消息 1.1說明 官網(wǎng)地址: 自定義機器人發(fā)送…

目錄

1.通過自定義機器人方式發(fā)送群消息

1.1說明

1.2發(fā)送普通消息示例(采用加簽方式)

1.3注意事項

2.通過企業(yè)內(nèi)部應(yīng)用發(fā)送釘釘消息

2.1說明

2.2示例

2.3注意


1.通過自定義機器人方式發(fā)送群消息

1.1說明

官網(wǎng)地址:

自定義機器人發(fā)送群消息 - 釘釘開放平臺

自定義機器人的創(chuàng)建和安裝 - 釘釘開放平臺?

自定義機器人安全設(shè)置 - 釘釘開放平臺

自定義機器人在群聊場景中的使用 - 釘釘開放平臺

首先創(chuàng)建企業(yè)內(nèi)部群,按照官方文檔進行創(chuàng)建和安裝,?自定義機器人的安全設(shè)置分為一下三種:

①自定義關(guān)鍵詞

發(fā)送的消息中至少包含其中一個關(guān)鍵詞才可以發(fā)送成功

②加簽方式

加簽方式是釘釘機器人和開發(fā)者雙向進行安全認證,在群內(nèi)@自定義機器人時,開發(fā)者的POST地址收到機器人消息攜帶的headers參數(shù),其中包含timestamp和sign字段,開發(fā)者需要在自己服務(wù)內(nèi)重新計算sign簽名值,最后再調(diào)用自定義機器人發(fā)送消息接口時,攜帶開發(fā)者服務(wù)器內(nèi)系統(tǒng)當(dāng)前timestamp和重新計算的sign簽名,以此來驗證安全性。

③IP地址

設(shè)定后,只有來自IP地址范圍內(nèi)的請求才會被正常處理,支持兩種設(shè)置方式:IP地址和IP地址段,暫不支持IPv6地址白名單

1.2發(fā)送普通消息示例(采用加簽方式)

①引入依賴

<dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>2.0.0</version>
</dependency>

?②創(chuàng)建發(fā)送消息工具類

package com.kingagroot.info.common.tools.thirdparty;import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.kingagroot.info.common.tools.common.LogTool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;/*** @Author linaibo* @Date 2023/11/21 9:45* @Version 1.0*/
@Component
public class DingDingTool {private static LogTool logTool;@Autowiredpublic void setLogTool(LogTool logTool) {DingDingTool.logTool = logTool;}private static String secret;private static String url;@NacosValue(value = "${ding.secret}", autoRefreshed = true)public void setSecret(String secret) {DingDingTool.secret = secret;}@NacosValue(value = "${ding.url}", autoRefreshed = true)public void setUrl(String url) {DingDingTool.url = url;}/*** 組裝簽名url** @return url*/public static String getURL() throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {Long timestamp = System.currentTimeMillis();String stringToSign = timestamp + "\n" + secret;Mac mac = Mac.getInstance("HmacSHA256");mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));String sign = URLEncoder.encode(new String(Base64.getEncoder().encode(signData)), "UTF-8");String signResult = "&timestamp=" + timestamp + "&sign=" + sign;// 得到拼接后的 URLreturn url + signResult;}/*** 獲取客戶端** @return*/public static DingTalkClient getClient() throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {return new DefaultDingTalkClient(getURL());}/*** 發(fā)送釘釘消息** @param msg*/public static void sendDingMsg(String msg) {try {DingTalkClient client = getClient();OapiRobotSendRequest request = new OapiRobotSendRequest();//設(shè)置發(fā)送消息類型request.setMsgtype("text");//設(shè)置消息內(nèi)容OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();text.setContent(msg);request.setText(text);//設(shè)置給誰發(fā)送消息OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();// isAtAll類型如果不為Boolean,請升級至最新SDK,設(shè)置為true代表@群內(nèi)的所有人at.setIsAtAll(true);//也可以指定接收人的手機號或者釘釘id,將消息發(fā)送給指定的人// at.setAtMobiles(Arrays.asList("1392xxxxx","155xxxx"));request.setAt(at);client.execute(request);} catch (Exception e) {logTool.saveExceptionLog("", "", "sendDingMsg", e);}}
}

?url是創(chuàng)建自定義機器人是的webhook地址,secret是開啟加簽?zāi)J綍r的密鑰。

使用加簽方式調(diào)用自定義機器人發(fā)送消息時需要拼接當(dāng)前的時間戳和簽名。

簽名生成方式:把timestamp+"\n"+密鑰當(dāng)做簽名字符串,使用HmacSHA256算法計算簽名,然后進行Base64 encode,最后再把簽名參數(shù)再進行urlEncode,得到最終的簽名。

發(fā)送消息時可以設(shè)置發(fā)送消息的類型及給誰發(fā)送

1.3注意事項

①部署到服務(wù)器后,一定要開通服務(wù)器訪問釘釘?shù)臋?quán)限,否則會出現(xiàn)connect reset的錯誤

②注意對釘釘發(fā)送異常時的信息記錄,可以存到日志表中或者是日志文件中

參照:SpringBoot集成釘釘自定義機器人群消息推送-CSDN博客

2.通過企業(yè)內(nèi)部應(yīng)用發(fā)送釘釘消息

2.1說明

官方文檔:

獲取企業(yè)內(nèi)部應(yīng)用的access_token - 釘釘開放平臺

發(fā)送工作通知 - 釘釘開放平臺

首先要在釘釘?shù)拈_發(fā)者后臺創(chuàng)建應(yīng)用,獲取應(yīng)用的AppKey、AppSecret及AgentId。獲取企業(yè)內(nèi)部應(yīng)用的token,然后再調(diào)用發(fā)送消息接口進行消息的發(fā)送。

2.2示例

package com.kingagroot.info.common.tools.common;import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
import com.kingagroot.info.common.tools.thirdparty.DingDingTool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;/*** @Author linaibo* @Date 2024/1/6 16:18* @Version 1.0*/
@Component
public class DingTool {private static LogTool logTool;@Autowiredpublic void setLogTool(LogTool logTool) {DingTool.logTool = logTool;}// 權(quán)限用戶名private static String accessKey;// 權(quán)限密碼private static String secret;// agent_idprivate static Long agentId;// tokenUrlprivate static String tokenUrl;// 發(fā)送消息urlprivate static String sendMsgUrl;// 系統(tǒng)urlprivate static String sysUrl;@NacosValue(value = "${dingding.appkey}", autoRefreshed = true)public void setAccessKey(String accessKey) {DingTool.accessKey = accessKey;}@NacosValue(value = "${dingding.appsecret}", autoRefreshed = true)public void setSecret(String secret) {DingTool.secret = secret;}@NacosValue(value = "${dingding.agentId}", autoRefreshed = true)public void setAgentId(Long agentId) {DingTool.agentId = agentId;}@NacosValue(value = "${dingding.gettoken}", autoRefreshed = true)public void setTokenUrl(String tokenUrl) {DingTool.tokenUrl = tokenUrl;}@NacosValue(value = "${dingding.sendMsg}", autoRefreshed = true)public void setSendMsgUrl(String sendMsgUrl) {DingTool.sendMsgUrl = sendMsgUrl;}@NacosValue(value = "${sys.url}", autoRefreshed = true)public void setSysUrl(String sysUrl) {DingTool.sysUrl = sysUrl;}/*** 獲取釘釘token** @return*/public static String getDingToken() {DingTalkClient client = new DefaultDingTalkClient(tokenUrl);OapiGettokenRequest request = new OapiGettokenRequest();request.setAppkey(accessKey);request.setAppsecret(secret);request.setHttpMethod("GET");try {OapiGettokenResponse response = client.execute(request);if (response.isSuccess()) {// 調(diào)用成功返回token信息return response.getAccessToken();}// 調(diào)用接口異常,輸出異常信息,發(fā)送釘釘通知logTool.saveExceptionLog("", "DingUtils", "getDingToken", JSON.toJSONString(response));DingDingTool.sendDingMsg("獲取釘釘token失敗," + response.getErrcode() + response.getErrmsg());} catch (Exception e) {// 調(diào)用接口異常,輸出異常信息logTool.saveExceptionLog("", "DingUtils", "getDingToken", e);}return null;}/*** 發(fā)送釘釘通知** @param token* @param pwd* @param userCode*/public static boolean sendMsg(String token, String pwd, String userCode) {DingTalkClient client = new DefaultDingTalkClient(sendMsgUrl);OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();request.setAgentId(agentId);request.setUseridList(userCode);request.setToAllUser(false);OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();msg.setMsgtype("text");msg.setText(new OapiMessageCorpconversationAsyncsendV2Request.Text());StringBuilder content = new StringBuilder();content.append("系統(tǒng)地址: ");content.append(sysUrl);content.append("  ");content.append("密碼: ");content.append(pwd);msg.getText().setContent(content.toString());request.setMsg(msg);try {OapiMessageCorpconversationAsyncsendV2Response result = client.execute(request, token);if (result.isSuccess()) {return true;}// 調(diào)用接口異常,輸出異常信息logTool.saveExceptionLog("", "DingUtils", "sendMsg", JSON.toJSONString(result));} catch (Exception e) {// 調(diào)用接口異常,輸出異常信息logTool.saveExceptionLog("", "DingUtils", "sendMsg", e);}return false;}
}

2.3注意

①獲取的token有效期為2個小時,有效期內(nèi)重復(fù)獲取會返回相同結(jié)果并自動續(xù)期,過期后獲取會返回新的access_token。開發(fā)者需要緩存access_token,用于后續(xù)接口的調(diào)用。因為每個應(yīng)用的access_token是彼此獨立的,所以進行緩存時需要區(qū)分應(yīng)用來進行存儲。不能頻繁調(diào)用gettoken接口,否則會受到頻率攔截。

②發(fā)送消息接口為異步發(fā)送消息,接口返回成功并不表示用戶一定會收到消息,需要通過獲取工作通知消息的發(fā)送結(jié)果接口查詢是否給用戶發(fā)送成功。

③如果獲取工作通知發(fā)送結(jié)果接口返回成功但用戶還是沒有接收到消息,需要確認一下,此用戶是否在此釘釘關(guān)聯(lián)的組織結(jié)構(gòu)內(nèi)。

④可以給全部員工發(fā)送,也可以給某個部門的人發(fā)送,也可以給某幾個人(通過指定接收人的釘釘id)發(fā)送消息。

⑤注意對異常的捕捉,并對消息進行記錄。

?

http://www.risenshineclean.com/news/61047.html

相關(guān)文章:

  • 建外文網(wǎng)站用.com還是.cn域名好百度營銷中心
  • 徐州網(wǎng)站開發(fā)西安網(wǎng)站制作推廣
  • 公司注冊地址與辦公地址不一致seo教學(xué)
  • 女生冷門又高薪的職業(yè)深圳網(wǎng)站seo哪家快
  • 模板網(wǎng)站 怎么做優(yōu)化凡科建站下載
  • 網(wǎng)站建設(shè)方案策劃書seo資源
  • 網(wǎng)站建設(shè)技術(shù)提升關(guān)鍵詞排名seo軟件
  • 內(nèi)蒙網(wǎng)站開發(fā)如何設(shè)計推廣方案
  • word網(wǎng)站的鏈接怎么做站長推廣網(wǎng)
  • 上海浦東網(wǎng)站設(shè)計公司谷歌在線搜索
  • wordpress自定義登錄地址seo顧問什么職位
  • 旅游網(wǎng)站國際業(yè)務(wù)怎樣做廈門seo專業(yè)培訓(xùn)學(xué)校
  • 創(chuàng)可貼網(wǎng)站怎么做圖片大全大連seo按天付費
  • 網(wǎng)站開發(fā)助理主要工作網(wǎng)站制作的費用
  • 上海的網(wǎng)站公安備案查詢系統(tǒng)怎么開網(wǎng)店新手入門
  • cnnic可信網(wǎng)站必須做嗎知名網(wǎng)絡(luò)營銷推廣
  • 我想買個空間自己做網(wǎng)站steam交易鏈接在哪看
  • 湖南seo網(wǎng)站多少錢推廣優(yōu)化師
  • 如何做網(wǎng)站不容易被攻擊關(guān)鍵詞搜索推廣排行榜
  • 陜西省建設(shè)網(wǎng)官方網(wǎng)站seo搜索引擎優(yōu)化總結(jié)報告
  • 阿里云中英文網(wǎng)站建設(shè)福州關(guān)鍵詞搜索排名
  • 在線支付網(wǎng)站建設(shè)百度問一問免費咨詢
  • 做英語題的網(wǎng)站軟文新聞發(fā)布網(wǎng)站
  • 做網(wǎng)站實現(xiàn)登陸功能2023年12月疫情又開始了嗎
  • 手機怎樣制作網(wǎng)頁免費seo診斷
  • 為什么網(wǎng)站突然打不開品牌關(guān)鍵詞優(yōu)化哪家便宜
  • 代做網(wǎng)站名稱優(yōu)化b2b平臺推廣
  • 網(wǎng)站建設(shè)市場供需分析外鏈服務(wù)
  • 阿里巴巴電子商務(wù)網(wǎng)站專業(yè)營銷策劃團隊
  • 日用品網(wǎng)站1萬2做代理網(wǎng)絡(luò)營銷大賽策劃書