diff --git a/modules/turnero/api/chat_send_message.php b/modules/turnero/api/chat_send_message.php index cd57dec..fff3e48 100644 --- a/modules/turnero/api/chat_send_message.php +++ b/modules/turnero/api/chat_send_message.php @@ -35,7 +35,10 @@ try { $wa = new WhatsAppService('turnero'); if ($type === 'template') { - $response = $wa->sendTemplateMessage($user['phone_number'], $template, $lang, $params); + error_log("chat_send_message template: name={$template} lang={$lang} params=" . json_encode($params)); + $meta = ['canal' => 'turnero']; + if ($operatorId) $meta['operator_id'] = $operatorId; + $response = $wa->sendTemplateMessage($user['phone_number'], $template, $lang, $params, [], null, $meta); } else { $extra = ['canal' => 'turnero']; if ($operatorId) $extra['operator_id'] = $operatorId; diff --git a/services/WhatsAppService.php b/services/WhatsAppService.php index 33ffa8c..a15a683 100644 --- a/services/WhatsAppService.php +++ b/services/WhatsAppService.php @@ -854,16 +854,17 @@ class WhatsAppService $decoded = json_decode($response, true); if ($httpCode >= 400) { - $errorMsg = isset($decoded['error']['message']) ? $decoded['error']['message'] : 'Error desconocido'; - - // Debug detallado - error_log("WhatsApp API Error Details:"); - error_log("- URL: " . $url); - error_log("- HTTP Code: " . $httpCode); - error_log("- Response: " . $response); - error_log("- Token (first 20 chars): " . substr($this->token, 0, 20) . "..."); - - throw new Exception("Error de WhatsApp API: " . $errorMsg); + $err = $decoded['error'] ?? []; + $errorMsg = $err['message'] ?? 'Error desconocido'; + $details = $err['error_data']['details'] ?? ($err['error_data']['description'] ?? null); + $subcode = $err['error_subcode'] ?? null; + + error_log("WhatsApp API Error: HTTP={$httpCode} code={$err['code']} sub={$subcode} msg={$errorMsg} details={$details} body=" . substr($response, 0, 400)); + + $full = $errorMsg; + if ($subcode) $full .= " (sub:{$subcode})"; + if ($details) $full .= " — {$details}"; + throw new Exception("Error de WhatsApp API: " . $full); } return $decoded;