Como faço para agrupar mensagens de webhook de entrada por 3-5 segundos antes de processar

Como faço para agrupar mensagens de webhook recebidas por 3-5 segundos antes de processar

Oi @Anjali_sharma Bem-vinda!
Cada chamada de webhook é sua própria execução, portanto uma única execução não pode nativamente “aguardar” as próximas mensagens. O padrão confiável é um debounce apoiado por estado externo (Redis): em cada mensagem recebida, anexe-a a uma lista Redis com chave do remetente/sessão, escreva o ID da execução atual em uma chave de marcador, aguarde 3 a 5 segundos e depois verifique o marcador. Se ainda contiver o ID da sua execução, nenhuma mensagem mais nova chegou, portanto esta execução extrai toda a lista, a limpa e processa o lote. Se o marcador mudou, uma mensagem mais nova assumiu, portanto esta execução apenas sai. Ordem dos nós

  1. Webhook
  2. Redis (RPUSH a mensagem para uma chave de lista por sessão)
  3. Redis (SET uma chave de “última execução” para {{ $execution.id }})
  4. Wait (3 a 5 segundos)
  5. Redis (GET a chave de “última execução”)
  6. If ({{ $json.value }} equals {{ $execution.id }})
  7. ramo true: Redis (LRANGE para ler tudo e depois DEL a lista) e processar o lote; ramo false: não fazer nada

Há um template pronto que implementa exatamente este debounce: