Guardar la conversación de ChatGPT en una Base de Datos
Ya que recibimos WhatsApp’s y tambien generamos una respuesta con inteligencia artificial, vamos a Guardar la conversación de ChatGPT en una Base de Datos Mysql con PHP. Seguiremos estos pasos:
Creamos la Base de Datos y la tabla

-- phpMyAdmin SQL Dump -- version 5.2.1 -- https://www.phpmyadmin.net/ -- -- Servidor: localhost -- Tiempo de generación: 12-04-2023 a las 20:44:05 -- Versión del servidor: 10.4.21-MariaDB -- Versión de PHP: 8.0.12 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` -- CREATE DATABASE IF NOT EXISTS `chat` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE `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; -- -- Volcado de datos para la tabla `registro` -- -- -- Í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, AUTO_INCREMENT=1; 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 */;
Código de Python para Guardar la conversación de ChatGPT en una Base de Datos
conexion.php

<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "chat"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname);
index.php

<?php
//Codigo para Recibir WhatsApp y crear una respuesta con ChatGPT en PHP
/*
* VERIFICACION DEL WEBHOOK
*/
//TOQUEN QUE QUERRAMOS PONER
$token = 'HolaNovato';
//RETO QUE RECIBIREMOS DE FACEBOOK
$palabraReto = $_GET['hub_challenge'];
//TOQUEN DE VERIFICACION QUE RECIBIREMOS DE FACEBOOK
$tokenVerificacion = $_GET['hub_verify_token'];
//SI EL TOKEN QUE GENERAMOS ES EL MISMO QUE NOS ENVIA FACEBOOK RETORNAMOS EL RETO PARA VALIDAR QUE SOMOS NOSOTROS
if ($token === $tokenVerificacion) {
echo $palabraReto;
exit;
}
/*
* RECEPCION DE MENSAJES
*/
//LEEMOS LOS DATOS ENVIADOS POR WHATSAPP
$respuesta = file_get_contents("php://input");
//CONVERTIMOS EL JSON EN ARRAY DE PHP
$respuesta = json_decode($respuesta, true);
//EXTRAEMOS EL MENSAJE DEL ARRAY
$mensaje=$respuesta['entry'][0]['changes'][0]['value']['messages'][0]['text']['body'];
//EXTRAEMOS EL TELEFONO DEL ARRAY
$telefonoCliente=$respuesta['entry'][0]['changes'][0]['value']['messages'][0]['from'];
//EXTRAEMOS EL ID DE WHATSAPP DEL ARRAY
$id=$respuesta['entry'][0]['changes'][0]['value']['messages'][0]['id'];
//EXTRAEMOS EL TIEMPO DE WHATSAPP DEL ARRAY
$timestamp=$respuesta['entry'][0]['changes'][0]['value']['messages'][0]['timestamp'];
//SI HAY UN MENSAJE
if($mensaje!=null){
require_once "chatgpt.php";
$respuesta=preguntaChatgpt($mensaje);
//ESCRIBIMOS LA RESPUESTA
file_put_contents("text.txt", $respuesta);
require_once "envia.php";
//ENVIAMOS LA RESPUESTA VIA WHATSAPP
enviar($mensaje,$respuesta,$id,$timestamp,$telefonoCliente);
}
envia.php

<?php
//enviar.php
/*
* RECIBIMOS LA RESPUESTA
*/
function enviar($recibido, $enviado, $idWA,$timestamp,$telefonoCliente) {
require_once './conexion.php';
//CONSULTAMOS TODOS LOS REGISTROS CON EL ID DEL MANSAJE
$sqlCantidad = "SELECT count(id) AS cantidad FROM registro WHERE id_wa='" . $idWA . "';";
$resultCantidad = $conn->query($sqlCantidad);
//OBTENEMOS LA CANTIDAD DE MENSAJES ENCONTRADOS (SI ES 0 LO REGISTRAMOS SI NO NO)
$cantidad = 0;
//SI LA CONSULTA ARROJA RESULTADOS
if ($resultCantidad) {
//OBTENEMOS EL PRIMER REGISTRO
$rowCantidad = $resultCantidad->fetch_row();
//OBTENEMOS LA CANTIDAD DE REGISTROS
$cantidad = $rowCantidad[0];
}
//SI LA CANTIDAD DE REGISTROS ES 0 ENVIAMOS EL MENSAJE DE LO CONTRARIO NO LO ENVIAMOS PORQUE YA SE ENVIO
if ($cantidad == 0) {
//$enviado= trim($enviado,"\n");
$enviado=str_replace("\n","",$enviado);
//INSERTAMOS LOS REGISTROS DEL ENVIO DEL WHATSAPP
$sql = "INSERT INTO registro "
. "(mensaje_recibido ,mensaje_enviado ,id_wa ,timestamp_wa , telefono_wa) VALUES "
. "('" . $recibido . "' ,'" . $enviado . "','" . $idWA . "','" . $timestamp . "','" . $telefonoCliente . "');";
$conn->query($sql);
$conn->close();
}
}

🔗 Código: programadornovato/chatgptWA (github.com)