Resposta síncrona

Normalmente, um webhook responde imediatamente ao solicitante e o seu fluxo de trabalho do Shopify Flow é executado em segundo plano. Com a resposta síncrona ativada, a aplicação mantém a solicitação HTTP do solicitante aberta até que o seu fluxo de trabalho envie os dados de volta, devolvendo-os em seguida.

Útil quando quem contacta necessita de uma resposta, e não apenas de um aviso de receção - um formulário que apresente um resultado, um sistema que exija um valor calculado, uma consulta.

Ligue-o

Definições avançadas -> Resposta síncrona no webhook.

Criar o fluxo de trabalho

Um webhook de sincronização aciona o «Sync Webhook Trigger», e não o «Standard Webhook Trigger». Esse gatilho inclui um campo adicional, invocationId, que identifica o pedido específico que aguarda uma resposta.

Passo O quê
Gatilho Gatilho de Webhook de Sincronização
Condição Webhook ID corresponde ao ID do seu webhook
Última ação Resposta do Webhook de retorno

A ação decorre em três campos:

Campo O que colocar
ID da invocação Defina {{invocationId}} a partir do gatilho. Sem este valor, a sua resposta não poderá ser associada ao interlocutor em espera e será descartada.
Corpo da resposta O que o interlocutor recebe - ver abaixo.
Tipo de conteúdo Opcional. O valor predefinido é application/json; utilize text/plain para texto simples.

Escrever o corpo da resposta

Pode escrever o corpo diretamente no campo utilizando as variáveis do gatilho, o que é tudo o que a maioria dos fluxos de trabalho necessita:

{"ok": true, "orderId": "{{fieldOne}}", "email": "{{fieldTwo}}"}

Estão disponíveis todos os campos de gatilho: {{fieldOne}} a {{fieldFour}}, {{rawBody}} e {{webhookId}}.

Para tudo o que exija lógica - pesquisar um cliente, calcular um total, moldar um objeto de maiores dimensões - utilize uma ação «Executar Código» numa fase anterior do fluxo de trabalho e associe o respetivo resultado aqui.

Quando não se recebe resposta

Se o seu fluxo de trabalho não responder no prazo de 15 segundos, o chamador recebe, em vez disso, a resposta normal - a mesma 200 que um webhook não síncrono devolve. Não se trata nunca de um erro e o chamador nunca fica à espera. A invocação continua a aparecer no Histórico e o fluxo de trabalho pode ainda ser concluído; apenas a resposta chega demasiado tarde para ser utilizada.

As causas habituais:

  • O fluxo de trabalho não está ativado.
  • Está baseado no gatilho de Webhook padrão, em vez do gatilho de sincronização.
  • Um ramo foi concluído sem chegar à resposta do webhook de retorno.
  • O ID da invocação não foi associado.

Aspetos que convém conhecer

  • A primeira resposta prevalece. Se dois fluxos de trabalho responderem ao mesmo pedido, o autor da chamada recebe o o primeiro; o segundo é descartado.
  • As entregas duplicadas nunca podem esperar. Um pedido suprimido por Proteção contra entregas duplicadas retorna imediatamente - não é executado nenhum fluxo de trabalho, pelo que não há não tenho nada com que responder.
  • Um tempo de resposta típico de ida e volta é de 2 a 4 segundos, mas a Shopify não publica qualquer garantia de tempo de resposta para Shopify Flow. Trate as respostas síncronas como «best-effort»: rápidas na prática, com o limite de 15 segundos uma solução alternativa como medida de segurança.