本文介紹如何使用事件總線EventBridge集成釘釘連接器,將釘釘上成員信息變更投遞到數據庫。

背景信息

釘釘連接平臺通過可視化拖拽配置、一鍵訂閱等方式,可以簡單高效地實現釘釘、企業內部系統、其他廠商系統與釘釘第三方企業應用之間數據互通和集成。釘釘連接平臺的連接流功能可以將來自釘釘的請求發送給自定義網絡。事件總線EventBridge正是通過此功能將釘釘生態接入到阿里云生態。更多信息,請參見什么是連接平臺

事件總線EventBridge支持HTTP事件源,它以Webhook的形式展示了發布事件的HTTP請求地址。您可以在有URL回調的場景中配置HTTP事件源,或者直接使用簡單的HTTP客戶端來完成事件的發布。HTTP事件源提供了支持HTTP與HTTPS,公網與阿里云VPC等不同請求方式、不同網絡環境的Webhook URL,您可以將其集成到各類應用中。接入時無需使用客戶端,僅需保證應用可以訪問到對應Webhook URL即可,這使得接入過程變得簡單而高效。更多信息,請參見自定義事件源HTTP/HTTPS觸發

適用場景

當釘釘生態和事件總線EventBridge聯通后,適用于以下場景:

  • 分析場景:您可以借助事件總線EventBridge的事件分析能力,對釘釘官方事件進行分析,快速洞察企業運轉數據。例如審批效率、員工變更趨勢和會議效率等。
  • 通知場景:釘釘連接器結合事件總線EventBridge可以覆蓋大多數消息通知場景,幫助您快速感知審批、員工變動以及會議室信息等一系列企業基礎支持系統的變更。
  • 集成場景:您可以利用事件總線EventBridge的事件集成能力,實現釘釘和企業內部其他數據系統的互通。例如當需要對釘釘和企業內部IT系統進行數據打通時,事件總線EventBridge集成釘釘連接器的解決方案可以便捷地將建立在阿里云體系的IT系統(函數計算、云數據庫以及消息隊列等擴展阿里云生態)連通起來。
  • EDA場景:使用事件總線EventBridge可以快速構建EDA驅動的自動化業務流程。例如在新員工入職時獲取員工變動信息,并集中推送到郵箱系統、業務支持系統(DB)和客戶管理系統(CRM)等;對企業新員工權限賬戶進行一站式授權,減少重復機械的業務審批流程。
本文以新員工入職為例,介紹如何使用釘釘連接器聯通事件總線EventBridge,將釘釘的一個新員工入職記錄錄入到自定義的云數據庫RDS MySQL。
說明 當前支持把事件總線EventBridge的事件目標設置為數據庫的地域有華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、華南2(河源)、華南3(廣州)、西南1(成都)、中國香港、德國(法蘭克福)、新加坡和日本(東京)。

前提條件

您已完成以下操作:

步驟一:創建自定義事件總線

  1. 登錄事件總線EventBridge控制臺,在頂部菜單欄,選擇地域。
  2. 在左側導航欄,單擊事件總線,在自定義事件總線區域,單擊快速創建
  3. 創建自定義事件總線面板,完成以下操作。
    1. 總線頁簽,設置自定義事件總線名稱描述,然后單擊下一步
    2. 事件源頁簽,設置事件源名稱描述,配置以下參數,然后單擊下一步
      參數
      事件提供方 HTTP/HTTPS觸發
      請求類型 HTTPS
      請求方法 POST
      安全配置 無需配置
    3. 規則頁簽,單擊跳過,然后在直接創建自定義事件總線對話框單擊確認,暫不在新創建的自定義事件總線上創建事件規則和事件目標。
      創建完成后,您可以在事件源列表找到剛才創建的自定義事件源,然后單擊詳情查看配置信息。其中公網請求 URL可以作為釘釘連接器的接入Webhook地址。pic-1

步驟二:創建釘釘連接流

  1. 登錄釘釘開放平臺,在頂部菜單欄選擇開放能力 > 連接平臺
  2. 在左側導航欄選擇我的連接 > 連接流
  3. 我的連接流頁面,從新建列表中,選擇業務流
    1. 創建流對話框,設置業務流的名稱和描述,設置觸發器官方 > 通訊錄 > 通訊錄用戶增加
    2. 連接流頁簽,單擊添加圖標,然后單擊網絡請求
    3. 網絡請求區域右側,單擊箭頭圖標,然后在網絡請求面板設置請求參數,單擊保存
      參數 說明 示例
      請求方式 步驟一:創建自定義事件總線中配置的請求方法一致。 POST
      請求地址 配置步驟一:創建自定義事件總線中獲取的URL地址。 https://115964845466****.eventbridge.cn-zhangjiakou.aliyuncs.com/webhook/putEvents?token=8a5c4e6****
      Body 消息體包含的字段。 root

步驟三:釘釘觸發新增員工事件

  1. 邀請一位成員加入您的釘釘團隊。詳細操作,請參見如何添加組織成員
  2. 步驟一:創建自定義事件總線中創建的自定義事件總線詳情頁面,單擊事件追蹤,設置查詢時間范圍,單擊查詢
  3. 在查詢到的事件右側操作列,單擊事件詳情
    從事件詳情中,可以看到新增員工事件已經被投遞到了事件總線EventBridge上,并且被轉換成了CloudEvents格式,其中$.data.body為事件的詳情。
    {
        "datacontenttype": "application/json",
        "aliyunaccountid": "115964845466****",
        "data": {
            "headers": {
                "X-Request-ID": "0a536b61b316c1b752dbbd0ad468****",
                "X-Forwarded-Host": "115964845466****.eventbridge.cn-zhangjiakou.aliyuncs.com",
                "X-Forwarded-Proto": "https",
                "User-Agent": "Apache-HttpClient/4.5.9 (Java/1.8.0_192)",
                "X-Forwarded-For": "59.82.XX.XX",
                "Host": "115964845466****.eventbridge.cn-zhangjiakou.aliyuncs.com",
                "Accept-Encoding": "gzip,deflate",
                "Content-Length": "403",
                "X-Real-IP": "59.82.XX.XX",
                "X-Forwarded-Port": "443",
                "X-Scheme": "https",
                "Content-Type": "application/json; charset=UTF-8"
            },
            "path": "/webhook/putEvents",
            "body": {
                "unionId": "yiPG98n3CfiP6ETMRzboUMLw****",
                "syncAction": "user_add_org",
                "orderInDepts": "{1:17626241790879****}",
                "dingId": "$:LWC****:$PCRxt2ELe211xt9****/ixMrJYcZ****",
                "mobile": "1830916****",
                "active": true,
                "avatar": "",
                "isAdmin": false,
                "userId": "0150601050332097****",
                "isHide": false,
                "isLeaderInDepts": "{1:false}",
                "isBoss": false,
                "isSenior": false,
                "name": "小明",
                "stateCode": "86",
                "department": [
                    1
                ],
                "email": ""
            },
            "httpMethod": "POST",
            "queryString": {}
        },
        "subject": "acs:eventbridge:cn-zhangjiakou:115964845466****:eventbus/dingtalk-bus/eventsource/my.dingtalk",
        "aliyunoriginalaccountid": "115964845466****",
        "source": "my.dingtalk",
        "type": "eventbridge:Events:HTTPEvent",
        "aliyunpublishtime": "2022-06-14T10:51:11.179Z",
        "specversion": "1.0",
        "aliyuneventbusname": "dingtalk-bus",
        "id": "59ec7373-be45-43dd-ad05-e061e7bcdbed",
        "time": "2022-06-14T18:51:11.178+08:00",
        "aliyunregionid": "cn-zhangjiakou",
        "aliyunpublishaddr": "59.82.XX.XX"
    }

步驟四:在數據庫中創建員工表

  1. 登錄云數據庫RDS控制臺
  2. 在左側導航欄,單擊實例列表,然后在頂部菜單欄,選擇步驟一:創建自定義事件總線中自定義事件總線所在的地域。
  3. 實例列表頁面,創建一個云數據庫RDS實例。具體步驟,請參見創建RDS MySQL實例
  4. 單擊創建的實例,在實例詳情頁面,創建數據庫和賬號。具體步驟,請參見創建數據庫和賬號
  5. 在實例詳情頁面,單擊登錄數據庫,在彈出的DMS頁面中,填寫數據庫賬號名和密碼,然后單擊登錄
  6. 在左側導航欄,選擇數據庫實例 > 已登錄實例,從實例的下拉列表中,選擇已創建的數據庫。
  7. 在數據庫的SQLConsole頁簽,輸入以下命令行創建員工表,然后單擊執行(F8)
    CREATE TABLE `user_info` (
      `dingId` varchar(256) NULL,
      `active` varchar(256) NULL,
      `isAdmin` varchar(256) NULL,
      `userId` varchar(256) NULL,
      `name` varchar(256) NULL
    ) ENGINE=InnoDB
    DEFAULT CHARACTER SET=utf8;

步驟五:創建事件規則

  1. 登錄事件總線EventBridge控制臺,找到步驟一:創建自定義事件總線中創建的自定義事件總線。
  2. 單擊自定義事件總線名稱,然后在左側菜單欄,單擊事件規則
  3. 事件規則頁面,單擊創建規則,然后在創建規則配置向導,配置以下參數。
    1. 配置基本信息頁簽,設置事件規則的名稱描述,然后單擊下一步
    2. 配置事件模式頁簽,設置事件源類型自定義事件源事件源步驟一:創建自定義事件總線中創建的自定義事件源,然后單擊下一步
    3. 配置事件目標頁簽,設置以下參數,然后單擊創建
      參數 說明 示例
      服務類型 選擇目標服務類型。 數據庫
      數據庫配置 選擇目標數據庫類型。 RDS For MySql
      實例 ID 配置步驟四:在數據庫中創建員工表中創建的RDS MySQL實例。 rm-8vbsq2gde4cm1****
      數據庫名稱 配置步驟四:在數據庫中創建員工表中創建的數據庫。 testsql
      數據庫賬號 配置步驟四:在數據庫中創建員工表中創建的數據庫賬號。 test
      數據庫密碼 配置步驟四:在數據庫中創建員工表中創建數據庫賬號時設置的密碼。 ******
      并發配置(數據庫連接池) 配置連接數據庫的線程數。 6
      網絡配置 默認選擇為步驟四:在數據庫中創建員工表中創建的RDS MySQL實例的網絡類型且不可更改。 專有網絡VPC
      專有網絡 VPC 默認選擇為步驟四:在數據庫中創建員工表中創建的RDS MySQL實例的VPC ID且不可更改。 vpc-8vbg0ksmjd5q06lwk****
      交換機 默認選擇為步驟四:在數據庫中創建員工表中創建的RDS MySQL實例的VPC ID且不可更改。 vsw-8vbtr0j0nzpz254pm****
      安全組 配置前提條件中創建的安全組。
      說明 請將控制臺提示的網段加入RDS MySQL實例的白名單。具體步驟,請參見設置IP白名單
      sg-20220614
      入庫配置 選擇入庫配置方式。 快速配置
      表名 配置步驟四:在數據庫中創建員工表中創建的新增員工表名。 user_info
      操作方式 對數據庫做的操作。 INSERT
      寫入數據庫的新增員工的信息項。
      • 常量:dingId
      • 常量:active
      • 常量:isAdmin
      • 常量:userId
      • 常量:name
      寫入數據庫的新增員工信息項的值。
      • 部分事件:$.data.body.dingId
      • 部分事件:$.data.body.active
      • 部分事件:$.data.body.isAdmin
      • 部分事件:$.data.body.userId
      • 部分事件:$.data.body.name

步驟六:觸發新增員工事件入庫

  1. 邀請成員加入您的釘釘團隊。詳細操作,請參見如何添加組織成員
  2. 步驟一:創建自定義事件總線中創建的自定義事件總線詳情頁面,單擊事件追蹤,設置查詢時間范圍,單擊查詢
  3. 在查詢到的事件右側操作列,單擊事件軌跡,查看新增員工事件已經成功被投遞。
    投遞成功
  4. 返回DMS數據管理服務,雙擊步驟四:在數據庫中創建員工表中創建的表名,然后單擊執行(F8)
  5. 執行結果區域,查看事件總線EventBridge投遞的新增員工的信息。
    查看信息