Incluir tus propios scripts de PHP dentro de una tarea automática, te permite acceder e interactuar con tus datos, alterando el comportamiento de la tarea de acuerdo a tus necesidades.

Para poder ejecutar PHP u otro lenguaje dentro de una tarea es necesario incluir en aquellos puntos de la tarea donde se requiera, llamadas al servidor donde resida el código PHP. Cada una de estas llamadas pueden incluir parámetros e información de la propia tarea, lo que habilita al script a trabajar y responder de acuerdo a ellos, pudiendo incluso alterar el flujo y el resultado final de la tarea.

Escenario: Aprenderás a crear un bot de Telegram que capture los mensajes que recibe de los usuarios, se los envíe a un script tuyo en PHP que podrá calcular el número de caracteres que tiene dicho mensaje y lo responderá el bot.

Nivel de dificultad: Medio. Requiere conocimientos mínimos de PHP, un servidor donde alojar el script que crearemos y haber registrado un bot de Telegram.

Tiempo de implementación: Aproximadamente 30 minutos.

Flujo de la automatización

La automatización que vamos a crear sigue el esquema básico de una tarea, solo que en un punto determinado introduciremos una llamada al script que haremos en PHP. Esta llamada se lleva a cabo como veremos por medio de un Webhook.

Creación de la tarea automática

Inicia sesión en https://Botize.com para crear la tarea. Necesitarás una cuenta gratuita que puedes crear desde https://botize.com/join

Una vez dentro dirígete al apartado de Apps del menú principal y selecciona la aplicación Telegram Bot, o haz clic directamente aquí: https://botize.com/es/app/telegrambot

Como puedes ver en Perfiles ya tengo mi Bot conectado a Botize. Si no es tu caso puedes registrar un bot y conectarlo a Botize siguiendo estos pasos.

Para crear la tarea haz un clic en el botón «Crear nueva tarea» y Botize te redirigirá al editor de tareas.

A continuación Botize mostrará las distintas operaciones que puedes automatizar con Telegram Bot. Elige la opción «Si un usuario escribe al bot«, indicando así que queremos que la tarea se active cada vez que un usuario se dirija a nuestro bot.

Los parámetros que vienen por defecto en la opción que hemos elegido son los correctos para el caso que nos ocupa, por lo que sin necesidad de hacer ningún cambio en esta pantalla haz clic en el botón de Siguiente.

Botize nos muestra ahora algunos de los principales servicios con los que podemos automatizar acciones una vez el usuario escriba al chat.

Lo que necesitamos una vez el usuario nos ha escrito es llamar a nuestro script de PHP, para lo cual usaremos el servicio de Webhooks. Haz un clic por lo tanto en el icono de Webhooks como se muestra en la siguiente imagen.

Esta vez, de entre las distintas operaciones que podemos automatizar, elegiremos la opción «Ejecutar una petición POST» haciendo un clic en ella.

Ahora deberemos indicar en el campo URL la dirección donde se encuentra el script de PHP. Dado que aún no lo hemos creado, hagámoslo lo ahora.

Enviaremos a nuestro código los datos por POST usando la cabecera Content-Type:application/x-www-form-urlencoded, de modo nuestro script va a poder leerlos directamente del array $_POST.

El array siempre contendrá todos los datos que la tarea haya generado durante los pasos anteriores, por lo que en nuestro caso el array contendrá todo lo relacionado con el mensaje que el usuario enviado vía Telegram a nuestro bot.

En concreto el contenido de $_POST que recibirás será el siguiente:

{
"from_id":"1346584704",
"from_name":"David",
"chat_id":"1346584704",
"text":"Hola!"
}

Donde la clave text va a contener el texto que el usuario de Telegram, en esta caso David, haya escrito.

El trabajo de nuestro script por lo tanto será obtener el número de caracteres de $_POST[«text»].

<?php
$text_length = strlen($_POST["text"]);

Una vez obtenido este necesitamos que el script se lo entregue a la tarea. El modo de hacerlo es devolviéndolo dentro una cadena JSON.

La cadena JSON debe tener la siguiente estructura:

{"meta":{"code":200},"data":{}}

En la que code define si se ha producido un error o no (en este caso el código 200 indica que no ha habido ninguno), y el objeto data contendrá todos los datos que queramos enviar a la tarea.

El código resultante queda de esta manera.

<?php
$text_length = strlen($_POST["text"]);
$output = array(
   "meta" => array(
       "code" => 200
   ),
   "data" => array(
       "text_length" => $text_length
   )
);
echo json_encode($output);
?>

Ya solo queda que guardes este script en tu servidor y obtengas la URL del script.

Volviendo a la tarea, copia la URL de tu script en el campo URL.

No necesitas indicar ni modificar nada más. A continuación pulsa el botón de Siguiente.

Pulsa ahora en el icono «+» que queda a la derecha del Webhook para habilitar un nuevo espacio en tu tarea.

Volverán a aparecer entonces las distintas aplicaciones que puedes añadir.

Habiendo recibido el mensaje del usuario y ejecutado nuestro script ya solo nos queda responderle en el chat de Telegram, por lo que nuevamente haremos clic en el icono de Telegram Bot.

Esta vez la opción que elegiremos es «Responder al usuario«. Haz un clic en ella.

Lo único que necesitas hacer ahora es especificar qué mensaje quieres enviarle al usuario. Recuerda que el número de caracteres lo hemos devuelto dentro de la etiqueta text_length por lo que cuando en el texto de respuesta te refieras a este etiqueta solo tienes que escribirla entre llaves dobles: {{text_length}}.

En la siguiente imagen puedes ver el mensaje de respuesta.

Una vez escrito el mensaje ya habrás terminado la tarea. Pulsa el botón de «Guardar cambios» y abre un chat con tu Bot para probarlo.

Enhorabuena, ahora ya sabes cómo conectar tus scripts de PHP a Botize, automatizar tareas y modificar el resultado de acuerdo a tus necesidades.

Como puedes imaginar, el código que hemos utilizado es solo un ejemplo básico, pero es el mismo principio para cualquier otro Bot que se te ocurra, conectarlo a una base de datos, conectarlo a otras APIs e incluso, sustituir Telegram por cualquiera de los múltiples servicios que integra Botize.

Del mismo modo puedes incluir Python en lugar PHP. Aquí tienes una guía paso a paso para añadir Python en tus tareas automáticas, donde además te explico cómo utilizar un hosting de Python gratuito en la nube.

Espero que esta entrada te haya despertado muchas ideas ¡y quieras compartir alguna en los comentarios!

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *