
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)
Ave que vuela, a la cazuela.