Notifications WhatsApp
Configuration du compte
Section intitulée « Configuration du compte »La configuration de l’API Cloud WhatsApp de Meta est repartie entre deux portails distincts : Meta Business Manager pour la gestion des utilisateurs systeme et des jetons permanents, et le tableau de bord Meta Developer pour la creation de l’application et la localisation de l’identifiant de numero de telephone.
- Creer un compte Meta Business Manager Rendez-vous sur Meta Business Manager puis connectez-vous ou creez un compte. Vos comptes WhatsApp Business (WABA) et utilisateurs systeme sont geres ici.
- Creer un compte Meta Developer et une application Rendez-vous sur Meta for Developers puis connectez-vous ou creez un compte. Creez une nouvelle application de type Business, puis ajoutez WhatsApp comme produit. Si vous y etes invite depuis la page d’accueil, cliquez sur Customise Use Case et selectionnez le cas d’usage Connect to Customers (WhatsApp) pour acceder a la configuration de l’API Cloud.
- Generer un jeton d’acces permanent via Business Manager
- Dans Meta Business Manager, allez dans Parametres > Utilisateurs > Utilisateurs systeme.
- Creez un utilisateur systeme (role Administrateur ou Employe).
- Cliquez sur Ajouter des ressources, selectionnez votre application WhatsApp et activez la permission
whatsapp_business_messaging(et optionnellementwhatsapp_business_management). - Cliquez sur Generer un jeton, selectionnez votre application, confirmez les permissions et copiez le jeton obtenu. Ce jeton permanent n’expire pas sauf revocation et est utilise dans le champ Apprise
token.
- Recuperer votre
From Phone Number IDRetournez sur le tableau de bord Meta Developer, ouvrez votre application, puis naviguez vers WhatsApp > API Setup (ou Premiers pas). Votre numero expediteur et son Phone Number ID y sont affiches. Cet identifiant n’est pas votre vrai numero de telephone — il s’agit d’un ID numerique distinct (environ 14 chiffres) attribue par Meta. - Enregistrer les numeros destinataires
- Pendant les tests en sandbox, vous devez verifier chaque numero que vous souhaitez contacter via l’interface Meta.
- En production, votre entreprise devra etre verifiee et disposer du niveau de messagerie approprie.
- Facultatif : creer et faire approuver des modeles de message
- Ouvrez WhatsApp > Message Templates dans le tableau de bord Developer, ou utilisez le gestionnaire WhatsApp dans Business Manager.
- Creez un modele, par exemple
hello_world, puis attendez son approbation. - Les modeles permettent une messagerie structuree avec des variables comme
{{1}},{{2}}, et peuvent etre utilises via le prefixe Apprisetemplate:. Cela est explique plus bas.
Une fois tout cela en place, vous etes pret a envoyer des messages WhatsApp avec Apprise.
La syntaxe valide est la suivante :
whatsapp://{token}@{from_phone_id}/{targets}whatsapp://{template}:{token}@{from_phone_id}/{targets}
Les cibles peuvent etre des numeros de telephone, des identifiants de groupe, ou un melange des deux :
+{phone}— numero de telephone au format E.164 (le prefixe+est requis ; les chiffres seuls sont aussi acceptes)#{group_id}— identifiant de groupe WhatsApp (numerique, prefixe#obligatoire)
Détail des Paramètres
Section intitulée « Détail des Paramètres »| Variable | Obligatoire | Description |
|---|---|---|
| token | Oui | Jeton d’acces associe a votre application Meta WhatsApp. |
| from | Oui | From Phone ID associe a votre application Meta WhatsApp ; il ne faut pas le confondre avec votre vrai numero de telephone. Il s’agit d’un identifiant distinct, d’environ 14 chiffres. |
| targets | Oui | Un ou plusieurs destinataires — numeros de telephone (+{phone} ou @{phone}) et/ou identifiants de groupe (#{group_id}). Au moins une cible doit etre fournie. |
| template | Non | Vous pouvez facultativement specifier ici un template_name, comme hello_world, le modele par defaut cree lors de la configuration de votre application Meta. Apprise utilisera alors le modele defini. |
| lang | Non | Si vous utilisez un modele, vous pouvez facultativement surcharger la langue par defaut, en_US, afin de pointer vers une autre version du modele specifie. |
Paramètres Globaux
Section intitulée « Paramètres Globaux »| Variable | Description |
|---|---|
| overflow | Ce paramètre peut être défini sur split, truncate ou upstream. Il détermine la manière dont Apprise remet le message que vous lui transmettez. Par défaut, il vaut upstream. 👉 upstream : ne fait aucune modification et transmet le message exactement tel qu’il a été reçu au service.👉 truncate : veille à ce que le message tienne dans la limite amont documentée par le service. Si plus d’informations sont fournies que la limite définie, l’excédent est tronqué.👉 split : similaire à truncate, sauf que si le message dépasse la limite amont documentée par le service, il est découpé en plusieurs morceaux plus petits puis envoyés séquentiellement. |
| format | Ce paramètre peut être défini sur text, html ou markdown. Certains services prennent en charge plusieurs formats de publication du contenu. La valeur par défaut varie selon le service choisi et peut correspondre à l’un de ces trois formats. Vous pouvez facultativement forcer cette option pour vous écarter du comportement par défaut. Si le service ne prend pas en charge plusieurs formats de transmission, ce champ est ignoré. |
| verify | Les requêtes externes vers des emplacements sécurisés, par exemple via https, utilisent des certificats. Par défaut, Apprise vérifie la validité de ces certificats ; si ce n’est pas le cas, aucune notification n’est envoyée à la source. Dans certains cas, un utilisateur ne dispose pas d’une autorité de certification pour valider la clé ou fait simplement confiance à la source ; dans ce cas, vous pouvez définir ce drapeau sur no. Par défaut, il vaut yes. |
| redirect | Par défaut, Apprise suit les redirections HTTP (réponses 3xx) émises par le serveur distant, conformément au comportement de la bibliothèque requests sous-jacente. Si vous souhaitez empêcher la transmission des en-têtes personnalisés et des identifiants vers des destinations différentes de l’URL d’origine, définissez cette option sur no. Par défaut, elle vaut yes. |
| cto | Signifie Socket Connect Timeout. Il s’agit du nombre de secondes pendant lesquelles Requests attend que votre client établisse une connexion avec une machine distante, ce qui correspond à l’appel connect() sur la socket. La valeur par défaut est de 4.0 secondes. |
| rto | Signifie Socket Read Timeout. Il s’agit du nombre de secondes pendant lesquelles le client attend que le serveur envoie une réponse. La valeur par défaut est de 4.0 secondes. |
| emojis | Active la prise en charge des emojis, par exemple :+1: qui sera traduit en 👍. Par défaut, cette option vaut no. Remarque : selon la configuration côté serveur, l’administrateur peut désactiver globalement la prise en charge des emojis ; mais par défaut, ce n’est pas le cas. |
| tz | Identifie le fuseau horaire de la base IANA que vous souhaitez utiliser. Par défaut, celui-ci est détecté à partir de la configuration du serveur qui exécute Apprise. Vous pouvez le définir sur des valeurs comme America/Toronto, ou sur tout autre fuseau correctement formaté correspondant à votre région. |
| retry | Nombre de tentatives de remise supplémentaires après le premier échec, avant d’abandonner. Accepte un entier compris entre 0 et 10. La valeur par défaut est 0 (aucune nouvelle tentative — une seule tentative est effectuée). Lorsqu’il est combiné avec wait, Apprise marque une pause du nombre de secondes spécifié entre chaque tentative. |
| wait | Nombre de secondes à attendre entre les nouvelles tentatives. Accepte une valeur décimale comprise entre 0.0 et 20.0 ; les entiers sont automatiquement convertis en virgule flottante. La valeur par défaut est 0.5. Ce paramètre n’est utile que si retry est supérieur à zéro — un service avec retry=0 effectue exactement une tentative, quelle que soit la valeur de wait. |
| optional | Lorsqu’il est défini sur yes, un échec de remise pour ce service est silencieusement absorbé. L’appel global notify() retourne quand même True même si ce point de terminaison était injoignable, à condition que tous les services requis (non optionnels) du même lot aient réussi. Ce drapeau ne saute pas la remise ni ne contourne la logique de nouvelles tentatives — toutes les tentatives configurées sont effectuées avant que l’échec soit absorbé. Par défaut, il vaut no, ce qui signifie que chaque échec est propagé à l’appelant. |
Variables de Modele
Section intitulée « Variables de Modele »Les modeles que vous creez permettent de definir {{1}}, {{2}}, etc., qui seront remplaces lors de l’execution d’Apprise. Pour predefinir ces valeurs, il suffit d’utiliser le prefixe :, deux-points, devant l’index a renseigner.
Par exemple, ?:3=Ma Valeur affectera Ma Valeur a {{3}} a l’execution. Vous devez fournir tous les index attendus, sinon le serveur distant renverra une erreur.
Si vous souhaitez associer le body ou le type d’Apprise a un index, utilisez ces mots-cles speciaux avec le prefixe : pour definir la correspondance. Par exemple, ?:body=1 est accepte et placera le contenu du body d’Apprise dans {{1}}.
Exemples
Section intitulée « Exemples »Envoyer une notification WhatsApp a un groupe :
# Envoyer un message a un numero de telephone :apprise -b "Message de Test" \ "whatsapp://token@from_phone_id/+14155552671/"
# Envoyer un message a un groupe WhatsApp (niveau Meta requis) :apprise -b "Message de Test" \ "whatsapp://token@from_phone_id/#120363043968066561"
# Envoyer a un numero de telephone et a un groupe en un seul appel :apprise -b "Message de Test" \ "whatsapp://token@from_phone_id/+14155552671/#120363043968066561"
# L'ancienne forme fonctionne toujours (chiffres seuls sans '+') :apprise -b "Message de Test" \ "whatsapp://token@from_phone_id/to_phone_no/"
# Les modeles peuvent etre utilises ainsi :apprise -b "Message de Test" \ "whatsapp://template_name:token@from_phone_id/to_phone_no/"
# Si vous avez defini les tokens {{1}} et {{2}}, vous pouvez leur attribuer des valeurs ainsi :apprise -b "Message de Test" \ "whatsapp://template_name:token@from_phone_id/to_phone_no/?:1=the data i want put here&:2=more data here"
# La forme :<id> permet d'associer les elements {{<id>}}. Si vous souhaitez mapper le body# ou le type du message a un index, 2 mots-cles reserves sont disponibles pour cela :# L'exemple ci-dessous place la valeur du body Apprise dans l'element {{1}} :apprise -b "Message de Test" \ "whatsapp://template_name:token@from_phone_id/to_phone_no/?:body=1"
# Vous pouvez melanger mots-cles et index :apprise -b "Message de Test" \ "whatsapp://template_name:token@from_phone_id/to_phone_no/?:body=2&:type=3&1:MyID1Value"
# Il revient au developpeur de s'assurer que tous les {{1}}, {{2}}, etc. sont correctement renseignes Questions ou commentaires ?
Documentation
Vous avez repéré une faute de frappe ou une erreur ? Signalez-la ou proposez une correction .
Problèmes Techniques
Vous rencontrez un problème avec le code ? Ouvrez un ticket sur GitHub :