WhatsApp Trigger
Triggers
WhatsApp Trigger
Receives WhatsApp messages and events
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
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):
| Variable | Description |
|---|---|
{{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):
| eventFilter | Extra 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.