debug: agregar debug_turno_wa.php para diagnosticar envío WA desde kiosko

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-03 09:59:53 -05:00
co-authored by Claude Sonnet 4.6
parent d232cf69f5
commit f09b7d42fd
+124
View File
@@ -0,0 +1,124 @@
<?php
/**
* Debug: flujo WA kiosko → consentimiento_turno
* Acceso: /debug_turno_wa.php (solo admins)
*/
require_once __DIR__ . '/config/config.php';
if (!isUserLoggedIn()) { header('Location: login.php'); exit; }
header('Content-Type: text/plain; charset=utf-8');
$pdo = Database::getInstance()->getConnection();
echo "════════════════════════════════════════\n";
echo " DEBUG: Turno WA → consentimiento_turno\n";
echo "════════════════════════════════════════\n\n";
// ── 1. Config WA turnero ──────────────────────────────────────
echo "1. CONFIGURACIÓN WHATSAPP\n";
echo "─────────────────────────\n";
$cfgKeys = ['whatsapp_token','whatsapp_phone_number_id','whatsapp_phone_number_id_turnero',
'turnero_wa_template','turnero_wa_lang','turnero_wa_kiosko_enabled'];
$cfg = $pdo->query(
"SELECT clave, valor FROM lab_config WHERE clave IN ('" . implode("','", $cfgKeys) . "')"
)->fetchAll(PDO::FETCH_KEY_PAIR);
$tokenLen = strlen($cfg['whatsapp_token'] ?? '');
echo "Token WA: " . ($tokenLen > 0 ? "✅ presente ({$tokenLen} chars)" : "❌ VACÍO") . "\n";
echo "Phone ID principal: " . ($cfg['whatsapp_phone_number_id'] ?? '❌ no configurado') . "\n";
echo "Phone ID turnero: " . ($cfg['whatsapp_phone_number_id_turnero'] ?? '⚠️ no configurado (usará principal)') . "\n";
echo "Plantilla turno: " . ($cfg['turnero_wa_template'] ?? 'consentimiento_turno (default)') . "\n";
echo "Idioma: " . ($cfg['turnero_wa_lang'] ?? 'es_CO (default)') . "\n";
echo "Kiosko WA habilitado: " . (($cfg['turnero_wa_kiosko_enabled'] ?? '0') === '1' ? '✅ SÍ' : '❌ NO') . "\n\n";
// ── 2. Plantilla en BD ────────────────────────────────────────
echo "2. PLANTILLA EN BASE DE DATOS\n";
echo "──────────────────────────────\n";
$tplNombre = $cfg['turnero_wa_template'] ?? 'consentimiento_turno';
$tpl = $pdo->prepare("SELECT template_name, language_code, status, body_text FROM message_templates WHERE template_name = ? LIMIT 1");
$tpl->execute([$tplNombre]);
$tplRow = $tpl->fetch(PDO::FETCH_ASSOC);
if ($tplRow) {
echo "✅ Encontrada: {$tplRow['template_name']} [{$tplRow['language_code']}] estado={$tplRow['status']}\n";
echo "Body: " . substr($tplRow['body_text'] ?? '', 0, 200) . "\n";
} else {
echo "❌ Plantilla '{$tplNombre}' NO encontrada en message_templates\n";
}
echo "\n";
// ── 3. Formularios de recepción configurados ──────────────────
echo "3. FORMULARIOS DE CONSENTIMIENTO EN RECEPCIÓN\n";
echo "───────────────────────────────────────────────\n";
$forms = $pdo->query(
"SELECT l.nombre AS desk, f.id, f.nombre AS formulario, f.is_active
FROM turnero_lugar_consentimientos tlc
JOIN turnero_lugares l ON l.id = tlc.lugar_id AND l.tipo = 'recepcion'
JOIN lab_formularios f ON f.id = tlc.formulario_id
ORDER BY l.nombre, f.nombre"
)->fetchAll(PDO::FETCH_ASSOC);
if ($forms) {
foreach ($forms as $r) {
$act = $r['is_active'] ? '✅' : '⚠️ inactivo';
echo " {$act} Desk: {$r['desk']} → [{$r['id']}] {$r['formulario']}\n";
}
} else {
echo "❌ Ningún formulario configurado en desks de recepción\n";
echo " Ve a Configuración → Sesión y vincula un formulario al desk de recepción\n";
}
echo "\n";
// ── 4. Últimos consentimientos creados desde kiosko ───────────
echo "4. ÚLTIMOS CONSENTIMIENTOS CREADOS (recientes)\n";
echo "─────────────────────────────────────────────────\n";
$rows = $pdo->query(
"SELECT tc.id, tc.turno_id, tc.estado, tc.enviado_at, tc.creado_at,
tt.codigo, tt.paciente_nombre, tt.paciente_cel,
f.nombre AS formulario
FROM turnero_consentimientos tc
JOIN turnero_turnos tt ON tt.id = tc.turno_id
JOIN lab_formularios f ON f.id = tc.formulario_id
ORDER BY tc.id DESC
LIMIT 10"
)->fetchAll(PDO::FETCH_ASSOC);
if ($rows) {
foreach ($rows as $r) {
echo " Turno {$r['codigo']} | {$r['paciente_nombre']} | cel={$r['paciente_cel']}\n";
echo " Formulario: {$r['formulario']}\n";
echo " Estado: {$r['estado']} | Enviado: " . ($r['enviado_at'] ?? 'NO') . " | Creado: {$r['creado_at']}\n\n";
}
} else {
echo " Sin registros\n";
}
echo "\n";
// ── 5. Test de envío ──────────────────────────────────────────
if (isset($_GET['test_cel'])) {
echo "5. TEST DE ENVÍO\n";
echo "─────────────────\n";
$testCel = trim($_GET['test_cel']);
$testTpl = $cfg['turnero_wa_template'] ?? 'consentimiento_turno';
$testLang = $cfg['turnero_wa_lang'] ?? 'es_CO';
require_once __DIR__ . '/services/WhatsAppService.php';
try {
$wa = new WhatsAppService('turnero');
$wa->sendTemplateMessage(
$testCel,
$testTpl,
$testLang,
['Paciente Prueba', 'Consentimiento Informado', 'A001'],
[($_SERVER['HTTPS'] ?? '') === 'on' ? 'https' : 'http' . '://' . $_SERVER['HTTP_HOST'] . '/ver_formulario_enviado.php?token=TEST']
);
echo "✅ Mensaje enviado a {$testCel}\n";
} catch (\Throwable $e) {
echo "❌ Error: " . $e->getMessage() . "\n";
}
} else {
echo "5. TEST DE ENVÍO\n";
echo "─────────────────\n";
echo "Agrega ?test_cel=573001234567 a la URL para enviar un mensaje de prueba\n";
}
echo "\n════ FIN ════\n";