外部数据源允许您定义与第三方系统的连接,例如,如果您使用酒店预订系统来检查人员是否已注册了房间。与内置 Adobe Experience Platform 数据源相反,您可以根据需要创建尽可能多的外部数据源。
支持使用 POST 或 GET 的 REST API 和返回 JSON。支持 API 密钥、基本和自定义身份验证模式。
让我们举一个天气 API 服务的例子,我想借助该服务根据实时天气数据定制我的历程的行为。
以下是两个 API 调用示例:
该调用由一个主 URL (https://api.adobeweather.org/weather)、两个参数集(“city”表示城市,“lat/long”表示纬度和经度)和 API 密钥 (appid) 组成。
以下是创建和配置新外部数据源的主要步骤:
在数据源列表中,单击 Create data source 以创建新的外部数据源。
这将打开屏幕右侧的数据源配置窗格。
输入数据源的名称。
请勿使用空格或特殊字符。请勿使用超过 30 个字符。
向数据源添加描述。此步骤是可选的。
添加外部服务的 URL。在我们的示例中:https://api.adobeweather.org/weather。
出于安全原因,我们强烈建议使用 HTTPS。另请注意,我们不允许使用非公开的 Adobe 地址和 IP 地址。
根据外部服务配置以配置身份验证:No authentication、Basic、Custom 或API key。有关自定义身份验证模式的更多信息,请参阅此部分。在我们的示例中,我们选择:
通过单击Add a New Field Group为每个 API 参数集添加新字段组。请勿在字段组名称中使用空格或特殊字符。在我们的示例中,我们需要创建两个字段组,每个参数集(“city”和“long/lat”)各一个。
对于“long/lat”参数集,我们创建一个包含以下信息的字段组:
如果 GET 调用需要参数,则在Dynamic Values字段中输入参数,这些参数将在调用结束时自动添加。如果是 POST 调用,您需要:
在 Dynamic Values字段中列出调用时要传递的参数(在下面的示例中为“identifier”)。
在发送的有效负载主体中使用完全相同的语法指定它们。为此,您需要添加“param”:“您的参数名称”(在以下示例中为“identifier”)。请遵循以下语法:
{"id":{"param":"identifier"}}
单击 Save。
数据源现已配置完毕,可随时用于您的历程,例如在您的条件下或个性化电子邮件时。如果温度高于 30°C,您可以决定发送特定通信。
此身份验证模式用于复杂的身份验证,通常用于调用 OAuth2 等 API 封装协议,以检索要插入到操作的实际 HTTP 请求中的访问令牌。
配置自定义身份验证时,可以单击以下按钮检查自定义身份验证有效负载是否正确配置。
如果测试成功,按钮将变为绿色。
通过此身份验证,操作执行分为两步:
此身份验证分为两部分。
要调用以生成访问令牌端点的定义:
在操作的 HTTP 请求中必须插入访问令牌方式的定义:
authorizationType:定义如何在操作的 HTTP 调用中插入生成的访问令牌。可能的值包括:
tokenInResponse:指示如何从身份验证调用中提取访问令牌。此属性可以是:
此身份验证的格式为:
{
"type": "customAuthorization",
"authorizationType": "<value in 'bearer', 'header' or 'queryParam'>",
(optional, mandatory if authorizationType is 'header' or 'queryParam') "tokenTarget": "<name of the header or queryParam if the authorizationType is 'header' or 'queryParam'>",
"endpoint": "<URL of the authentication endpoint>",
"method": "<HTTP method to call the authentication endpoint, in 'GET' or 'POST'>",
(optional) "headers": {
"<header name>": "<header value>",
...
},
(optional, mandatory if method is 'POST') "body": {
"bodyType": "<'form'or 'json'>,
"bodyParams": {
"param1": value1,
...
}
},
"tokenInResponse": "<'response' or json selector in format 'json://<field path to access token>'"
}
您可以更改自定义身份验证数据源的令牌的缓存时间。以下是自定义身份验证有效负载的示例。缓存时间在“cacheDuration”参数中定义。它指定缓存中生成的令牌的保留持续时间。单位可以是毫秒、秒、分钟、小时、天、月、年。
"authentication": {
"type":"customAuthorization",
"authorizationType":"Bearer",
"endpoint":"http://localhost:${port}/epsilon/oauth2/access_token",
"method":"POST",
"headers": {
"Authorization":"Basic EncodeBase64(${epsilonClientId}:${epsilonClientSecret})"
},
"body": {
"bodyType":"form",
"bodyParams": {
"scope":"cn mail givenname uid employeeNumber",
"grant_type":"password",
"username":"${epsilonUserName}",
"password":"${epsilonUserPassword}"
}
},
"tokenInResponse":"json://access_token",
"cacheDuration":
{ "duration":5, "timeUnit":"seconds" }
}
缓存持续时间有助于避免对身份验证端点的调用过多。 身份验证令牌保留缓存在服务中,没有持久性。 如果重新启动服务,它会从干净的缓存开始。 默认情况下,缓存持续时间为1小时。 在自定义身份验证有效负载中,可以通过指定另一个保留持续时间来调整该有效负载。