Saltar al contenido

Hora del código #3

Siguiendo con Botman, luego de lograr implementar la búsqueda de precios cambié al otro tipo de solicitudes que es la devolución de documentos como adjuntos y enlaces.

Es como lo de precios pero más simple y aquí pude utilizar los botones en las preguntas de una conversación en Botman:

$pregunta = Question::create('Conozco los informes: semanal, mensual y smc. También podemos ver otras peticiones. ¿Qué quieres consultar?')
->fallback('Algo salió mal.')
->callbackId('preguntar_informe')
->addButtons([
    Button::create('semanal')->value('semanal'),
    Button::create('mensual')->value('mensual'),
    Button::create('sistema de monitoreo de cultivos')->value('smc'),
    Button::create('más')->value('otras'),
]);

$valorSeleccionado = null;
$this->ask($pregunta, function (Answer $respuesta) {
    if ($respuesta->isInteractiveMessageReply()) {
        $valorSeleccionado = $respuesta->getValue();
    }
    
    $this->tipoInforme($valorSeleccionado);
});

Que me da como resultado en la Web:

Botones en Botman en la Web

Botones en Botman en la Web

Archivo enviado en Botman en la Web

Archivo enviado en Botman en la Web

Porque además se puede utilizar en otras plataformas, hice mis pruebas en Telegram:

Botones en Botman en Telegram

Botones en Botman en Telegram

Archivo enviado como adjunto en Botman en Telegram

Archivo enviado como adjunto en Botman en Telegram

En mi caso sólo tuve que hacer:

composer require botman/driver-telegram

Y en mi configuración colocar el token de Telegram para el bot:

$config = [
    'web' => [
        'matchingData' => [
            'driver' => 'web',
        ],
    ],
    'telegram' => [
        'token' => '7839845:asd54f6546as4df465',
    ]
];

Las URLs para los informes en PDF son extraídos de una tabla en la base de datos del bot. Ésta tabla la actualizo a mano de momento pero debería poder escribir un pequeño script para actualizar el dato de forma automática cuando actualice el sitio Web.

Pienso que usar el flujo de trabajo con botones para los precios de los productos se puede volver muy grande: pulsar botón precios, desplegar listado de productos base, pulsar producto base, desplegar variedades, etc. En la Web en escritorio se ve muy complejo, no me imagino en móvil.

Tal vez lo mejor sea tener comandos como “productos”, “variedades” y “calidades” para desplegar todo lo disponible por cada uno y que el usuario pueda elegir qué quiere escribir. En Telegram tiene la ventaja que como queda almacenado el chat el usuario puede ir a copiar un mensaje anterior y volver a mandar el comando al bot sin pasar por todos le menús nuevamente.