¿Qué tal sería chatear con Papa Noel?
Así llevo desde ayer 🥹 y pues claro … manos a la obra.
La idea es usar ChatGPT para darle personalidad a nuestro Papa Noel, y luego crear un chat mediante el que intercambiar mensajes.
La idea es sencilla:
Web
Primero pensé en un formulario web, y montar ahí el chat, vale, guay, control total, pero aburrido de narices, y más que yo para el diseño soy un cero pelotero, así que había que pensar algo más divertido.
¿Whatsapp?
Ehhh, whatsapp mola 😎
Me pongo a mirar su API, a crearme la app en Meta para poder empezar, y empiezan los problemas:
… que si añadir forma de pago
… que si justificar tu cuenta de empresa
… que si pago por uso
puff pereza máxima, y encima pasar por caja, además de la caja de OpenAI, muchas cajas son esas para un pobre como yo, «I have not money !!!»
Telegram !!
Nunca he trasteado Telegram pero colegas me han dicho que a nivel API y dev está muy bien pensado.
Pues nada a telegramear se dijo.
Página con doc para crear un bot:
https://core.telegram.org/bots
Chula, eh?, pues espera que crear un primer bot es más chulo aún.
Añades a «BotFather» : https://core.telegram.org/bots

Ahora si que has flipado, eh??? Mandándole un mensaje te deja hacer mil cosas, el «Hello World» más sencillo de la historia 👏🏻 👏🏻 👏🏻 👏🏻
Pues nada /newbot y creamos a Noel_IA_Bot 🤖 , nuestro chatbot de Papa Noel (creado, nos da nuestro Token de acceso API y doc).
Ya podemos escribirle, pero contestar va a contestar poco. Pero … donde van nuestros mensajes ?
Tiramos de doc: https://core.telegram.org/bots/api#setwebhook
Y bingo, tenemos que definir un webhook donde irán nuestros mensajes, pues nada creamos uno PHP que usaremos para recibir el mensaje del usuario y mandarle ese mensaje a ChatGPT-Noel y que nos conteste.
Creamos nuestro webhook en PHP:
<?php
/**
* Script para recibir mensajes de Telegram y responder con una respuesta de ChatGPT
* Version: 0.1
* Author: ablancodev
*/
require_once 'chatgpt.php';
// Sustituye el valor por tu token real
define('BOT_TOKEN', '5817262589:AAF0fleEXXXXXXXXXXXX');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
// Lee el cuerpo de la solicitud
$content = file_get_contents("php://input");
// Decodifica el JSON
$update = json_decode($content, true);
// Comprueba si es un mensaje de texto
if(isset($update["message"])) {
$message = $update["message"];
if(isset($message["text"])) {
$chatId = $message["chat"]["id"];
$text = $message["text"];
// llamamos a nuestra función call_chatgpt() para obtener la respuesta
$response = call_chatgpt($text, $message["from"]["first_name"]);
// Aquí procesarías el mensaje y construirías una respuesta
//$response = "Eco: " . $text;
// Envía la respuesta al chat
file_get_contents(API_URL."sendMessage?chat_id=".$chatId."&text=".urlencode($response));
}
}
// guardamos en en fichero log.txt el contenido de la variable $update
file_put_contents("log.txt", print_r($update, true));
// Para asegurarte de que el script se ejecutó correctamente, puedes devolver un "OK"
echo "OK";
?>
Y ya con esto tenemos que cuando alguien escribe a Papa Noel ChatBot, Telegram manda un webhook a nuestro servidor, donde lo recibimos, y pasamos la info a nuestro ChatGPT-Noel, que nos contestará amablemente como suele hacerlo y dicha contestación se la pasamos a nuestro chatBot, círculo cerrado !! 🥳

Ahora a refinar el prompt, que el que he hecho es muy muy básico, ya que me he centrado en el flujo de conexiones e información.
Repositorio
Aquí dejo el repo con el código completo del webhook, sólo tienes que cambiar tu token de OpenAI y el de Telegram, montarlo en una web y decirle a tu chatBot que ese es su webhook a notificar.