martes, 31 de mayo de 2022

Whatsapp API Business (Parte 3) BOT Auto Responder

 Hola a continuación les dejo material para la tercera parte de los tutoriales API whatsapp liberado en el mes de Mayo 2022 e integrarlo con Google Sheet les va permitir autoresponder a botones de solicitud de información

Video Implementación



Página Meta facebook


En la siguiente pagina pueden configurar sus plantillas y mensajes del API Whatsapp Business

https://developers.facebook.com/apps/?show_reminder=true


Y el token lo obtienen desde :



Plantillas

https://business.facebook.com/wa/manage/message-templates


Configuracion webhook


Paso 1 : Configurar el webhook con la URL AppScript

Paso 2 : Aceptar las notificaciones del tipo mensaje:


Página Excel Plantilla


https://docs.google.com/spreadsheets/d/13leXNvtIBGGcKlUKaITGFn980wXdnSeH58TSr3xSads/edit?usp=sharing


Código AppScript 



function onOpen() {

createMenus(); } function createMenus() { var menu = SpreadsheetApp.getUi().createMenu("Whatsapp") menu.addItem('Notificar Whatsapp', 'enviarwhatsapp'); menu.addToUi(); } function enviarwhatsapp() { var response = "No" try { var response = Browser.msgBox('Seguro que quiere enviar msj ahora ?', Browser.Buttons.YES_NO); } catch (e) { Browser.msgBox('La acción no se ha realizado', Browser.Buttons.OK); } if (response == "yes") { enviar("Mensajes", "", ""); console.log("Funcion fin programar : la fecha y hora: " + new Date()); Browser.msgBox('La acción ha sido realizada', Browser.Buttons.OK); } } function enviar(hoja, numero_enviar, mensaje_buscar) { var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet_configuracion = excel.getSheetByName("Configuracion"); try { var token = sheet_configuracion.getRange(1, 2).getValue(); var api = sheet_configuracion.getRange(2, 2).getValue(); if (excel.getSheetByName(hoja)) { var sheet = excel.getSheetByName(hoja); var rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues(); for (var i = 0, l = rows.length; i < l; i++) { var numero = ""; if (numero_enviar != "") { if (mensaje_buscar.toUpperCase() == rows[i][0].toUpperCase()) { numero = numero_enviar; } else { continue; } } else { numero = rows[i][0]; } var plantilla = rows[i][4]; var payload = JSON.parse(JSON.stringify({ "messaging_product": "whatsapp", "to": numero, "type": "template", "template": { "name": plantilla, "language": { "code": "es" }, "components": [] } })); var texto = []; if (rows[i][1]) { texto = rows[i][1].split(":::"); } // SE AGREGA LOS PARAMETROS DE TEXTO if (texto.length > 0) { payload.template.components.push({ "type": "body", "parameters": [] }); for (var il = 0; il < texto.length; il++) { payload.template.components[0].parameters.push({ "type": "text", "text": texto[il] }); } } // SE AGREGA IMAGEN AL HEADER var imagen = rows[i][3]; if (imagen) { payload.template.components.push({ "type": "header", "parameters": [{ "type": "image", "image": { "link": imagen } }] }); } // SE AGREGA DOCUMENTO AL HEADER var documento = rows[i][2]; if (documento) { var nombre_archivo = (documento).substring((documento).lastIndexOf("/") + "/".length, (documento).length); payload.template.components.push({ "type": "header", "parameters": [{ "type": "document", "document": { "link": documento, "filename": nombre_archivo } }] }); } var options = { 'headers': { "Content-Type": "application/json", "Authorization": token }, 'method': "POST", 'payload': JSON.stringify(payload) }; var response = UrlFetchApp.fetch(api, options); var json = JSON.parse(response.getContentText()); Utilities.sleep(2000); if (numero_enviar == "") { if (json.error) { sheet.getRange(2 + i, 6).setValue("ERROR"); } else { sheet.getRange(2 + i, 6).setValue("EXITO"); } } else { break; } } } } catch (e) { sheet_configuracion.getRange(10, 2).setValue(e); } } function doPost(e) { var operacion = JSON.parse(e.postData.contents); var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet_solicitud = excel.getSheetByName("Solicitudes"); var numero = operacion.entry[0].changes[0].value.messages[0].from; var mensaje = operacion.entry[0].changes[0].value.messages[0].button.text; sheet_solicitud.appendRow([numero, mensaje, new Date(),JSON.stringify(operacion)]); enviar("Conversacion", numero, mensaje); var respuesta = {}; return ContentService.createTextOutput(JSON.stringify(operacion)).setMimeType(ContentService.MimeType.JSON); } function doGet(e) { // var callback = e.parameter.callback; var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet_configuracion = excel.getSheetByName("Configuracion"); var cadena = e.parameter["hub.challenge"]; sheet_configuracion.getRange(7, 2).setValue(cadena); sheet_configuracion.getRange(8, 2).setValue(JSON.stringify(e)); var respuesta = { "status": "OK" }; return ContentService.createTextOutput(cadena).setMimeType(ContentService.MimeType.CSV); }



ASESORIA PERSONALIZADA :

En caso necesites alguna asesoría personalizada agéndame un espacio.

https://reservarasesoriaanlusoft.blogspot.com/


1 comentario:

  1. buenas noches, en el minuto 6:42 de tu video dices que enviaras a un numero de tu Whatsapp, pero en la celda A2 de tu Google Sheets tienes otro numero, así que esa explicación la veo confusa, podrías aclarar!?

    ResponderEliminar