ChatBot guardar los WhatsApp’s que enviamos y recibimos con Python
Ya que recibimos WhatsApp’s y tambien generamos una respuesta con inteligencia artificial, vamos a guardar los WhatsApp’s que enviamos y recibimos con Python . Seguiremos estos pasos:
Creamos la Base de Datos y la tabla

-- phpMyAdmin SQL Dump -- version 5.1.1 -- https://www.phpmyadmin.net/ -- -- Servidor: 127.0.0.1 -- Tiempo de generación: 23-01-2023 a las 21:24:48 -- Versión del servidor: 10.4.20-MariaDB -- Versión de PHP: 7.3.29 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Base de datos: `chat` -- -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `registro` -- CREATE TABLE `registro` ( `id` int(5) NOT NULL, `fecha_hora` datetime DEFAULT current_timestamp(), `mensaje_recibido` varchar(1000) DEFAULT '', `mensaje_enviado` varchar(1000) DEFAULT '', `id_wa` varchar(1000) DEFAULT '', `timestamp_wa` int(15) DEFAULT NULL, `telefono_wa` varchar(50) DEFAULT '' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Índices para tablas volcadas -- -- -- Indices de la tabla `registro` -- ALTER TABLE `registro` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT de las tablas volcadas -- -- -- AUTO_INCREMENT de la tabla `registro` -- ALTER TABLE `registro` MODIFY `id` int(5) NOT NULL AUTO_INCREMENT; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Instalamos las dependencias

cd www2 source env/bin/activate pip install mysql-connector-python
Código de Python para guardar los WhatsApp’s

#CONECTAMOS A LA BASE DE DATOS
import mysql.connector
mydb = mysql.connector.connect(
host = "mysql-novato.alwaysdata.net",
user = "novato",
password = "-jP7NGy3-L-LkcK",
database='novato_chat'
)
mycursor = mydb.cursor()
query="SELECT count(id) AS cantidad FROM registro WHERE id_wa='" + idWA + "';"
mycursor.execute("SELECT count(id) AS cantidad FROM registro WHERE id_wa='" + idWA + "';")
cantidad, = mycursor.fetchone()
cantidad=str(cantidad)
cantidad=int(cantidad)
if cantidad==0 :
sql = ("INSERT INTO registro"+
"(mensaje_recibido,mensaje_enviado,id_wa ,timestamp_wa ,telefono_wa) VALUES "+
"('"+mensaje+"' ,'"+respuesta+"','"+idWA+"' ,'"+timestamp+"','"+telefonoCliente+"');")
mycursor.execute(sql)
mydb.commit()
Código para que ChatBot guardar los WhatsApp’s que enviamos y recibimos con Python
from flask import Flask, jsonify, request
app = Flask(__name__)
#CUANDO RECIBAMOS LAS PETICIONES EN ESTA RUTA
@app.route("/webhook/", methods=["POST", "GET"])
def webhook_whatsapp():
#SI HAY DATOS RECIBIDOS VIA GET
if request.method == "GET":
#SI EL TOKEN ES IGUAL AL QUE RECIBIMOS
if request.args.get('hub.verify_token') == "HolaNovato":
#ESCRIBIMOS EN EL NAVEGADOR EL VALOR DEL RETO RECIBIDO DESDE FACEBOOK
return request.args.get('hub.challenge')
else:
#SI NO SON IGUALES RETORNAMOS UN MENSAJE DE ERROR
return "Error de autentificacion."
#RECIBIMOS TODOS LOS DATOS ENVIADO VIA JSON
data=request.get_json()
#EXTRAEMOS EL NUMERO DE TELEFONO Y EL MANSAJE
telefonoCliente=data['entry'][0]['changes'][0]['value']['messages'][0]['from']
#EXTRAEMOS EL TELEFONO DEL CLIENTE
mensaje=data['entry'][0]['changes'][0]['value']['messages'][0]['text']['body']
#EXTRAEMOS EL ID DE WHATSAPP DEL ARRAY
idWA=data['entry'][0]['changes'][0]['value']['messages'][0]['id']
#EXTRAEMOS EL TIEMPO DE WHATSAPP DEL ARRAY
timestamp=data['entry'][0]['changes'][0]['value']['messages'][0]['timestamp']
#ESCRIBIMOS EL NUMERO DE TELEFONO Y EL MENSAJE EN EL ARCHIVO TEXTO
#SI HAY UN MENSAJE
if mensaje is not None:
from rivescript import RiveScript
#INICIALIZAMOS RIVESCRIPT Y CARGAMOS LA CONVERSACION
bot = RiveScript()
bot.load_file('restaurante.rive')
bot.sort_replies()
#OBTENEMOS LA RESPUESTA
respuesta= bot.reply("localuser",mensaje)
respuesta=respuesta.replace("\\n","\\\n")
respuesta=respuesta.replace("\\","")
#CONECTAMOS A LA BASE DE DATOS
import mysql.connector
mydb = mysql.connector.connect(
host = "mysql-novato.alwaysdata.net",
user = "novato",
password = "-jP7NGy3-L-LkcK",
database='novato_chat'
)
mycursor = mydb.cursor()
query="SELECT count(id) AS cantidad FROM registro WHERE id_wa='" + idWA + "';"
mycursor.execute("SELECT count(id) AS cantidad FROM registro WHERE id_wa='" + idWA + "';")
cantidad, = mycursor.fetchone()
cantidad=str(cantidad)
cantidad=int(cantidad)
if cantidad==0 :
sql = ("INSERT INTO registro"+
"(mensaje_recibido,mensaje_enviado,id_wa ,timestamp_wa ,telefono_wa) VALUES "+
"('"+mensaje+"' ,'"+respuesta+"','"+idWA+"' ,'"+timestamp+"','"+telefonoCliente+"');")
mycursor.execute(sql)
mydb.commit()
#RETORNAMOS EL STATUS EN UN JSON
return jsonify({"status": "success"}, 200)
#INICIAMSO FLASK
if __name__ == "__main__":
app.run(debug=True)
