集成釘釘消息推送功能

1. 概述

本文檔詳細描述了在若依框架基礎上集成釘釘消息推送功能的開發步驟。該功能允許系統向指定釘釘用戶發送文本和富文本消息通知。

2. 環境準備

2.1 釘釘開發者賬號配置

  1. 登錄釘釘開發者平臺:https://open.dingtalk.com/
  2. 創建/選擇企業內部應用
  3. 獲取以下關鍵信息:
    • AppKey: dingvngxxxxx
    • AppSecret: 0uyedo8zroBN4CCGy8ESxxxxxxx
    • AgentId: 3xxx

2.2 應用權限配置

  1. 在釘釘開發者后臺為應用添加以下權限:
    • 通訊錄管理權限(獲取用戶ID)
    • 工作通知權限(發送消息)
  2. 發布應用到測試/生產環境
  3. 設置應用可見范圍,確保測試用戶在可見范圍內

3. API接口測試

3.1 獲取access_token

請求:

GET https://oapi.dingtalk.com/gettoken?appkey=dingxxxxxxxxx&appsecret=0uyedo8xxxxxxxxxx

響應:

{"errcode": 0,"access_token": "獲取到的access_token","errmsg": "ok","expires_in": 7200
}

3.2 發送文本消息

請求:

POST https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=上一步獲取的access_token
Content-Type: application/json{"agent_id": "3828659278","userid_list": "釘釘用戶ID","msg": {"msgtype": "text","text": {"content": "這是一條測試消息"}}
}

響應:

{"errcode": 0,"task_id": 329537971320,"errmsg": "ok","request_id": "15rqb5jfvarmn"
}

3.3 發送富文本消息

請求:

POST https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=上一步獲取的access_token
Content-Type: application/json{"agent_id": "3828659278","userid_list": "釘釘用戶ID","msg": {"msgtype": "markdown","markdown": {"title": "測試富文本消息","text": "### 測試標題\n- 項目1\n- 項目2\n\n**加粗文本**"}}
}

4. 后端實現步驟

4.1 創建釘釘模塊

  1. 創建 ruoyi-dingtalk 模塊,配置 pom.xml 依賴:
    • 添加釘釘開放平臺SDK依賴
    • 添加若依通用依賴

4.2 配置文件設置

  1. application.yml 中添加釘釘配置:
    dingtalk:appkey: dingvxxxxappsecret: 0uyedo8zroBNxxxxxxxagentid: 38xxxxxxx
    

4.3 創建實體類和DTO

  1. 創建消息發送請求DTO:
    • DingTalkMessageDTO: 包含消息類型、內容、接收人等信息
    • TextMessageDTO: 文本消息
    • MarkdownMessageDTO: 富文本消息

4.4 實現核心服務類

  1. 創建 DingTalkTokenService

    • 實現獲取和緩存 access_token 的功能
    • 使用 Redis 存儲 token,設置過期時間
  2. 創建 DingTalkMessageService

    • 實現發送各類消息的方法
    • 處理API響應和異常情況

4.5 封裝HTTP請求工具

  1. 創建 DingTalkHttpClient
    • 封裝對釘釘API的HTTP請求
    • 處理響應解析和錯誤處理

4.6 實現Controller層

  1. 創建 DingTalkTestController
    • 提供測試發送消息的接口
    • 支持文本和富文本消息發送

5. 前端實現步驟

5.1 創建API接口文件

  1. src/api 下創建 dingtalk.js
    • 實現調用后端發送消息的接口

5.2 創建測試頁面

  1. 創建 views/tool/dingtalkTest/index.vue 頁面:
    • 包含富文本編輯器
    • 添加接收人選擇功能
    • 添加消息類型選擇(文本/富文本)
    • 添加發送按鈕

5.3 配置路由

  1. 在路由配置中添加釘釘測試頁面:
    • 配置路徑、組件、權限等

6. 用戶ID獲取與驗證

6.1 實現用戶查詢接口

  1. 創建 DingTalkUserService
    • 調用釘釘API獲取企業用戶列表
    • 提供用戶ID查詢方法

6.2 前端用戶選擇組件

  1. 實現釘釘用戶選擇組件:
    • 可搜索、選擇企業內用戶
    • 支持多選功能

7. 關鍵注意事項

  1. 用戶ID驗證

    • 務必通過釘釘API獲取正確的用戶ID
    • 不可手動輸入用戶ID,避免格式錯誤
  2. Token管理

    • 妥善處理access_token的緩存與過期刷新
    • 避免頻繁請求token,考慮并發請求情況
  3. 錯誤處理

    • 完善的錯誤日志記錄
    • 合理的異常處理和用戶提示
  4. 性能考慮

    • 批量發送機制
    • 異步處理大量消息發送請求

8. 測試與驗證

  1. 單元測試

    • 測試token獲取
    • 測試消息發送
  2. 集成測試

    • 測試完整發送流程
    • 驗證實際釘釘接收效果

9. 后續擴展方向

  1. 實現更多消息類型:

    • 卡片消息
    • 圖片消息
    • OA消息
  2. 實現消息模板功能:

    • 預設常用消息模板
    • 支持變量替換
  3. 實現消息發送狀態追蹤:

    • 記錄發送歷史
    • 查詢消息發送狀態
  4. 接入工作流系統:

    • 與流程引擎集成
    • 實現任務狀態變更通知

10. 附錄

常見問題排查

  1. 消息發送成功但未收到通知:

    • 檢查用戶ID是否正確
    • 檢查應用權限是否已授權
    • 檢查應用是否已發布
    • 驗證用戶是否在應用可見范圍內
  2. API返回錯誤:

    • 檢查access_token是否有效
    • 檢查請求參數格式
    • 查看釘釘開發者后臺的錯誤日志

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81062.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81062.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【行為型之訪問者模式】游戲開發實戰——Unity靈活數據操作與跨系統交互的架構秘訣

文章目錄 🧳 訪問者模式(Visitor Pattern)深度解析一、模式本質與核心價值二、經典UML結構三、Unity實戰代碼(游戲物品系統)1. 定義元素與訪問者接口2. 實現具體元素類3. 實現具體訪問者4. 對象結構管理5. 客戶端使用 …

SQL:MySQL函數:日期函數(Date Functions)

目錄 時間是數據的一種類型 🧰 MySQL 常用時間函數大全 🟦 1. 獲取當前時間/日期 🟦 2. 日期運算(加減) 🟦 3. 時間差計算 🟦 4. 格式化日期 🟦 5. 提取時間部分 &#x1f7…

【MySQL】數據表更新數據

個人主頁:Guiat 歸屬專欄:MySQL 文章目錄 1. 數據更新基礎1.1 更新操作的重要性1.2 更新語句基本結構1.3 更新操作注意事項 2. 基本更新操作2.1 基本UPDATE語法2.2 使用表達式更新數據2.3 使用LIMIT限制更新行數2.4 NULL值處理 3. 高級更新技術3.1 使用子…

【更新】全國省市縣-公開手機基站數據集(2006-2025.3)

手機基站是現代通信網絡中的重要組成部分,它們為廣泛的通信服務提供基礎設施。隨著數字化進程的不斷推進,手機基站的建設與布局對優化網絡質量和提升通信服務水平起著至關重要的作用,本分享數據可幫助分析移動通信網絡的發展和優化。本次數據…

藍橋杯12屆國B 純質數

題目描述 如果一個正整數只有 1 和它本身兩個約數,則稱為一個質數(又稱素數)。 前幾個質數是:2,3,5,7,11,13,17,19,23,29,31,37,??? 。 如果一個質數的所有十進制數位都是質數,我們稱它為純質數。例如&#xff1…

騰訊多模態定制化視頻生成框架:HunyuanCustom

HunyuanCustom 速讀 一、引言 HunyuanCustom 是由騰訊團隊提出的一款多模態定制化視頻生成框架。該框架旨在解決現有視頻生成方法在身份一致性(identity consistency)和輸入模態有限性方面的不足。通過支持圖像、音頻、視頻和文本等多種條件輸入,HunyuanCustom 能…

力扣top100 矩陣置零

開辟數組來標記元素為0的行和列&#xff0c;然后將對應的行和列的元素全部置為0&#xff1b; class Solution { public:void setZeroes(vector<vector<int>>& matrix) {int n matrix.size();int m matrix[0].size();vector<int> l(m),r(n);for(int i …

Python知識框架

一、Python基礎語法 變量與數據類型 變量命名規則 基本類型&#xff1a;int, float, str, bool, None 復合類型&#xff1a;list, tuple, dict, set 類型轉換與檢查&#xff08;type(), isinstance()&#xff09; 運算符 算術運算符&#xff1a;, -, *, /, //, %, ** 比較…

華為OD機試真題——單詞接龍(首字母接龍)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳實現

2025 A卷 100分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

微信小程序智能商城系統(uniapp+Springboot后端+vue管理端)

一、系統介紹 本智能商城系統是基于當今主流技術棧開發的一款多端商城解決方案&#xff0c;主要包括微信小程序前端、SpringBoot 后端服務以及 Vue 管理后臺三大部分。系統融合了線上商城的核心功能&#xff0c;支持商品瀏覽、下單、支付、訂單管理等操作&#xff0c;適用于中小…

Python筆記:c++內嵌python,c++主窗口如何傳遞給腳本中的QDialog,使用的是pybind11

1. 問題描述 用的是python 3.8.20, qt版本使用的是5.15.2, PySide的版本是5.15.2, pybind11的版本為2.13.6 網上說在python腳本中直接用PySide2自帶的QWinWidget&#xff0c;如from PySide2.QtWinExtras import QWinWidget&#xff0c;但我用的版本中說沒有QWinWidget&#x…

軟考軟件設計師中級——軟件工程筆記

1.軟件過程 1.1能力成熟度模型&#xff08;CMM&#xff09; 軟件能力成熟度模型&#xff08;CMM&#xff09;將軟件過程改進分為以下五個成熟度級別&#xff0c;每個級別都定義了特定的過程特征和目標&#xff1a; 初始級 (Initial)&#xff1a; 軟件開發過程雜亂無章&#xf…

C# SQLite基本使用示例

目錄 1 基本使用流程 1.1 步驟1&#xff1a;添加SQLite依賴 1.2 ?步驟2&#xff1a;建立連接 1.3 步驟3&#xff1a;執行SQL命令 1.4 步驟4&#xff1a;查詢數據 1.5 步驟5&#xff1a;使用事務 2 SQLite基本使用示例 2.1 準備工作 2.2 完整示例 2.3 案例代碼解析 …

視頻圖像壓縮領域中 DCT 的 DC 系數和 AC 系數詳解

引言 在數字圖像與視頻壓縮領域&#xff0c;離散余弦變換&#xff08;Discrete Cosine Transform, DCT&#xff09;憑借其卓越的能量集中特性&#xff0c;成為JPEG、MPEG等國際標準的核心技術。DCT通過將空域信號映射到頻域&#xff0c;分離出DC系數&#xff08;直流分量&…

對抗系統熵增:從被動救火到主動防御的穩定性實戰

&#x1f4d5;我是廖志偉&#xff0c;一名Java開發工程師、《Java項目實戰——深入理解大型互聯網企業通用技術》&#xff08;基礎篇&#xff09;、&#xff08;進階篇&#xff09;、&#xff08;架構篇&#xff09;清華大學出版社簽約作家、Java領域優質創作者、CSDN博客專家、…

java 中 DTO 和 VO 的核心區別

DTO 和 VO 的核心區別 特性DTO&#xff08;數據傳輸對象&#xff09;VO&#xff08;視圖對象&#xff09;設計目的服務層與外部系統&#xff08;如前端、其他服務&#xff09;之間的數據傳輸為前端展示層定制數據&#xff0c;通常與 UI 強綁定數據內容可能包含業務邏輯需要的字…

數據結構【二叉樹的遍歷實現】

&#x1f4d8;考研數據結構基礎&#xff1a;二叉樹的存儲、遍歷與隊列輔助實現詳 在數據結構的學習中&#xff0c;二叉樹作為一種結構清晰、應用廣泛的樹形結構&#xff0c;是考研計算機專業課中重點內容之一。本文將以實際代碼為基礎&#xff0c;介紹二叉樹的存儲結構、遍歷方…

無人機俯視風光攝影Lr調色預設,手機濾鏡PS+Lightroom預設下載!

調色詳情 無人機俯視風光攝影 Lr 調色是利用 Adobe Lightroom 軟件&#xff0c;對無人機從俯視角度拍攝的風光照片進行后期處理的調色方式。通過調整色彩、對比度、光影等多種參數&#xff0c;能夠充分挖掘并強化畫面獨特視角下的壯美與細節之美&#xff0c;讓原本平凡的航拍風…

【springcloud學習(dalston.sr1)】Eureka服務端集群的搭建(含源代碼)(二)

該系列項目整體介紹及源代碼請參照前面寫的一篇文章【springcloud學習(dalston.sr1)】項目整體介紹&#xff08;含源代碼&#xff09;&#xff08;一&#xff09; 這篇文章主要介紹多個eureka服務端的集群環境是如何搭建的。 &#xff08;一&#xff09;eureka的簡要說明 Eu…

互聯網大廠Java求職面試實戰:Spring Boot微服務與數據庫優化詳解

&#x1f4aa;&#x1f3fb; 1. Python基礎專欄&#xff0c;基礎知識一網打盡&#xff0c;9.9元買不了吃虧&#xff0c;買不了上當。 Python從入門到精通 &#x1f601; 2. 畢業設計專欄&#xff0c;畢業季咱們不慌忙&#xff0c;幾百款畢業設計等你選。 ?? 3. Python爬蟲專欄…