Contestar los WhatsApp con ChatGPT en PHP
Ya hemos recibido mensajes de WhatsApp, hemos procesado el mensaje con inteligencia artificial y guardado en la base de datos, ahora vamos a Contestar los WhatsApp con ChatGPT recibidos en PHP, siguiendo estos pasos:
Agregar codigo para Contestar los WhatsApp con ChatGPT en PHP
$enviado=str_replace("\n","",$enviado); //TOKEN QUE NOS DA FACEBOOK $token = 'EAAIwtTEOYPABAKXkASYRU7L9yPtZB1ZBF1RMQQju0Y2ZBLQGDzVjZBtxfPS62y2STLkvVV25j31Teh1u6hHZA4QDm8hYxIeUJgnyBzZBRzOSNDv1YjNQX9i4VukW0a5iarxNyHv9iaphm5kNGuaitj9jKL6FzAzQ3z5wh8hZCxq6oOQBy4W8YExRJib32bdvvI6dFkhqhXWBQZDZD'; //NUESTRO TELEFONO $telefonoCliente=str_replace("521","52",$telefonoCliente); //IDENTIFICADOR DE NÚMERO DE TELÉFONO $telefonoID = '116907067953774'; //URL A DONDE SE MANDARA EL MENSAJE $url = 'https://graph.facebook.com/v16.0/' . $telefonoID . '/messages'; //CONFIGURACION DEL MENSAJE $mensaje = '' . '{' . '"messaging_product": "whatsapp", ' . '"recipient_type": "individual",' . '"to": "' . $telefonoCliente . '", ' . '"type": "text", ' . '"text": ' . '{' . ' "body":"' . $enviado . '",' . ' "preview_url": true, ' . '} ' . '}'; //DECLARAMOS LAS CABECERAS $header = array("Authorization: Bearer " . $token, "Content-Type: application/json",); //INICIAMOS EL CURL $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POSTFIELDS, $mensaje); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //OBTENEMOS LA RESPUESTA DEL ENVIO DE INFORMACION $response = json_decode(curl_exec($curl), true); //OBTENEMOS EL CODIGO DE LA RESPUESTA $status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); //CERRAMOS EL CURL curl_close($curl);
Código completo
chatgpt.php
<?php function preguntaChatgpt($pregunta){ //API KEY DE CHATGPT $apiKey='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'; //INICIAMOS LA CONSULTA DE CURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.openai.com/v1/completions'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Authorization: Bearer '.$apiKey, ]); //INICIAMOS EL JSON QUE SE ENVIARA A META curl_setopt($ch, CURLOPT_POSTFIELDS, "{ \"model\": \"text-davinci-003\", \"prompt\": \"".$pregunta."\", \"max_tokens\": 4000, \"temperature\": 1.0 }"); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //OBTENEMOS EL JSON COMPLETO CON LA RESPUESTA $response = curl_exec($ch); curl_close($ch); $decoded_json = json_decode($response, false); //RETORNAMOS LA RESPUESTA QUE EXTRAEMOS DEL JSON return $decoded_json->choices[0]->text; } //$respuesta=preguntaChatgpt("Cuanto es 6 mas 6"); //echo $respuesta;
conexion.php
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "chat"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname);
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=str_replace("\n","",$enviado); //TOKEN QUE NOS DA FACEBOOK $token = 'EAAIwtTEOYPABAKXkASYRU7L9yPtZB1ZBF1RMQQju0Y2ZBLQGDzVjZBtxfPS62y2STLkvVV25j31Teh1u6hHZA4QDm8hYxIeUJgnyBzZBRzOSNDv1YjNQX9i4VukW0a5iarxNyHv9iaphm5kNGuaitj9jKL6FzAzQ3z5wh8hZCxq6oOQBy4W8YExRJib32bdvvI6dFkhqhXWBQZDZD'; //NUESTRO TELEFONO $telefonoCliente=str_replace("521","52",$telefonoCliente); //IDENTIFICADOR DE NÚMERO DE TELÉFONO $telefonoID = '116907067953774'; //URL A DONDE SE MANDARA EL MENSAJE $url = 'https://graph.facebook.com/v16.0/' . $telefonoID . '/messages'; //CONFIGURACION DEL MENSAJE $mensaje = '' . '{' . '"messaging_product": "whatsapp", ' . '"recipient_type": "individual",' . '"to": "' . $telefonoCliente . '", ' . '"type": "text", ' . '"text": ' . '{' . ' "body":"' . $enviado . '",' . ' "preview_url": true, ' . '} ' . '}'; //DECLARAMOS LAS CABECERAS $header = array("Authorization: Bearer " . $token, "Content-Type: application/json",); //INICIAMOS EL CURL $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POSTFIELDS, $mensaje); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //OBTENEMOS LA RESPUESTA DEL ENVIO DE INFORMACION $response = json_decode(curl_exec($curl), true); //OBTENEMOS EL CODIGO DE LA RESPUESTA $status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); //CERRAMOS EL CURL curl_close($curl); //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(); } }
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); }
🔗 Codigo: programadornovato/chatgptWA (github.com)