miércoles, 27 de julio de 2022

BOT Whatsapp de Toma de Pedido

 Hola a continuación le dejo material para que puedan implementar un BOT de Toma de Pedido 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 toma pedido 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/1INR9efCxwJlj7-B463VjBdcjzSTs5sAKr71Dm-ClZu8/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/1INR9efCxwJlj7-B463VjBdcjzSTs5sAKr71Dm-ClZu8/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 , en caso no aparecer verificar que este logueado con tu cuenta de gmail

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 find_conversacion(informacion) {


    try {

        var result, jo = {};

        var venta = JSON.parse(informacion);

        var excel = SpreadsheetApp.getActiveSpreadsheet();

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

        var sheet_qr = excel_qr.getSheetByName("Configuracion");

        sheet_qr.getRange(2,9).setValue(informacion);

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

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

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

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

        var ultimoevento = "";

        var nombre_cliente = "";

        var direccion_cliente = "";

        var codigo_pedido = Utilities.formatDate(new Date(), "GMT", "ddHHmmss"); //new Date().getTime();

        var productos=[];

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


          if(venta.mensaje[ill].evento=="Datos_Direccion"){

             nombre_cliente=venta.mensaje[ill].mensaje;

           }

           if(venta.mensaje[ill].evento=="FinSolicitarPedido"){

             direccion_cliente=venta.mensaje[ill].mensaje;

           }

           if(venta.mensaje[ill].evento=="FinConsultaPedido"){

             codigo_pedido=venta.mensaje[ill].mensaje;

           }          

           if (venta.mensaje[ill].evento == "Producto") {

                var codigo_producto = venta.mensaje[ill].mensaje;

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

                    if (("" + codigo_producto) == ((i+1) + "")) {

                      productos.push({"codigo":codigo_producto,"descripcion":rows_producto[i][0],"precio":rows_producto[i][1]});

                      break;

                    }

                }

            }

           if (venta.mensaje[ill].evento == "Continuar Pedido") {

                productos[productos.length-1].cantidad = venta.mensaje[ill].mensaje;

            }

            ultimoevento = venta.mensaje[ill].evento;

        }

      

        var mensaje_detalle="Tu detalle es :\n";

        if(ultimoevento == "Mostrar_Detalle_Pedido"  || ultimoevento == "FinSolicitarPedido"){

          var total=0.0;

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

            mensaje_detalle+="*"+productos[i].descripcion+"* Cant."+ productos[i].cantidad+" x "+"S/"+""+productos[i].precio+"\n";

            var subtotal=Number.parseFloat(productos[i].cantidad)*Number.parseFloat(productos[i].precio);

            total=Number.parseFloat(Number.parseFloat(total)+Number.parseFloat(subtotal)).toFixed(2);

          }

          mensaje_detalle+="*Total* :"+"S/"+""+total;

        }  

        if (ultimoevento == "Mostrar_Detalle_Pedido") {

          jo.status = '0';

          jo.message = mensaje_detalle;

          jo.conversacion = { "mensaje": "", "evento": "Mostrar_Detalle_Pedido_Informacion", "retornar": "Datos_Nombre" };

        }

        if (ultimoevento == "FinSolicitarPedido") {

         sheet.appendRow([codigo_pedido,fecha,numero,"Pendiente",mensaje_detalle,nombre_cliente,direccion_cliente]);

          jo.status = '0';

          jo.message = "Su pedido ha sido registrado✅😃 con codigo pedido # *"+codigo_pedido+"*";

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

        }

         if(ultimoevento=="FinConsultaPedido"){

          var mensaje_consulta="No existe pedido # *"+codigo_pedido+"* ✅😃";

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

           if(rows){

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

               var dataRow = rows[i];

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

                 mensaje_consulta = "El pedido # *"+codigo_pedido+"* ( "+dataRow[3]+" )\n";

                 mensaje_consulta+= dataRow[4];

                 break;

               }  

             }

          }

          jo.status = '0';

          jo.message = mensaje_consulta;

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

       }

      

    } catch (e) {

        jo.status = '-1';

        jo.message = e.toString();

    }


    var result = JSON.stringify(jo);

    sheet_qr.getRange(9, 5).setValue(result);


    return result;

}



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

        var dataProducto = [];

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

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

          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'] = "*"+(i1+1)+"*."+dataRow[0]+" ( S/"+dataRow[1]+" x Kg.)";

            dataProducto.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 =dataProducto;

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

        }

    }

}


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, 26 de julio de 2022

Notificacion a Whatsapp con Excel VBA

 Hola a continuación le dejo material para que puedan implementar sus notificaciones a whatsapp desde una hoja excel habilitado macros en VBA

¿ 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 VBA



Sub Botón1_Haga_clic_en()

      Dim mensajes As String

      On Error GoTo ErrorHandler

      Worksheets("Mensaje").Range("A2").Select

      Do Until IsEmpty(ActiveCell)

         If Not IsEmpty(ActiveCell.Value) Then

            If Not IsEmpty(Cells(ActiveCell.Row, 2).Value) Then

                mensajes = mensajes + "{" + Chr(34) + "numero" + Chr(34) + ":" + Chr(34) + CStr(ActiveCell.Value) + Chr(34) + "," + Chr(34) + "mensaje" + Chr(34) + ":" + Chr(34) + CStr(Cells(ActiveCell.Row, 2).Value) + Chr(34) + "},"

            ElseIf Not IsEmpty(Cells(ActiveCell.Row, 3).Value) Then

                mensajes = mensajes + "{" + Chr(34) + "numero" + Chr(34) + ":" + Chr(34) + CStr(ActiveCell.Value) + Chr(34) + "," + Chr(34) + "imagenbase64" + Chr(34) + ":" + Chr(34) + CStr(Cells(ActiveCell.Row, 3).Value) + Chr(34) + "},"

            End If

         End If

         ActiveCell.Offset(1, 0).Select

      Loop

      If mensajes = "" Then

          MsgBox ("no hay mensajes a enviar")

      Else

        mensajes = "{" + Chr(34) + "op" + Chr(34) + ":" + Chr(34) + "registermessage" + Chr(34) + "," + Chr(34) + "token_qr" + Chr(34) + ":" + Chr(34) + Worksheets("Configuracion").Range("B1").Value + Chr(34) + "," + Chr(34) + "mensajes" + Chr(34) + ":[" + Left(mensajes, Len(mensajes) - 1) + "]}"

        Set objHTTP = CreateObject("MSXML2.XMLHTTP")

        objHTTP.Open "POST", "https://script.google.com/macros/s/AKfycbyoBhxuklU5D3LTguTcYAS85klwFINHxxd-FroauC4CmFVvS0ua/exec", False

        objHTTP.SetRequestHeader "Content-Type", "application/json"

        objHTTP.SetRequestHeader "User-Agent", "PostmanRuntime/7.26.8"

        objHTTP.Send (mensajes)

        MsgBox (objHTTP.Status + " : " + objHTTP.responseText)

        End If

Exit Sub

ErrorHandler:

If Err.Number = -2147024891 Then

    MsgBox ("Se notifico")

Else

    MsgBox ("Error")

End If

End Sub


En caso desees descargar las fuentes del Archivo Excel VBA

https://drive.google.com/file/d/1cx1QrES7MpjhbS5XY6SaKf7eCKqFPug2/view?usp=sharing

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

- Pago mensual 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/

Notificacion a Whatsapp con Visual Basic y C#

 Hola a continuación le dejo material para que puedan implementar sus notificaciones a whatsapp desde una aplicacion realizada en Visual Basic y C#.

¿ 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 Visual Basic


NOTA : Se usa la libreria RestSharp

Imports System

Imports RestSharp

Module Program

    Sub Main(args As String())

        Console.WriteLine("Se esta enviando la notificacion")

        Dim token As String = "tutoken"

        Dim client = New RestClient("https://script.google.com/macros/s/AKfycbyoBhxuklU5D3LTguTcYAS85klwFINHxxd-FroauC4CmFVvS0ua/exec")

        Dim postRequest = New RestRequest("", Method.Post)

        postRequest.AddHeader("Content-Type", "application/json")

        postRequest.AddParameter("application/json",

                                 "{" & """op"":""registermessage"",""token_qr"":""" & token & """," &

                                 """mensajes"":[" &

                                 "{""numero"": ""51986321853"",""mensaje"": ""pruebas desde VB 26072022""}," &

                                 "{""numero"": ""51986321853"",""url"": ""https://as01.epimg.net/meristation/imagenes/2021/06/04/noticias/1622794682_038694_1622794767_noticia_normal.jpg""}," &

                                 "{""numero"": ""51986321853"",""imagenbase64"": ""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""}" &

                                 "]}", ParameterType.RequestBody)

        Dim response1 = client.Execute(postRequest).Content.ToString()

        Console.WriteLine("Respuesta" & response1)

    End Sub

End Module




Código C#

NOTA : Se usa la libreria RestSharp

using System;

using RestSharp;

namespace NotificacionWhatsapCsharp

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Se esta enviando la notificacion");

            String token = "tutoken";

            RestClient client = new RestClient("https://script.google.com/macros/s/AKfycbyoBhxuklU5D3LTguTcYAS85klwFINHxxd-FroauC4CmFVvS0ua/exec");

            RestRequest postRequest = new RestRequest("", Method.Post);

            postRequest.AddHeader("Content-Type", "application/json");

            postRequest.AddParameter("application/json",

                                "{\"op\":\"registermessage\",\"token_qr\":\"" + token + "\"," +

                                "\"mensajes\":[" +

                                "{\"numero\": \"51986321853\",\"mensaje\": \"pruebas desde C#\"}," +

                                "{\"numero\": \"51986321853\",\"url\": \"https://as01.epimg.net/meristation/imagenes/2021/06/04/noticias/1622794682_038694_1622794767_noticia_normal.jpg\"}," +

                                 "{\"numero\": \"51986321853\",\"imagenbase64\": \"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\"}" +

                                "]}", ParameterType.RequestBody);

            String response1 = client.Execute(postRequest).Content.ToString();

            Console.WriteLine("Respuesta" + response1);

        }

    }

}



En caso desees descargar el proyecto en visual Basic 2022

https://drive.google.com/file/d/1zvW2ydpFP-bhSX-C-NoZat6AD6xXCX9S/view?usp=sharing

Actualmente la solucion permite 4 envios de 1 - 100 mensajes a la vez , con un token de session se habilita 4 envios por dia.

¿ Si Deseas que se habilite 24 x 7 y que permita enviar N envios 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/

Notificacion a Whatsapp con Python

 Hola a continuación le dejo material para que puedan implementar sus notificaciones a whatsapp desde una aplicacion realizada en Python.

¿ 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 Python


NOTA : Se usa la libreria request : python -m pip install requests  

import requests

api_url = "https://script.google.com/macros/s/AKfycbyoBhxuklU5D3LTguTcYAS85klwFINHxxd-FroauC4CmFVvS0ua/exec"

token="generar"

payload = {"op": "registermessage",

             "token_qr": token, "mensajes": [

                {"numero": "51986321853","mensaje": "pruebas desde python 26072022"},

                {"numero": "51986321853","url": "https://as01.epimg.net/meristation/imagenes/2021/06/04/noticias/1622794682_038694_1622794767_noticia_normal.jpg"},

                {"numero": "51986321853","imagenbase64": "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"}

             ]}

response = requests.post(api_url, json=payload)

print(response.json())



Actualmente la solucion permite 4 envios de 1 - 100 mensajes a la vez , con un token de session se habilita 4 envios por dia.

¿ Si Deseas que se habilite 24 x 7 y que permita enviar N envios 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/

Notificacion a Whatsapp con Java

 Hola a continuación le dejo material para que puedan implementar sus notificaciones a whatsapp desde una aplicacion realizada en Java.

¿ Que necesitas para implementarlo?

         - Escanear la pagina para obtener token QR

Video Implementación


Web escanear el codigo


https://anlusoftware.blogspot.com/


Código Java


NOTA : Se emplea Maven para descargar las librerias


Clase Java 

/*

 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license

 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template

 */

package notificacion;


import javax.ws.rs.client.Client;

import javax.ws.rs.client.ClientBuilder;

import javax.ws.rs.client.Entity;

import javax.ws.rs.core.Response;


/**

 *

 * @author lenovo

 */

public class Notificar {


    public static void main(String[] args) {

        // TODO Auto-generated method stub

        String token = "Generar_token";

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

        String payload = "{\"op\" : \"registermessage\", "

                + "\"token_qr\": \"" + token + "\","

                + "\"mensajes\" : ["

                + "{\"numero\": \"51986321853\",\"mensaje\": \"Pruebas whatsapp desde java 2507202\"}, "

                + "{\"numero\": \"51986321853\",\"url\": \"http://www.africau.edu/images/default/sample.pdf\"}, "

                + "{\"numero\": \"51986321853\",\"url\": \"https://as01.epimg.net/meristation/imagenes/2021/06/04/noticias/1622794682_038694_1622794767_noticia_normal.jpg\"}, "

                + "{\"numero\": \"51986321853\",\"imagenbase64\": \"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\"}]}";

        Client client = ClientBuilder.newClient();

        System.out.println("" + payload);

        Response post = client.target(api).request().post(Entity.json("" + payload));

        String responseJson = post.readEntity(String.class);

        System.out.println("Estatus: " + post.getStatus());

        if (post.getStatus() == 302) {

            if (post.getLocation() == null) {

                System.out.println("Location: " + responseJson);

            } else {

                String uri = post.getLocation().toString();

                Response get = client.target(uri).request().get();

                responseJson = get.readEntity(String.class);

            }

        }

        System.out.println("" + responseJson);


    }

}


Archivo POM

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>1</groupId>

    <artifactId>Notificacion</artifactId>

    <version>1.0</version>

    <packaging>jar</packaging>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <maven.compiler.source>15</maven.compiler.source>

        <maven.compiler.target>15</maven.compiler.target>

    </properties>

          <dependencies>

   <dependency>

      <groupId>com.google.code.gson</groupId>

      <artifactId>gson</artifactId>

      <version>2.8.6</version>

      <type>jar</type>

   </dependency>

   <dependency>

      <groupId>javax.ws.rs</groupId>

      <artifactId>javax.ws.rs-api</artifactId>

      <version>2.0</version>

   </dependency>

   <dependency>

      <groupId>org.jboss.resteasy</groupId>

      <artifactId>resteasy-client</artifactId>

      <version>3.1.0.Final</version>

   </dependency>

   <dependency>

      <groupId>javax.json</groupId>

      <artifactId>javax.json-api</artifactId>

      <version>1.1.4</version>

   </dependency>

   <dependency>

      <groupId>org.json</groupId>

      <artifactId>json</artifactId>

      <version>20180130</version>

      <type>jar</type>

   </dependency>

        <dependency>

            <groupId>javax</groupId>

            <artifactId>javaee-web-api</artifactId>

            <version>7.0</version>

            <type>jar</type>

        </dependency>

       

    </dependencies>

</project>


En caso desees el proyecto en Netbeans

https://drive.google.com/file/d/1cnWa8CzsdfsfivDs8f1tB5xLpxWE58wj/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/

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