martes, 19 de julio de 2022

Validar si un numero tiene whatsapp

  A continuación se muestra una solución para Google sheet para evakidar si algun numero celular tiene whatsapp habilitado.

¿ 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

- Te permite realizar 5 ejecuciones  por día para una hoja sheet

Video Solución:

Google Sheet

Crear una hoja Sheet en su cuenta con las siguientes columnas y campos similares a la siguiente hoja

https://docs.google.com/spreadsheets/d/1G8bxrjT7k5MMnHQaYTwKh7iN2rqIqb2FImJx4hpivP0/edit?usp=sharing

Codigo AppScript (indica en el video)

var excel_qr = SpreadsheetApp.getActiveSpreadsheet();
var sheet_qr = excel_qr.getSheetByName("Configuracion");
var api_interna = "https://script.google.com/macros/s/AKfycbyoBhxuklU5D3LTguTcYAS85klwFINHxxd-FroauC4CmFVvS0ua/exec";
var appscript =sheet_qr.getRange(1,2).getValue();

function onOpen() {
    createMenus();
}
function createMenus() {
    var menu = SpreadsheetApp.getUi().createMenu("Whatsapp");
    menu.addItem('1) Obtener TOKEN Session - QR Whatsapp', 'qrwhatsapp');
    menu.addItem('2) Validar Numeros - Whatsapp', 'validarwhatsapp');
    menu.addToUi();
}

function doPost(e) {
    var operacion = JSON.parse(e.postData.contents)
    var respuesta = "";
    if (operacion.op == "qr") {
        respuesta = generar(JSON.stringify(operacion));
    }
    if (operacion.op == "save_validanumero") {
        respuesta = resultado(JSON.stringify(operacion));
    }
    return ContentService.createTextOutput(respuesta).setMimeType(ContentService.MimeType.JSON);
}

function resultado(informacion) {
    try {
        var resultado = JSON.parse(informacion);
        var excel = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = excel.getSheetByName("Validacion");
        for (let i = 0; i < resultado.validar_numero.length; i++) {
            sheet.getRange((2 + (parseInt(resultado.validar_numero[i].posicion))),2).setValue(resultado.validar_numero[i].estado);
        }
        var result, jo = {};
        jo.status = '0';
        jo.message = ' Se grabo el registrp';
    } catch (e) {
        jo.status = '-1';
        jo.message = e.toString();
    }
    var result = JSON.stringify(jo);
    return result;
}

function validarwhatsapp() {

    var response = "No"
    var token_session = "";
    try {
        token_session = sheet_qr.getRange(3, 2).getValue();
        var response = Browser.msgBox('Seguro que quiere validar los siguientes numero de whatsapp ahora , el token de session sera : ' + token_session + ' ?', Browser.Buttons.YES_NO);
    } catch (e) {
        Browser.msgBox('La acción no se ha realizado', Browser.Buttons.OK);
    }
    if (response == "yes") {

        if (excel_qr.getSheetByName("Validacion")) {
            var dataArray = [];
            var excel = SpreadsheetApp.getActiveSpreadsheet();
            var sheet = excel.getSheetByName("Validacion");
            var rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
            for (var i = 0, l = rows.length; i < l; i++) {
                var numero = rows[i][0];
                var arrayNumero = ("" + numero).split(";");
                for (var ii = 0; ii < arrayNumero.length; ii++) {
                        var record = {};
                        record['numero'] = arrayNumero[ii];
                        record['posicion'] = ""+i;
                        dataArray.push(record);
                }
            }

          var payload = { "op": "registermessage","token_qr":token_session,"listener":"true","validar_numero":dataArray};
            var options =
            {
                'headers': { "Content-Type": "application/json" },
                'method': "POST",
                'payload': JSON.stringify(payload)
            };
            try {
            var response = UrlFetchApp.fetch(api_interna, options);
            var json = JSON.parse(response.getContentText());
            if (json.status == "0") {
                 Browser.msgBox('Se notificaron los mensajes', Browser.Buttons.OK);
               } else {
                 Browser.msgBox('Error al iniciar : ' + json.message, Browser.Buttons.OK);
               }
            } catch (e) {
               Browser.msgBox('Se notificaron los mensajes asincrono ', Browser.Buttons.OK);
            }
        }
    }
}


function generar(informacion) {

    try {
        var qr = JSON.parse(informacion);
        sheet_qr.getRange(2, 2).setValue(encodeURIComponent(qr.qr));      
        var result, jo = {};
        if (qr.numero && qr.qr=="CONECTADO") {
            sheet_qr.getRange(3, 2).setValue(qr.session);
        }
        jo.status = '0';
        jo.message = ' Se grabo el registro';
    } catch (e) {
        jo.status = '-1';
        jo.message = e.toString();
    }

    var result = JSON.stringify(jo);
    return result;
}

function qrwhatsapp() {
    var response = "No"
    try {
        //sheet_qr.getRange(3, 2).setValue("");
        var response = Browser.msgBox('Seguro que quiere generar QR ahora ?', Browser.Buttons.YES_NO);
    } catch (e) {
        Browser.msgBox('La acción no se ha realizado', Browser.Buttons.OK);
    }

    if (response == "yes") {
        enviar();
        Browser.msgBox('La acción ha sido realizada , escanear registros luego de 10 segundos', Browser.Buttons.OK);
    }

}

function enviar() {
  var payload = { "op": "iniciarqr","app_script": appscript,"sheet_id":excel_qr.getId(), "fechahora": Utilities.formatDate(new Date(), "GMT-5", "yyMMddHHmmss") };
    var options =
    {
        'headers': { "Content-Type": "application/json" },
        'method': "POST",
        'payload': JSON.stringify(payload)
    };

    try {
        var response = UrlFetchApp.fetch(api_interna, options);
        var json = JSON.parse(response.getContentText());
    } catch (e) {

    }

}

¿ Deseas que se habilite 24 x 7 y que permita validar numeros sin limites al mes ?

- Pago mensual  por hoja sheet (internamente se emplea un servidor 24 x 7 debido a ello el costo)

       IR a PAGAR  

2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Buenas tardes. Estoy interesado en el Pago mensual de 3 dólares por hoja sheet. Sin embargo, en la hoja Configuracion, no aparece el Token de Sesión ni el QR.

    En espera de sus noticias .

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