Le moyen le plus simple et le plus intuitif pour les entreprises et les développeurs de commencer à s'appuyer sur l' API Whatsapp Cloud .
Envoyer un message texte au format libre à un destinataire
Envoyer un message de géolocalisation à un destinataire
Envoyer un document à un destinataire
Envoyer une image à un destinataire
Envoyer une vidéo à un destinataire
Envoyer un audio à un destinataire
Envoyer une liste de boutons au destinataire (le nombre maximum de boutons autorisés est de 3)
Envoyer une liste de boutons radio à un destinataire (le nombre maximum de boutons radio autorisés est de 10)
Envoyer un contact à un destinataire
Générer un code QR qui peut être scanné par un destinataire
Marquer un message comme lu
Analyser les messages entrants
Qu'est-ce que l'API WhatsApp Cloud ? Regardez cette vidéo de 60 secondes lors du lancement de l'API Whatsapp Cloud.
C'est quoi ce forfait ? Ce package est un wrapper NodeJS non officiel et open source autour de l'API officielle WhatsApp Cloud.
Pourquoi ce package est-il utile ? Parce qu'il vous permet d'utiliser l'API WhatsApp Cloud sans avoir à écrire beaucoup de code.
Puis-je utiliser ce package dans mon projet ? Oui, vous pouvez l'utiliser comme vous le souhaitez.
Puis-je contribuer à ce package ? Oui, vous pouvez contribuer à ce package en créant une pull request.
Pour installer ce package dans votre projet :
Utiliser NPM :
npm installer WhatsAppcloudapi_wrapper
Utilisation du fil :
fil ajouter WhatsAppcloudapi_wrapper
Importez d’abord le package comme suit :
const WhatsappCloudAPI = require('whatsappcloudapi_wrapper');
Initialisez ensuite la classe comme suit :
const Whatsapp = new WhatsappCloudAPI({accessToken : 'Votre jeton d'accès ici',senderPhoneNumberId : 'Votre identifiant de numéro de téléphone d'expéditeur ici',WABA_ID : 'Votre identifiant de compte Whatsapp Business ici',});
wait Whatsapp.sendText({message : 'Bonjour tout le monde',recipientPhone : 'votre numéro de téléphone du destinataire ici',});
> Quick Question: - How does a recipient phone number look like? > Quick Answer: - A recipient phone number is the international phone number of the recipient without the '+' prefix. - For example, where a Kenyan phone number is '+254712345678' we would send the message to a recipientPhone 254712345678. - For a phone number +15550253483 we would send the message to a recipientPhone 15550253483. - For an US phone number +1 555-555-5555 we would send the message to a recipientPhone 5555555555. Makes sense?
wait Whatsapp.sendLocation ({recipientPhone : 'votre numéro de téléphone du destinataire ici',latitude : 'votre latitude ici',longitude : 'votre longitude ici',nom : 'le nom de votre emplacement ici',adresse : 'votre rue/adresse ici ',});
// Envoyez un document hébergé sur une URL publique attendez Whatsapp.sendDocument ({recipientPhone : 'votre numéro de téléphone du destinataire ici', légende : 'Facture n° 123.',url : 'http://pdfkit.org/demo/out .pdf',});//OR// Envoyez un document qui se trouve dans votre système de fichiers local (le fichier sera téléchargé sur le serveur WhatsApp avant d'être envoyé).attendre Whatsapp.sendDocument({recipientPhone : 'votre numéro de téléphone du destinataire ici',file_path : './output.pdf',caption : 'Facture n°123',});
// Envoyez une image hébergée sur une URL publique attendez Whatsapp.sendImage ({recipientPhone : 'votre numéro de téléphone du destinataire ici',caption : 'Test',file_path : 'https://example.com/image.png',} );// OU// Envoyez une image qui se trouve dans votre système de fichiers local (le fichier sera d'abord téléchargé sur le serveur WhatsApp avant d'être envoyé).await Whatsapp.sendImage({recipientPhone: 'your numéro de téléphone du destinataire ici',légende : 'Test',file_path : './XEIDF3D5FTBDF1.png',});
// Envoyez une vidéo hébergée sur une URL publique attendez Whatsapp.sendVideo ({recipientPhone : 'votre numéro de téléphone du destinataire ici', légende : 'Test',url : 'https://test-videos.co.uk/vids/ bigbuckbunny/mp4/h264/720/Big_Buck_Bunny_720_10s_1MB.mp4',});// OU// Envoyer une vidéo qui est en votre système de fichiers local (le fichier sera téléchargé sur le serveur WhatsApp avant d'être envoyé).await Whatsapp.sendVideo({recipientPhone : 'votre numéro de téléphone du destinataire ici',caption : 'Test',file_path : './last.mp4' ,});
// Envoyez un audio hébergé sur une URL publique attendez Whatsapp.sendAudio ({recipientPhone : 'votre numéro de téléphone du destinataire ici',url : 'https://example.com/audio.mp3',});// OU/ / Envoyez un audio qui se trouve dans votre système de fichiers local (le fichier sera téléchargé sur le serveur WhatsApp avant d'être envoyé). attendez Whatsapp.sendAudio ({recipientPhone : 'votre numéro de téléphone du destinataire ici',caption : 'Test',file_path : './last.mp3',});
wait Whatsapp.sendSimpleButtons({recipientPhone : 'votre numéro de téléphone du destinataire ici',message : `Comment puis-je vous aider aujourd'hui`,listOfButtons : [{title : 'Voir quelques produits',id : 'see_categories',},{title : 'Envoyer ma facture',id : 'print_invoice',},{title : 'Parler à un humain',id : 'talk_to_human',},],});
wait Whatsapp.sendRadioButtons({recipientPhone : 'votre numéro de téléphone du destinataire ici',headerText : 'Les 10 meilleurs produits du Black Friday',bodyText :'Daggie propose d'excellents produits pour vous en fonction de votre historique d'achats précédent.nVeuillez sélectionner l'un des produits ci-dessous.',footerText: 'Approuvé par Daggie Blanqx',listOfSections: [{title: 'Top 3 Mode',lignes : [{titre : 'T-shirt LVX noir',description : 'KES 2999.00nLVX est un t-shirt en coton chaud',id : 'SKU12_black_lvx_tshirt',},{titre : 'Sweat à capuche violet',description : 'KES 1999.00nSweat à capuche violet avec logo Logrocket', id : 'SKU13_purple_hoodie',},{title : 'Air Jordan 1',description :'KES 10999.00nNous nous déplaçons là où les autres ne le font pas. Vous voulez voler ?',id : 'SKU14_air_jordan_1',},],},{title : 'Top 3 Gadgets', lignes : [{title : 'Apple Watch', description : 'KES 75999.00nLe temps est limité, profitez-en de chaque seconde',id : 'SKU15_apple_watch',},{title : 'Surface Pro',description : `KES 59999.00nNe vous contentez pas de surfer sur le Web, surfez sur le monde`,id : 'SKU16_surface_pro ',},{titre : 'Haut-parleur Xiaomi Beats', description : `KES 45699nC'est dans la façon dont votre cœur bat, comme Xiaomi bat.`,id : 'SKU17_xiaomi_beats_speaker',},],},{title : 'Top 3 Kitchen',rows : [{title: 'Portable Hand Mixer',description : ` KES7899nTentez vos papilles en mélangeant uniformément votre nourriture préférée.`,id : 'SKU18_portable_hand_mixer',},{title : 'Gaufrier antiadhésif',description : `KES7899nLes superbes gaufres sont préparées avec les meilleurs ingrédients.`,id : 'SKU19_non_stick_waffle_maker',},{title : '6 cuillères de cuisine' ,description : `KES7899nTiens ton bonheur bien.`,id : 'SKU20_6_set_cooking_spoons',},],},{titre : '1 choix aléatoire',lignes : [{titre : 'Nivea Icy Soap',description : `KES899nRestez hydraté et rafraîchi. Nourrissez votre peau.`,id: 'SKU21_nivea_icy_soap',},],},],});
wait Whatsapp.sendContact({recipientPhone : destinatairePhone, contact_profile : {adresses : [{rue : '1 Hacker Way', ville : 'Menlo Park', état : 'CA', code postal : '94025', pays : 'États-Unis' ,country_code : 'us',type : 'HOME',},{street : '200 Jefferson Dr',ville : 'Menlo Park',état : 'CA',code postal : '94025',pays : 'États-Unis',code_pays : 'us',type : 'WORK',},],anniversaire : '2002-02-14',e-mails : [{email : '[email protected]',tapez : 'WORK',},{email : '[email protected]',tapez : 'HOME',},], nom : {nom_formaté : 'Daggie Blanqx', prénom : 'Daggie', nom de famille : 'Blanqx', deuxième prénom : 'M.', suffixe : 'Sr', préfixe : 'Sw Engr', },org : {société : 'WhatsApp',département : 'Design',titre : 'Manager',},téléphones : [{téléphone : '+1 (940) 555-1234',type : 'HOME',wa_id : '16505551234', // facultatif},{téléphone : '+1 (650) 555 -1234', tapez : 'WORK', // optionnelwa_id : '16505551234', // facultatif},],urls : [{url : 'https://www.facebook.com',type : 'WORK',},{url : 'https://www.whatsapp.com',type : 'ACCUEIL ',},],},});
let result = wait Whatsapp.createQRCodeMessage({message : `Votre message de code QR ici. Je suis un message caché dans un code QR.`,imageType : 'png' || 'svg',});let urlOfImage = result.data .qr_image_url ;
Voir l'image ci-dessous pour savoir comment afficher le code QR :
wait Whatsapp.markMessageAsRead({message_id: 'l'identifiant de votre message ici',});// Une erreur non réessayable sera générée si le message n'est pas trouvé ou s'il s'agit d'un message qui a déjà été lu.
L’identifiant du bouton doit comporter entre 1 et 256 caractères.
Le titre du bouton doit comporter entre 1 et 20 caractères.
La liste des articles est limitée à 10.
La description des éléments de la liste doit comporter entre 1 et 72 caractères.
Le titre de la liste doit comporter entre 1 et 24 caractères.
L'identifiant de la liste doit comporter entre 1 et 200 caractères.
// req.body est le corps de la requête qui envoie un ping au webhook. Les charges utiles non valides généreront une erreur et vous devez répondre avec le statut HTTP 5** ou 4**, et non 200.// n'oubliez pas de répondre avec le statut HTTP 200 à la fin d'une requête entrante réussie.let data = Whatsapp.parseMessage( req.body);/*data.isMessage sera vrai s'il s'agit d'un message d'un client, il sera faux sinon.data.isNotificationMessage sera vrai s'il s'agit d'une notification d'un client une Meta (par exemple une notification d'état de livraison/lecture du message), elle sera fausse sinon. data générera une erreur si le corps de la demande de webhook n'est pas valide ou ne provient pas de Meta.*/
if (data?.isMessage) {let incomingMessage = data.message;let destinatairePhone = incomingMessage.from.phone; // extrait le numéro de téléphone du client destinataireRecipientName = incomingMessage.from.name; // extrait le nom du client typeOfMsg = incomingMessage.type; // extrait le type du messagelet message_id = incomingMessage.message_id; // extraire le message idif (typeOfMsg === 'simple_button_message') {let button_id = incomingMessage.button_reply.id;if (button_id === 'book_appointment') {// Le client a cliqué sur un simple bouton dont l'identifiant est 'book_appointment' '.// Vous pouvez y répondre avec une action sortante, par exemple un message texte. Attendez Whatsapp.sendText({message : `Bonjour client, Vous avez cliqué sur le bouton 'prendre rendez-vous'`,recipientPhone : 'votre numéro de téléphone du destinataire ici',});};};
if (data?.isMessage) {let incomingMessage = data.message;let destinatairePhone = incomingMessage.from.phone; // extrait le numéro de téléphone du client destinataireRecipientName = incomingMessage.from.name; // extrait le nom du client typeOfMsg = incomingMessage.type; // extrait le type du messagelet message_id = incomingMessage.message_id; // extraire l'idif du message (typeOfMsg === 'radio_button_message') {let selectionId = incomingMessage.list_reply.id;if (selectionId === 'morning_session') {// Le client a sélectionné le bouton radio dont l'identifiant est 'morning_session' .// Vous pouvez y répondre avec une action sortante, par exemple, un message texte Whatsapp.sendText({message : `Vous avez sélectionné l'option 'morning_session'`,recipientPhone : 'votre numéro de téléphone du destinataire ici'});};};
Si vous avez des questions, posez-les via les forums de discussion GitHub
Si vous avez des suggestions ou des commentaires, veuillez ouvrir un problème ou créer une pull request.
Ce package est en développement actif.
Cela signifie que de nouvelles fonctionnalités sont ajoutées régulièrement.
Si votre fonctionnalité préférée est manquante, vous pouvez toujours faire revenir une version en arrière ou créer une demande d'extraction qui sera examinée et fusionnée dans la prochaine version.
Merci pour votre contribution.
Bon codage !
Suivez-moi sur Twitter : @daggieblanqx
Je suis également sur LinkedIn, où vous pouvez m'identifier sur les projets géniaux que vous avez construits à l'aide de ce package : @daggieblanqx
Articles de blog : Logrocket/@Daggieblanqx