Saltar al contenido

Hora del código #9

El otro día hice la conexión para usar el chatbot con Twilio y hacer pruebas en WhatsApp, es bastante sencillo. Siempre usando Botman sólo instalé el controlador:

composer require botman/driver-twilio

Y agregué la entrada al arreglo de configuración de Botman:

'twilio' => [
    'token' => '6a54sd6f54asd54f6a5s4df6',
]

Como para WhatsApp de momento no se pueden generar botones, los bots ahí deben funcionar con mensajes de chat escritos. Entonces lo que pensé fue en reconocer el controlador que se está usando y usar un condicional para procesar los mensajes a ese servicio de otra forma. Por ejemplo, como ese controlador no acepta etiquetas HTML para el formato como si lo aceptan el de Web y el de Telegram, entonces primero identifico el controlador, luego con un condicional verifico si es TwilioMessage entonces lo paso por una expresión regular para reemplazar la etiqueta <strong> por * que es lo que se usa con WhatsApp.

    $driver = $bot->getDriver();
        
    $mensaje = 'Hola qué tal, se sobre los últimos <strong>precios</strong> e <strong>informes</strong> de mercado.';
    
    if($driver->getName() === 'TwilioMessage') {
        $mensaje = preg_replace('/<strong>(.*?)<\/strong>/', '*$1*', $mensaje);
    }

La misma lógica apliqué para las preguntas que en lugar de responder con un listado de botones, da una respuesta y opciones para que el usuario escriba y envíe lo que solicita. Con los archivos adjuntos tuve que cambiar en lugar de enviar el mensaje con el enlace (Telegram automáticamente lo adjunta) a enviar sólo el archivo adjunto. Es un poco más engorroso pero se puede hacer.