Show Menu
TÓPICOS×

Fontes de dados externas

Fontes de dados externas permitem que você defina uma conexão com sistemas de terceiros, por exemplo, se você estiver usando um sistema de reserva de hotel para verificar se a pessoa registrou um quarto. Ao contrário da fonte de dados integrada da plataforma Experience, você pode criar quantas fontes de dados externas forem necessárias.
As APIs REST que usam POST ou GET e devolvem JSON são suportadas. A chave da API, os modos de autenticação básicos e personalizados são suportados.
Vejamos o exemplo de um serviço de API meteorológica que eu quero usar para personalizar os comportamentos da minha jornada de acordo com os dados do tempo real.
Estes são dois exemplos da chamada de API:
  • https://api.adobeweather.org/weather?city=London,uk&appid=1234
  • https://api.adobeweather.org/weather?lat=35&lon=139&appid=1234
A chamada é composta de um URL principal ( https://api.adobeweather.org/weather ), dois conjuntos de parâmetros ("cidade" 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:
  1. Na lista de fontes de dados, clique em Add para criar uma nova fonte de dados externa.
    Isso abre o painel de configuração da fonte de dados no lado direito da tela.
  2. Insira um nome para a sua fonte de dados.
    Não use espaços ou caracteres especiais. Não use mais de 30 caracteres.
  3. Adicione uma descrição à sua fonte de dados. Esta etapa é opcional.
  4. Adicione o URL do serviço externo. Em nosso exemplo: https://api.adobeweather.org/weather .
    Recomendamos o uso do HTTPS por motivos de segurança. Observe também que não permitimos o uso de endereços da Adobe que não estão disponíveis publicamente e o uso de endereços IP.
  5. 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 Modo de autenticação personalizado . Em nosso exemplo, escolhemos:
    • Type : "Chave da API"
    • Value : "1234" (este é o valor da nossa chave de API)
    • Name : "appid" (este é o nome do parâmetro da chave da API)
    • Location : "Parâmetro de Query" (a chave da API está localizada no URL)
  6. 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 (cidade e long/lat).
Para o conjunto de parâmetros "long/lat", criamos um grupo de campos com as seguintes informações:
  • Used in : exibe o número de viagens que usam um grupo de campos. Você pode clicar no View journeys ícone para exibir a lista de viagens usando esse grupo de campos.
  • Method : selecione o método POST ou GET. No nosso caso, selecionamos o método GET.
  • Cache duration : no nosso caso, queremos que o tempo seja armazenado em cache por 10 minutos.
  • Response Payload : clique dentro do Payload campo e cole um exemplo da carga retornada pela chamada. Para nosso exemplo, usamos uma carga encontrada em um site da API do tempo. Verifique se os tipos de campo estão corretos. Cada vez que a API é chamada, o sistema recuperará todos os campos incluídos no exemplo de carga. Observe que você pode clicar em Paste a new payload se desejar alterar a carga transmitida no momento.
  • Dynamic Values : insira os diferentes parâmetros separados por vírgula, "long,lat" no nosso exemplo. Como os valores dos parâmetros dependem do contexto de execução, eles serão definidos nas viagens. Consulte Sobre o editor de expressões avançadas .
  • Sent Payload : este campo não aparece no nosso exemplo. Ela só estará disponível se você selecionar o método POST. Cole a carga que será enviada para o sistema de terceiros.
No caso de uma chamada GET que exija parâmetros, você informa os parâmetros no Parameters campo e eles são adicionados automaticamente no final da chamada. No caso de uma chamada POST, é necessário:
  • lista os parâmetros a serem transmitidos no momento da chamada no Parameter campo (no exemplo abaixo: "identificador").
  • especifique-os também com a mesma sintaxe no corpo da carga 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 viagens, 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.

Modo de autenticação personalizado

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 a ser inserido na solicitação HTTP real para a ação.
Ao configurar a autenticação personalizada, você pode clicar no botão abaixo para verificar se a carga de autenticação personalizada está configurada corretamente.
Se o teste for bem-sucedido, o botão fica verde.
Com essa autenticação, a execução da ação é um processo de duas etapas:
  1. Chame o terminal para gerar o token de acesso.
  2. Chame a REST API injetando da maneira correta o token de acesso.
Esta autenticação tem duas partes.
A definição do ponto final a ser chamado para gerar o token de acesso:
  • terminal: URL a ser usado para gerar o ponto de extremidade
  • método da solicitação HTTP no terminal (GET ou POST)
  • cabeçalhos: pares de chave/valor a serem inseridos como cabeçalhos nesta chamada, se necessário
  • corpo: descreve o corpo da chamada se o método for POST. Apoiamos uma estrutura de corpo limitada, definida em bodyParams (pares de chaves/valores). O bodyType descreve o formato e a codificação do corpo na chamada:
    • 'form': o que significa que o tipo de conteúdo será application/x-www-form-urlencoded (charset UTF-8) e os pares key/value serão serializados como estão: key1=value1&key2=value2&...
    • 'json': o que significa que o tipo de conteúdo será application/json (charset UTF-8) e que os pares de valores principais serão serializados como um objeto json como está: { "key1": "value1", "key2": "value2", ...}
A definição da forma como o token de acesso deve ser inserido na solicitação HTTP da ação:
  • licenseType: define como o token de acesso gerado deve ser inserido na chamada HTTP para a ação. Os valores possíveis são:
    • portador: indica que o token de acesso deve ser injetado no cabeçalho da Autorização, como: Autorização: Portador <token de acesso>
    • cabeçalho: indica que o token de acesso deve ser inserido como um cabeçalho, o nome do cabeçalho definido pela propriedade tokenTarget. Por exemplo, se o tokenTarget for myHeader, o token de acesso será inserido como um cabeçalho como: myHeader: <token de acesso>
    • queryParam: indica que o token de acesso deve ser inserido como um queryParam, o nome do parâmetro do query definido pela propriedade tokenTarget. Por exemplo, se o tokenTarget for myQueryParam, o URL da chamada de ação será: <url>?myQueryParam=<token de acesso>
  • tokenInResponse: indica como extrair o token de acesso da chamada de autenticação. Essa propriedade pode ser:
    • 'response': indica que a resposta HTTP é o token de acesso
    • um seletor em um json (supondo que a resposta seja um json, não oferecemos suporte a outros formatos, como XML). O formato desse seletor é json://<caminho para a propriedade token de acesso> . Por exemplo, se a resposta da chamada for: { "access_token": "theToken", "timestamp": 12323445656 } , o tokenInResponse será: json: //access_token
O formato desta 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>'"
}