Hora del código #5
Nuevamente en Botman, le mostré el progreso a mi jefe y me comentó que tal vez sería bueno poder escribir el nombre (simple y popular) del producto directamente y que pregunte qué tipo de producto en especial necesita conocer. Me gustó la idea.
Básicamente hago una consulta en la base de datos sobre los nombres populares de los productos, luego tomo el término de búsqueda y lo comparo con este arreglo de nombres, si lo encuentra devuelve el identificador del producto (nombreId) y busca los registros que pertenecen a este producto, arma un menú de botones y pregunta al usuario qué producto necesita. El siguiente método se encarga de ésta segunda parte.
private function elegirProducto($nombreId){
$listadoProductos = [];
$listadoProductos = $this->recuperarProductosSeparados($nombreId);
$hayDatos = false;
$botones = array();
foreach ($listadoProductos as $k) {
$botones[]= Button::create((string)$k[1].' '.(string)$k[2].' de '.(string)$k[3])->value((string)$k[1].','.(string)$k[2].','.(string)$k[3]);
$hayDatos = true;
}
if ($hayDatos === false) {
$this->bot->reply("No encontré productos disponibles.");
} else {
$pregunta = Question::create('Selecciona un producto a consultar.')
->fallback('Algo salió mal.')
->callbackId('sin_producto')
->addButtons($botones);
$valorSeleccionado = null;
$this->ask($pregunta, function (Answer $respuesta) {
if ($respuesta->isInteractiveMessageReply()) {
$valorSeleccionado = $respuesta->getValue();
}
$datos = explode(",", $valorSeleccionado);
$this->bot->startConversation(new ConversacionPrecios($datos[0],$datos[1],$datos[2]));
});
}
}
Esto de los bots en Telegram es una maravilla, rápido de implementar, fácil de usar, muchas opciones como incluir comandos que comienzan con “/”, se pueden usar los bots en grupos, etc. Hasta el momento parece una buena plataforma de comunicación. Quisiera integrarlo con Facebook como siguiente paso, a ver si no tiene algún costo y es igual de simple.