From df8d905da761d7781dde1406825b567ee92fefa1 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Fri, 22 May 2026 15:38:03 +0300 Subject: [PATCH] Enforce maximum audio duration limit and bypass Gemini --- .../app/Controllers/WhatsAppController.php | 27 +++++++++++-------- whatsapp-gateway/baileys-client.js | 1 + 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/backend/app/Controllers/WhatsAppController.php b/backend/app/Controllers/WhatsAppController.php index 05e80ea..2511d0b 100644 --- a/backend/app/Controllers/WhatsAppController.php +++ b/backend/app/Controllers/WhatsAppController.php @@ -369,18 +369,23 @@ class WhatsAppController extends BaseController $systemPrompt .= "\n\nIMPORTANT LANGUAGE RULE: Detect the language of the incoming message. If the incoming message is in English, you MUST reply in English. If the incoming message is in Arabic, you MUST reply in Arabic. Override any default language instruction to match the user's language."; if ($hasAudio) { - $mimeType = $msgData['mimeType']; - if (strpos($mimeType, ';') !== false) { - $mimeType = trim(explode(';', $mimeType)[0]); - } - // Try generating native audio response first - $audioResponse = \App\Services\GeminiService::generateAudioResponseFromAudio($apiKey, $systemPrompt, $msgData['audio'], $mimeType); - if ($audioResponse && !empty($audioResponse['audio'])) { - $replyAudio = $audioResponse['audio']; - $replyText = '[صوت من الذكاء الاصطناعي]'; + $duration = isset($msgData['duration']) ? intval($msgData['duration']) : null; + if ($duration !== null && $duration > 90) { + $replyText = "⚠️ عذراً، التسجيل الصوتي طويل جداً. يرجى إرسال تسجيل صوتي موجز (لا يتجاوز دقيقة واحدة) لتلخيص المشكلة لكي نتمكن من مساعدتك بشكل أفضل."; } else { - // Fallback to text output from audio - $replyText = \App\Services\GeminiService::generateResponseFromAudio($apiKey, $systemPrompt, $msgData['audio'], $mimeType); + $mimeType = $msgData['mimeType']; + if (strpos($mimeType, ';') !== false) { + $mimeType = trim(explode(';', $mimeType)[0]); + } + // Try generating native audio response first + $audioResponse = \App\Services\GeminiService::generateAudioResponseFromAudio($apiKey, $systemPrompt, $msgData['audio'], $mimeType); + if ($audioResponse && !empty($audioResponse['audio'])) { + $replyAudio = $audioResponse['audio']; + $replyText = '[صوت من الذكاء الاصطناعي]'; + } else { + // Fallback to text output from audio + $replyText = \App\Services\GeminiService::generateResponseFromAudio($apiKey, $systemPrompt, $msgData['audio'], $mimeType); + } } } elseif ($hasImage) { $mimeType = $msgData['imageMimeType']; diff --git a/whatsapp-gateway/baileys-client.js b/whatsapp-gateway/baileys-client.js index 4f11136..333b806 100644 --- a/whatsapp-gateway/baileys-client.js +++ b/whatsapp-gateway/baileys-client.js @@ -184,6 +184,7 @@ async function startSession(session_key, webhook_url) { body: body, audio: audioBase64, mimeType: audioMimeType, + duration: msg.message?.audioMessage?.seconds ? Number(msg.message.audioMessage.seconds) : null, image: imageBase64, imageMimeType: imageMimeType, timestamp: msg.messageTimestamp