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:
co-authored by
Claude Sonnet 4.6
parent
d232cf69f5
commit
f09b7d42fd
@@ -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";
|
||||
Reference in New Issue
Block a user