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

Chatbot Taxi en whatsapp con Chatgpt

  Hola a continuación le dejo material para que puedan implementar un BOT de solicitud de taxi a traves de BOT whatsapp empleando la Super I...