帮助文档

前往官网
最新更新时间:2023-05-09 11:52:44

本文通过几个典型的场景案例说明 Dataway 在腾讯云数据连接器系统中应用。

使用 Dataway 获取 token

腾讯轻联对 企业微信 API 进行了封装,即企业微信连接器,用户可以通过可视化配置轻松完成成员管理、消息推送等多种操作。
连接器隐藏了许多复杂的数据处理和 API 调用,例如:业务 API 都依赖 access_token 登录凭证来鉴权调用者身份,因此,在调用API前,都需要先获取 access_token。

本示例将模拟 access_token 获取过程,并说明 Dataway 脚本在其中起到的作用。

配置流程

鉴于业务 API 都依赖 access_token,access_token 必然会频繁使用,因此,在调用 API 获取 access_token 后,可以将其缓存起来,再次获取时直接从缓存读取,减少API调用。整条流的配置如下,根据是否缓存了 access-token 将流执行分为两种情况,若已缓存,从缓存读取即可,否则,需要调用 API 获取 access_token:
流

组件说明

条件判断(组件3、4、7)

三个条件判断组件组合在一起,将流执行分为了两种情况,若符合组件4的执行条件,则流向组件5和6,其余情况流向组件8、9、10和11。其中,组件4的执行条件期望是一个条件表达式,因而使用 表达式 模式引用了"缓存-检查是否存在"组件2的输出,即是否缓存了 access-token。

 

缓存(组件2、5、11)

  • 在缓存中,以键值"access-token"绑定 access_token 数据,由于键值是固定的,可以使用 文本 模式以字面量的方式输入"access-token"。
    缓存

  • 在缓存存储(组件11)中,还需要设置需要缓存的数据,即变量 access_token,可以使用 文本 模式通过集成流数据面板引用变量 access_token。
    缓存存储

 

配置变量(组件6、8、11)

  • 获取 access_token 的API需要 corpid 和 corpsecret 两个参数,在"企业微信"连接器中,这两个参数在连接器配置中直接输入即可。在示例中,通过"配置变量"组件8设置变量 corpId 和 corpSecret 来表示这两个参数的获取过程。corpId 和 corpSecret 作为固定值,可以使用 文本 模式以字面量的方式输入。示例图片中以 test-corpidtest-corpsecret 代替真实 corpid 和 secret,用户可跟随 企业微信 API 文档的引导,查询自己真实的 corpid 和 secret。
    配置参数

 

  • "配置变量"组件6和11将获取的 access_token 设置为变量,方便调用业务API等后续过程使用。组件11需要从API调用的响应数据中找到对应的 access-token,这是一个数据处理过程,使用 表达式 模式对引用的API调用数据进行解析。

  • 组件6从缓存中取出 access_token,直接使用 文本 模式引用"缓存-读取"组件的输出即可

    • 组件11需要从API调用的响应数据中找到 access-token,这是一个数据处理过程,使用 表达式 模式对引用的API调用数据进行解析

HTTP 请求(组件9)

"HTTP请求"组件向企业微信API地址发起 get-token 请求调用,请求参数为变量中的 corpId 和 corpSecret,使用"代码"模式动态设置"配置"中的"URL参数"。无论是 Python 异或 Java 脚本,均可使用"集成流数据面板"引用变量 corpId 和 corpSecret。

 

?实际使用时,企业微信连接器使用 XML 语言完成 get-token,本示例为了展示 Dataway 使用方式在流中复现了这一过程。Dataway 在其中主要的作用是流转和预处理消息 Message ,实现动态赋值,并将数据交给上层调用组件使用。

 

将 JSON 类型输入转换成 XML 类型输入

使用 Dataway 可以完成数据类型的转换,如 JSON 转换成 XML、XML 转换成 CSV 等,在此以 JSON 类型的数据转换成 XML 为例。

输入数据

我们在流中预先使用"配置Payload"组件将当前消息载荷(msg.payload)设置为 JSON 格式的 Entity 数据。

def
dw_process(msg):

return Entity.from_value({

'name': 'zhangsan',

'age': 12,

'male': True,

'brothers': ['lisi', 'wangwu'],
    }, mime_type="application/json")

代码模式 Python 脚本

新增"配置Payload"组件,模拟需要输入 XML 数据的组件,此时,可以使用 代码模式 Python 脚本将 JSON 数据转化为 XML 数据。

def
dw_process(msg):
    input_param = msg.payload['^value']

return Entity.from_value({

'root': {

'name': input_param['name'],

'age': input_param['age'],

'male': input_param['male'],

'brothers': input_param['brothers'],

"@id": "haha"
        }
    }, mime_type="application/xml")

输出数据

使用 Entity 获取二进制数据并解码,可以查看输出的 XML 结构字符串,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<root id="haha">
    <name>zhangsan</name>
    <age>12</age>
    <male>true</male>
    <brothers>lisi</brothers>
    <brothers>wangwu</brothers>
</root>
?Dataway 表达式通过 Entity 类型提供强大的数据转换功能,通过设置不同的 MIME 类型,可以实现不同类型之间的数据转换。详情请见 基本概念-MIME类型支持
如果您在文档使用中遇到问题或者有改进建议,请点击 在线反馈