up
This commit is contained in:
lizandrogd
2026-01-20 23:29:06 -05:00
parent b5e2af7f47
commit 81708fbb22
9 changed files with 245 additions and 14 deletions
+7 -3
View File
@@ -172,6 +172,7 @@ try {
}
$language = $input['language'] ?? 'es';
$parameters = $input['parameters'] ?? [];
$componentsSimple = $input['components'] ?? null;
// Verificar plantilla en base de datos (opcional)
$templateRecord = null;
@@ -185,7 +186,7 @@ try {
// Si no existe la tabla, continuar sin validación local
error_log("Template validation skipped: " . $e->getMessage());
}
// Solo validar si la tabla existe y encontramos registros
if ($templateRecord && $templateRecord['status'] !== 'approved') {
echo json_encode([
@@ -219,7 +220,7 @@ try {
// Intentar envío y, si falla por traducción no encontrada, probar variantes de idioma
try {
$response = $whatsappService->sendTemplateMessage($recipient, $template, $language, $parameters);
$response = $whatsappService->sendTemplateMessage($recipient, $template, $language, $parameters, [], $componentsSimple);
} catch (Exception $e) {
$message = $e->getMessage();
@@ -295,6 +296,9 @@ try {
}
}
}
// Preserve raw components (flow/buttons/header/image) and pass through
$componentsArray = $templateData['components'] ?? null;
// DEBUG: Mostrar datos de envío de plantilla formato WhatsApp estándar
error_log("=== DEBUG WHATSAPP TEMPLATE MESSAGE (WHATSAPP STANDARD FORMAT) ===");
@@ -307,7 +311,7 @@ try {
error_log("Method: sendTemplateMessage()");
error_log("=================================================================");
$response = $whatsappService->sendTemplateMessage($recipient, $templateName, $languageCode, $parameters);
$response = $whatsappService->sendTemplateMessage($recipient, $templateName, $languageCode, $parameters, [], $componentsArray);
}
else {
http_response_code(400);
+80
View File
@@ -0,0 +1,80 @@
<?php
/**
* Endpoint/Script de prueba para enviar plantilla con varios idiomas
* Uso por navegador: GET /api/test_send_template.php?recipient=573168950803&template=encuesta_satisfaccin
* Uso por CLI: php api/test_send_template.php
*/
require_once __DIR__ . '/../config/config_enhanced.php';
require_once __DIR__ . '/../config/config.php';
require_once __DIR__ . '/../services/WhatsAppService.php';
header('Content-Type: application/json; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', 1);
error_log("[test_send_template] START - " . date('c'));
try {
$recipient = $_GET['recipient'] ?? ($_SERVER['argv'][1] ?? '573168950803');
$template = $_GET['template'] ?? ($_SERVER['argv'][2] ?? 'encuesta_satisfaccin');
$languages = ['es', 'es_ES', 'es_MX', 'es_PE'];
$result = [
'recipient' => $recipient,
'template' => $template,
'attempts' => []
];
try {
$wh = new WhatsAppService();
error_log("[test_send_template] WhatsAppService initialized");
} catch (Exception $e) {
error_log("[test_send_template] ERROR init: " . $e->getMessage());
$result['error'] = 'Error initializing WhatsAppService: ' . $e->getMessage();
$result['trace'] = $e->getTraceAsString();
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
exit(1);
}
foreach ($languages as $lang) {
error_log("[test_send_template] Attempting language: $lang");
try {
$res = $wh->sendTemplateMessage($recipient, $template, $lang, []);
$result['attempts'][] = [
'language' => $lang,
'success' => true,
'response' => $res
];
error_log("[test_send_template] Success with language: $lang");
// stop on first success
break;
} catch (Exception $e) {
$msg = $e->getMessage();
error_log("[test_send_template] Attempt language $lang failed: " . $msg);
$result['attempts'][] = [
'language' => $lang,
'success' => false,
'error' => $msg,
'trace' => $e->getTraceAsString()
];
// continuar con siguiente candidato
}
}
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
} catch (Throwable $t) {
$err = '[test_send_template][FATAL] ' . $t->getMessage();
error_log($err);
error_log($t->getTraceAsString());
http_response_code(500);
echo json_encode(['error' => $t->getMessage(), 'trace' => $t->getTraceAsString()]);
exit(1);
}
// Si es CLI, exit code 0 si algún intento fue exitoso
$anySuccess = count(array_filter($result['attempts'], fn($a) => $a['success'])) > 0;
exit($anySuccess ? 0 : 1);