Fontes de dados externas permitem definir uma conexão com sistemas de terceiros, por exemplo, se você estiver usando um sistema de reserva de hotel para verificar se a pessoa reservou um quarto. Ao contrário da fonte de dados integrada da Adobe Experience Platform, você pode criar quantas fontes de dados externas forem necessárias.
As APIs REST que usam POST ou GET e devolvem JSON são compatíveis. A chave de API, os modos de autenticação básicos e personalizados são compatíveis.
Vamos ver o exemplo de um serviço de API meteorológica usada para personalizar os comportamentos da jornada de acordo com os dados climáticos em tempo real.
Dois exemplos da chamada de API:
A chamada é composta de um URL principal (https://api.adobeweather.org/weather), dois conjuntos de parâmetros ("city" para a cidade e "lat/long" para a latitude e a longitude) e a chave da API (appid).
Estas são as principais etapas para criar e configurar uma nova fonte de dados externa:
Na lista de fontes de dados, clique em Add para criar uma nova fonte de dados externa.
Essa ação abre o painel de configuração da fonte de dados no lado direito da tela.
Insira um nome para a sua fonte de dados.
Não use espaços ou caracteres especiais. Não use mais de 30 caracteres.
Adicione uma descrição à fonte de dados. Esta etapa é opcional.
Adicione o URL do serviço externo. Em nosso exemplo: https://api.adobeweather.org/weather.
Recomendamos o uso de HTTPS por motivos de segurança. Observe também que não permitimos o uso de endereços da Adobe que não estejam disponíveis publicamente, bem como o uso de endereços IP.
Configure a autenticação dependendo da configuração do serviço externo: No authentication, Basic, Custom ou API key. Para obter mais informações sobre o modo de autenticação personalizado, consulte esta seção. Em nosso exemplo, escolhemos:
Adicione um novo grupo de campos para cada conjunto de parâmetros da API clicando em Add a New Field Group. Não use espaços ou caracteres especiais no nome do grupo de campos. Em nosso exemplo, precisamos criar dois grupos de campo, um para cada conjunto de parâmetros (city e long/lat).
Para o conjunto de parâmetros "long/lat", criamos um grupo de campos com as seguintes informações:
No caso de uma chamada GET que exige parâmetros, você informa os parâmetros no campo Dynamic Values e eles são adicionados automaticamente no final da chamada. No caso de uma chamada POST, é necessário:
listar os parâmetros que serão transmitidos no momento da chamada no campo Dynamic Values (no exemplo abaixo: "identificador").
especificá-los também com a mesma sintaxe no corpo da carga útil enviada. Para fazer isso, é necessário adicionar: "param": "nome do parâmetro" (no exemplo abaixo: "identificador"). Siga a sintaxe abaixo:
{"id":{"param":"identifier"}}
Clique em Save.
A fonte de dados agora está configurada e pronta para ser usada em suas jornadas, por exemplo em suas condições ou para personalizar um email. Se a temperatura estiver acima de 30°C, você pode decidir enviar uma comunicação específica.
Esse modo de autenticação é usado para autenticação complexa, frequentemente usada para chamar protocolos de empacotamento de API como OAuth2, para recuperar um token de acesso que será inserido na solicitação real HTTP para a ação.
Ao configurar a autenticação personalizada, você pode clicar no botão abaixo para verificar se a carga útil de autenticação personalizada está configurada corretamente.
Se o teste for bem-sucedido, o botão ficará verde.
Com essa autenticação, a execução da ação é um processo de duas etapas:
Esta autenticação tem duas partes.
A definição do endpoint que será chamado para gerar o token de acesso:
A definição da forma como o token de acesso deve ser inserido na solicitação HTTP da ação:
authorizationType: define como o token de acesso gerado deve ser inserido na chamada HTTP para a ação. Os valores possíveis são:
tokenInResponse: indica como extrair o token de acesso da chamada de autenticação. Essa propriedade pode ser:
O formato dessa autenticação é:
{
"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>'"
}
É possível alterar a duração do cache do token para uma fonte de dados de autenticação personalizada. Encontre abaixo um exemplo de payload de autenticação personalizada. A duração do cache é definida no parâmetro "cacheDuration". Especifica a duração de retenção do token gerado no cache. A unidade pode ser milissegundos, segundos, minutos, horas, dias, meses, anos.
"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" }
}