Messaggi

/v1/messages

Usa il nodo messages per inviare messaggi di testo, con contenuto multimediale, contatti o luoghi, interattivi e modelli di messaggi ai tuoi clienti.

Consulta le seguenti guide per informazioni relative ai tipi di messaggi che puoi inviare: messaggi di testo, messaggi multimediali, messaggi con contatti e luoghi, messaggi interattivi, modelli di messaggi, modelli di messaggi con contenuto multimediale e modelli di messaggi interattivi.

Prima di iniziare

Devi:

  • autenticarti e ricevere un token di autenticazione che ti consenta di accedere al servizio. Per ulteriori informazioni su come eseguire questa operazione, consulta la documentazione su accesso e autenticazione;
  • verificare l'account WhatsApp a cui desideri inviare il messaggio e ottieni il relativo ID utente WhatsApp Consulta la documentazione sui contatti per maggiori informazioni su come eseguire questa operazione;
  • soddisfare i requisiti del servizio del controllo di cut-off per i messaggi.

A partire dalla versione 2.39 e successive, non devi chiamare il nodo contacts prima dell'invio di un messaggio.

Limitazioni

  • Sono supportati i seguenti tipi di messaggi: testo, modelli di messaggi, immagini, documenti e audio.
  • Un messaggio di testo può avere una lunghezza massima di 4096 caratteri.

Creazione

Per inviare i messaggi devi effettuare una chiamata POST al nodo /messages indipendentemente dal tipo di messaggio. Il contenuto del corpo del messaggio JSON cambia per ogni tipo di messaggio (testo, immagine, ecc.).

Parametri

Questi sono i parametri principali utilizzati nelle richieste POST /messages:

NomeDescrizione (clicca sulla freccia nella colonna di sinistra per le opzioni supportate).

audio

oggetto

Obbligatorio quando type=audio.

Un oggetto media contenente audio.

biz_opaque_callback_data

stringa

Facoltativo.

Una stringa arbitraria, utile per il monitoraggio.


Per esempio, puoi passare l'ID del modello di messaggio in questo campo per monitorare il percorso del cliente a partire dal primo messaggio che invii. Puoi poi monitorare il ROI di diversi tipi di modelli di messaggi per determinare il più efficace.


Qualsiasi app iscritta al campo del webhook messages sull'account WhatsApp Business può ottenere questa stringa, poiché è inclusa nell'oggetto statuses all'interno dei payload del webhook.


L'API Cloud non elabora questo campo, lo restituisce semplicemente come parte dei webhook di messaggio inviato/recapitato/letto.


Massimo 512 caratteri.


Solo API Cloud.

contacts

oggetto

Obbligatorio quando type=contacts.

Un oggetto contacts.

context

oggetto

Obbligatorio se si risponde a qualsiasi messaggio nella conversazione.

Un oggetto contenente l'ID di un messaggio precedente a cui si sta rispondendo. Ad esempio:


{"message_id":"MESSAGE_ID"}


Solo API Cloud.

document

oggetto

Obbligatorio quando type=document.

Un oggetto media contenente un documento.

hsm

oggetto

Contiene un oggetto hsm. Questa opzione è stata dichiarata obsoleta con la v2.39 dell'API On-Premises. Al suo posto usa l'oggetto template.


Solo API On-Premises.

image

oggetto

Obbligatorio quando type=image.

Un oggetto media contenente un'immagine.

interactive

oggetto

Obbligatorio quando type=interactive.

Un oggetto interactive. I component di ciascun oggetto interactive seguono generalmente un pattern costante: header, body, footer e action.

location

oggetto

Obbligatorio quando type=location.

Un oggetto location.

messaging_product

stringa

Obbligatorio

Servizio di messaggistica utilizzato per la richiesta. Utilizza "whatsapp".


Solo API Cloud.

preview_url

booleano

Obbligatorio se type=text.

Consente anteprime URL nei messaggi di testo - Consulta Invio di URL nei messaggi di testo. Questo campo è facoltativo se non includi un URL nel tuo messaggio. Valori:false (predefinito), true.


Solo API On-Premises. Gli utenti dell'API Cloud possono utilizzare la stessa funzionalità con il campo preview_url all'interno di un oggetto text.

recipient_type

stringa

Facoltativo.

Attualmente, puoi solo inviare messaggi a persone singole. Impostalo come individual.


Predefinito: individual

status

stringa

Stato del messaggio. Puoi usare questo campo per contrassegnare un messaggio come read. Consulta le guide seguenti per informazioni:


sticker

oggetto

Obbligatorio quando type=sticker.

Un oggetto media contenente un adesivo.


API Cloud: sono supportati adesivi animati e statici di terze parti in uscita e tutti i tipi di adesivi in entrata. Un adesivo statico deve essere di 512x512 pixel e non può superare 100 KB. Un adesivo animato deve essere di 512x512 pixel e non può superare 500 KB.


API On-Premises: sono supportati solo adesivi statici di terze parti in uscita e tutti i tipi di adesivi in entrata. Un adesivo statico deve essere di 512x512 pixel e non può superare 100 KB. Gli adesivi animati non sono supportati.

template

oggetto

Obbligatorio quando type=template.

Un oggetto template.

text

oggetto

Obbligatorio per i messaggi di testo.

Un oggetto text.

to

stringa

Obbligatorio.

ID di WhatsApp o numero di telefono del cliente a cui si desidera inviare un messaggio. Consulta Formati dei numero di telefono.


Se necessario, gli utenti dell'API On-Premises possono ottenere questo numero chiamando l'endpoint contacts..

type

stringa

Facoltativo.

Il tipo di messaggio che desideri inviare. Se omesso, il valore predefinito è text.

Oggetto text

NomeDescrizione

body

Obbligatorio.

Contiene il testo del messaggio, che può includere URL e formattazione.

Oggetto media

Per l'API On-Premises, l'ID dell'oggetto media viene restituito quando il contenuto multimediale viene caricato correttamente nel client on-premises/reference di WhatsApp Business tramite l'endpoint media.

NameDescription

id

string

Required when type is audio, document, image, sticker, or video and you are not using a link.


The media object ID. Do not use this field when message type is set to text.

link

string

Required when type is audio, document, image, sticker, or video and you are not using an uploaded media ID (i.e. you are hosting the media asset on your public server).

The protocol and URL of the media to be sent. Use only with HTTP/HTTPS URLs.


Do not use this field when message type is set to text.


Cloud API users only:


  • See Media HTTP Caching if you would like us to cache the media asset for future messages.
  • When we request the media asset from your server you must indicate the media's MIME type by including the Content-Type HTTP header. For example: Content-Type: video/mp4. See Supported Media Types for a list of supported media and their MIME types.

caption

string

Optional.


Media asset caption. Do not use with audio or sticker media.


On-Premises API users:

  • For v2.41.2 or newer, this field is is limited to 1024 characters.
  • Captions are currently not supported for document media.

filename

string

Optional.


Describes the filename for the specific document. Use only with document media.


The extension of the filename will specify what format the document is displayed as in WhatsApp.

provider

string

Optional. On-Premises API only.

This path is optionally used with a link when the HTTP/HTTPS link is not directly accessible and requires additional configurations like a bearer token. For information on configuring providers, see the Media Providers documentation.

Oggetto contacts

In contacts, puoi nidificare i seguenti oggetti: addresses, emails, name, org, phone e urls. Gli oggetti pluralizzati devono essere nidificati in un array come mostrato nell'esempio seguente.

NameDescription

addresses

object

Optional.

Full contact address(es) formatted as an addresses object. The object can contain the following fields:

streetstringOptional. Street number and name.

citystringOptional. City name.

statestringOptional. State abbreviation.

zipstringOptional. ZIP code.

countrystringOptional. Full country name.

country_codestringOptional. Two-letter country abbreviation.

typestringOptional. Standard values are HOME and WORK.

birthday

Optional.

YYYY-MM-DD formatted string.

emails

object

Optional.

Contact email address(es) formatted as an emails object. The object can contain the following fields:

emailstringOptional. Email address.

typestringOptional. Standard values are HOME and WORK.

name

object

Required.

Full contact name formatted as a name object. The object can contain the following fields:

formatted_namestringRequired. Full name, as it normally appears.

first_namestringOptional*. First name.

last_namestringOptional*. Last name.

middle_namestringOptional*. Middle name.

suffixstringOptional*. Name suffix.

prefixstringOptional*. Name prefix.


*At least one of the optional parameters needs to be included along with the formatted_name parameter.

org

object

Optional.

Contact organization information formatted as an org object. The object can contain the following fields:

companystringOptional. Name of the contact's company.

departmentstringOptional. Name of the contact's department.

titlestringOptional. Contact's business title.

phones

object

Optional.

Contact phone number(s) formatted as a phone object. The object can contain the following fields:

phonestringOptional. Automatically populated with the `wa_id` value as a formatted phone number.

typestringOptional. Standard Values are CELL, MAIN, IPHONE, HOME, and WORK.

wa_idstringOptional. WhatsApp ID.

urls

object

Optional.

Contact URL(s) formatted as a urls object. The object can contain the following fields:

urlstringOptional. URL.

typestringOptional. Standard values are HOME and WORK.

Esempio di un oggetto contacts con oggetti pluralizzati nidificati al suo interno:

"contacts": [
    {
        "addresses": [
            {
                "city": "city name",
                "country": "country name",
                "country_code": "code",
                "state": "Contact's State",
                "street": "Contact's Street",
                "type": "Contact's Address Type",
                "zip": "Contact's Zip Code"
            }
        ],
        "birthday": "birthday",
        "emails": [
            {
                "email": "email",
                "type": "HOME"
            },
            {
                "email": "email",
                "type": "WORK"
            }
        ],
        "name": {
            "first_name": "first name value",
            "formatted_name": "formatted name value",
            "last_name": "last name value",
            "suffix": "suffix value"
        },
        "org": {
            "company": "company name",
            "department": "dep name",
            "title": "title"
        },
        "phones": [
            {
                "phone": "Phone number",
                "wa-id": "WA-ID value",
                "type": "MAIN"
            },
            {
                "phone": "Phone number",
                "type": "HOME"
            },
            {
                "phone": "Phone number",
                "type": "WORK"
            }
        ],
        "urls": [{
            "url": "some url",
            "type": "WORK"
        }]
    }
]

Oggetto location

NameDescription

latitude

Required.

Location latitude in decimal degrees.

longitude

Required.

Location longitude in decimal degrees.

name

Required.

Name of the location.

address

Required.

Address of the location.

Oggetto template

In template, puoi nidificare gli oggetti components e language.

A partire dalla v2.27.8, l'elemento namespace di un modello deve essere lo spazio dei nomi associato all'account WhatsApp Business che possiede il numero di telefono nell'attuale client on-premises di WhatsApp Business. In caso contrario, il messaggio non verrà inviato.

In aggiunta, dalla v2.41 in poi l'elemento namespace sarà un campo facoltativo.

NomeDescrizione

namespace

Obbligatorio.

Spazio dei nomi del modello.


A partire dalla v2.27.8, questo deve essere lo spazio dei nomi associato all'account WhatsApp Business che possiede il numero di telefono associato all'attuale client dell'API di WhatsApp Business; in caso contrario, l'invio del messaggio non va a buon fine.

name

Obbligatorio.

Nome del modello.

language

Obbligatorio.

Specifica la lingua in cui il modello può essere visualizzato. Con i modelli di messaggio con contenuti multimediali funziona solo il criterio di lingua deterministic. Consulta la sezione Lingua per maggiori informazioni.

components

Facoltativo.

Array contenente i parametri del messaggio.

Oggetto components

In components, puoi nidificare l'oggetto parameters. Inoltre, puoi impostare type su button.

NomeDescrizione

type

Obbligatorio.

Descrive il tipo di component.
Valori:header, body, footer

parameters

Facoltativo.

Array contenente il contenuto del messaggio.

Oggetto parameter

NomeDescrizione

type

Obbligatorio.

Descrive il tipo parameter.
Valori:text, currency, date_time, image, document, video


I tipi di contenuto multimediale (image, document e video) seguono lo stesso formato utilizzato nei messaggi multimediali standard; consulta il documento Contenuti multimediali per maggiori informazioni. Attualmente solo i documenti PDF sono supportati per i modelli di messaggio multimediale.


Per maggiori informazioni su currency e date_time, vedi la sezione Parametri localizzabili. I parametri currency e date_time per i messaggi template impiegano fallback_value al posto di default. Consulta la Richiesta in alto per un esempio.

Tipo di pulsante

Nell'oggetto components, puoi impostare type su button. Questi sono i parametri del tipo button:

NomeDescrizione

sub_type

Obbligatorio.

Tipo di pulsante in fase di creazione.
Valori:quick_reply, url, copy_code (available from 2.49 and onwards)

index

Obbligatorio.

Indice della posizione del pulsante. Puoi avere fino a 3 pulsanti usando i valori di indice di 0-9.

parameters

Obbligatorio.

I parametri per il pulsante, che sono impostati al momento della creazione nel Business Manager. Includi i seguenti parametri:

  • type (obbligatorio): indica il tipo di parametro per il pulsante. I valori supportati sono payload, text e coupon_code.
  • payload (obbligatorio per i pulsanti quick_reply): payload definito dallo sviluppatore che sarà restituito quando si clicca sul pulsante in aggiunta al testo visualizzato sul pulsante.
  • text (obbligatorio per i pulsanti url): suffisso fornito dallo sviluppatore che sarà aggiunto a un pulsante con URL dinamico creato in precedenza.
  • coupon_code (obbligatorio per i pulsanti copy_code, disponibile dalla versione 2.49 in poi): lo sviluppatore ha fornito il codice coupon che viene copiato quando si clicca sul pulsante di copia codice.

Esempio di tipo button con sottotipo quick_reply:

 {
    "type": "button",
    "sub_type": "quick_reply",
    "index": 0,
    "parameters": 
     [{
    	"type": "payload",
    	"payload": "Yes-Button-Payload"
     }]
 } 

Esempio di tipo button con sottotipo copy_code:

    
 { 
    "type": "button", 
    "sub_type": "copy_code", 
    "index": 0, 
    "parameters": 
    [{ 
     "type": "coupon_code", 
     "coupon_code": "DISCOUNT20" 
    }] 
 }

Oggetto hsm

L'oggetto hsm è stato dichiarato obsoleto con on-premises/reference di WhatsApp Business v2.39. Al suo posto usa l'oggetto template.

Nome Descrizione

namespace

Obbligatorio.

Lo spazio dei nomi che verrà utilizzato. A partire dalla v2.2.7, se lo spazio dei nomi non corrisponde a element_name, il messaggio non viene inviato.

element_name

Obbligatorio.

Il nome dell'elemento che indica il modello da utilizzare nello spazio dei nomi. A partire dalla v2.2.7, se element_name non corrisponde allo spazio dei nomi, il messaggio non viene inviato.

language

Obbligatorio.

Consente di specificare un criterio di lingua deterministico. Consulta la sezione relativa alla lingua per maggiori informazioni.


Questo campo aveva un'opzione fallback, ma è stata dichiarata obsoleta a partire dalla v2.27.8.

localizable_params

Obbligatorio.

Questo campo è un array di valori da applicare alle variabili nel modello. Consulta la sezione Parametri localizzabili per maggiori informazioni.

Oggetto interactive

The interactive object generally contains 4 main components: header, body, footer, and action. Additionally, some of those components can contain one or more different objects:

  • Inside header, you can nest media objects.
  • Inside action, you can nest section and button objects.
NameDescription

type

string

Required.

The type of interactive message you want to send. Supported values:

  • list: Use it for List Messages.
  • button: Use it for Reply Buttons.
  • product: Use it for Single-Product Messages.
  • product_list: Use it for Multi-Product Messages.
  • catalog_message: Use it for Catalog Messages.
  • flow: Use it for Flows Messages.

header

object

Required for type product_list. Optional for other types.

Header content displayed on top of a message. You cannot set a header if your interactive object is of product type.


The header object contains the following fields:

documentobjectRequired if type is set to document. Contains the media object with the document.

imageobjectRequired if type is set to image. Contains the media object with the image.

videoobjectRequired if type is set to video. Contains the media object with the video.

textstringRequired if type is set to text. Text for the header. Formatting allows emojis, but not markdown. Maximum length: 60 characters.

typestringRequired. The header type you would like to use. Supported values are:

text – for List Messages, Reply Buttons, and Multi-Product Messages.

video – for Reply Buttons.

image – for Reply Buttons.

document – for Reply Buttons.

body

object

Optional for type product. Required for other message types.

An object with the body of the message.


The body object contains the following field:

textstringRequired if body is present. The content of the message. Emojis and markdown are supported. Maximum length: 1024 characters.

footer

object

Optional.

An object with the footer of the message.


The footer object contains the following field:

textstringRequired if footer is present. The footer content. Emojis, markdown, and links are supported. Maximum length: 60 characters.

action

object

Required.

An action object with what you want the user to perform after reading the message. See action object for full information.

Oggetto action

NameDescription

button

string

Required for List Messages.

Button content. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.

buttons

object

Required for Reply Button Messages.

A button object. The object can contain the following parameters:

type – The only supported option is reply for Reply Button Messages.

title – Button title. It cannot be an empty string and must be unique within the message. Emojis are supported, markdown is not. Maximum length: 20 characters.

id – Unique identifier for your button. This ID is returned in the webhook when the button is clicked by the user. Maximum length: 256 characters.


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

sections

array of objects

Required for List Messages and Multi-Product Messages.

Array of section objects. There is a minimum of 1 and maximum of 10. See section object.

catalog_id

string

Required for Single-Product Messages and Multi-Product Messages.

Unique identifier of the Facebook catalog linked to your WhatsApp Business Account. This ID can be retrieved via Commerce Manager.

product_retailer_id

string

Required for Single-Product Messages and Multi-Product Messages.

Unique identifier of the product in a catalog. Maximum 100 characters for both Single-Product and Multi-Product messages.


To get this ID, go to Commerce Manager, select your Facebook Business account, and you will see a list of shops connected to your account. Click the shop you want to use. On the left-side panel, click Catalog > Items, and find the item you want to mention. The ID for that item is displayed under the item's name.

mode

string

Optional for Flows Messages.

The current mode of the Flow, either draft or published.


Default: published

flow_message_version

string

Required for Flows Messages.

Must be 3.

flow_token

string

Required for Flows Messages.

A token that is generated by the business to serve as an identifier.

flow_id

string

Required for Flows Messages.

Unique identifier of the Flow provided by WhatsApp.

flow_cta

string

Required for Flows Messages.

Text on the CTA button, eg. "Signup".


Maximum length: 20 characters (no emoji).

flow_action

string

Optional for Flows Messages.

navigate or data_exchange. Use navigate to predefine the first screen as part of the message. Use data_exchange for advanced use-cases where the first screen is provided by your endpoint.


Default: navigate

flow_action_payload

object

Optional for Flows Messages.

Required only if flow_action is navigate. The object can contain the following parameters:

screenstringRequired. The id of the first screen of the Flow.

dataobjectOptional. The input data for the first screen of the Flow. Must be a non-empty object.

Section Object

NameDescription

title

string

Required if the message has more than one section.

Title of the section. Maximum length: 24 characters.

rows

array of objects

Required for List Messages.

Contains a list of row objects. Limited to 10 rows across all sections.


Each row object contains the following fields:

titlestringRequired. Maximum length: 24 characters.

IDstringRequired. Maximum length: 200 characters.

descriptionstringOptional. Maximum length: 72 characters.

product_items

array of objects

Required for Multi-Product Messages.

Array of product objects. There is a minimum of 1 product per section and a maximum of 30 products across all sections.


Each product object contains the following field:

product_retailer_idstringRequired for Multi-Product Messages. Unique identifier of the product in a catalog. To get this ID, go to Commerce Manager, select your account and the shop you want to use. Then, click Catalog > Items, and find the item you want to mention. The ID for that item is displayed under the item's name.

Esempi

Messaggi audio:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "audio",
  "audio": {
      "id": "your-media-id",
  }
}

Messaggi con documento che utilizzano filename:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "document",
  "document": {
      "id": "your-media-id",
      "filename": "your-document-filename"
  }
}

Messaggi con documento che utilizzano link:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "document",
  "document": {
      "link": "http(s)://the-url"
      "provider": {
          "name" : "provider-name"
      }     
    }
}

Videomessaggi che utilizzano link:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "video",  
  "video": {
      "link": "http(s)://the-url"
      "provider": {
          "name" : "provider-name"
      }
    }
  }
}

SMS:

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "text",
  "text": {
      "body": "your-message-content"
  }
}

Messaggi interattivi (liste):

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "interactive",
  "interactive":{
    "type": "list",
    "header": {
      "type": "text",
      "text": "your-header-content-here"
    },
    "body": {
      "text": "your-text-message-content-here"
    },
    "footer": {
      "text": "your-footer-content-here"
    },
    "action": {
      "button": "cta-button-content-here",
      "sections":[
        {
          "title":"your-section-title-content-here",
          "rows": [
            {
              "id":"unique-row-identifier-here",
              "title": "row-title-content-here",
              "description": "row-description-content-here",           
            }
          ]
        },
        {
          "title":"your-section-title-content-here",
          "rows": [
            {
              "id":"unique-row-identifier-here",
              "title": "row-title-content-here",
              "description": "row-description-content-here",           
            }
          ]
        },
        ...
      ]
    }
  }

}

Messaggi interattivi (pulsanti di risposta):

POST /v1/messages
{
  "recipient_type": "individual",
  "to": "whatsapp-id",
  "type": "interactive",
  "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 interattivi (messaggi con un singolo prodotto e più prodotti):

{ 
  "recipient_type": "individual",
  "to" : "{{Recipient-WA-ID}}",
  "type": "interactive",
  "interactive": {
    "type": "product",
    "body": {
      "text": "body text"
    },
    "footer": {
      "text": "footer text"
    },
    "action": {
      "
      
      _id": "catalog-ID",
      "product_retailer_id": "product-ID"
    }
  }
}

Messaggi interattivi (messaggi con più prodotti):

{ 
  "recipient_type": "individual",
  "to" : "whatsapp-id",
  "type": "interactive",
  "interactive": 
    {
    "type": "product_list",
    "Header":{
       "type": "text",
        "text": "text-header-content"
     },
     "body":{
        "text": "text-body-content"
      },
     "footer":{
        "text":"text-footer-content"
     },
     "action":{
        "catalog_id":"catalog-id",
        "sections": [
             {
             "title": "section-title",             
             "product_items": [
                  { "product_retailer_id": "product-SKU-in-catalog" },
                  { "product_retailer_id": "product-SKU-in-catalog" },
                            ...
              ]},
              {
              "title": "the-section-title",
              "product_items": [
                 { "product_retailer_id": "product-SKU-in-catalog" }
                           ...
              ]},
               ...
       ]
     },  
    }
}

Messaggi interattivi (messaggi con catalogo):

{ 
  "recipient_type": "individual",
  "to" : "whatsapp-id",
  "type": "interactive",
  "interactive": 
    {
    "type": "catalog_message",
     "body":{
        "text": "text-body-content"
      },
     "footer":{
        "text":"text-footer-content"
     },
     "action":{
        "name": "catalog_message",
      	"parameters":{ 
      	  "thumbnail_product_retailer_id": "product-SKU-in-catalog"
      	}
     },  
    }
}

Messaggi interattivi (flussi):

{
  "recipient_type": "individual",
  "to": "{{Recipient-WA-ID}}",
  "type": "interactive",
  "interactive": {
    "type": "flow",
    "header": {
      "type": "text",
      "text": "Flow message header"
    },
    "body": {
      "text": "Flow message body"
    },
    "footer": {
      "text": "Flow message footer"
    },
    "action": {
      "name": "flow",
      "parameters": {
        "flow_message_version": "3",
        "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s",
        "flow_id": "<FLOW_ID>",
        "flow_cta": "Book!",
        "flow_action": "navigate",
        "flow_action_payload": {
          "screen": "<SCREEN_ID>",
          "data": { # optional
            "user_name": "name",
            "user_age": 25
          }
        }
      }
    }
  }
}

Di seguito è riportato un esempio di payload in una risposta; gli oggetti meta ed error sono omessi per brevità.

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

Se la richiesta viene eseguita correttamente, riceverai una risposta con un ID del messaggio. Se la richiesta restituisce una sezione errors, controlla il messaggio di origine e correggi gli errori prima di reinviare la richiesta. Per maggiori informazioni sugli errori, consulta Codici di errore del client on-premises/reference di WhatsApp Business e Codici di stato HTTP.

Si applica alle aziende in Brasile, Colombia e Singapore, a partire dal 12 settembre 2023. Si applica a tutte le aziende a partire dal 12 ottobre 2023.

Se la richiesta è sospesa per la valutazione della qualità, la risposta conterrà una proprietà message_status con un messaggio indicante che il messaggio non è stato inviato immediatamente e che verrà inviato o annullato dopo la convalida della qualità. Questa proprietà esisterà solo in caso di sospensione del messaggio.

    {
      "messages": [{ 
        "id": "message-id",
        "message_status": "Message has been held because quality assessment is pending",
      }]    
    }
    

Formattazione nei messaggi di testo

WhatsApp consente alcune funzioni di formattazione nei messaggi. Per formattare tutto un messaggio o parte di esso, utilizza questi simboli di formattazione:

FormattazioneSimboloEsempio

Grassetto

Asterisco (*)

Il tuo totale è *$ 10,50*.

Corsivo

Trattino basso (_)

Ti diamo il benvenuto su _WhatsApp_!

Barrato

Tilde (~)

Questo è ~meglio~ del meglio!

Code

Tre apici inversi (```)

```print 'Hello World';```

Prestazioni

In questo contesto, le prestazioni rappresentano il numero di messaggi che possono essere inviati ogni secondo mediante il client on-premises/reference di WhatsApp Business. Le massime prestazioni ottenibili dipendono da una serie di fattori; tra questi, il più importante è la configurazione del client scelta e se il messaggio viene inviato a un nuovo utente o un utente esistente; la configurazione delle sessioni di crittografia richiede infatti più tempo quando si invia un messaggio a un nuovo utente.

Configurazione del clientMessaggi supportati al secondo

Shard singolo

70

Shard multipli (32 shard)

250

FAQ

Nota: non inviare più volte lo stesso messaggio allo stesso destinatario utilizzando l'API WhatsApp Business.

I motivi per cui le percentuali di consegna non sono del 100% possono essere molteplici. Alcuni casi comuni includono utenti con accesso sporadico alla rete o inattivi per un certo periodo di tempo, oppure uno stimolo a creare un' esperienza utente di più alta qualità.

I messaggi che possono essere consegnati con WhatsApp avranno una percentuale di consegna molto elevata. Tuttavia, ci sono molte ragioni per cui un messaggio potrebbe non essere recapitato. Avrai accesso allo stato esatto di un messaggio monitorando le tue callback. Questo non vale nel caso di invio di messaggi con SMS, ad esempio, dove non hai accesso allo stato finale consegnato e reinviare il messaggio potrebbe in effetti produrre un risultato diverso.

I messaggi potrebbero non essere recapitati perché il telefono di un utente è fuori servizio, scarico oppure è stato smarrito e, in attesa di prenderne uno nuovo, ha disabilitato la scheda SIM. È possibile che ci siano errori nella capacità del client aziendale di connettersi alla rete. È anche possibile che le callback (webhook) non vengano consegnate. Puoi monitorare queste situazioni utilizzando il nodo health. Puoi attivare le callback di ricezione del server per avere conferma che il messaggio sia arrivato nel cloud del server WhatsApp.

Se e quando un utente si riconnette alla rete, tutti i messaggi inviati verranno recapitati. La ricezione di più messaggi con lo stesso contenuto non sarebbe apprezzato dall'utente. Potrebbe bloccarti o inviare un reclamo. Avrai maggiori probabilità di essere bannato.

Se invii un messaggio e ricevi un ID messaggio dall'API, hai fatto tutto il necessario per l'invio. Non inviare di nuovo lo stesso contenuto allo stesso destinatario.

Se riscontri basse percentuali di consegna per un periodo di tempo prolungato, invia un ticket di supporto all' Assistenza diretta.

Quando si invia un messaggio, non appena si ottiene un ID messaggio la richiesta del messaggio è stata memorizzata nel database. Il client API WhatsApp Business continuerà a tentare di inviare il messaggio fino a quando non verrà confermato dal server WhatsApp. Questo processo non ha una linea temporale stabilita. Il server WhatsApp tenterà quindi di consegnare il messaggio al telefono dell'utente. Se il telefono dell'utente non è online, il messaggio verrà archiviato per 30 giorni prima di essere eliminato dal server WhatsApp.

Sì. WhatsApp ti consente di formattare testo selezionato all'interno dei messaggi con grassetto, corsivo, barrato o spazio fisso.

Al momento, non è possibile vedere quanti o quali utenti hanno bloccato la tua azienda. L'indicatore migliore sarebbe mettersi in ascolto dei callback di stato e, se non ricevi lo stato delivered, allora l'utente ha bloccato la tua azienda o non ha una connessione di rete. Consulta la documentazione sui Webhooks per maggiori dettagli.

Se un utente ha bloccato la tua azienda, l'API Contacts continuerà a restituire il numero di telefono come utente WhatsApp valido. Tuttavia, quando invii il messaggio, questo non verrà mai recapitato. Se si tratta di un messaggio a pagamento, non ti verrà addebitato alcun importo.

No, non è garantito che l'ordine in cui arrivano i messaggi sia lo stesso in cui sono stati inviati. Se l'ordine è fondamentale per il tuo caso d'uso, l'approccio suggerito è mettersi in ascolto del callback recapitato del primo messaggio prima di lanciare il secondo messaggio.

Quando utilizzi il nodo messages, devi impostare l'intestazione Content-Type su application/json affinché il client API WhatsApp Business analizzi correttamente il corpo del messaggio. C'è anche l'intestazione Authorization, che deve essere impostata e deve contenere un token di accesso non scaduto. Consulta la documentazione su accesso e autenticazione per informazioni su come ottenere il token e sulla sua scadenza.

In alcuni casi potrebbe essere necessario più tempo per gestire una richiesta del cliente e si potrebbe essere in grado di fornire una risposta solo dopo 24 ore. È consigliabile creare modelli di messaggio per:

  • inviare il risultato all'utente o
  • chiedere all'utente di rispondere per attivare la finestra dell'assistenza clienti.

In entrambi i casi, assicurati di fornire il maggior contesto possibile al modello di messaggio. Ad esempio:

  • "Ciao {{1}}, in relazione al problema che ci hai segnalato, ci dispiace informarti che {{2}}. Ci scusiamo per gli eventuali disagi causati."
  • Abbiamo aggiornamenti riguardanti il tuo ticket. Rispondi se desideri continuare con l'intervento di assistenza."