From f09b7d42fd5c2bb3fdd5f25013e06a69f6644e49 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Fri, 3 Jul 2026 09:59:53 -0500 Subject: [PATCH] =?UTF-8?q?debug:=20agregar=20debug=5Fturno=5Fwa.php=20par?= =?UTF-8?q?a=20diagnosticar=20env=C3=ADo=20WA=20desde=20kiosko?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- debug_turno_wa.php | 124 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 debug_turno_wa.php diff --git a/debug_turno_wa.php b/debug_turno_wa.php new file mode 100644 index 0000000..d92c0c0 --- /dev/null +++ b/debug_turno_wa.php @@ -0,0 +1,124 @@ +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";