From b5e2af7f471c5edbf2c5191f7ba000b26c64a7e5 Mon Sep 17 00:00:00 2001 From: lizandrogd <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 20 Jan 2026 22:51:26 -0500 Subject: [PATCH] Update send_message.php --- api/send_message.php | 56 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/api/send_message.php b/api/send_message.php index 7a5e8a6..615d406 100644 --- a/api/send_message.php +++ b/api/send_message.php @@ -217,7 +217,61 @@ try { error_log("Method: sendTemplateMessage()"); error_log("========================================================"); - $response = $whatsappService->sendTemplateMessage($recipient, $template, $language, $parameters); + // Intentar envío y, si falla por traducción no encontrada, probar variantes de idioma + try { + $response = $whatsappService->sendTemplateMessage($recipient, $template, $language, $parameters); + } catch (Exception $e) { + $message = $e->getMessage(); + + if (strpos($message, 'Template name does not exist in the translation') !== false || strpos($message, '#132001') !== false) { + error_log("Template translation missing for language: $language. Attempting fallbacks..."); + + $candidates = []; + + // Añadir language_code de la BD si existe y es distinto + if (!empty($templateRecord['language_code']) && $templateRecord['language_code'] !== $language) { + $candidates[] = $templateRecord['language_code']; + } + + // Si viene con formato regional (es_ES) intentar la base (es) + if (strpos($language, '_') !== false) { + $base = explode('_', $language)[0]; + if ($base !== $language) $candidates[] = $base; + } else { + // Si es código corto (es) intentar variantes comunes + if (strlen($language) === 2) { + $candidates[] = strtoupper($language) === $language ? $language : $language . '_ES'; + $candidates[] = $language . '_MX'; + $candidates[] = $language . '_PE'; + } + } + + // Eliminar duplicados y vacíos + $candidates = array_values(array_unique(array_filter($candidates))); + + foreach ($candidates as $cand) { + try { + error_log("Retrying template send with language candidate: $cand"); + $response = $whatsappService->sendTemplateMessage($recipient, $template, $cand, $parameters); + if ($response) { + error_log("Template send succeeded with fallback language: $cand"); + break; + } + } catch (Exception $e2) { + error_log("Fallback language $cand failed: " . $e2->getMessage()); + // seguir intentando con siguientes candidatos + } + } + + if (empty($response)) { + // Re-lanzar el error original si no encontramos nada que funcione + throw $e; + } + } else { + // Re-lanzar si es otro tipo de error + throw $e; + } + } } // Formato 2: WhatsApp Business API estándar elseif (isset($input['template']) && is_array($input['template'])) {