Pular para o conteúdo principal

WhatsApp Trigger

Triggers

WhatsApp Trigger

Receives WhatsApp messages and events

Node typewa.trigger
CategoriaTriggers
Setups obrigatorioswhatsapp

Painel de configuracao

Esta visualizacao usa o frontend real do ConfigPanel em modo embed, carregando um no de exemplo com o JSON base desta documentacao.

Preview real do painel

Nao foi possivel carregar o painel embedado automaticamente.

JSON base do node
{
  "_nodeType": "wa.trigger",
  "eventFilter": "messages"
}

Portas

Entradas

Sem entradas

Saidas

Output
default · control
Error
error · error

Notas de uso

DataBag variables populated by this trigger (always available):

VariableDescription
{{input.from}}Sender phone number (e.g. 5511999998888)
{{input.messageId}}WhatsApp message ID
{{input.timestamp}}Unix timestamp of the message
{{input.phoneNumberId}}Receiving phone number ID
{{input.displayPhoneNumber}}Receiving display phone number

Additional variables by event type (eventFilter):

eventFilterExtra variables available
messages.text{{input.text}} — plain text body
messages.image{{input.image.id}}, {{input.image.mimeType}}, {{input.image.caption}}
messages.video{{input.video.id}}, {{input.video.mimeType}}, {{input.video.caption}}
messages.audio{{input.audio.id}}, {{input.audio.mimeType}}
messages.document{{input.document.id}}, {{input.document.filename}}, {{input.document.mimeType}}, {{input.document.caption}}
messages.sticker{{input.sticker.id}}, {{input.sticker.mimeType}}
messages.location{{input.location.latitude}}, {{input.location.longitude}}, {{input.location.name}}, {{input.location.address}}
messages.contacts{{input.contacts}} — JSON array of contact objects
messages.reaction{{input.reaction.messageId}}, {{input.reaction.emoji}}
messages.order{{input.order.catalogId}}, {{input.order.text}}, {{input.order.productItems}}
messages.payment{{input.payment.referenceId}}, {{input.payment.amount}}, {{input.payment.currency}}, {{input.payment.status}}
messages.interactive (button_reply){{input.buttonId}} (PREFERIDO para rotear), {{input.interactive.button_reply.title}}
messages.interactive (list_reply){{input.listRowId}} (PREFERIDO para rotear), {{input.interactive.list_reply.title}}
messages.interactive (nfm_reply){{input.interactive.nfm_reply.response_json}}, {{input.interactive.nfm_reply.name}}
statuses.*{{input.status}} (sent/delivered/read/failed), {{input.messageId}}, {{input.timestamp}}
errors{{input.errors}} — JSON array of error objects

IMPORTANTE — roteamento de cliques: use SEMPRE {{input.buttonId}} / {{input.listRowId}}. O caminho longo {{input.interactive.button_reply.id}} só existe na primeira mensagem que dispara o trigger; após um waitInput (onde menus normalmente roteiam) o resume popula apenas buttonId/listRowId.

Use all to catch every event and use Condition/Switch nodes to branch by type.