domingo, 22 de mayo de 2022

whatsapp enviar y programar notificaciones msj,imagen,documento masivamente

 A continuación se muestra una solución para google sheet para enviar masivamente mensajes , imágenes , documentos a través de whatsapp

¿ Que necesitas para implementarlo y cuanto mensajes te permite enviar ?

- Crear la hoja google sheet como indica el video 

         -  Escanear la hoja para obtener token QR

¿ Deseas que se habilite 24 x 7 y que permita enviar sin limites de mensajes al mes ?

 

Video Solucion:


Página para leer código QR:

https://anlusoftware.blogspot.com/

Google Sheet Video

Crear una hoja Sheet en su cuenta con los mismo "nombres de las Hojas " con las siguientes "columnas y campos" similares a la siguiente hoja

https://docs.google.com/spreadsheets/d/1vz9vZ4iMJFZ7QbJga7wR5Zvx_-hKjX2ZZjtiJXJEOQo/edit?usp=sharing

Método que envía mensajes de forma asíncrona a whatsapp

NOTA En whatsapp normal permite enviar mensajes,  imágenes , documentos , botones  en la versión whatsapp business solo envia mensajes

Codigo AppScript (indica en el video)

function onOpen()
{
  createMenus();
}

function createMenus()
{ 
  var menu = SpreadsheetApp.getUi().createMenu("Whatsapp")
  menu.addItem('Enviar Mensajes Ahora', 'enviar'); 
  menu.addToUi();
  menu.addItem('Programar Envio Mensajes', 'programar'); 
  menu.addToUi();
  menu.addItem('Detener Envio Mensajes', 'detenerprogramar'); 
  menu.addToUi();
}


function enviar(){
  
  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")
  {
    solonotificarwhatsapp();
    console.log("Funcion fin programar : la fecha y hora: " + new Date());
    Browser.msgBox('La acción ha sido realizada', Browser.Buttons.OK); 
  }
  
}

function detenerprogramar(){
  
  console.log("Funcion inicio programar : la fecha y hora: " + new Date());
  var response ="No"
  try{
    var response = Browser.msgBox('Se detuvo las tareas existentes', Browser.Buttons.YES_NO); 
  } catch (e) {
    Browser.msgBox('La acción no se ha realizado', Browser.Buttons.OK);   
  }
  if ( response == "yes")
  {
     //ELIMINAMOS LA PROGRAMACION
     var triggers = ScriptApp.getProjectTriggers();
     for(var i = 0; i < triggers.length; i++){
       if(triggers[i].getTriggerSource() == ScriptApp.TriggerSource.CLOCK && triggers[i].getHandlerFunction()=="solonotificarwhatsapp"){
        ScriptApp.deleteTrigger(triggers[i]);
      };
    };
    Browser.msgBox('La acción ha sido realizada', Browser.Buttons.OK); 
  }
  
}


function programar(){
  
  console.log("Funcion inicio programar : la fecha y hora: " + new Date());
  var excel= SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet_configuracion =excel.getSheetByName("Configuracion");
  var horas = sheet_configuracion.getRange(3, 2).getValue();
  var response ="No"
  try{
    var response = Browser.msgBox('Se detuvo las tareas existentes, seguro que quiere programar tarea cada  '+minutos+' minutos ?', Browser.Buttons.YES_NO); 
  } catch (e) {
    Browser.msgBox('La acción no se ha realizado por formato fecha programacion', Browser.Buttons.OK);   
  }
  if ( response == "yes")
  {    
     //ELIMINAMOS LA PROGRAMACION ACTUAL
     var triggers = ScriptApp.getProjectTriggers();
     for(var i = 0; i < triggers.length; i++){
       if(triggers[i].getTriggerSource() == ScriptApp.TriggerSource.CLOCK && triggers[i].getHandlerFunction()=="solonotificarwhatsapp"){
        ScriptApp.deleteTrigger(triggers[i]);
      };
    };
    //cada 5 hora se programa
    ScriptApp.newTrigger("solonotificarwhatsapp").timeBased().everyHours(horas).create();
    console.log("Funcion fin programar : la fecha y hora: " + new Date());
    Browser.msgBox('La acción ha sido realizada', Browser.Buttons.OK); 
  }
  
}



var api="https://script.google.com/macros/s/AKfycbyoBhxuklU5D3LTguTcYAS85klwFINHxxd-FroauC4CmFVvS0ua/exec";

function solonotificarwhatsapp(){

   var excel= SpreadsheetApp.getActiveSpreadsheet(); 
   var sheet = excel.getSheetByName("Mensaje");
   var rows = sheet.getRange(2,1,sheet.getLastRow()-1, sheet.getLastColumn()).getValues(); 
   var dataArray = [];
   var curDate = Utilities.formatDate(new Date(), "GMT-5", "dd/MM/yyyy HH:mm:ss");
   for(var i = 0, l= rows.length; i<l ; i++){
       var record = {};
       var estado =rows[i][0];
       if(estado==="Si"){
          var numero =rows[i][2];
          var mensaje =rows[i][3];
          var imagen =rows[i][4];
          var url =rows[i][5];
         if(mensaje){
            record['numero'] = numero;
            record['mensaje'] = mensaje;
            dataArray.push(record);    
          }else if(imagen){
            record['numero'] = numero;
            record['imagenbase64'] = imagen;
            dataArray.push(record);           
          }else if(url){
            record['numero'] = numero;
            record['url'] = url;
            dataArray.push(record);           
          }
          sheet.getRange(i+2, 2).setValue(curDate);  
       }
   }
  
  if(dataArray.length>0){
    var sheet_configuracion = excel.getSheetByName("Configuracion");
    var codigoQR = sheet_configuracion.getRange(2, 1).getValue();
    var payload =
        {
          "op":"registermessage",
          "token_qr":codigoQR,
        }
    payload.mensajes =dataArray;
    var options =
        {
          'headers': {"Content-Type" : "application/json"},
          'method' : "POST",
          'payload' : JSON.stringify(payload)
        };
    
    var response = UrlFetchApp.fetch(api, options);
    var json = JSON.parse(response.getContentText());
  }
}

2 comentarios:

  1. Muy buena informacion, muchisimas gracias!!
    La verdad ahora ando leyendo acerca de como instalar whatsapp plus

    ResponderEliminar
  2. Hola, tengo una duda.
    ¿cómo podemos rellenar la información de algún grupo de whatsapp en la columna "celular"?

    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...