Mostrando entradas con la etiqueta google ocr. Mostrar todas las entradas
Mostrando entradas con la etiqueta google ocr. Mostrar todas las entradas

miércoles, 20 de julio de 2022

BOT Whatsapp empleando OCR

 Hola a continuación le dejo material para que puedan implementar un BOT con Whatsapp que te permite hacer lectura de texto de imagenes a traves de whatsapp que puedan usarlo en caso de uso de leer documento , archivos , facturas boletas y/o otros empleando hoja de calculo google sheet.

¿ Deseas solo probarlo YA?

1) Ingresar a la siguiente pagina

https://anlusoftware.blogspot.com/

2) Seleccionar la opcion "GENERAR TOKEN WHATSAPP PARA BOT" y luego el BOT que deseas activar "Whatsapp chatbot OCR con google sheets"


3) Si todo esta OK se le mostrara mensaje confirmacion

4) Conversele al numero de celular .

5) El BOT trabaja con la siguiente hoja sheet se iran almacenado los registros ahi,

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

¿ Necesitas implementarlo tu mismo para realizar cambios ?

- Crear la hoja Google sheet como indica el video 

         - Escanear la hoja para obtener token QR

         -  Whatsapp version android no business

Video Implementación




Página Excel Plantilla


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


Código AppScript 


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) Habilitar BOT - Whatsapp', 'enviarconversacion');

    menu.addToUi();

}


function validacionocr(base64,codigo_archivo,carpeta){

  /*https://gist.github.com/kltng/c25422538e15e155bccef0e289ea3faa**/

  var decoded = Utilities.base64Decode(base64);  

  var image_base = Utilities.newBlob(decoded,'image/jpeg',codigo_archivo+".jpg");

  Drive.Files.insert({title:codigo_archivo,mimeType: "image/jpeg"}, image_base, { ocr: true });

  var newFile = DriveApp.getFilesByName(codigo_archivo).next();  

  var folder_ = DriveApp.getFolderById(carpeta);//"1V0W-EdgBY1Q05v1uQfiGZsyzCNESf8Hb" 

  folder_.addFile(newFile);

  var files_ = folder_.getFilesByName(codigo_archivo);

  var resultado="";

  while (files_.hasNext()) {

     var file = files_.next();

     var doc = DocumentApp.openById(file.getId());

      resultado = doc.getBody().getText();    

  }

  return resultado;

};



function doPost(e) {


    var operacion = JSON.parse(e.postData.contents)

    var respuesta = "";

    if (operacion.op == "qr") {

        respuesta = generar(JSON.stringify(operacion));

    }


    if (operacion.op == "find_conversacion") {

        respuesta = find_conversacion(JSON.stringify(operacion));

    }


    return ContentService.createTextOutput(respuesta).setMimeType(ContentService.MimeType.JSON);

}


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) {

    }

}


function enviarconversacion() {

  

    var response = "No"

    var token_session = "";

    try {

        token_session = sheet_qr.getRange(3, 2).getValue();

        var response = Browser.msgBox('Seguro que quiere habilitar el BOT con la conversacion , 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") {

          var dataConversacion = [];

        if (excel_qr.getSheetByName("Conversacion")) {

            var sheet = excel_qr.getSheetByName("Conversacion");

            var rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();

            for (var i = 0, l = rows.length; i < l; i++) {

                var dataRow = rows[i];

                var record = {};

                record['evento'] = dataRow[0];

                record['entrada'] = dataRow[1];

                record['salida'] = JSON.parse(dataRow[2]);

                record['retornar'] = dataRow[3];

                dataConversacion.push(record);

            }

        }

        var payload = { "op": "registermessage", "token_qr": token_session, "conversacion": dataConversacion };

        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 habilito el BOT inicie la conversacion ', Browser.Buttons.OK);

            } else {

                Browser.msgBox('Error al iniciar : ' + json.message, Browser.Buttons.OK);

            }

        } catch (e) {

            Browser.msgBox('Se habilito el BOT inicie la conversacion ', Browser.Buttons.OK);

        }

    }

}


function find_conversacion(informacion) {


    var result, jo = {};

    try {


        var resultado = JSON.parse(informacion);

        var excel = SpreadsheetApp.getActiveSpreadsheet();

        var sheet = excel.getSheetByName("Configuracion");

        var numero = (resultado.numero).substring(0, (resultado.numero).lastIndexOf("@"));

        var appcarpeta = sheet.getRange(4, 2).getValue();

        var nombre_carpeta = ((appcarpeta).substring(appcarpeta.lastIndexOf("/") + "/".length,appcarpeta.length)).split("?")[0];

        jo.status = '1';

        jo.message = "error";

        var codigo_pedido = ""+new Date().getTime();

        var ultimoevento = "";

        var data_archivo_base64="";

        var fecha = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd HH:mm:ss");

        for (var ill = 0; ill < resultado.mensaje.length; ill++) {

            if (resultado.mensaje[ill].evento == "despues_archivo" && resultado.mensaje[ill].mensaje=="documento_send") {

                data_archivo_base64 = resultado.mensaje[ill].documento.data;

            }

            ultimoevento = resultado.mensaje[ill].evento;

        }

        jo.status = '1';

        jo.message = ' No existe';

        if (ultimoevento == "despues_archivo") {

                    if (data_archivo_base64 !="") {

                        jo.status = '0';

                        var resultadosocr= validacionocr(data_archivo_base64,codigo_pedido,nombre_carpeta);

                        jo.message = resultadosocr;

                        jo.conversacion = { "mensaje": resultadosocr, "evento": "despues_archivo_v1", "retornar": "terminar_archivo" };

                    }

        }


    } catch (e) {

        jo.status = '-1';

        jo.message = e.toString();

    }

    var result = JSON.stringify(jo);

    return result;

}


HABILITAR BOT 24 x 7 :

La solución BOT emplea Web Whatsapp  para recibir y enviar mensajes , por lo cual es necesario la contratación de un servidor para el BOT este operativo 24 x 7  , debido a ello existe un pago mensual de $ 8.00 .

IR a PAGAR 8 DOLARES

ASESORIA PERSONALIZADA :

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

https://reservarasesoriaanlusoft.blogspot.com/

🚀 Crea tu Propio Sistema de Inventario y Úsalo desde tu Celular 📱

 📱📦 Crea tu Sistema de Inventario y úsalo desde tu celular. En este video muestro cómo desarrollar un sistema de inventario con escáner us...