Files
Sistema-Web-Rotiseria/consultar_bot.php
T
2026-06-30 14:58:28 -03:00

109 lines
4.8 KiB
PHP

<?php
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
// Forzamos que si hay cualquier mínimo detalle, lo podamos ver
error_reporting(E_ALL);
ini_set('display_errors', 1);
header('Content-Type: application/json; charset=utf-8');
// Incluimos tu conexión centralizada a la base de datos
require_once 'db.php';
$respuesta = "";
$accion = "ninguna";
if (isset($_POST['mensaje'])) {
$mensaje_usuario = trim($_POST['mensaje']);
$mensaje_usuario = mb_strtolower($mensaje_usuario, 'UTF-8');
$query = "SELECT respuesta, keywords FROM bot_preguntas";
$result = $conexion->query($query);
$encontrado = false;
if ($result && $result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$keywords = explode(',', $row['keywords']);
foreach ($keywords as $keyword) {
$keyword_limpia = trim(mb_strtolower($keyword, 'UTF-8'));
if (!empty($keyword_limpia) && strpos($mensaje_usuario, $keyword_limpia) !== false) {
$respuesta = $row['respuesta'];
$encontrado = true;
if (in_array($keyword_limpia, ['ubicacion', 'ubicación', 'direccion', 'dirección', 'donde', 'dónde'])) {
$accion = "abrir_mapa";
} elseif (in_array($keyword_limpia, ['horario', 'horarios'])) {
$accion = "abrir_horarios";
} elseif (in_array($keyword_limpia, ['novedad', 'novedades'])) {
$accion = "abrir_novedades";
} elseif (in_array($keyword_limpia, ['telefono', 'teléfono', 'llamar', 'numero', 'número'])) {
$accion = "mostrar_telefonos";
} elseif ($keyword_limpia === 'contacto') {
$accion = "mostrar_contacto";
} elseif (in_array($keyword_limpia, ['redes', 'instagram'])) {
$accion = "mostrar_redes";
} elseif (in_array($keyword_limpia, ['pago', 'pagos', 'transferencia', 'efectivo'])) {
$accion = "mostrar_pagos";
} elseif (in_array($keyword_limpia, ['promo', 'promos', 'promocion', 'promoción', 'promociones', 'oferta', 'ofertas', 'menu', 'menú'])) {
// ▼ Promos: consulta dinámica a la BD (últimas 24hs)
$accion = "ninguna";
$res_promos = $conexion->query(
"SELECT mensaje FROM promociones
WHERE fecha_publicacion >= NOW() - INTERVAL 24 HOUR
ORDER BY fecha_publicacion DESC
LIMIT 5"
);
if ($res_promos && $res_promos->num_rows > 0) {
$lista = [];
while ($p = $res_promos->fetch_assoc()) {
$lista[] = "" . $p['mensaje'];
}
$respuesta = "📢 <b>¡Promociones vigentes!</b><br>" . implode("<br>", $lista);
} else {
$respuesta = "Por el momento no hay promociones activas. ¡Volvé a consultar más tarde! 😊";
}
}
break 2;
}
}
}
}
// 2. Si no se encontró coincidencia, armamos la respuesta dinámica desde la BD
if (!$encontrado) {
// Texto base limpio directamente definido sin necesidad de consultar otra tabla
$texto_base = "No entendí tu consulta. Podés preguntarme sobre:";
// ▼ CONSULTA DINÁMICA: Traemos todas las categorías cargadas que no estén vacías
$res_cats = $conexion->query("SELECT DISTINCT categoria FROM bot_preguntas WHERE categoria IS NOT NULL AND categoria != '' ORDER BY categoria ASC");
if ($res_cats && $res_cats->num_rows > 0) {
$cats_lista = [];
while ($c = $res_cats->fetch_assoc()) {
// Las agregamos formateadas limpiamente con un puntito estético
$cats_lista[] = "" . htmlspecialchars($c['categoria']);
}
// Unimos todo el array con saltos de línea <br>
$respuesta = $texto_base . "<br>" . implode("<br>", $cats_lista);
} else {
// Fallback secundario estático por si la tabla llegara a estar completamente vacía
$respuesta = $texto_base . "<br>• promo<br>• horarios<br>• nosotros<br>• ubicación";
}
$accion = "forzar_cierre";
}
} else {
$respuesta = "Error: No se recibió ninguna consulta.";
}
// Devolvemos el JSON estructurado
echo json_encode([
'respuesta' => $respuesta,
'accion' => $accion
]);