sábado, 27 de agosto de 2022

Javascript con notificación a whatsapp

 Hola a continuación le dejo material para que puedan implementar sus notificaciones a whatsapp desde su javascript empleando la libreria jquery

¿ Que necesitas para implementarlo?

         - Escanear la pagina para obtener token QR

Video Implementación


Web escanear el código


https://anlusoftware.blogspot.com/


Descargar HTML


https://drive.google.com/file/d/1_G2N3SzVfVTptWWqhqzi-AoWdXA1CdRV/view?usp=sharing


Actualmente la solución permite 4 envíos de 1 - 100 mensajes a la vez , con un token de session se habilita 4 envíos por día.

¿ Deseas que se habilite 24 x 7 y que permita enviar N envíos al mes con un solo token de session ?

- Pago mensual de 3 dólares por token de session  (internamente se emplea un servidor 24 x 7 debido a ello el costo)

         IR a PAGAR  

ASESORIA PERSONALIZADA :

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

https://reservarasesoriaanlusoft.blogspot.com/

Google Forms con notificación a whatsapp

 Hola a continuación le dejo material para que puedan implementar sus notificaciones a whatsapp desde su formulario de Google Formas

¿ Que necesitas para implementarlo?

         - Escanear la pagina para obtener token QR

Video Implementación


Web escanear el código


https://anlusoftware.blogspot.com/


Código AppScript


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

var hojasheet="Respuestas de formulario 1"; 

function doPost(e) {

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

    var respuesta = "";

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

        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(hojasheet);

        for (let i = 0; i < resultado.mensajes.length; i++) {

            sheet.getRange(((parseInt(resultado.mensajes[i].posicion))), 9).setValue(resultado.mensajes[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 onOpen() {

    createMenus();

}

function createMenus() {

    var menu = SpreadsheetApp.getUi().createMenu("Whatsapp");

    menu.addItem('1) Inicializar Envios', 'createEditTrigger');

    menu.addItem('2) Detener Envios', 'eliminarEditTrigger');

    menu.addToUi();

}

function eliminarEditTrigger() {

  var allTriggers = ScriptApp.getProjectTriggers();

  for (var i = 0; i < allTriggers.length; i++)

  {

     ScriptApp.deleteTrigger(allTriggers[i]);

  }

  Browser.msgBox('Se ha eliminado el evento', Browser.Buttons.OK);

}


function createEditTrigger() {


  ScriptApp.newTrigger("solonotificarwhatsapp")

  .forSpreadsheet(SpreadsheetApp.getActive())

  .onFormSubmit()

  .create();

  Browser.msgBox('Se ha inicializado el evento', Browser.Buttons.OK);

}


function solonotificarwhatsapp(e){

  Logger.log("valor"+e.range.getValue());

  Logger.log("columna"+e.range.getColumn());

  Logger.log("fila"+e.range.getRow());

  if(e.range.getValue()!="" && e.range.getColumn()==1 && e.range.getRow()>1){

  Logger.log("ingreso a notificar");

  var fila=parseInt(e.range.getRow());

  var excel= SpreadsheetApp.getActiveSpreadsheet(); 

  var sheet = excel.getSheetByName(hojasheet);

  var token_qr = excel.getSheetByName("Configuracion").getRange(1, 2).getValue();

  var app_script =excel.getSheetByName("Configuracion").getRange(2, 2).getValue();  

  var mensaje="Hola *"+sheet.getRange(fila,2).getValue()+"* \nSe ha confirmado su registro de asistencia al evento ANLUSOFT \nLo esperemos ";

    try{

    var dataArray = [];

    var record = {}; 

            record['numero'] = sheet.getRange(fila,4).getValue();

            record['mensaje'] = mensaje;

            record['posicion'] = fila;

            dataArray.push(record); 

    var payload =

          {

            "op":"registermessage", 

            "token_qr":token_qr,

            "listener":"true",

            "app_script":app_script

          }

    payload.mensajes =dataArray;

    var options =

          {

            'headers': {"Content-Type" : "application/json"},

            'method' : "POST",

            'payload' : JSON.stringify(payload)

          };

      Logger.log(JSON.stringify(payload));    

      sheet.getRange(fila,9).setValue("Iniciando");

      var response = UrlFetchApp.fetch(api, options);

      var json = JSON.parse(response.getContentText());

      if(json.status=="0"){

      sheet.getRange(fila,9).setValue("Notificado");

      }else{

      sheet.getRange(fila,9).setValue(json.message);

      }    

    }catch (error) {

      sheet.getRange(fila,9).setValue(error+"");      

    }    

  }  

}


Actualmente la solución permite 4 envíos de 1 - 100 mensajes a la vez , con un token de session se habilita 4 envíos por día.

¿ Deseas que se habilite 24 x 7 y que permita enviar N envíos al mes con un solo token de session ?

- Pago mensual de 3 dólares por token de session  (internamente se emplea un servidor 24 x 7 debido a ello el costo)

         IR a PAGAR  

ASESORIA PERSONALIZADA :

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

https://reservarasesoriaanlusoft.blogspot.com/

miércoles, 17 de agosto de 2022

BOT Whatsapp de Registro Votacion

 Hola a continuación le dejo material para que puedan implementar un BOT Whatsapp para registro de votacion 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 votacion mejor jugador 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/1WniEBgEiY90xAg0qUoo-QGghstpMfgX50cHA4At17rE/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

Video Implementación



Página Excel Plantilla

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


Pasos de ejecución

Luego de haber copiado el codigo appscript y desplegarlo , ejecutar la funcion onOpen y se mostrara un menu de opciones Whatsapp , iniciar con el paso 1 y se mostrara codigo QR que debe escanearlo con su Whatsapp y se obtendra token de session en la celda 3B

Luego ejecutar el paso 2 Menu Whatsapp se iniciara el BOT

Esperar 10 seg a que aparesca el menu Whatsapp

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 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, "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 = [];

   var dataParticipante = [];

    

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

      var sheet_producto =excel_qr.getSheetByName("Participantes");

      var rows_producto = sheet_producto.getRange(2,1,sheet_producto.getLastRow()-1, sheet_producto.getLastColumn()).getValues(); 

      for(var i1 = 0, l1= rows_producto.length; i1<l1 ; i1++){

        var dataRow = rows_producto[i1];

        var record = {};

        record['mensaje'] = "*"+dataRow[0]+"* : "+dataRow[1];

        dataParticipante.push(record);     

      }

    }

   

        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 };

        payload.data_1 =dataParticipante;

      

        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 fecha = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd HH:mm:ss");

        var voto = "";

        var ultimoevento = "";

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

            if (resultado.mensaje[ill].evento == "Registrar_Voto") {

                if (excel.getSheetByName("Participantes")) {

                    var sheet_producto = excel.getSheetByName("Participantes");

                    var rows_producto = sheet_producto.getRange(2, 1, sheet_producto.getLastRow() - 1, sheet_producto.getLastColumn()).getValues();

                    for (var i1 = 0, l1 = rows_producto.length; i1 < l1; i1++) {

                        var dataRow = rows_producto[i1];

                        if ((dataRow[0] + "") == (resultado.mensaje[ill].mensaje + "")) {

                            voto = "" + dataRow[1];

                            break;

                        }

                    }

                }

            }

            ultimoevento = resultado.mensaje[ill].evento;

        }


        if (ultimoevento == "Registrar_Voto") {

            if (voto == "") {

                jo.message = "El voto seleccionado no es valido ❌";

            } else {

                if (excel.getSheetByName("Registro")) {

                    var existe_voto = "No";

                    var sheet_sede = excel.getSheetByName("Registro");

                    if (sheet_sede.getLastRow() > 1) {

                        var rows_producto = sheet_sede.getRange(2, 1, sheet_sede.getLastRow() - 1, sheet_sede.getLastColumn()).getValues();

                        for (var i1 = 0, l1 = rows_producto.length; i1 < l1; i1++) {

                            var dataRow = rows_producto[i1];

                            if ((dataRow[0] + "") == ("" + numero)) {

                                existe_voto = "Si";

                                break;

                            }

                        }

                    }

                    if (existe_voto == "No") {

                        jo.message = "Se registro correctamente su voto ✅";

                        sheet_sede.appendRow([numero, voto, fecha]);

                    } else {

                        jo.message = "Lo sentimos ya tiene un voto registrado # " + numero + " ❌";

                    }

                }

            }

            jo.conversacion = { "mensaje": "@end@", "evento": "Registrar_Voto_Informacion", "retornar": "" };

            jo.status = '0';

        }


    } 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/

martes, 2 de agosto de 2022

Whatsapp API Business (Parte 4) ChatBot Toma Pedido

  Hola a continuación les dejo material para la cuarta parte de los tutoriales API whatsapp liberado en el mes de Mayo 2022 e integrarlo con Google Sheet les va permitir arnar un chatbots operativo 100 %

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 :



Configuracion webhook


Paso 1 : Configurar el webhook con la URL AppScript

Paso 2 : Aceptar las notificaciones del tipo mensaje:

Plantillas meta creadas


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


Para el BOT se han creado las siguientes plantillas


El detalle de cada plantilla se explica en el Video


Plantillas Google Sheet

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


Código AppScript 


function notificarmeta(plantilla, salida, numero) {

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(); var payload = JSON.parse(JSON.stringify({ "messaging_product": "whatsapp", "to": numero, "type": "template", "template": { "name": plantilla, "language": { "code": "es" }, "components": [] } })); var texto = []; if (salida) { texto = salida.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] }); } } 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()); } catch (e) { } } function enviar(numero_enviar, mensaje_buscar) { var jo = {}; /* se recupera la session del cached en caso exista*/ var cache = CacheService.getScriptCache(); var conversaciones = []; if (cache.get("conversaciones") != null) { conversaciones = JSON.parse(cache.get("conversaciones")); } // RECORREMOS LAS CONVERCACION PARA CONOCER EL EVENTO var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet_configuracion = excel.getSheetByName("Configuracion"); var sheet = excel.getSheetByName("Conversacion"); var rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues(); var evento = rows.find((item) => item[1].split(";").includes(mensaje_buscar)); var evento_error = rows.find((item) => item[0] === "bot_pedido_error"); if (evento === undefined) { var filtroconversacion = conversaciones.filter((item) => item.numero == numero_enviar); evento = evento_error; if (filtroconversacion.length > 0) { var evento_retorno = filtroconversacion[filtroconversacion.length - 1].retornar; var evento_retornar = rows.find((item) => evento_retorno != "" && item[0] === evento_retorno); if (evento_retornar !== undefined) { evento = evento_retornar; } } } var conversacion_ingresado = { numero: numero_enviar, mensaje_entrada: mensaje_buscar, evento: evento[0], retornar: evento[3], mensaje_salida: evento[2] }; if (conversacion_ingresado.evento == "bot_pedido_consultar_fin") { // SE RECUPERA EL DETALLE DE LA SOLICITUD conversacion_ingresado.mensaje_salida = "\\nSolicitud:" + conversacion_ingresado.mensaje_entrada + " No existe \\n" try { var sheet_solicitud = excel.getSheetByName("Solicitudes"); var rows_solicitud = sheet_solicitud.getRange(2, 1, sheet_solicitud.getLastRow() - 1, sheet_solicitud.getLastColumn()).getValues(); var mensaje_retornar = rows_solicitud.find((item) => (item[0] + "") === ("" + conversacion_ingresado.mensaje_entrada)); if (mensaje_retornar !== undefined) { conversacion_ingresado.mensaje_salida = "\\nSolicitud:" + conversacion_ingresado.mensaje_entrada + "\\nCliente:" + mensaje_retornar[5] + "\\nDireccion:" + mensaje_retornar[6] + "\\nPedido:\\n" + mensaje_retornar[4]; } } catch (e) { } } else if (conversacion_ingresado.evento == "bot_pedido_solicitar") { // SE RECUPERA EL DETALLE DE LA SOLICITUD conversacion_ingresado.mensaje_salida = "\\nError de productos \\n" try { var sheet_producto = excel.getSheetByName("Producto"); var rows_producto = sheet_producto.getRange(2, 1, sheet_producto.getLastRow() - 1, sheet_producto.getLastColumn()).getValues(); var texto = "\\n"; for (var i = 0; i < rows_producto.length; i++) { texto += rows_producto[i][0] + ") " + rows_producto[i][1] + " Precio : " + rows_producto[i][2] + " " + rows_producto[i][3] + "\\n"; } conversacion_ingresado.mensaje_salida = texto; } catch (e) { } } else if (conversacion_ingresado.evento == "bot_pedido_terminar_pedido") { // SE RECUPERA EL DETALLE DE LA SOLICITUD conversacion_ingresado.mensaje_salida = "\\nError detalle pedido productos \\n"; var sheet_producto = excel.getSheetByName("Producto"); var rows_producto = sheet_producto.getRange(2, 1, sheet_producto.getLastRow() - 1, sheet_producto.getLastColumn()).getValues(); try { var result_numero = conversaciones.filter(item => item.numero == numero_enviar); var detalle_pedido = ""; var sumatoria = 0; var producto_encontrado = {}; for (var i = 0; i < result_numero.length; i++) { if (result_numero[i].evento == "bot_pedido_producto") { producto_encontrado = rows_producto.find((item) => (item[0] + "") === ("" + result_numero[i].mensaje_entrada)); if (producto_encontrado !== undefined) { detalle_pedido += " producto : " + producto_encontrado[1]; } } if (result_numero[i].evento == "bot_pedido_continuar_pedido") { var subtotal = 0; if (producto_encontrado !== undefined) { subtotal = parseFloat(parseInt(result_numero[i].mensaje_entrada) * parseFloat(producto_encontrado[2])); } sumatoria += subtotal; detalle_pedido += " Subtotal : " + result_numero[i].mensaje_entrada + " x " + producto_encontrado[2] + " = " + subtotal + "\\n"; } } detalle_pedido += " TOTAL :" + sumatoria + "\\n"; conversacion_ingresado.mensaje_salida = detalle_pedido; } catch (e) { } } else if (conversacion_ingresado.evento == "bot_pedido_terminar_pedido_fin") { var fecha = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd HH:mm:ss"); var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet_solicitud = excel.getSheetByName("Solicitudes"); var conversaciones_final = conversaciones.filter((item) => item.numero == conversacion_ingresado.numero); conversacion_ingresado.mensaje_salida = "Su numero de pedido es #" + (sheet_solicitud.getLastRow() + 1); conversaciones_final.push(conversacion_ingresado); var cliente = conversaciones_final.find((item) => item.evento == "bot_pedido_terminar_pedido_direccion"); if (cliente == undefined) { cliente = "Cliente"; } var direccion = conversaciones_final.find((item) => item.evento == "bot_pedido_terminar_pedido_fin"); if (direccion == undefined) { direccion = "Direccion"; } var pedido = conversaciones_final.find((item) => item.evento == "bot_pedido_terminar_pedido"); if (pedido == undefined) { pedido = "pedido"; } sheet_solicitud.appendRow([sheet_solicitud.getLastRow() + 1, fecha, conversacion_ingresado.numero, "Pendiente", pedido.mensaje_salida, cliente.mensaje_entrada, direccion.mensaje_entrada, JSON.stringify(conversaciones_final)]); } // SE PONE PUSH conversaciones.push(conversacion_ingresado); // SE ENVIA A META notificarmeta(conversacion_ingresado.evento, conversacion_ingresado.mensaje_salida, conversacion_ingresado.numero); // FIN DE ENVIO A META if (evento[0].includes("_inicio")) { var result_numero = conversaciones.filter(item => item.numero !== numero_enviar); if (result_numero === undefined || result_numero.length == 0) { conversaciones = []; } else { conversaciones = result_numero; } conversaciones.push(conversacion_ingresado); } cache.put('conversaciones', JSON.stringify(conversaciones), 120); jo.status = '0'; jo.message = ' Se grabo el registro'; jo.conversaciones = conversaciones; return JSON.stringify(jo); } function doPost(e) { var operacion = JSON.parse(e.postData.contents); var numero = operacion.entry[0].changes[0].value.messages[0].from; var mensaje = ""; if (operacion.entry[0].changes[0].value.messages[0].type == "text") { mensaje = operacion.entry[0].changes[0].value.messages[0].text.body; } else if (operacion.entry[0].changes[0].value.messages[0].type == "button") { mensaje = operacion.entry[0].changes[0].value.messages[0].button.text; } /* var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet_solicitud = excel.getSheetByName("Informacion"); sheet_solicitud.appendRow([numero, mensaje, new Date(), JSON.stringify(operacion)]);*/ var respuesta = enviar(numero, mensaje); return ContentService.createTextOutput(JSON.stringify(operacion)).setMimeType(ContentService.MimeType.JSON); } function doGet(e) { var cadena = e.parameter["hub.challenge"]; var excel = SpreadsheetApp.getActiveSpreadsheet(); var sheet_configuracion = excel.getSheetByName("Configuracion"); 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/


lunes, 1 de agosto de 2022

Datos DNI , RUC y Placa Vehiculos

 Hola a continuación les dejo funciones o API para que pueda obtener informacion de los datos de DNI  , RUC o Placa de forma gratuita

¿ Que necesitas para implementarlo?

1) Generar Token "GENERAR TOKEN DATOS PERU"

https://anlusoftware.blogspot.com/

2) En caso desees invocarlos desde hoja Google Sheet emplear las siguientes funciones 

NOTA reemplazar TUTOKEN_PUNTO1 por el valor obtenido punto 1

PARA CONSULTAR DNI


=IMPORTDATA(CONCATENAR("https://script.google.com/macros/s/AKfycbxtHPLO20nmW5Vy4r_9MGcC5bQUCFXg1LaKUA-aIUpQ4K3oo-Mz8smlIfcWQJCefWF0Zw/exec?op=dni&token=TUTOKEN_PUNTO1&formato=csv&documento=";$A2))


PARA CONSULTAR RUC.


=IMPORTDATA(CONCATENAR("https://script.google.com/macros/s/AKfycbxtHPLO20nmW5Vy4r_9MGcC5bQUCFXg1LaKUA-aIUpQ4K3oo-Mz8smlIfcWQJCefWF0Zw/exec?op=ruc&token=TUTOKEN_PUNTO1&formato=csv&documento=";$A2))


PARA CONSULTAR DATOS VEHÍCULO.


=IMPORTDATA(CONCATENAR("https://script.google.com/macros/s/AKfycbxtHPLO20nmW5Vy4r_9MGcC5bQUCFXg1LaKUA-aIUpQ4K3oo-Mz8smlIfcWQJCefWF0Zw/exec?op=placa&token=TUTOKEN_PUNTO1&formato=csv&documento=";$A2))

Video Implementación Google Sheet


3) En caso desees invocarlos como API enviar por GET los siguientes valores


GET  DNI

https://script.google.com/macros/s/AKfycbxtHPLO20nmW5Vy4r_9MGcC5bQUCFXg1LaKUA-aIUpQ4K3oo-Mz8smlIfcWQJCefWF0Zw/exec?op=dni&token=TUTOKEN_PUNTO1&formato=json&documento=DN



GET  RUC

https://script.google.com/macros/s/AKfycbxtHPLO20nmW5Vy4r_9MGcC5bQUCFXg1LaKUA-aIUpQ4K3oo-Mz8smlIfcWQJCefWF0Zw/exec?op=ruc&token=TUTOKEN_PUNTO1&formato=json&documento=RUC



GET  PLACA

https://script.google.com/macros/s/AKfycbxtHPLO20nmW5Vy4r_9MGcC5bQUCFXg1LaKUA-aIUpQ4K3oo-Mz8smlIfcWQJCefWF0Zw/exec?op=placa&token=TUTOKEN_PUNTO1&formato=json&documento=PLACA


ASESORIA PERSONALIZADA :

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

https://reservarasesoriaanlusoft.blogspot.com/

WHATSAPP BOT con IA GPT-4o

  Hola a continuación le dejo material para que puedan implementar un BOT whatsapp usando IA de Chat GPT modelo 4o Pasos: 1) Crear usuario y...