Partilhar via


Execute fluxos de trabalho ou ações baseados em eventos de endpoint de serviço usando webhooks HTTP no Azure Logic Apps

Aplica-se a: Azure Logic Apps (Consumo + Padrão)

Quando quiser que um gatilho ou ação de workflow espere que eventos ou dados cheguem a um endpoint de serviço alvo antes de serem executados, use o gatilho ou ação HTTP Webhook em vez de verificar proativamente o endpoint num intervalo de tempo definido. O gatilho ou ação HTTP Webhook subscreve o endpoint do serviço e espera por novos eventos ou dados antes de executar. Pode usar o padrão webhook para tarefas de longa duração e processamento assíncrono.

A lista seguinte descreve exemplos de fluxos de trabalho baseados em webhooks:

  • Um gatilho HTTP Webhook espera que chegue um evento da Hubs de Eventos do Azure antes de executar o fluxo de trabalho.
  • Uma ação HTTP Webhook espera por uma aprovação em Office 365 Outlook antes de continuar a próxima ação no fluxo de trabalho.

Este guia mostra como configurar o gatilho HTTP Webhook e a ação HTTP Webhook para que o seu fluxo de trabalho possa receber e responder a novos eventos ou dados num endpoint de serviço.

Como funcionam os webhooks?

Um gatilho ou ação de webhook não sonda nem verifica proativamente novos eventos ou dados no endpoint do serviço alvo. Em vez disso, o gatilho ou ação espera até que novos eventos ou dados cheguem ao endpoint do serviço antes de serem executados. Depois de adicionar um gatilho ou ação de webhook ao seu fluxo de trabalho e depois guardar o fluxo, ou depois de reativar um recurso de aplicação lógica desativado, o gatilho ou ação do webhook subscreve o endpoint do serviço ao gerar e registar um URL de callback junto do endpoint. O gatilho ou ação espera então que o endpoint do serviço chame a URL, que executa o gatilho ou ação. Tal como o gatilho de Pedido, um gatilho HTTP Webhook dispara imediatamente.

Por exemplo, a ação do conector Office 365 Outlook chamada Enviar email de aprovação segue o padrão webhook mas funciona apenas com Office 365 Outlook. Pode estender o padrão webhook para qualquer serviço usando o gatilho ou a ação de HTTP Webhook com o endpoint do serviço que deseja utilizar.

Um gatilho de webhook mantém-se subscrito a um endpoint de serviço até que tome manualmente uma das seguintes ações:

  • Altere os valores dos parâmetros do gatilho.
  • Exclua o gatilho e salve seu fluxo de trabalho.
  • Desative o recurso do aplicativo lógico.

Uma ação webhook mantém-se subscrita a um endpoint de serviço, a menos que ocorra uma das seguintes condições:

  • A ação do webhook é concluída com êxito.
  • Cancelas a execução do fluxo de trabalho enquanto esperas por uma resposta.
  • O fluxo de trabalho expira.
  • Alteras quaisquer valores de parâmetros de ação do webhook usados como entradas por um gatilho de webhook.

Para obter mais informações, consulte:

Pré-requisitos

  • Uma conta Azure e subscrição. Crie uma conta Azure gratuita.

  • A URL de um endpoint de serviço ou API implementada.

    Este item deve suportar o padrão "subscrever e cancelar a subscrição" para gatilhos de webhook em fluxos de trabalho ou ações de webhook em fluxos de trabalho.

  • O fluxo de trabalho da aplicação Standard ou Consumption Logic, onde queres usar o gatilho ou ação HTTP do Webhook .

    • Para usar o gatilho HTTP Webhook , crie um recurso de aplicação lógica com um fluxo de trabalho em branco.
    • Para usar a ação HTTP Webhook , inicie o seu fluxo de trabalho com qualquer gatilho que funcione melhor para o seu cenário. Os exemplos usam o gatilho HTTP Webhook .

Adicionar um acionador HTTP Webhook

Este gatilho interno chama o endpoint de subscrição no serviço de destino e regista uma URL de retorno de chamada com o serviço de destino. Em seguida, o fluxo de trabalho aguarda que o serviço de destino envie uma HTTP POST solicitação para a URL de retorno de chamada. Quando esse evento acontece, o gatilho é acionado e passa todos os dados da solicitação para o fluxo de trabalho.

  1. No portal Azure, abre o recurso da tua aplicação Logic. No designer, abre o teu fluxo de trabalho em branco.

  2. Siga os passos gerais para adicionar o gatilho chamado HTTP Webhook ao seu fluxo de trabalho.

    Este exemplo renomeia o gatilho para Run HTTP Webhook trigger um nome mais descritivo. O exemplo também adiciona mais tarde uma ação HTTP Webhook . Ambos os nomes devem ser únicos.

  3. Para os parâmetros de disparo HTTP Webhook, forneça os valores das chamadas de subscrição e cancelamento:

    Parâmetro Necessário Descrição
    Método Subscrever Sim O método a usar para subscrever o endpoint alvo.
    Subscrever URI Sim O URL a usar para subscrever o endpoint alvo.
    Subscrever Corpo Não Qualquer corpo de mensagem a incluir no pedido de subscrição. Este exemplo inclui o URL de callback que identifica de forma única o assinante, ou seja, o seu fluxo de trabalho, ao usar a listCallbackUrl() função de expressão para recuperar o URL de callback do seu gatilho.
    Anular subscrição Conteúdo Não Qualquer corpo da mensagem a incluir no pedido de cancelamento da subscrição. Pode usar a listCallbackUrl() função de expressão para recuperar o URL de callback da sua ação. No entanto, o gatilho também inclui e envia automaticamente os cabeçalhos, x-ms-client-tracking-id e x-ms-workflow-operation-name, que o serviço alvo pode usar para identificar de forma única o assinante.
  4. Para adicionar outros parâmetros de disparo, abra a lista de parâmetros Avançados .

    Por exemplo, para usar os parâmetros Unsubscribe Method e Unsubscribe URI , adicione-os a partir da lista de parâmetros Avançados .

    O exemplo seguinte mostra um gatilho que inclui os métodos, URIs e corpos de mensagens a usar para os métodos de subscrição e cancelamento:

    A captura de ecrã mostra o fluxo de trabalho com parâmetros de gatilho HTTP Webhook.

  5. Se precisar de usar autenticação, adicione os parâmetros de Autenticação por Subscrição e Cancelar Autenticação da lista de parâmetros Avançados .

    Para obter mais informações sobre os tipos de autenticação disponíveis para HTTP Webhook, consulte Adicionar autenticação a chamadas de saída.

  6. Adiciona quaisquer outras ações que o teu cenário precise.

  7. Quando terminar, salve seu fluxo de trabalho. Na barra de ferramentas do estruturador, selecione Guardar.

Salvar o seu fluxo de trabalho chama o endpoint de subscrição no serviço de destino e regista o URL de callback. O seu fluxo de trabalho espera que o serviço de destino envie um HTTP POST pedido para o URL de callback. Quando este evento ocorre, o gatilho dispara e transfere quaisquer dados da solicitação para o fluxo de trabalho. Se esta operação for concluída com sucesso, o gatilho cancela a subscrição do endpoint e o seu fluxo de trabalho prossegue para a próxima ação.

Adicionar uma ação HTTP Webhook

Esta ação interna invoca o endpoint de subscrição no serviço de destino e regista um URL de callback com o serviço de destino. O seu fluxo de trabalho pausa e espera que o serviço alvo envie um HTTP POST pedido para o URL de retorno. Quando este evento acontece, a ação passa quaisquer dados do pedido para o fluxo de trabalho. Se a operação for concluída com sucesso, a ação cancela a subscrição do endpoint e o seu fluxo de trabalho continua para a ação seguinte.

  1. No portal Azure, abre o recurso da tua aplicação Logic. No designer, abre o teu fluxo de trabalho.

  2. Siga os passos gerais para adicionar a ação chamada HTTP Webhook ao seu fluxo de trabalho.

    Este exemplo renomeia a ação para Run HTTP Webhook action um nome mais descritivo. Se o seu fluxo de trabalho também usar o gatilho HTTP Webhook , ambos os nomes devem ser únicos.

  3. Para os parâmetros de ação HTTP Webhook, forneça os valores a usar para as chamadas de subscrição e cancelamento:

    Parâmetro Necessário Descrição
    Método Subscrever Sim O método a usar para subscrever o endpoint alvo.
    Subscrever URI Sim O endereço URL a utilizar para a inscrição no endpoint de destino.
    Subscrever Corpo Não Qualquer corpo de mensagem a incluir no pedido de subscrição. Este exemplo inclui o URL de callback que identifica de forma única o assinante, que é o seu fluxo de trabalho, usando a listCallbackUrl() função de expressão para recuperar o URL de callback da sua ação.
    Anular subscrição Conteúdo Não Qualquer conteúdo da mensagem para incluir no pedido de cancelamento da subscrição. Pode usar a listCallbackUrl() função de expressão para recuperar o URL de callback da sua ação. No entanto, a ação também inclui e envia automaticamente os cabeçalhos, x-ms-client-tracking-id e x-ms-workflow-operation-name, que o serviço alvo pode usar para identificar unicamente o assinante.
  4. Para adicionar outros parâmetros de ação, abra a lista de parâmetros Avançados .

    Por exemplo, para usar os parâmetros Unsubscribe Method e Unsubscribe URI , adicione-os a partir da lista de parâmetros Avançados .

    O exemplo seguinte mostra uma ação que inclui os métodos, URIs e corpos de mensagens a usar para os métodos de subscrição e cancelamento:

    A captura de tela mostra o fluxo de trabalho padrão com parâmetros de ação HTTP Webhook.

  5. Se precisar de usar autenticação, adicione os parâmetros de Autenticação por Subscrição e Cancelar Autenticação da lista de parâmetros Avançados .

    Para obter mais informações sobre os tipos de autenticação disponíveis para HTTP Webhook, consulte Adicionar autenticação a chamadas de saída.

  6. Adiciona quaisquer outras ações que o teu cenário precise.

  7. Quando terminar, salve seu fluxo de trabalho. Na barra de ferramentas do estruturador, selecione Guardar.

Quando esta ação é executada, o seu fluxo de trabalho chama a caixa de entrada de assinatura no serviço de destino e regista a URL de retorno de chamada. O seu fluxo de trabalho pausa e espera que o serviço alvo envie um HTTP POST pedido para o URL de retorno. Quando este evento acontece, a ação passa quaisquer dados do pedido para o fluxo de trabalho. Se a operação for concluída com sucesso, a ação cancela a subscrição do endpoint e o seu fluxo de trabalho continua para a ação seguinte.

Referência técnica do conector

Para mais informações sobre os parâmetros de disparo e de ação do HTTP Webhook, consulte os parâmetros HTTP Webhook. O gatilho e a ação têm os mesmos parâmetros.

Expiração do token de Assinatura de Acesso Partilhada (SAS)

O URL de callback para o gatilho ou ação HTTP Webhook é gerado automaticamente pelo método List Callback Url - REST API. Por padrão, o token SAS na URL de callback não tem uma expiração baseada no tempo. O URL de callback mantém-se válido durante toda a duração da execução do fluxo de trabalho.

Limites de tempo de espera

A tabela seguinte descreve os limites de timeout para a ação HTTP Webhook , com base na opção de alojamento da aplicação lógica:

Opção de hospedagem Tipo de fluxo de trabalho Duração
Consumo Stateful Até 90 dias.
Standard Stateful Até 30 dias.
Standard Sem estado 5 minutos
(limite fixo)

A URL de callback da ação HTTP Webhook torna-se inválida quando os seguintes eventos acontecem:

  • Cancelas o fluxo de trabalho.
  • Apagas ou desativas o fluxo de trabalho ou o recurso da aplicação lógica.
  • Alternas as chaves de acesso do fluxo de trabalho.
  • O fluxo de trabalho expira.

Para outros limites HTTP, consulte limites HTTP em Azure Logic Apps.

Alterar o limite de tempo

Para alterar este limite para a ação HTTP Webhook em fluxos de trabalho com estado usando o portal Azure, consulte a tabela de duração Timeout para pedidos HTTP de saída. Ou, na definição JSON da ação, adiciona o limit.timeout objeto e define o valor para a duração que queres, por exemplo:

{
   "actions": {
      "Run_HTTP_Webhook_action": {
         "type": "HttpWebhook",
         "inputs": {
            "subscribe": {
               "method": "POST",
               "uri": "https://<external-service>.com/subscribe",
               "body": {
                  "callbackUrl": "@{listCallBackUrl()}"
               }
            },
            "unsubscribe": {}
         },
         "limit": {
            "timeout": "PT1H"
         }
      }
   }
}

Saídas de gatilho e ação

As tabelas seguintes fornecem mais informações sobre as saídas retornadas por um gatilho ou ação HTTP Webhook :

Nome JSON Tipo Descrição
headers Objeto JSON Os cabeçalhos do pedido.
body Objeto JSON O objeto com o conteúdo do corpo da requisição.
status code int O código de estado do pedido.
Código de estado Descrição
200 OK
202 Aceite
400 Solicitação inválida
401 Não autorizado
403 Proibido
404 Não Encontrado
500 Erro de servidor interno. Ocorreu um erro desconhecido.

Gerar URL de retorno de chamada com chave de acesso secundária

Um fluxo de trabalho de aplicativo lógico tem duas chaves de acesso: primária e secundária. Por predefinição, o Azure Logic Apps usa a chave primária para gerar o URL de callback para o gatilho de um webhook HTTP.

Para usar a chave secundária, em vez da chave principal, para a geração de URL de retorno de chamada, siga estas etapas:

  1. Se você estiver no designer de workflow, mude para a vista de código.

  2. Na definição do gatilho HttpWebhook, localize o parâmetro accessKeyType.

  3. Introduza a palavra Secondary como valor do parâmetro.

  4. Salve suas alterações.

O exemplo a seguir mostra a definição de gatilho do webhook com o accessKeyType parâmetro definido como Secondary:

{
  "type": "HttpWebhook",
  "inputs": {
    "subscribe": {
      "method": "POST",
      "uri": "<subscription-URL>",
      "body": "@listCallbackUrl()"
    },
    "accessKeyType": "Secondary"
  },
  "runAfter": {}
}