La forma más fácil e intuitiva para que las empresas y los desarrolladores comiencen a desarrollar la API de Whatsapp Cloud .
Enviar un mensaje de texto con formato libre a un destinatario
Enviar un mensaje de ubicación geográfica a un destinatario
Enviar un documento a un destinatario
Enviar una imagen a un destinatario
Enviar un vídeo a un destinatario
Enviar un audio a un destinatario
Enviar una lista de botones al destinatario (el número máximo de botones permitidos es 3)
Enviar una lista de botones de opción a un destinatario (el número máximo de botones de opción permitidos es 10)
Enviar un contacto a un destinatario
Genere un código QR que pueda ser escaneado por un destinatario
Marcar un mensaje como leído
Analizar mensajes entrantes
¿Qué es la API de la nube de WhatsApp? Mire este video de 60 segundos durante el lanzamiento de la API de Whatsapp Cloud.
¿Qué es este paquete? Este paquete es un contenedor NodeJS no oficial y de código abierto para la API oficial de WhatsApp Cloud.
¿Por qué es útil este paquete? Porque te permite utilizar la API de WhatsApp Cloud sin tener que escribir mucho código.
¿Puedo usar este paquete en mi proyecto? Sí, puedes usarlo como quieras.
¿Puedo contribuir a este paquete? Sí, puedes contribuir a este paquete creando una solicitud de extracción.
Para instalar este paquete en su proyecto:
Usando NPM:
npm instala whatsappcloudapi_wrapper
Usando hilo:
hilo agregar whatsappcloudapi_wrapper
Primero importe el paquete de la siguiente manera:
const WhatsappCloudAPI = require('whatsappcloudapi_wrapper');
Luego inicialice la clase de la siguiente manera:
const Whatsapp = new WhatsappCloudAPI({accessToken: 'Su token de acceso aquí',senderPhoneNumberId: 'La identificación de su número de teléfono del remitente aquí',WABA_ID: 'La identificación de su cuenta comercial de Whatsapp aquí',});
await Whatsapp.sendText({mensaje: 'Hola mundo',recipientPhone: 'aquí el número de teléfono de tu destinatario',});
> 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?
aguarde Whatsapp.sendLocation({recipientPhone: 'su número de teléfono de destinatario aquí', latitud: 'su latitud aquí', longitud: 'su longitud aquí', nombre: 'el nombre de su ubicación aquí', dirección: 'su ubicación calle/dirección aquí ',});
// Envía un documento alojado en una URL públicaespera Whatsapp.sendDocument({recipientPhone: 'aquí el número de teléfono de tu destinatario',caption: 'Factura #123.',url: 'http://pdfkit.org/demo/out .pdf',});//O// Envíe un documento que esté en su sistema de archivos local (el archivo se cargará primero en el servidor de WhatsApp antes de enviarlo).await Whatsapp.sendDocument({recipientPhone: 'su número de teléfono del destinatario aquí',file_path: './output.pdf',caption: 'Factura #123',});
// Envía una imagen alojada en una URL públicaespera Whatsapp.sendImage({recipientPhone: 'aquí el número de teléfono de tu destinatario',caption: 'Test',file_path: 'https://example.com/image.png',} );// O// Envíe una imagen que esté en su sistema de archivos local (el archivo se cargará primero en el servidor de WhatsApp antes de enviarlo).await Whatsapp.sendImage({recipientPhone: 'aquí su número de teléfono del destinatario',caption: 'Prueba',file_path: './XEIDF3D5FTBDF1.png',});
// Envía un vídeo alojado en una URL públicaespera Whatsapp.sendVideo({recipientPhone: 'aquí el número de teléfono de tu destinatario',caption: 'Test',url: 'https://test-videos.co.uk/vids/ bigbuckbunny/mp4/h264/720/Big_Buck_Bunny_720_10s_1MB.mp4',});// O// Envía un vídeo que esté en tu sistema de archivos local (El archivo se cargará primero en el servidor de WhatsApp antes de enviarlo).await Whatsapp.sendVideo({recipientPhone: 'aquí el número de teléfono de su destinatario',caption: 'Test',file_path: './last.mp4',}) ;
// Enviar un audio alojado en una URL públicaawait Whatsapp.sendAudio({recipientPhone: 'aquí el número de teléfono de tu destinatario',url: 'https://example.com/audio.mp3',});// O/ / Envíe un audio que esté en su sistema de archivos local (el archivo se cargará primero en el servidor de WhatsApp antes de enviarlo).await Whatsapp.sendAudio({recipientPhone: 'aquí el número de teléfono de su destinatario',caption: 'Prueba',file_path: './last.mp3',});
await Whatsapp.sendSimpleButtons({recipientPhone: 'aquí el número de teléfono de su destinatario',mensaje: `¿Cómo puedo ayudarle hoy?,listOfButtons: [{title: 'Ver algunos productos',id: 'see_categories',},{title: 'Enviar mi factura',id: 'print_invoice',},{title: 'Hablar con un humano',id: 'talk_to_human',},],});
await Whatsapp.sendRadioButtons({recipientPhone: 'aquí el número de teléfono de su destinatario',headerText: 'Los 10 mejores productos del Black Friday',bodyText:'Daggie tiene algunos productos excelentes preparados para usted según su historial de compras anterior. Seleccione uno de los productos a continuación.',footerText: 'Aprobado por Daggie Blanqx',listOfSections: [{title: 'Top 3 Fashion',rows: [{title: 'Negro Camiseta LVX',descripción: 'KES 2999.00nLVX es una cálida camiseta de algodón',id: 'SKU12_black_lvx_tshirt',},{title: 'Sudadera con capucha morada',descripción:'KES 1999.00nSudadera con capucha morada con el logo de Logrocket', id: 'SKU13_purple_hoodie',},{título: 'Air Jordan 1',description:'KES 10999.00nNos movemos donde otros no. ¿Quieres volar?',id: 'SKU14_air_jordan_1',},],},{title: 'Top 3 Gadgets',rows: [{title: 'Apple Watch ',description:'KES 75999.00nEl tiempo es finito, disfruta cada segundo',id: 'SKU15_apple_watch',},{title: 'Surface Pro',descripción: `KES 59999.00nNo solo navegues por la web, navega por el mundo`,id: 'SKU16_surface_pro',},{title: 'Xiaomi Beats Speaker',descripción : `KES 45699nEstá en cómo late tu corazón, en la forma en que late Xiaomi.`,id: 'SKU17_xiaomi_beats_speaker',},],},{title: 'Las 3 mejores cocinas',rows: [{title: 'Batidora de mano portátil',descripción: `KES7899nTienta a tus cogollos mezclando tu comida favorita de manera uniforme.`,id: 'SKU18_portable_hand_mixer ',},{title: 'Gofrera antiadherente',descripción: `KES7899nLos fantásticos waffles están hechos con los mejores ingredientes.`,id: 'SKU19_non_stick_waffle_maker',},{title: '6-set Cooking Spoons',description: `KES7899nMantén tu felicidad bien.`,id: 'SKU20_6_set_cooking_spoons',},] ,},{título: '1 selección aleatoria',filas: [{título: 'Nivea Icy Soap', descripción: `KES899n Mantente hidratado y fresco. Nutre tu piel.`,id: 'SKU21_nivea_icy_soap',},],},],});
await Whatsapp.sendContact({recipientPhone: destinatarioPhone,contact_profile: {direcciones: [{calle: '1 Hacker Way',ciudad: 'Menlo Park',estado: 'CA',código postal: '94025',país: 'Estados Unidos' ,código_país: 'nosotros',tipo: 'INICIO',},{calle: '200 Jefferson Dr',ciudad: 'Menlo Park',estado: 'CA',código postal: '94025',país: 'Estados Unidos',código_país: 'nosotros',tipo: 'TRABAJO',},],cumpleaños: '2002-02-14',correos electrónicos: [{correo electrónico: '[email protected]' ,escriba: 'TRABAJO',},{correo electrónico: '[email protected]',escriba: 'INICIO',},],nombre: {formatted_name: 'Daggie Blanqx',primer_nombre: 'Daggie',apellido: 'Blanqx',segundo_nombre: 'M.',sufijo: 'Sr',prefijo: 'Sw Engr',},org: {empresa: 'WhatsApp',departamento: 'Diseño ',título: 'Gerente',},teléfonos: [{teléfono: '+1 (940) 555-1234',tipo: 'INICIO',wa_id: '16505551234', // opcional},{teléfono: '+1 (650) 555-1234',tipo: 'TRABAJO', // opcionalwa_id: '16505551234', // opcional},], URL: [{url: 'https://www.facebook.com',tipo: 'TRABAJO',},{url: 'https://www.whatsapp.com',escriba: 'INICIO',},],},});
let result = await Whatsapp.createQRCodeMessage({message: `Tu mensaje de código QR aquí. Soy un mensaje oculto en un código QR.`,imageType: 'png' || 'svg',});let urlOfImage = result.data .qr_image_url;
Vea la imagen a continuación sobre cómo mostrar el código QR:
await Whatsapp.markMessageAsRead({message_id: 'the id of your message here',});// Se generará un error no reintentable si no se encuentra el mensaje o si ya se ha leído.
La identificación del botón debe tener entre 1 y 256 caracteres.
El título del botón debe tener entre 1 y 20 caracteres.
La lista de artículos está limitada a 10.
La descripción de los elementos de la lista debe tener entre 1 y 72 caracteres.
El título de la lista debe tener entre 1 y 24 caracteres.
La identificación de la lista debe tener entre 1 y 200 caracteres.
// req.body es el cuerpo de la solicitud que hace ping al webhook. Las cargas útiles no válidas generarán un error y debes responder con el estado HTTP 5** o 4**, no 200.// recuerda responder con el estado HTTP 200 al final de una solicitud entrante exitosa.let data = Whatsapp.parseMessage( req.body);/*data.isMessage será verdadero si es un mensaje de un cliente, de lo contrario será falso.data.isNotificationMessage será verdadero si es un notificación de un Meta (por ejemplo, una notificación de estado de lectura/entrega de mensajes), de lo contrario será falsa. Los datos arrojarán un error si el cuerpo de la solicitud del webhook no es válido o no es de Meta.*/
if (datos?.isMessage) {dejar mensaje entrante = datos.mensaje; dejar destinatarioPhone = mensaje entrante.de.teléfono; // extrae el número de teléfono del cliente nombre del destinatario = mensaje entrante.de.nombre; // extrae el nombre del cliente typeOfMsg = incomingMessage.type; // extrae el tipo de mensaje message_id = incomingMessage.message_id; // extrae el mensaje idif (typeOfMsg === 'simple_button_message') {let button_id = incomingMessage.button_reply.id;if (button_id === 'book_appointment') {// El cliente hizo clic en un botón simple cuyo id es 'book_appointment' '.// Puedes responderles con una acción saliente, por ejemplo, un mensaje de texto en espera Whatsapp.sendText({message: `Hola cliente, Hiciste clic en el botón 'reservar cita'`,recipientPhone: 'aquí el número de teléfono de tu destinatario',});};};
if (datos?.isMessage) {dejar mensaje entrante = datos.mensaje; dejar destinatarioPhone = mensaje entrante.de.teléfono; // extrae el número de teléfono del cliente nombre del destinatario = mensaje entrante.de.nombre; // extrae el nombre del cliente typeOfMsg = incomingMessage.type; // extrae el tipo de mensaje message_id = incomingMessage.message_id; // extrae el mensaje idif (typeOfMsg === 'radio_button_message') {let selectId = incomingMessage.list_reply.id;if (selectionId === 'morning_session') {// El cliente seleccionó el botón de opción cuyo id es 'morning_session' .// Puedes responderles con una acción saliente, por ejemplo, un mensaje de texto en espera Whatsapp.sendText({message: `Has seleccionado la opción 'mañana_sesión'`,recipientPhone: 'aquí el número de teléfono de tu destinatario'});};};
Si tiene alguna pregunta, hágala a través de los foros de discusión de GitHub.
Si tiene alguna sugerencia o comentario, abra un problema o cree una solicitud de extracción.
Este paquete está en desarrollo activo.
Esto significa que se agregan nuevas funciones con regularidad.
En caso de que falte su característica favorita, siempre puede retroceder una versión o crear una solicitud de extracción que se revisará y fusionará en la próxima versión.
Gracias por tu contribución.
¡Feliz codificación!
Sígueme en Twitter: @daggieblanqx
También estoy en LinkedIn, donde puedes etiquetarme en los increíbles proyectos que has creado usando este paquete: @daggieblanqx
Publicaciones de blog: Logrocket/@Daggieblanqx