Skip to main content

Tarefa de HTTP

Durante a execução do seu plano, você pode criar uma tarefa para enviar solicitações HTTP a um ponto de extremidade de aplicativo de terceiros. Por exemplo, quando uma tarefa anterior é executada com sucesso, você pode enviar uma mensagem HTTP para um ponto de extremidade designado com informações sobre essa tarefa.

Em "Exibição do plano", você pode criar tarefas HTTP para enviar uma solicitação para pontos de extremidade antes ou depois da execução de outras tarefas. Além disso, você pode usar a tarefa HTTP para gerar um conjunto de dados com resposta de chamada de API que pode ser usado no fluxo de trabalho do Designer Cloud. Essas tarefas são especificadas no painel de contexto direito.

  • Uma tarefa HTTP é uma solicitação entre o Alteryx One Platform e outro aplicativo. Essas solicitações são entregues usando HTTP e podem ser interpretadas pelo aplicativo de recebimento para realizar uma ação.

    Nota

    Seu aplicativo de recebimento pode exigir que você inclua o número de porta e host ou o endereço IP da plataforma na lista de permissões. Consulte a documentação do seu aplicativo.

  • Uma tarefa HTTP é um dos tipos de tarefa disponíveis em um plano. Para obter mais informações, vá para Página "Exibição do plano".

Limitações

  • Para o conjunto de dados de entrada (Carregar configuração a partir do conjunto de dados):

    • Linhas: 10.000.

    • Tamanho do arquivo: 1 GB.

    • Tamanho da linha: 100 MB.

  • As solicitações baseadas em HTTP têm um tempo limite de 30 segundos.

  • Certificados de segurança personalizados não podem ser usados.

Pré-requisitos

Requisitos para o aplicativo de recebimento

Para enviar uma solicitação HTTP a um aplicativo de destino, este aplicativo deve estar configurado para receber a solicitação:

  • Solicitações de fora do domínio do aplicativo devem estar habilitadas.

    Nota

    Seu aplicativo de recebimento pode exigir que você inclua o número de porta e host ou o endereço IP da plataforma na lista de permissões. Consulte a documentação do seu aplicativo.

  • É necessário adquirir o URL do ponto de extremidade para o qual enviar a solicitação HTTP.

  • É necessário adquirir todos os cabeçalhos HTTP que devem ser inseridos com cada solicitação HTTP.

  • Se o pedido tiver de ser assinado, é necessária configuração adicional. Os detalhes estão abaixo.

Criar tarefa

  1. Arraste e solte a tarefa HTTP do painel esquerdo para a tela do plano.

  2. No painel direito, selecione Tarefa HTTP. O painel de tarefas HTTP é exibido.

Plans_HTTP_Task.png

Figura: tarefa HTTP

Campo

Descrição

Método

Selecione o método HTTP a ser usado para entregar a mensagem. O método apropriado depende do aplicativo de recebimento. A maioria dos casos de uso requer o método POST.

URL

URL em que a solicitação HTTP é recebida pelo outro aplicativo.

Cabeçalhos

Insira cabeçalhos de conteúdo HTTP como pares chave-valor. Por exemplo, se o corpo estiver no formato JSON, você deve incluir o seguinte cabeçalho:

key: Content-Type
value: application/json

Nota

Pode ser necessário que você envie um token de autenticação como o valor para a chave de Autorização.

Corpo

(Somente métodos POST,PUT ou PATCH) O corpo da solicitação enviada para o aplicativo de recebimento. O corpo da solicitação é estruturado da seguinte forma:

{"text":"My text message to the receiving application."}

Dica

Como parte dos campos de corpo ou cabeçalho da solicitação, você pode inserir referências de metadados para a definição do plano, execução atual, tarefas já executadas na execução e dados de coluna e fontes de dados. Para obter mais informações sobre os metadados disponíveis, consulte Referências de metadados do plano.

Chave secreta

(Opcional) Uma chave secreta pode ser usada para verificar o payload da solicitação. Esse valor secreto deve ser inserido neste local e deve ser incluído como parte do código usado para processar as solicitações no aplicativo de recebimento. Insira o valor secreto aqui como uma cadeia de caracteres sem aspas.

Validar Certificado SSL

Quando definido como verdadeiro, as comunicações HTTPS (SSL) são verificadas quanto ao uso de um certificado válido antes da transmissão.

Nota

Se você precisar enviar uma solicitação para um ponto de extremidade que tenha um certificado expirado/inválido, será necessário desabilitar a verificação SSL.

Tentar novamente

Se o código do status retornado estiver fora do intervalo 200-299, a tarefa HTTP será considerada como tendo falhado. Quando essa opção está habilitada, a solicitação é tentada novamente.

Se a solicitação falhar, esse valor define o número de vezes que a solicitação deverá ser tentada novamente. Se esse número de tentativas for atingido sem sucesso, a tarefa falhará.

Criar conjunto de dados a partir da resposta

Quando definido como verdadeiro, você pode usar o conjunto de dados para criar um fluxo de trabalho.

Configurar tarefa

  1. Defina os parâmetros obrigatórios. Para obter mais informações sobre parâmetros, vá para Exibição do plano para tarefas HTTP.

  2. Você pode especificar informações de metadados do plano nos valores de cabeçalho e no corpo da solicitação. Para obter mais informações, vá para Referências de metadados do plano.

  3. Para testar a conexão, clique em Testar. Uma mensagem de sucesso é exibida.

    Dica

    Um código de status 200 indica que o teste foi bem-sucedido.

    Dica

    Você pode usar o método GET para fins de teste. Uma solicitação GET não altera nenhum dado na plataforma de destino, mas pode permitir que você especifique elementos no corpo da solicitação.

  4. Para adicionar a tarefa, clique em Salvar.

Renomear tarefa

Para renomear a tarefa, clique no menu "Mais" > Editar no painel direito.

Dica

Uma boa nomenclatura pode incluir o ponto de extremidade e o método da plataforma de destino, bem como os propósitos da tarefa em seu plano.

Excluir tarefa

Para excluir a tarefa, clique no menu "Mais" > Excluir. Confirme que deseja excluir a tarefa.

Atenção

Essa etapa não pode ser desfeita.

Referências de metadados do plano

Dentro da mensagem de suas outras tarefas, você pode referenciar metadados sobre o plano, suas tarefas e sua execução. Para obter mais informações, vá para Referências de metadados do plano.

Exemplos

Mensagem do canal do Slack

Dica

As tarefas do Slack agora são um recurso com suporte do produto.

Você pode criar uma tarefa HTTP para entregar uma mensagem de texto a um canal do Slack de sua escolha.

Pré-requisitos

Configure sua instalação do Slack para receber mensagens HTTP:

  1. Se necessário, crie um canal do Slack para receber suas mensagens.

  2. Crie um aplicativo.

  3. Ative mensagens HTTP de entrada para o seu aplicativo.

  4. Especifique o canal para receber as mensagens de entrada.

  5. Copie o URL para a solicitação HTTP de entrada a partir da instrução cURL.

Definir a tarefa HTTP

Parâmetro

Descrição

Nome

Este nome aparece apenas no Alteryx One.

Método

Selecione o método POST.

URL

Cole o URL que você copiou do Slack.

Cabeçalhos

Copie os cabeçalhos de conteúdo do comando do cURL do Slack:

key: Content-Type
value: application/json

Corpo

{"text":"Your job has completed."}
Verificar
  1. Clique em Testar para validar que essa tarefa funcionará.

  2. Execute um trabalho e verifique se há uma mensagem no canal do Slack.

Exemplos de metadados do plano

Você pode referenciar informações de metadados da definição do plano e da execução atual do plano como parte da solicitação de sua tarefa HTTP.

Observações:

  • Só é possível inserir referências de metadados para tarefas que já ocorreram na execução do plano antes do início da tarefa HTTP.

  • Cada tarefa na execução atual é referenciada usando um código de duas letras. Exemplo:

    {{$http_xx.name}}
    
Sintaxe

A referência de metadados de um plano é construída usando a seguinte sintaxe. Na caixa de texto apropriada, insira um dos seguintes valores:

Dica

Comece digitando $, que fornece acesso a uma árvore de referências para cada um dos tipos de referência de metadados. A sintaxe final está anotada acima.

Planos:

Informações de metadados da definição do plano ou da execução atual do plano:

{{$plan
Informações do plano

O corpo de solicitação a seguir contém referências ao nome do plano, ao identificador de execução do plano e ao fluxo que acabou de ser executado:

{"text":"Plan: {{$plan.name}} 
RunId: {{$plan.runId}}
Flow: {{$flow_7p.name}}
Success."}
Informações de execução do plano

O corpo de solicitação a seguir contém informações de execução do plano usando carimbos de data/hora:

{"text":"Plan: {{$plan.name}} 
RunId: {{$plan.runId}}
- plan start: {{$plan.startTime}}
Running time: {{$plan.duration}}

Times:
- last task start: {{$flow_7p.startTime}}
- last task end: {{$flow_7p.endTime}}
"}
Informações da tarefa HTTP

Você pode referenciar informações de uma tarefa HTTP que já ocorreu:

{"text":"{{$http_qg.name}} returned {{$http_qg.statusCode}}."} 

Para obter mais informações, consulte Referências de metadados do plano.

Alimentar entradas de metadados para a função de nuvem

Este exemplo demonstra como você pode usar uma tarefa HTTP para entregar metadados de plano para funções do AWS Lambda. Uma abordagem semelhante pode ser usada para funções do Google Cloud.

Neste caso, o valor de rowCount da execução da tarefa de fluxo é entregue por meio de uma tarefa HTTP para uma função do AWS Lambda.

Passos gerais:

  1. Defina o seu plano.

  2. Tarefa de fluxo: execute o fluxo para gerar as saídas necessárias para a sua função do Lambda.

  3. Tarefa HTTP: gera uma solicitação HTTP cujo corpo inclui uma referência à variável de metadados rowCount. Corpo da solicitação:

    {
     "rowCount": "{{$flow_7p['My Flow Name'].output['My output name'].rowCount}}"
    }
  4. Funções do AWS Lambda: o seguinte é pseudocódigo para o Lambda:

    import json
    def lambda_handler(event, context):
      httpTaskBody = json.loads(event["body"])
      rowCount = httpTaskBody["rowCount"]
    
      return {
        'statusCode': 200,
        'body': json.dumps(rowCount)
      }
  5. Funções do Google Cloud: o seguinte é pseudocódigo para funções do Google Cloud:

    def get_row_count(request):
      request_json = request.get_json()
      if request_json and 'rowCount' in request_json:
            rowCount = request_json['rowCount']
        return rowCount
      return 'No rowCount attribute provided'

Crie um conjunto de dados com resposta da API para o fluxo de trabalho do Designer Cloud

Use a tarefa HTTP no Plans para ler e produzir conjuntos de dados com respostas de chamada de API que podem ser usadas naturalmente no fluxo de trabalho do Designer Cloud.

Definir a tarefa HTTP

Parâmetro

Descrição

Nome

Este nome aparece apenas no Alteryx One.

Método

Campo obrigatório. Selecione o método POST ou GET.

URL

Campo obrigatório. URL em que a solicitação HTTP é recebida pelo outro aplicativo. Exemplo: https://example.com/${id}

Cabeçalhos

Cabeçalhos de conteúdo HTTP como pares chave-valor em um formato JSON.

{
  "X-Custom-Header": "value",
  "X-Parametrized-Header": "${wf1.id}"
}

Corpo

O corpo da solicitação enviada para o aplicativo de recebimento. Pode conter ${variables}.

{"text":"My text message to the receiving application."}

Passos gerais:

  1. Crie um fluxo de trabalho com sua entrada.

  2. Crie e execute um plano com uma tarefa HTTP para gerar um conjunto de dados.

    Certifique-se de desmarcar a caixa de seleção Excluir conjunto de dados com resposta de chamada de API, definindo a tarefa para manter o conjunto de dados.

  3. No Designer Cloud, use o conjunto de dados gerado no passo anterior para criar um fluxo de trabalho começando com a resposta da API.

    Ao marcar a caixa de seleção Carregar configuração a partir do conjunto de dados, você consegue carregar uma configuração (com todos os parâmetros) do conjunto de dados de saída da tarefa de fluxo de trabalho em etapas anteriores.

    Cuidado

    Consulte a seção Limitações para obter os limites do conjunto de dados de entrada.

  4. Em Plano, adicione o fluxo de trabalho como uma tarefa em etapas posteriores de uma tarefa HTTP já existente. Modifique o plano para usar a saída da tarefa HTTP (especificada no Passo 1) como a entrada do fluxo de trabalho do Designer Cloud.

  5. Você pode agendar o plano agora. Essa configuração faz uma chamada de API, a resposta é passada para o fluxo de trabalho do Designer Cloud e é executada. A saída final fica disponível como de costume.

Verificar assinaturas

Atenção

Dependendo do aplicativo de destino, implementar a verificação de assinaturas pode exigir habilidades de desenvolvedor.

Opcionalmente, você pode configurar a plataforma para assinar as solicitações HTTP. Solicitações assinadas garantem que as solicitações são enviadas a partir plataforma, em vez de terceiros.

Abaixo, você pode revisar como a assinatura é criada, para que você possa configurar o aplicativo de recebimento a fim de processar corretamente a assinatura e a solicitação relacionada.

Cabeçalho da assinatura

As solicitações HTTP são assinadas inserindo o cabeçalho X-Webhook-Signature na solicitação. Essas assinaturas estão na seguinte forma:

X-Webhook-Signature: t=<timestamp>,sha256=<signature>

onde:

  • <timestamp>: carimbo de data/hora em que a assinatura foi enviada. O valor está na era UNIX.

  • <signature>: assinatura SHA256. A plataforma gera essa assinatura usando um código de autenticação de mensagem baseado em hash (HMAC) com SHA-256.

Mais informações sobre esses valores estão disponíveis abaixo.

Exemplo:

X-Webhook-Signature: t=1568818215724,sha256=55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a

Verificar as ferramentas do aplicativo

Dependendo do aplicativo, talvez seja necessário concluir um dos seguintes conjuntos de tarefas para verificar as assinaturas:

Nota

Pode ser que você precise colocar a plataforma na lista de permissões em seu aplicativo. Consulte a documentação do aplicativo para obter detalhes.

Pode ser necessário criar algum código personalizado para o seu aplicativo. Abaixo, você pode revisar detalhes sobre como fazer isso, incluindo um exemplo de JavaScript.

Processar solicitações assinadas

Carimbo de data/hora

O valor de carimbo de data/hora (t=<timestamp>) aparece no início do valor do cabeçalho para evitar ataques de repetição, onde um invasor pode interceptar um payload válido e sua assinatura e retransmiti-los.

  • Para evitar esses ataques, um carimbo de data/hora é incluído no cabeçalho da assinatura e integrado no payload assinado.

  • Como o carimbo de data/hora faz parte do payload assinado, um invasor não pode alterar o valor do carimbo de data/hora sem invalidar a assinatura.

    • Se a assinatura for válida, mas o carimbo de data/hora for muito antigo, você pode rejeitar a solicitação.

    • Por exemplo, se você receber uma solicitação com um carimbo de data/hora que corresponde a uma hora atrás, provavelmente deverá rejeitar a solicitação.

  • Para obter mais informações sobre ataques de repetição, acesse https://en.wikipedia.org/wiki/Replay_attack.

Assinatura

A assinatura da tarefa inclui como parte de seu valor hash:

  • A chave secreta (inserida acima)

  • O valor do carimbo de data/hora

  • Dados da solicitação:

    • (POST/PUT/PATCH) – o corpo da solicitação

    • (GET/DELETE) – URL da solicitação

Passo 1 – Extrair o carimbo de data/hora e as assinaturas

Divida o cabeçalho X-Webhook-Signature:

  1. Divida os valores usando o caractere "," como separador.

  2. Divida cada uma das partes usando o caractere "=".

  3. Extraia os valores para o carimbo de data/hora e a assinatura. A partir do exemplo acima:

    1. carimbo de data/hora: 1568818215724

    2. assinatura: 55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a

Passo 2 – Criar a assinatura esperada

No aplicativo de recebimento, você pode calcular novamente a assinatura para verificar se a solicitação foi enviada a partir da plataforma.

  1. Concatene o carimbo de data/hora, o caractere de ponto . e o corpo da solicitação (métodos POST/PUT/PATCH) ou o URL (métodos GET/DELETE).

  2. Suponha que o exemplo acima seja a assinatura para uma solicitação POST e que o corpo da solicitação seja test. O valor concatenado é o seguinte:

    1568818215724.test
  3. Agora você pode calcular o código de autenticação HMAC no seu aplicativo de recebimento. No exemplo JavaScript a seguir, o valor da chave secreta é mySecret:

    const crypto = require('crypto');
    
    const message = '1568818215724.test'; // as defined above
    
    const hmac = crypto.createHmac('sha256', 'mySecret');
    hmac.update(message)
    const expectedSignature = hmac.digest('hex');
Passo 3 – Comparar as assinaturas

O valor retornado pelo seu código e o valor incluído como a assinatura no cabeçalho X-Webhook-Signature devem ser comparados:

  • Se os valores não corresponderem, rejeite a solicitação.

  • Se os valores corresponderem, calcule a diferença entre o carimbo de data/hora atual e o carimbo de data/hora no cabeçalho. Se a diferença estiver fora do limite permitido, rejeite a solicitação.

  • Caso contrário, processe a solicitação normalmente em seu aplicativo.

Carregar configuração HTTP a partir do conjunto de dados

Caso você precise criar uma solicitação de API dinâmica ou várias solicitações, você pode usar o Designer Cloud para definir uma saída com a configuração e passar essa saída para a tarefa HTTP no Plans.

Para definir uma saída com a configuração e usá-la para a tarefa HTTP, siga estes passos:

  1. Crie um fluxo de trabalho no Designer Cloud. Para obter mais informações, acesse Criar fluxos de trabalho.

  2. No fluxo de trabalho, defina o formato de arquivo de saída como um CSV que contenha as seguintes colunas (os nomes não diferenciam maiúsculas de minúsculas):

    • Método (cadeia de caracteres, valores: GET | POST | DELETE | PUT),

    • URL (cadeia de caracteres, o URL da solicitação),

    • Cabeçalhos (cadeia de caracteres, a lista de cabeçalhos com valores em um formato {"Name":"Value", "Name":"Value", ...}),

    • Corpo (cadeia de caracteres).

  3. Vá para Plans e crie um plano.

  4. Adicione uma tarefa do Designer Cloud e selecione o fluxo de trabalho recém-criado.

  5. Adicione uma tarefa HTTP após a tarefa do Designer Cloud e conecte-a com uma linha de conector.

  6. Na configuração HTTP, marque a caixa de seleção Carregar configuração a partir do conjunto de dados e a caixa de seleção Carregar configuração a partir do conjunto de dados.

  7. Clique no botão Selecionar conjunto de dados de entrada.

  8. Escolha a tarefa do Designer Cloud e seus dados de saída com a configuração HTTP.

  9. Selecione Confirmar.

  10. A caixa de seleção Criar conjunto de dados a partir da resposta será marcada automaticamente. Você pode personalizar o nome do conjunto de dados e executar o plano.

Nota

Cada linha no arquivo de saída de configuração leva a uma solicitação separada. A resposta de cada solicitação será adicionada como uma linha no conjunto de dados de saída.

Usar a resposta HTTP como entrada para a tarefa em etapas posteriores

Depois de definir a tarefa HTTP para criar um conjunto de dados a partir de uma resposta, você pode usar esse conjunto de dados como uma entrada para tarefas em etapas posteriores.

Para usar o conjunto de dados como uma entrada para uma tarefa em etapas posteriores, siga estes passos:

  1. Em "Configuração HTTP", marque a caixa de seleção Criar conjunto de dados a partir da resposta.

  2. Adicione uma tarefa do Designer Cloud após a tarefa HTTP e conecte-a com uma linha de conector.

  3. Na tarefa do Designer Cloud, selecione o fluxo de trabalho desejado.

  4. Na lista de entradas fluxo de trabalho, selecione Substituir na entrada que você deseja substituir pela resposta HTTP.

  5. Selecione a tarefa HTTP e sua saída.

  6. Clique em Confirmar e execute o plano.