Creando bots para Telegram para automatizar respuestas

Para mi la definición de bots son asistentes virtuales que pueden ofrecer respuestas automáticas sin la atención de una persona. En este post te voy a explicar como funcionan y como crearlos.

Algunos usos útiles
- Soporte técnico
- Búsquedas

Aunque si echas un ojo a los distintos directorios de bots verás muchas otras posibilidades como crear encuestas, configurar alertas, incluso juegos!

Directorios de bots
https://botlist.co/
https://botfamily.com/
https://storebot.me/
https://www.botpages.com/
https://www.chatbots.org/

¿Qué plataformas permiten bots?
- Facebook Messenger
- Slack
- Kik
- Twitter
- Line
- GroupMe

Es curioso que Whatsapp no apoye los bots, de hecho están en contra ya que violan sus términos y condiciones, para más información puedes leer en quora.

¿Cómo interactuar con un bot?
Aunque se intentan crear conversaciones lo más naturales posibles como con Siri, también podemos usar comandos especiales como por ejemplo /help y opciones que ofrezca el bot.

Partes de un bot
Usuario <---> Aplicación <---> API <---> Backend (tu servidor)

CREAR UN BOT

Como comentaba anteriormente hay varias plataformas donde puedes crear un bot, pero en este post me he centrado más en Telegram.

Requisitos para crear un bot
- Certificado SSL - HTTPS o certificado autofirmado

- Servidor donde alojar el script PHP

¿Cómo crear un bot?
1- En primer lugar hay que instalar Telegram en tu móvil.

2- Telegram tiene un bot para crear bots llamado botfather, búscalo en telegram y pulsa sobre este para iniciar una conversación.

4- Para crear un bot en botfather tienes que enviar el mensaje: /newbot

5- A continuación botfather te preguntará:
* El nombre visible del bot
* El nombre público del bot, éste tiene que terminar en bot o _bot, como pasa con los dominios es posible que el nombre ya esté registrado.

6- Si todo ha salido bien te devolverá un token que usaremos para interactuar con nuestro bot, por ejemplo:
136953531:AAE6LlHmDlSfIIgc7T-v6Ctkm7-3oh-5RqZ (este token está inventado)

7- El siguiente paso es asociar el bot a un fichero de nuestro servidor para que el bot pueda responder, para ello necesitamos una terminal UNIX o un cliente SSH y ejecutar el siguiente comando:
curl -F "url=https://tu-dominio.com/bot.php" https://api.telegram.org/bot136953531:AAE6LlHmDlSfIIgc7T-v6Ctkm7-3oh-5RqZ/setWebhook

Nota: Antes de ejecutar el comando anterior tienes que cambiar el token por el que te haya devuelto botfather.

8- El siguiente paso es modificar el icono del bot, para ello vuelve a botfather, ejecuta el comando: /setuserpic

9- Una vez hayas ejecutado el comando anterior, elige el bot y asigna una imagen.

Programando el bot
Vamos a programar un sencillo bot al que le digas algo y te responda, los bots pueden ser más complicados con varios pasos hasta ofrecer una respuesta concreta, pero en este caso será una pregunta y respuesta directa.

El siguiente ejemplo es una forma muy simple de hacer un bot, aquí no se aplica inteligencia artificial ni nada, son simples patrones dónde se compara si el texto que pone el usuario coincide.

if( pregunta == "como te llamas?" )
     respuesta = "miquel";

else if( pregunta == "cuantos años tienes?" )
     respuesta = "29 años";

else if( pregunta == "suma 3 + 2" )
     respuesta = "5";

Descargar ejemplo completo

Demo del bot en Telegram

@miquelbot

Enlaces de interés
- Librerías de programación para conectarse con la API de Telegram
- Todos los comandos de botfather
- Formatos de texto para los mensajes del bot en Telegram
- Métodos de la API de Telegram
- Foro sobre bots de Telegram en reddit
- Emojis para las respuestas de tu bot

Bots que he creado
Si quieres preguntarme algo sobre alguno de ellos, puedes dejar un comentario abajo.

@domainerbot
Busca dominios y redes sociales libres

@ofertabot
Compara el precio de productos (superiores a 200€) en distintas tiendas online

@coinarbot
Busca recetas de cocina

@instantgamingbot
Busca juegos en instant gaming