UNPKG

meta-whatsapp-cloud-api-sdk

Version:

This is the SDK for simplifying messaging and webhooks for meta whatsapp cloud api.

276 lines (232 loc) 6.8 kB
# META-WHATSAPP-CLOUD-API-SDK This Node.js SDK provides functionalities to interact with the WhatsApp Cloud Business API, including sending templates, messages, attachments, uploading media, and verifying webhooks. ## Installation 1. Install the package in your project. ``` npm i meta-whatsapp-cloud-api-sdk ``` 2. Require the package in your project. ``` const Whatsapp = require('meta-whatsapp-cloud-api-sdk'); ``` ## Usage ### Initialization ``` // Provide Phone Number ID, Access Token, Webhook Verify Token, and Meta App Version. const phoneNumberId = "your_phone_number_id"; const accessToken = "your_access_token"; const appVersion = "your_app_version"; // Optional, Default version is v19.0. const accountId = "your_account_id"; // Optional, Add this if you wish to use Template Management. const webhookVerifyToken = "your_webhook_verify_token"; // Optional, Add this if you wish to use Webhook. const whatsapp = new Whatsapp(phoneNumberId, accessToken, appVersion, accountId, webhookVerifyToken); ``` ### Sending Templates ``` // Example header const header = [ { type: "image", image: { link: "URL" } }, { type: "location", location: { latitude: "<LATITUDE>", longitude: "<LONGITUDE>", name: "<NAME>", address: "<ADDRESS>" } } ]; // Example body const body = [ { type: "text", text: "TEXT-STRING" }, { type: "currency", currency: { fallback_value: "VALUE", code: "USD", amount_1000: NUMBER } }, { type: "date_time", date_time: { fallback_value: "MONTH DAY, YEAR" } } ]; // Example buttons const buttons = [ { type: "button", sub_type: "quick_reply", index: "0", parameters: [ { type: "payload", payload: "PAYLOAD" } ] }, { type: "button", sub_type: "quick_reply", index: "1", parameters: [ { type: "payload", payload: "PAYLOAD" } ] } ]; // Send a template message (async/await) - header, body and buttons parameters are optional const response = await whatsapp.sendTemplate(to, templateName, language, header, body, buttons); Or // Send a template message (promise) - header, body and buttons parameters are optional whatsapp.sendTemplate(to, templateName, language, header, body, buttons) .then((response)=>{ console.log(response); }).catch((error)=>{ console.log(error); }); ``` ### Sending Messages ``` // Send a text message (async/await) const response = await whatsapp.sendMessage(to, message); Or // Send a text message (promise) whatsapp.sendMessage(to, message) .then((response)=>{ console.log(response); }).catch((error)=>{ console.log(error); }); ``` ### Sending Image ``` // Upload media (async/await) const media = await whatsapp.uploadMedia(file); // Send an image message (async/await) - 2nd Parameter is Media Id or Media Link const response = await whatsapp.sendImage(to, media.id, caption); Or // Upload media (promise) whatsapp.uploadMedia(file) .then((media)=>{ // Send an image message (promise) - 2nd Parameter is Media Id or Media Link whatsapp.sendImage(to, media.id, caption) .then((response)=>{ console.log(response); }).catch((error)=>{ console.log(error); }); }).catch((error)=>{ console.log(error); }); ``` ### Sending Video ``` // Upload media (async/await) const media = await whatsapp.uploadMedia(file); // Send a video message (async/await) - 2nd Parameter is Media Id or Media Link const response = await whatsapp.sendVideo(to, media.id, caption); Or // Upload media (promise) whatsapp.uploadMedia(file) .then((media)=>{ // Send a video message (promise) - 2nd Parameter is Media Id or Media Link whatsapp.sendVideo(to, media.id, caption) .then((response)=>{ console.log(response); }).catch((error)=>{ console.log(error); }); }).catch((error)=>{ console.log(error); }); ``` ### Sending Audio ``` // Upload media (async/await) const media = await whatsapp.uploadMedia(file); // Send an audio message (async/await) - 2nd Parameter is Media Id or Media Link const response = await whatsapp.sendAudio(to, media.id); Or // Upload media (promise) whatsapp.uploadMedia(file) .then((media)=>{ // Send an audio message (promise) - 2nd Parameter is Media Id or Media Link whatsapp.sendAudio(to, media.id) .then((response)=>{ console.log(response); }).catch((error)=>{ console.log(error); }); }).catch((error)=>{ console.log(error); }); ``` ### Sending Document ``` // Upload media (async/await) const media = await whatsapp.uploadMedia(file); // Send a document message (async/await) - 2nd Parameter is Media Id or Media Link const response = await whatsapp.sendDocument(to, media.id, caption, filename); Or // Upload media (promise) whatsapp.uploadMedia(file) .then((media)=>{ // Send a document message (promise) - 2nd Parameter is Media Id or Media Link whatsapp.sendDocument(to, media.id, caption, filename) .then((response)=>{ console.log(response); }).catch((error)=>{ console.log(error); }); }).catch((error)=>{ console.log(error); }); ``` ### Download Media ``` // Download media (async/await) const response = await whatsapp.downloadMedia(mediaId); Or // Download media (promise) whatsapp.downloadMedia(mediaId) .then((response)=>{ console.log(response); }).catch((error)=>{ console.log(error); }); ``` ### Webhook ``` // Verify webhook endpoint (Express.js example) app.get("/webhook", whatsapp.verifyWebhook); ``` ### Manage Templates ``` // Register template const response = await whatsapp.registerTemplate(name, components, category, allowCategoryChange, language); // Get templates const response = await whatsapp.getTemplates(query, fields, limit); // Get template Info const response = await whatsapp.getTemplateInfo(templateId); // Update template const response = await whatsapp.updateTemplate(templateId, category, components); // Delete template const response = await whatsapp.deleteTemplate(name, templateId); ``` ### Validate WhatsApp Account Users or Contacts ``` // Validate contacts const response = await whatsapp.validateContacts(contacts, blocking, forceCheck); ```