WhatsApp In

trigger_whatsapp · trigger · Triggers · Disponibile · v1.0.0

Descrizione

Avvia il workflow quando un cliente scrive al tuo numero WhatsApp Business (Meta Cloud API ufficiale, Graph v18+). Ogni messaggio in arrivo = una run del workflow con payload GIÀ normalizzato: mittente E.164, nome profilo, tipo messaggio (text, interactive button/list reply, image, document, audio, video, sticker, location, contacts, reaction), testo o caption, riferimenti media (id, mimeType, sha256, filename) da scaricare via Graph API, e context di reply per i thread. L'URL callback da incollare nel pannello Meta Business → WhatsApp → Configurazione → Webhook è https://<dominio-del-tuo-workspace>/webhooks/whatsapp/<workflow-id> — l'id del workflow compare nel path dell'editor dopo il primo salvataggio. Sicurezza fail-closed su entrambi i flussi del protocollo Meta: (a) il verification handshake GET risponde al hub.challenge SOLO se hub.verify_token combacia (confronto timing-safe) col Verify token configurato sotto — lo scegli tu e lo incolli identico nel pannello Meta; (b) ogni POST evento è accettato SOLO se la firma X-Hub-Signature-256 (HMAC-SHA256 dell'App Secret sui byte esatti del body) è valida — App Secret mancante o firma errata = 401, mai esecuzione. Dedup automatico per message-id (Meta ri-consegna gli eventi non ACK-ati: lo stesso messaggio non fa MAI ripartire il workflow due volte, TTL 24h). Status update (sent/delivered/read) ignorati di default — attivabili con lo switch dedicato. Differenza con i sibling: trigger_webhook = endpoint HTTP generico (nessuna semantica WhatsApp: handshake, firma Meta, dedup message-id e normalizzazione li dovresti costruire a mano); action_whatsapp_send = solo INVIO. Il pattern completo per un bot conversazionale è trigger_whatsapp → (logica/AI) → action_whatsapp_send: la risposta rientra nella finestra Customer Service di 24h aperta dal messaggio del cliente, quindi testo libero senza template pre-approvati. Output per ogni run: { messageId, from, profileName, phoneNumberId, displayPhoneNumber, timestamp (ISO 8601), type, text, interactive {id, title} | null, media {id, mimeType, sha256, caption, filename} | null, location {latitude, longitude, name, address} | null, replyToMessageId, kind: "message" | "status", raw }. Use case: (1) bot ordinazioni pizzeria/ristorante — il cliente scrive, l'AI agente legge menù e storico dal DB tenant e prende l'ordine, conferma via action_whatsapp_send; (2) assistenza clienti con escalation — i messaggi entrano nel workflow, un logic_if smista per parola chiave a operatore umano via action_send_email; (3) raccolta documenti — il cliente invia foto della fattura, il workflow scarica il media via Graph API e lo passa a OCR/gestionale; (4) opt-in campagne — button reply "ISCRIVIMI" registrato in tabella DB con consenso tracciato GDPR.

⚙️ Parametri di configurazione

Campi mostrati nell’editor quando si configura il nodo. Generati direttamente dal NodeDefconfigFields.

CampoTipoRequiredDefaultDescrizione
verifyToken
Verify token (handshake Meta)
string (encrypted)siStringa segreta che SCEGLI TU (es. generata random) e incolli identica nel campo "Verify token" del pannello Meta Business → WhatsApp → Configurazione → Webhook. Meta la rimanda nel GET di verifica: se non combacia, l'handshake fallisce e il webhook non si attiva.
appSecret
App Secret (verifica firma)
string (encrypted)siApp Secret dell'app Meta (Business → Impostazioni app → Di base → App secret). Serve a verificare la firma X-Hub-Signature-256 di OGNI evento: senza firma valida la richiesta è respinta con 401. NON è l'Access Token (quello va nel nodo WhatsApp di invio).
phoneNumberIdFilter
Filtro Phone Number ID (opzionale)
stringno
1234567890123456
Se l'app Meta gestisce PIÙ numeri WhatsApp, processa solo gli eventi di questo Phone Number ID (l'ID numerico del pannello Meta, non il numero di telefono). Vuoto = accetta gli eventi di qualsiasi numero dell'app.
includeStatuses
Avvia anche per status update
booleannofalseSe on: il workflow parte anche per gli status dei messaggi INVIATI (sent, delivered, read, failed) con kind="status". Default off: solo i messaggi in arrivo dei clienti (gli status di consegna sono rumore per un bot conversazionale).

⬆️ Output del nodo

Campi disponibili nei nodi successivi via $node.<alias>.json.<field>:

  • messageId
  • from
  • profileName
  • phoneNumberId
  • displayPhoneNumber
  • timestamp
  • type
  • text
  • interactive
  • media
  • location
  • replyToMessageId
  • kind
  • raw

💡 Esempio configurazione

Snippet JSON del nodo come compare nel workflow. I valori sono derivati daidefaultValue e dai parametri required.

{
  "id": "node-trigger_whatsapp-1",
  "defId": "trigger_whatsapp",
  "label": "WhatsApp In",
  "config": {
    "verifyToken": "<verifyToken>",
    "appSecret": "<appSecret>",
    "includeStatuses": false
  }
}

🔗 Nodi correlati nella stessa categoria

Pronto a usare WhatsApp In?

Disponibile da subito in tutti i piani FlowForge. Provalo gratis senza carta di credito.

Inizia gratisSfoglia tutti i nodi