Les tarifs basés sur les conversations ont changé. Voir Tarifs pour en savoir plus sur notre nouveau modèle de tarification basé sur les conversations.
En outre, la visibilité de metric_types
a changé de manière effective le 1er juillet 2023. Consultez le tableau d’analyse des conversations pour plus de détails.
Modèles d’authentification
À partir du 1er avril 2024, les modèles d’authentification existants qui ne sont pas des modèles d’authentification avec bouton de mot de passe à usage unique ne pourront plus être envoyés ou modifiés, ni faire l’objet d’un appel.
Les modèles d’authentification seront disponibles en Inde à partir du 1er juillet 2024.
Les modèles sont utilisés lors de l’envoi de modèles de message avec l’API Cloud, hébergés par Meta ou avec l’API On-Premises. L’API Cloud examine les modèles et les paramètres des variables à l’aide du machine learning pour protéger la sécurité et l’intégrité de ses services. Cet examen n’occasionne aucun partage d’informations avec WhatsApp.
Ces modèles peuvent être créés par le biais de l’API Business Management ou de WhatsApp Business Manager. Le nombre de modèles que peut avoir un compte WhatsApp Business est déterminé par son entreprise mère. Si une entreprise mère n’est pas vérifiée, chacun de ses comptes WhatsApp Business est limité à 250 modèles. En revanche, si elle est vérifiée et qu’au moins un de ses comptes WhatsApp Business est associé à un numéro de téléphone professionnel avec un nom à l’écran approuvé, chacun de ses comptes WhatsApp Business peut avoir jusqu’à 6 000 modèles.
Vous aurez besoin des éléments suivants :
Vous pouvez ajouter un modèle de message dans une langue spécifique lors de la création d’un modèle. Ces modèles entrent dans la comptabilisation de la limite. Respectez une certaine cohérence dans vos traductions. Pour plus d’informations, consultez l’article Pourquoi les erreurs de type « structure indisponible » s’affichent-elles dans mon rappel ? des pages d’aide.
Pour créer un modèle, envoyez une requête POST au point de terminaison Compte WhatsApp Business > Modèles de message.
POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates
{ "name": "<NAME>", "category": "<CATEGORY>", "allow_category_change": <ALLOW_CATEGORY_CHANGE>, "language": "<LANGUAGE>", "components": [<COMPONENTS>] }
Espace réservé | Description | Exemple de valeur |
---|---|---|
Chaîne | Obligatoire. Nom du modèle. 512 caractères maximum. |
|
Énumération | Obligatoire. Catégorie du modèle. Voir la section Catégories de modèles ci-dessous. |
|
Booléen | Facultatif. Défini sur true pour nous permettre d’affecter automatiquement une catégorie. En cas d’omission, le modèle peut être refusé en raison de l’affectation d’une mauvaise catégorie. |
|
Énumération | Obligatoire. Code langue et région du modèle. |
|
Chaîne | Facultatif. Nom exact du modèle de la bibliothèque de modèles utilitaires. Découvrez comment créer des modèles avec la bibliothèque de modèles utilitaires |
|
Tableau d’objets | Facultatif. Site Web et/ou numéro de téléphone de l’entreprise utilisés dans le modèle. Remarque : pour les modèles utilitaires qui contiennent des boutons, cette propriété n’est pas facultative. Découvrez comment créer des modèles avec la bibliothèque de modèles utilitaires |
|
Tableau d’objets | Obligatoire. Composants constituant le modèle. Voir la section Composants du modèle ci-dessous. | Voir la section Composants du modèle ci-dessous. |
Les modèles doivent être classés dans l’une des catégories suivantes : Les catégories sont prises en compte dans les tarifs et la catégorie que vous désignez sera validée lors de la création du modèle.
AUTHENTICATION
MARKETING
UTILITY
Consultez notre document Catégorisation des modèles pour déterminer la catégorie à utiliser lors de la création de modèles.
Les modèles incluent du texte, du contenu multimédia et des composants interactifs en fonction des besoins de votre entreprise. Consultez le document Composants du modèle qui fournit la liste complète des composants disponibles et de leurs exigences, ainsi que des exemples de requêtes.
Lorsque vous créez un modèle, définissez ses composants en affectant une grille d’objets composants à la propriété components dans le corps de la requête.
Voici un exemple de grille contenant un corps de texte avec deux variables et quelques valeurs, un bouton numéro de téléphone et un bouton URL :
[ { "type": "BODY", "text": "Thank you for your order, {{1}}! Your confirmation number is {{2}}. If you have any questions, please use the buttons below to contact support. Thank you for being a customer!", "example": { "body_text": [ [ "Pablo","860198-230332" ] ] } }, { "type": "BUTTONS", "buttons": [ { "type": "PHONE_NUMBER", "text": "Call", "phone_number": "15550051310" }, { "type": "URL", "text": "Contact Support", "url": "https://www.luckyshrub.com/support" } ] } ]
Consultez le document Composants du modèle qui fournit la liste complète des composants disponibles et de leurs exigences, ainsi que des exemples de requêtes.
Notez que les modèles de la catégorie AUTHENTICATION
ont des exigences spécifiques liées à leurs composants. Consultez la page Modèles d’authentification.
Lorsque vous envoyez une requête de création de modèle, nous validons immédiatement sa catégorie en utilisant nos règles de catégorisation de modèle.
status
sur PENDING
. Le modèle sera alors soumis à examen.status
sur REJECTED
et déclenchons un webhook de mise à jour du statut du modèle de message avec reason
défini sur INCORRECT_CATEGORY
. Nous vous recommandons d’écouter attentivement ce webhook pour identifier les modèles refusés, ou d’interroger le champ rejected_reason
sur les modèles qui viennent d’être créés, lequel aura la valeur TAG_CONTENT_MISMATCH
.Dans les deux cas, le statut initial du modèle est renvoyé avec la réponse de l’API.
Si le statut de votre modèle a été défini sur REJECTED
dans le cadre de la validation de la catégorie, vous disposez de plusieurs options :
Vous pouvez inclure la propriété allow_category_change
dans votre requête pour nous permettre d’affecter automatiquement une catégorie en fonction du contenu de votre modèle et de nos règles de catégorisation de modèle. Cela peut éviter que le statut de votre modèle soit défini immédiatement sur REJECTED
en raison de l’affectation à une mauvaise catégorie.
Notez que la catégorisation automatique n’est possible que lors de la création d’un modèle.
Les modèles ayant le statut PENDING
sont soumis à examen. Nous examinons le contenu de chaque modèle venant d’être créé ou modifié pour nous assurer qu’il respecte nos règles et politiques relatives au contenu. Selon les résultats de cet examen, nous modifions automatiquement son statut pour le définir sur APPROVED
ou REJECTED
, ce qui déclenche un webhook de mise à jour du statut du modèle de message.
Selon le résultat de la validation de catégorie et de l’examen du modèle, nous définissons ou modifions le status
de votre modèle sur l’une des valeurs suivantes :
APPROVED
: le modèle a passé l’examen avec succès et il a été approuvé, il peut alors être envoyé dans les messages du modèle.PENDING
: le modèle a passé la validation de catégorie avec succès et il est soumis à examen.REJECTED
: le modèle a échoué à la validation de catégorie ou à l’examen. Vous pouvez interroger le champ rejected_reason pour en connaître la raison.Consultez la référence du point de terminaison du modèle de message WhatsApp pour tous les champs et statuts possibles.
Si la requête aboutit, l’API renvoie l’ID du modèle que vous venez de créer, son statut et sa catégorie. Il y a trois résultats possibles :
status
est PENDING
).status
est REJECTED
)status
est APPROVED
). Cela est possible uniquement pour les modèles d’authentification avec des boutons de mot de passe unique.{ "id": "<ID>", "status": "<STATUS>", "category": "<CATEGORY>" }
Espace réservé | Description | Exemple de valeur |
---|---|---|
| ID du modèle. |
|
|
| |
| Catégorie de modèle que vous avez désignée ou celle que nous avons affectée. |
|
Voici un exemple de requête visant à créer un modèle de promotion saisonnière avec les composants suivants :
Pour d’autres exemples, consultez cette section.
curl 'https://graph.facebook.com/v19.0
/102290129340398/message_templates' \
-H 'Authorization: Bearer EAAJB...' \
-H 'Content-Type: application/json' \
-d '
{
"name": "seasonal_promotion",
"language": "en_US",
"category": "MARKETING",
"components": [
{
"type": "HEADER",
"format": "TEXT",
"text": "Our {{1}} is on!",
"example": {
"header_text": [
"Summer Sale"
]
}
},
{
"type": "BODY",
"text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",
"example": {
"body_text": [
[
"the end of August","25OFF","25%"
]
]
}
},
{
"type": "FOOTER",
"text": "Use the buttons below to manage your marketing subscriptions"
},
{
"type":"BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Unsubscribe from Promos"
},
{
"type":"QUICK_REPLY",
"text": "Unsubscribe from All"
}
]
}
]
}'
{ "id": "572279198452421", "status": "PENDING", "category": "MARKETING" }
Utilisez l’API Cloud ou l’API On-Premises pour envoyer un modèle dans un modèle de message.
Nous vous recommandons d’ajouter un bouton de réponse rapide aux modèles de catégorie MARKETING
pour que votre clientèle puisse facilement se désinscrire de vos messages marketing sans bloquer votre activité. Par conséquent, vous pourrez adapter le volume plus rapidement. Pour découvrir les avantages de l’ajout d’un bouton de désinscription aux modèles marketing, consultez cet article.
Votre entreprise doit prendre les mesures nécessaires pour cesser d’envoyer des messages marketing aux client·es qui ont choisi de ne plus les recevoir. Sinon, votre taux de blocage et votre score de qualité seront impactés.
Pour obtenir la liste des modèles appartenant à un compte WhatsApp Business, envoyez une requête GET au point de terminaison Compte WhatsApp Business > Modèles de message.
GET /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates ?fields=<FIELDS> &limit=<LIMIT>
Espace réservé | Description | Exemple de valeur |
---|---|---|
Liste de valeurs séparées par une virgule | Facultatif. Liste de champs de modèle que vous voulez renvoyer. |
|
Nombre entier | Facultatif. Nombre maximum de modèles que vous voulez renvoyer dans chaque page de résultats. |
|
curl 'https://graph.facebook.com/v19.0
/102290129340398/message_templates?fields=name,status&limit=3' \
-H 'Authorization: Bearer EAAJB...'
{
"data": [
{
"name": "seasonal_promotion_text_only",
"status": "APPROVED",
"id": "564750795574598"
},
{
"name": "seasonal_promotion_video",
"status": "PENDING",
"id": "1252715608684590"
},
{
"name": "seasonal_promotion_image_header",
"status": "PENDING",
"id": "1372429296936443"
}
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MgZDZD"
},
"next": "https://graph.facebook.com/v19.0
/102290129340398/message_templates?fields=name%2Cstatus&limit=3&after=MgZDZD"
}
}
Vous pouvez uniquement renvoyer des modèles avec des valeurs de champs spécifiques en incluant le champ et la valeur souhaitée dans votre requête. Par exemple, ajoutez status=REJECTED
pour obtenir uniquement les modèles qui ont été refusés.
curl 'https://graph.facebook.com/v19.0
/104996122399160/message_templates?fields=name,status&status=REJECTED' \
-H 'Authorization: Bearer EAAJB...'
{ "data": [ { "name": "seasonal_promotion_text_only_v4", "status": "REJECTED", "id": "564750795574598" }, { "name": "discount_qualifier", "status": "REJECTED", "id": "163917509772674" }, { "name": "limited_time_offer_tuscan_getaway_2023", "status": "REJECTED", "id": "202389039167147" }, { "name": "2023_mar_promo_2", "status": "REJECTED", "id": "1116034925734553" }, { "name": "2023_mar_promo", "status": "REJECTED", "id": "952600926095321" } ] }
L’espace de noms du modèle de message est nécessaire pour envoyer des messages avec les modèles.
Pour obtenir l’espace de noms d’un modèle, envoyez une requête GET
au point de terminaison /{whatsapp-business-account-ID}
et incluez le champ message_template_namespace
.
curl -i -X GET "https://graph.facebook.com/v19.0
/{whatsapp-business-account-ID}
?fields=message_template_namespace
&access_token={system-user-access-token}"
Si la demande aboutit, un objet JSON contenant l’ID du compte WhatsApp Business et l’espace de nom est renvoyé :
{ "id": "1972385232742141", "message_template_namespace": "12abcdefghijk_34lmnop" }
Pour modifier un modèle, envoyez une requête POST au point de terminaison Modèle de message WhatsApp. Vous pouvez aussi modifier un modèle manuellement en utilisant le panneau Gestionnaire WhatsApp > Outils du compte > Modèles de message.
APPROVED
, REJECTED
ou PAUSED
.category
ou les components
d’un modèle.category
d’un modèle approuvé.POST /<WHATSAPP_MESSAGE_TEMPLATE_ID>
{ "category": "<CATEGORY>", "components": [<COMPONENTS>] }
Espace réservé | Description | Exemple de valeur |
---|---|---|
Chaîne | Obligatoire en cas d’omission de la propriété components. Catégorie du modèle. |
|
Tableau | Obligatoire en cas d’omission de la propriété de catégorie. Tableau d’objets des composants du modèle. | Voir Exemple de requête (Modification des composants) ci-dessous. |
Exemple de requête pour le corps de texte d’un modèle qui contenait à la fois du contenu marketing et du contenu utilitaire afin qu’il ne contienne plus que du contenu marketing.
curl 'https://graph.facebook.com/v19.0
/564750795574598' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
"components": [
{
"type": "HEADER",
"format": "TEXT",
"text": "Our {{1}} is on!",
"example": {
"header_text": [
"Spring Sale"
]
}
},
{
"type": "BODY",
"text": "Shop now through {{1}} and use code {{2}} to get {{3}} off of all merchandise.",
"example": {
"body_text": [
[
"the end of April",
"25OFF",
"25%"
]
]
}
},
{
"type": "FOOTER",
"text": "Use the buttons below to manage your marketing subscriptions"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Unsubcribe from Promos"
},
{
"type": "QUICK_REPLY",
"text": "Unsubscribe from All"
}
]
}
]
}'
Exemple de requête pour modifier la catégorie du modèle de UTILITY
à MARKETING
.
curl 'https://graph.facebook.com/v19.0
/1252715608684590' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
"category": "MARKETING"
}'
Exemple de réponse en cas de réussite.
{ "success": true }
Utilisez le point de terminaison Compte WhatsApp Business > Modèles de message pour supprimer un modèle à partir de son nom ou de son ID.
PENDING_DELETION
et nous tenterons de délivrer le message pendant 30 jours. Passé ce délai, vous recevrez une erreur « Structure indisponible », car le message ne sera pas délivré.Tous les modèles portant le même nom, quelle que soit la langue, seront supprimés.
DELETE /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates ?name=<NAME>
curl -X DELETE 'https://graph.facebook.com/v16.0/102290129340398/message_templates?name=order_confirmation' \ -H 'Authorization: Bearer EAAJB...'
{ "success": true }
Pour supprimer uniquement le modèle avec un ID particulier, la requête doit contenir cet ID en plus du nom du modèle.
DELETE /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates ?hsm_id=<HSM_ID>, &name=<NAME>
curl -X DELETE 'https://graph.facebook.com/v19.0
/102290129340398/message_templates?hsm_id=1407680676729941&name=order_confirmation' \
-H 'Authorization: Bearer EAAJB...'
{ "success": true }