本文介绍如何使用事件总线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投递的新增员工的信息。
    查看信息