最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot?對接飛書多維表格事件回調(diào)監(jiān)聽流程分析

 更新時間:2024年12月02日 12:10:17   作者:逆風(fēng)飛翔的小叔  
本文介紹了如何通過飛書事件訂閱機制和SpringBoot項目集成,對多維表數(shù)據(jù)的記錄變更進行對接的詳細流程,包括如何創(chuàng)建應(yīng)用、配置參數(shù)、編寫訂閱代碼、訂閱文檔事件以及在SpringBoot工程中集成的步驟,感興趣的朋友跟隨小編一起看看吧

一、前言

在上一篇 【微服務(wù)】Java 對接飛書多維表格使用詳解,分享了基于飛書開放平臺對接多維表的過程,緊接著上一篇,本文將分享如何通過飛書提供的事件訂閱機制,并集成到SpringBoot項目中對多維表數(shù)據(jù)的記錄變更進行對接的詳細流程。

二、前置準(zhǔn)備

2.1 創(chuàng)建一個應(yīng)用

參考上一篇創(chuàng)建應(yīng)用的詳細過程,后面在程序代碼中調(diào)用API的前提都是基于創(chuàng)建的應(yīng)用產(chǎn)生的信息。

2.2 準(zhǔn)備一張測試使用的多維表

創(chuàng)建一張測試使用的多維表,將這個多維表的權(quán)限授權(quán)給上一步添加的應(yīng)用,并提前為多維表添加幾條數(shù)據(jù)

2.3 獲取對接文檔

通過飛書的開放平臺找到事件與訂閱部分的對接文檔,文檔鏈接:https://open.feishu.cn/document/server-docs/event-subscription-guide/overview

2.4 工程中添加SDK

如果在上一篇對接中添加了,可以忽略,以Java為例,在pom文件中添加如下依賴

<dependency>
    <groupId>com.larksuite.oapi</groupId>
    <artifactId>oapi-sdk</artifactId>
    <version>2.3.6</version>
</dependency>

三、對接過程

接下來按照平臺文檔提供的操作步驟進行對接

3.1 配置Encrypt Key 和 Verification Token

這兩個參數(shù),官方文檔說明是可選項,即可以不配,不配的話平臺會默認(rèn)生成兩個參數(shù),但如果你對數(shù)據(jù)傳輸安全性要求比較高的話,建議做一下配置(參數(shù)的位置,我的應(yīng)用 —> 事件與回調(diào) —> 加密策略)

3.2 配置訂閱方式

這一步,表示后續(xù)在應(yīng)用程序中通過哪種方式接收飛書平臺的事件消息,平臺提供了2種方式:

  • 將事件發(fā)送至開發(fā)者服務(wù)器
    • 這種方式需要開發(fā)者按照平臺的要求,開發(fā)一個webhook接口,部署到IPV4類型服務(wù)器上,并在平臺的控制臺進行配置;
  • 使用長連接接收事件
    • 該方式是飛書 SDK 內(nèi)提供的能力,你可以通過集成飛書 SDK 與開放平臺建立一條 WebSocket 全雙工通道(你的服務(wù)器需要能夠訪問公網(wǎng))。后續(xù)當(dāng)應(yīng)用訂閱的事件發(fā)生時,開放平臺會通過該通道向你的服務(wù)器發(fā)送消息。
    • 這也是官方推薦的一種配置方式;

點擊進入到我的應(yīng)用控制臺,在訂閱方式這里選擇 ”長連接” 的方式

3.3 添加事件

這一步表示你需要對接哪些事件,是訂閱多維表記錄變更的事件?部門員工移除事件?還是一個審批通過的事件呢?即需要為當(dāng)前應(yīng)用關(guān)聯(lián)需要處理的事件,這樣飛書平臺才能在后續(xù)將此類變更事件推送到應(yīng)用程序。

添加事件入口如下,進入到我的應(yīng)用之后,在事件與回調(diào)中,在上一步的基礎(chǔ)上,點擊右側(cè)的添加事件,選擇你要對接的事件進行添加,比如我這里選擇的是多維表記錄變更的事件。

3.4 申請權(quán)限

做完上面添加的監(jiān)聽事件之后,需要重新發(fā)布一下應(yīng)用才能生效

選擇版本管理,新增一個版本并點擊發(fā)布,等待管理員審批通過即可

3.5 編寫訂閱代碼

接下來,需要在代中編寫監(jiān)聽程序,從而監(jiān)聽訂閱的事件的數(shù)據(jù)變更,通過平臺提供的示例代碼直接拿來使用,簡單修改下參數(shù),然后運行起來即可,平臺提供的參考代碼鏈接:https://open.feishu.cn/document/server-docs/event-subscription-guide/event-subscription-configure-/request-url-configuration-case

完整的參考代碼如下,代碼中幾個核心參數(shù)文檔上面有描述,這里再單獨說明一下:

  • appId
    • 上一篇中創(chuàng)建應(yīng)用后產(chǎn)生的那個 appId ;
  • appSecret
    • 上一篇中創(chuàng)建應(yīng)用后產(chǎn)生的那個 appSecret ;
  • Encrypt Key
    • 事件與回調(diào)控制臺上面那個參數(shù),為空就不填;
  • Verification Token
    • 事件與回調(diào)控制臺上面那個參數(shù),為空就不填;
package com.congge.web;
import com.lark.oapi.core.request.EventReq;
import com.lark.oapi.core.utils.Jsons;
import com.lark.oapi.event.CustomEventHandler;
import com.lark.oapi.event.EventDispatcher;
import com.lark.oapi.service.im.ImService;
import com.lark.oapi.service.im.v1.model.P2MessageReceiveV1;
import com.lark.oapi.ws.Client;
import java.nio.charset.StandardCharsets;
public class Sample {
    // onP2MessageReceiveV1 為接收消息 v2.0;onCustomizedEvent 內(nèi)的 message 為接收消息 v1.0。
    private static final EventDispatcher EVENT_HANDLER = EventDispatcher.newBuilder("7ZCxxfFBXsCJUa2j0MpfcTYiLkfJXAGG", "")
            .onP2MessageReceiveV1(new ImService.P2MessageReceiveV1Handler() {
                @Override
                public void handle(P2MessageReceiveV1 event) throws Exception {
                    System.out.printf("[ onP2MessageReceiveV1 access ], data: %s\n", Jsons.DEFAULT.toJson(event.getEvent()));
                }
            })
            .onCustomizedEvent("drive.file.bitable_record_changed_v1", new CustomEventHandler() {
                @Override
                public void handle(EventReq event) throws Exception {
                    System.out.printf("[ onCustomizedEvent access ], type: message, data: %s\n", new String(event.getBody(), StandardCharsets.UTF_8));
                }
            })
            .build();
    public static void main(String[] args) {
        String appId = "你的appId ";
        String appSecret = "你的appSecret ";
        Client cli = new Client.Builder(appId, appSecret)
                .eventHandler(EVENT_HANDLER)
                .build();
        cli.start();
    }
}

代碼運行起來之后,通過控制臺輸出日志可以看到已經(jīng)與平臺建立了通信

3.6 訂閱文檔事件

為了能讓你的代碼與平臺給你正常推送事件消息匹配,還需手動在這里調(diào)用一下訂閱文檔事件的接口,官方客服解釋說,只有調(diào)用一次,平臺才知道后續(xù)是針對哪個事件的文檔?哪個事件的多維表給你推送事件消息。

API控制臺操作文檔鏈接:

https://open.feishu.cn/document/server-docs/docs/drive-v1/event/subscribe?appId=cli_a79f0662f9bd500c

以本次測試使用的多維表為例進行說明,此處控制臺中在調(diào)試時的幾個參數(shù)至關(guān)重要,這里單獨說明:

  • Authorization
    • 這里的token使用用戶的token,不要使用tenant的那個token;
  • file_type
    • 這里取值為 bitable;
  • file_token
    • 即多維表格類型的那個token,在上一步中有提到;
    • 即這里的file_token取值為下圖中的obj_token值,這個切記;

3.7 效果測試

上述都做完之后,然后回到多維表,刪除下面這條數(shù)據(jù)

很快,在控制臺上就能看到這個事件被捕獲到了,相關(guān)的參數(shù)日志信息也輸出出來了,后續(xù)程序中就可以基于這個輸出的事件參數(shù),做進一步的參數(shù)解析,從而進行后續(xù)的數(shù)據(jù)和邏輯處理了

四、在springboot工程中集成

細心的伙伴不難發(fā)現(xiàn),官方提供的示例程序是一個main入口的演示代碼,在真實的工程中集成時,這種方式肯定是不行的,下面來看怎么在springbooot工程中進行集成使用。

4.1 導(dǎo)入基礎(chǔ)以依賴

依賴包含了飛書的SDK以及springboot運行所需的基礎(chǔ)依賴

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.35</version>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>
<dependency>
    <groupId>com.larksuite.oapi</groupId>
    <artifactId>oapi-sdk</artifactId>
    <version>2.3.6</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>

4.2 自定義一個配置類

該類模擬示例代碼中的main程序,相當(dāng)于是通過這個自定義的類啟動一個異步任務(wù),完整代碼如下:

package com.congge.config;
import com.lark.oapi.core.request.EventReq;
import com.lark.oapi.core.utils.Jsons;
import com.lark.oapi.event.CustomEventHandler;
import com.lark.oapi.event.EventDispatcher;
import com.lark.oapi.service.im.ImService;
import com.lark.oapi.service.im.v1.model.P2MessageReceiveV1;
import com.lark.oapi.ws.Client;
import jakarta.annotation.PostConstruct;
import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
@Component
public class SampleListenerTask {
    @PostConstruct
    public void start(){
        String appId = "你的appId ";
        String appSecret = "你的appSecret ";
        Client cli = new Client.Builder(appId, appSecret)
                .eventHandler(EVENT_HANDLER)
                .build();
        cli.start();
        System.out.println("監(jiān)聽飛書多維表程序啟動...");
    }
    // onP2MessageReceiveV1 為接收消息 v2.0;onCustomizedEvent 內(nèi)的 message 為接收消息 v1.0。
    private static final EventDispatcher EVENT_HANDLER = EventDispatcher.newBuilder("7ZCxxfFBXsCJUa2j0MpfcTYiLkfJXAGG", "")
            .onP2MessageReceiveV1(new ImService.P2MessageReceiveV1Handler() {
                @Override
                public void handle(P2MessageReceiveV1 event) throws Exception {
                    System.out.printf("[ onP2MessageReceiveV1 access ], data: %s\n", Jsons.DEFAULT.toJson(event.getEvent()));
                }
            })
            .onCustomizedEvent("drive.file.bitable_record_changed_v1", new CustomEventHandler() {
                @Override
                public void handle(EventReq event) throws Exception {
                    System.out.printf("[ onCustomizedEvent access ], type: message, data: %s\n", new String(event.getBody(), StandardCharsets.UTF_8));
                }
            })
            .build();
}

4.3 啟動服務(wù)和效果測試

將工程運行起來,通過控制臺輸出日志可以看到已經(jīng)與飛書平臺建立了通信連接

然后和上面操作類似,我們在測試的多維表中添加一條數(shù)據(jù),通過控制臺輸出日志可以看到,程序已經(jīng)捕捉到多維表的數(shù)據(jù)變化,后續(xù)只需要根據(jù)實際需要解析參數(shù)進行數(shù)據(jù)處理即可。

五、寫在文末

本文通過案例和代碼操作詳細介紹了如何對接飛書多維表格事件回調(diào)監(jiān)聽流程,希望對看到的伙伴有用哦,本篇到此結(jié)束,感謝觀看。

到此這篇關(guān)于SpringBoot 對接飛書多維表格事件回調(diào)監(jiān)聽流程分析的文章就介紹到這了,更多相關(guān)SpringBoot 事件回調(diào)監(jiān)聽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Cloud Config解決的問題和案例

    Spring Cloud Config解決的問題和案例

    Spring Cloud Config 是 Spring Cloud 套件中的一個工具,提供了在分布式系統(tǒng)中對外部化配置的服務(wù)器端和客戶端支持,本文介紹了Spring Cloud Config解決的問題和案例,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • 詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)

    詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)

    這篇文章主要介紹了詳解Spring Cloud 斷路器集群監(jiān)控(Turbine),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Java final關(guān)鍵字用法、場景、面試題全解析

    Java final關(guān)鍵字用法、場景、面試題全解析

    本文全程圍繞final的核心用法展開,從“修飾變量、修飾方法、修飾類”三個核心場景,搭配實戰(zhàn)代碼、避坑細節(jié),再補充高頻面試題,幫你徹底吃透final,既適合新手入門,也適合鞏固基礎(chǔ)、備戰(zhàn)面試,感興趣的朋友一起看看吧
    2026-04-04
  • Java Process類的詳解及實例代碼

    Java Process類的詳解及實例代碼

    這篇文章主要介紹了Java Process類的詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 一文深入分析java.lang.ClassNotFoundException異常

    一文深入分析java.lang.ClassNotFoundException異常

    這篇文章主要給大家介紹了關(guān)于java.lang.ClassNotFoundException異常的相關(guān)資料,java.lang.ClassNotFoundException是Java編程時經(jīng)常會遇到的一個異常,它表示JVM在嘗試加載某個類時未能找到該類,需要的朋友可以參考下
    2023-10-10
  • 解析整合mybatis-spring需要的maven依賴配置問題

    解析整合mybatis-spring需要的maven依賴配置問題

    這篇文章主要介紹了整合mybatis-spring需要的maven依賴配置問題,創(chuàng)建Maven項目,導(dǎo)入相關(guān)jar包,文中還給大家提到了,解決maven靜態(tài)資源約定大于習(xí)慣問題,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2021-11-11
  • Java實現(xiàn)五子棋游戲的完整代碼

    Java實現(xiàn)五子棋游戲的完整代碼

    這篇文章主要為大家詳細介紹了Java實現(xiàn)五子棋游戲的完整代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Java文件下載ZIP報錯:Out of Memory的問題排查

    Java文件下載ZIP報錯:Out of Memory的問題排查

    本文主要介紹了Java項目中下載大文件(超過2G的ZIP文件)時出現(xiàn)內(nèi)存溢出(OutOfMemory:JavaHeapSpace)的問題,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • 最新評論

    安平县| 新疆| 广平县| 都江堰市| 灌阳县| 杭锦旗| 卫辉市| 报价| 鄂伦春自治旗| 云梦县| 陵水| 宜都市| 巴马| 通辽市| 吐鲁番市| 甘南县| 石景山区| 尼勒克县| 嫩江县| 旅游| 福安市| 公主岭市| 台北市| 图片| 江门市| 呈贡县| 铅山县| 阿合奇县| 文登市| 禄丰县| 南宁市| 柘城县| 武冈市| 辰溪县| 长宁县| 阿拉善盟| 秦安县| 景洪市| 西乌珠穆沁旗| 定兴县| 南陵县|