feat: soporte de imagen dinámica en plantillas WhatsApp

- Detecta header_type=IMAGE en get_template_details.php
- send_message (individual): muestra input de imagen si la plantilla lo requiere,
  sube a upload_media.php y envía header_image_url al backend
- broadcast (masivo): igual, con upload previo al envío
- api/send_message.php: acepta header_image_url y lo pasa como headerParameters
  [type:image, image:{link:URL}] a WhatsAppService::sendTemplateMessage()
- api/send_broadcast.php: igual para cada destinatario del masivo
- Preview en tiempo real de la imagen seleccionada en ambos formularios
This commit is contained in:
Lizandro Guarnizo
2026-03-13 13:24:22 -05:00
parent 027c8a6f26
commit e081dc739a
4 changed files with 148 additions and 24 deletions
+12 -1
View File
@@ -168,11 +168,22 @@ try {
throw new Exception("La plantilla requiere {$expectedVars} variable(s) numéricas, pero se enviaron " . count($processedVariables));
}
// Preparar header de imagen dinámica si se proporcionó
$headerParams = [];
if (!empty($input['header_image_url'])) {
$imageUrl = filter_var($input['header_image_url'], FILTER_VALIDATE_URL) ? $input['header_image_url'] : null;
if ($imageUrl) {
$headerParams = [['type' => 'image', 'image' => ['link' => $imageUrl]]];
error_log("Broadcast template header image URL: " . $imageUrl);
}
}
$response = $whatsappService->sendTemplateMessage(
$user['phone_number'],
$template['template_name'] ?? $template['name'],
$template['language_code'] ?? 'es',
$processedVariables
$processedVariables,
$headerParams
);
// Construir contenido para BD (reemplazar variables en body_text)