Stiamo disattivando l'API On-Premises. Consulta il nostro documento Disattivazione API On-Premises per i dettagli e per scoprire come eseguire la migrazione alla nostra API Cloud di nuova generazione.

Invio di messaggi interattivi

Questa guida insegna come inviare ogni opzione di messaggio interattivo. I messaggi interattivi offrono ai tuoi utenti un modo più semplice per trovare e selezionare ciò che desiderano dalla tua azienda su WhatsApp. Durante i test, i chatbot che utilizzavano le funzioni dei messaggi interattivi hanno ottenuto percentuali di risposte e conversioni significativamente più elevate rispetto a quelle basate su testo.

Tipi di messaggi interattivi:

  • Messaggi con liste: messaggi che includono un menu con un massimo di 10 opzioni. Questo tipo di messaggio offre agli utenti un modo più semplice e coerente per effettuare una selezione quando interagiscono con un'azienda.
  • Messaggi con pulsanti di risposta: messaggi che includono fino a 3 opzioni e ogni opzione è un pulsante. Questo tipo di messaggio offre agli utenti un modo più rapido per effettuare una selezione da un menu quando interagiscono con un'azienda. I pulsanti di risposta hanno la stessa esperienza utente dei modelli interattivi con pulsanti.
  • Messaggio per un singolo prodotto: messaggi con un singolo prodotto dell'inventario dell'azienda. Consulta Condivisione dei prodotti con i clienti per maggiori informazioni.
  • Messaggi per più prodotti: messaggi contenenti una selezione di un massimo di 30 prodotti dell'inventario dell'azienda. Consulta Condivisione dei prodotti con i clienti per maggiori informazioni.
  • Messaggi di richiesta della posizione: messaggi che richiedono la posizione dell'utente.
  • Messaggi con flussi: messaggi per interazioni strutturate. Consulta Messaggi con flussi per ulteriori informazioni.

Specifiche dei messaggi interattivi

  • I messaggi interattivi possono essere combinati insieme nello stesso flusso.
  • Gli utenti non possono selezionare più di un'opzione contemporaneamente da un messaggio con lista o con pulsante, ma possono tornare indietro e riaprire un messaggio precedente.
  • I messaggi con lista o pulsanti di risposta non possono essere usati come notifiche. Al momento, possono essere inviati solo entro 24 ore dall'ultimo messaggio inviato dall'utente. Se provi a inviare un messaggio fuori dalla finestra di 24 ore, ricevi un messaggio di errore.
  • Piattaforme supportate: iOS, Android e web (i messaggi con flussi non sono supportati sul web).

Ecco un confronto tra i messaggi di testo e i messaggi interattivi:


Ecco un esempio di come i messaggi con lista e i messaggi con pulsanti di risposta possono essere combinati nello stesso flusso:

Si è verificato un errore
Stiamo riscontrando problemi con la riproduzione di questo video.

Panoramica

Perché utilizzarli

Comprensione dell'utente

Rispetto alle liste basate su testo, i messaggi interattivi offrono un formato più semplice e coerente per consentire alle persone di trovare e selezionare ciò che desiderano da un'azienda. Durante i test, le persone hanno riscontrato livelli di comprensione più elevati interagendo con queste funzioni.

Risultati per l'azienda

Durante i test, i chatbot che utilizzavano le funzioni dei messaggi interattivi hanno ottenuto percentuali di risposte e conversioni significativamente più elevate rispetto a quelle basate su testo.

Personalizzato

Vengono popolati in modo dinamico in tempo reale, per questo possono essere personalizzati in base al cliente o alla situazione. Ad esempio, puoi mostrare un messaggio con lista relativo alle fasce orarie disponibili per la prenotazione di un appuntamento, oppure usare i pulsanti di risposta per mostrare gli indirizzi di consegna precedenti.

Nessun modello

I messaggi interattivi non richiedono modelli né approvazioni preliminari.

Quando utilizzarli

I messaggi con lista sono l'alternativa migliore per presentare diverse opzioni, come:

  • Un menu dell'assistenza clienti o delle FAQ
  • Un menù da asporto
  • Un elenco di negozi o luoghi nelle vicinanze
  • Orari di prenotazione disponibili
  • Scelta di un ordine recente da ripetere

I pulsanti di risposta sono l'alternativa migliore per offrire risposte rapide da un insieme limitato di opzioni, come:

  • Ricarica Airtime
  • Modifica dei dettagli personali
  • Riordino di un ordine precedente
  • Richiesta di reso
  • Aggiunta di extra a un ordine di cibo
  • Scelta di un metodo di pagamento

I pulsanti di risposta sono particolarmente utili per i casi d'uso "personalizzati" in cui una risposta generica non è adeguata.

I messaggi con flussi sono l'opzione ideale per la comunicazione strutturata attraverso uno o più schermi, ad esempio:

  • Prenotazione di appuntamenti
  • Navigazione tra i prodotti
  • Acquisizione di feedback dal cliente
  • Ottenere nuovi contatti di vendita

I messaggi con flussi consentono alle aziende di offrire un'esperienza utente più ricca e coinvolgente che può aiutare i clienti a ottenere risultati più rapidamente su WhatsApp senza dover necessariamente passare a un'altra app o visitare un sito web.

Come utilizzarli

A livello dell'API, i messaggi interattivi vengono impostati specificando come type di messaggio interactive e aggiungendo l'oggetto interactive. In generale, questi messaggi includono 4 parti principali: header, body, footer e action.

{
  "recipient_type": "individual",
  "to" : "whatsapp-id",
  "type": "interactive" 
  "interactive":{
    "type": "list" | "button" | ...,
    "header": {},
    "body": {},
    "footer": {},
    "action": {}
  }
}
Per i messaggi con lista, ecco come si combinano le parti:

Per i messaggi con pulsanti di risposta, ecco come si combinano le parti:

Scopri qui sotto maggiori informazioni su come inviare questi messaggi.

Primi passi

Prima di inviare ogni messaggio, devi ottenere l'ID WhatsApp del destinatario con una chiamata al nodo /contacts.

Consigliamo di configurare i webhook per ricevere notifiche relative allo stato dei messaggi e ai messaggi in arrivo. In questo modo, puoi monitorare l'invio del tuo messaggio e le risposte degli utenti. Consulta Webhook per maggiori informazioni.

Passaggio 1: assemblare l'oggetto interactive

Messaggi con lista

Per inviare un messaggio con lista, devi assemblare un oggetto interactive del tipo list con i seguenti componenti:

OggettoDescrizione

header

Facoltativo.

Se decidi di includerlo, devi impostare il tipo di intestazione su testo e aggiungere un campo di testo con il contenuto desiderato. Massimo 60 caratteri.


Scopri tutti i campi header disponibili.

body

Obbligatorio.

Il corpo del messaggio. Massimo 1024 caratteri.


Scopri tutti i campi body disponibili.

footer

Facoltativo.

Il piè di pagina del messaggio.


Scopri tutti i campi footer disponibili.

action

Obbligatorio.

All'interno dell'azione, devi nidificare:

  • un campo button con il contenuto del pulsante, massimo 20 caratteri
  • almeno un oggetto section (massimo 10) con un massimo di 24 caratteri per il campo title di section

All'interno di section, devi aggiungere almeno un oggetto rows. Massimo 24 caratteri in una riga per il campo title e massimo 72 caratteri in una riga per il campo description.


Scopri tutti i campi action disponibili.

Scopri tutti i campi section disponibili.

Al termine della procedura, l'oggetto interactive dovrebbe essere simile a questo:

"interactive":{
  "type": "list",
  "header": {
    "type": "text",
    "text": "your-header-content"
  },
  "body": {
    "text": "your-text-message-content"
  },
  "footer": {
    "text": "your-footer-content"
  },
  "action": {
    "button": "cta-button-content",
    "sections":[
      {
        "title":"your-section-title-content",
        "rows": [
          {
            "id":"unique-row-identifier",
            "title": "row-title-content",
            "description": "row-description-content",           
          }
        ]
      },
      {
        "title":"your-section-title-content",
        "rows": [
          {
            "id":"unique-row-identifier",
            "title": "row-title-content",
            "description": "row-description-content",           
          }
        ]
      },
      ...
    ]
  }
}

Pulsanti di risposta

Per inviare un messaggio con pulsanti di risposta, devi assemblare un oggetto interactive del tipo button con i seguenti componenti:

OggettoDescrizione

header

Facoltativo.

Per i messaggi interattivi button, puoi usare i seguenti tipi di intestazione: text, video, image o document.


Una volta selezionato il parametro type, aggiungi gli oggetti/i campi corrispondenti con più informazioni:

  • Per i tipi video, image e document: aggiungi un oggetto media.
  • Per il tipo text: aggiungi un campo text con il contenuto desiderato.

Esempio:

"header": {
      "type": "text" | "image" | "video" | "document",
      "text": "your text"
      # OR
      "document": {
        "id": "your-media-id",
        "filename": "some-file-name"
      }
      # OR
      "document": {
        "link": "the-provider-name/protocol://the-url",
        "provider": {
          "name": "provider-name",
        },
        "filename": "some-file-name"
      },
      # OR
      "video": {
        "id": "your-media-id"
      }
      # OR
      "video": {
        "link": "the-provider-name/protocol://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
      # OR
      "image": {
        "id": "your-media-id"
      }
      # OR
      "image": {
        "link": "http(s)://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
    }

Scopri tutti i campi header disponibili.

body

Obbligatorio.

Scopri tutti i campi body disponibili.

footer

Facoltativo.

Scopri tutti i campi footer disponibili.

action

Obbligatorio.

Devi aggiungere almeno un valore button e includere type, title e id per i pulsanti. Non puoi aggiungere più di 3 pulsanti. Massimo 20 caratteri per title.

Non ci possono essere spazi iniziali o finali quando si imposta l'ID.


Esempio:

"action": {
      "buttons": [
        {
          "type": "reply",
          "reply": {
            "id": "unique-postback-id",
            "title": "First Button’s Title" 
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "unique-postback-id",
            "title": "Second Button’s Title" 
          }
        }
      ] 
    }

Scopri tutti i campi action disponibili.

Al termine della procedura, l'oggetto interactive dovrebbe essere simile a questo:

"interactive": {
    "type": "button",
    "header": { # optional
      "type": "text" | "image" | "video" | "document",
      "text": "your text"
      # OR
      "document": {
        "id": "your-media-id",
        "filename": "some-file-name"
      }
      # OR
      "document": {
        "link": "the-provider-name/protocol://the-url",
        "provider": {
          "name": "provider-name",
        },
        "filename": "some-file-name"
      },
      # OR
      "video": {
        "id": "your-media-id"
      }
      # OR
      "video": {
        "link": "the-provider-name/protocol://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
      # OR
      "image": {
        "id": "your-media-id"
      }
      # OR
      "image": {
        "link": "http(s)://the-url",
        "provider": {
          "name": "provider-name"
        }
      }
    }, # end header
    "body": {
      "text": "your-text-body-content"
    },
    "footer": { # optional
      "text": "your-text-footer-content"
    },
    "action": {
      "buttons": [
        {
          "type": "reply",
          "reply": {
            "id": "unique-postback-id",
            "title": "First Button’s Title" 
          }
        },
        {
          "type": "reply",
          "reply": {
            "id": "unique-postback-id",
            "title": "Second Button’s Title" 
          }
        }
      ] 
    } # end action   
  } # end interactive

Messaggi di richiesta di posizione

I messaggi di richiesta di posizione contengono testo nel corpo e un pulsante Invia posizione che gli utenti possono toccare. Toccando il pulsante viene mostrata una schermata di condivisione della posizione che l'utente può usare per condividere la propria posizione.

Per inviare un messaggio di richiesta di posizione, come prima cosa assembla un oggetto interactive con il testo che desideri mostrare nel messaggio:

{
  "type": "location_request_message",
  "body": {
    "type": "text",
    "text": "<TEXT>"
  },
  "action": {
    "name": "send_location" 
  }
}
ProprietàDescrizione

type

Impostata su location_request_message.

body.type

Impostata su text.

body.text

Impostata sul testo che desideri mostrare sopra il pulsante Invia posizione.

action.name

Impostata su send_location.

Messaggi con flussi

I messaggi con flussi contengono un pulsante di call to action che gli utenti possono selezionare. Toccando il pulsante, viene visualizzato il flusso personalizzato.

Per inviare un messaggio con flussi, devi assemblare un oggetto interactive di tipo flow. Consulta qui i dettagli completi.

Passaggio 2: aggiungi i parametri comuni del messaggio

Una volta completato l'oggetto interattivo, aggiungi gli altri parametri che compongono il messaggio: recipient_type, to e type. Ricorda di impostare type su interactive.

{
  "recipient_type": "individual",
  "to" : "whatsapp-id", // WhatsApp ID of your recipient
  "type": "interactive",
  "interactive":{
    // Your interactive object  
   }
  }

Consulta qui i parametri comuni per tutti i tipi di messaggi.

Passaggio 3: effettuare una chiamata POST a /messages

Effettua una chiamata POST all'endpoint /messages con l'oggetto JSON assemblato nei passaggi 1 e 2. Se il tuo messaggio viene inviato correttamente, riceverai la seguente risposta:

{
  "messages": [{
    "id": "{message-id}"
  }]
}

Passaggio 4: controllare i webhook

Se configuri i webhook, controlla se ci sono variazioni nello stato del messaggio o eventuali risposte degli utenti.

I webhook degli utenti che rispondono ai messaggi interattivi includono un nuovo componente chiamato interactive, che contiene informazioni sulla scelta dell'utente. Consulta Webhook, Componenti per maggiori informazioni.

Ad esempio, ecco una richiesta webhook che descrive un utente che ha condiviso la sua posizione.

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "12345",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "12345",
              "phone_number_id": "12345"
            },
            "contacts": [
              {
                "profile": {
                  "name": "John Doe"
                },
                "wa_id": "12345"
              }
            ],
            "messages": [
              {
                "context": {
                  "from": "12345",
                  "id": "test-id"
                },
                "from": "123450",
                "id": "test-id",
                "timestamp": "16632",
                "location": {
                  "address": "1071 5th Ave, New York, NY 10128", #Optional
                  "latitude": 37.421996751527,
                  "longitude": -122.08407156636,
                  "name": "Solomon R. Guggenheim Museum" #Optional
                },
                "type": "location"
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}

Il componente location all'interno del payload contiene la latitudine e la longitudine dell'utente. Tieni presente che address e name sono facoltativi per l'utente e potrebbero non essere inclusi.

"location": {
  "address": "1071 5th Ave, New York, NY 10128", #Optional
  "latitude": 40.782910059774,
  "longitude": -73.959075808525,
  "name": "Solomon R. Guggenheim Museum" #Optional
}