Introducción: ¿por qué PHP es una excelente opción para un chatbot?
\n¿Alguna vez te has preguntado cómo funcionan esos asistentes inteligentes que responden preguntas en Telegram, VK o en un sitio web? Muchos piensan que para crear un chatbot se necesita saber Python o Node.js. Pero la verdad es que un chatbot en PHP no solo es posible, sino también muy conveniente. PHP es un lenguaje maduro con una gran comunidad y es perfecto para la creación rápida de prototipos y el lanzamiento de bots.
\nEn esta guía, recorreremos el camino desde cero hasta tener un bot de Telegram en PHP funcionando. Analizaremos dos enfoques: un bot eco simple en Localhost y un bot con conexión a una base de datos. Spoiler: habrá mucho código que podrás copiar y ejecutar ahora mismo.
\n\n¿Qué es un chatbot y cómo funciona?
\nAntes de escribir código, analicemos la arquitectura. Un chatbot es un programa que recibe un mensaje de un usuario, lo procesa y envía una respuesta. En el contexto de Telegram (la plataforma más popular para bots), el esquema es el siguiente:
\n- \n
- El usuario le escribe al bot en Telegram. \n
- Telegram envía una solicitud POST a tu servidor (Webhook) o tú consultas el servidor constantemente (Long Polling). \n
- Tu script PHP procesa la solicitud y envía una respuesta a través de la API de Telegram. \n
Usaremos Webhook, que es una forma moderna y rápida. Imagina que Telegram llama a la puerta de tu servidor cada vez que llega un nuevo mensaje. Práctico, ¿verdad?
\n\nPreparación: ¿qué necesitas para empezar?
\nPara crear un chatbot simple en PHP necesitarás:
\n- \n
- Un hosting o un servidor local (OpenServer, XAMPP, MAMP) con PHP 7.4+. \n
- Acceso a Internet (para registrar el bot en Telegram). \n
- Conocimientos básicos de PHP (variables, funciones, trabajo con JSON). \n
Si no tienes hosting, no te preocupes: en la fase de pruebas puedes usar Localhost con la utilidad ngrok, que crea una URL pública temporal. Pero hablaremos de eso más adelante.
Paso 1. Registro del bot en Telegram
\nVe a Telegram, busca a BotFather (el bot oficial para crear bots) y escribe el comando /newbot. Responde las preguntas: dale un nombre (por ejemplo, MyTestBot) y un username (debe terminar en bot, por ejemplo my_test_pythonlib_bot).
Después de un registro exitoso, BotFather te dará un token: esta es la clave de acceso a la API. Se ve así: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Guárdalo en un lugar seguro (mejor en un archivo .env, pero para simplificar, por ahora lo pondremos directamente en el código).
Importante: ¡No le muestres tu token a nadie! Es la contraseña de tu bot.
\n\nPaso 2. Bot eco simple en PHP (Webhook)
\nCrea un archivo bot.php en la raíz de tu sitio web. Este script recibirá solicitudes de Telegram y responderá con el mismo texto (eco).
<?php\n// Recibimos los datos de Telegram\n$content = file_get_contents("php://input");\n$update = json_decode($content, true);\n\n// Verificamos si hay un mensaje\nif (!$update) {\n exit;\n}\n\n// Extraemos el ID del chat y el texto del mensaje\n$chat_id = $update['message']['chat']['id'];\n$text = $update['message']['text'];\n\n// Token de tu bot\n$token = "TU_TOKEN_AQUÍ";\n\n// Enviamos la respuesta (eco)\n$url = "https://api.telegram.org/bot{$token}/sendMessage";\n$data = [\n 'chat_id' => $chat_id,\n 'text' => "Escribiste: " . $text\n];\n\n// Usamos cURL para enviar la solicitud\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_POST, 1);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, $data);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\ncurl_close($ch);\n?>\n\n¿Cómo funciona?
\n- \n
- Telegram envía una solicitud POST a tu archivo
bot.php. \n - Leemos la entrada