'Hola! Bienvenido. Escribe tu consulta.', 'mensaje_transferencia' => 'Un agente se comunicara contigo en breve. Por favor espera.', 'validacion_accion_auto' => 'solo_notificar', 'validacion_monto_tolerancia' => '0', ]; foreach ($keys as $key) { $this->{$key} = ChatConfig::get($key, $defaults[$key] ?? ''); } } public function guardar(): void { $this->validate([ 'mensaje_bienvenida' => 'required|string|max:500', 'mensaje_transferencia' => 'required|string|max:500', 'validacion_monto_tolerancia' => 'nullable|integer|min:0', 'recarga_banco_nombre' => 'nullable|max:60', 'recarga_banco_llave' => 'nullable|max:60', 'recarga_banco_titular' => 'nullable|max:100', ]); $keys = [ 'telegram_token', 'mensaje_bienvenida', 'mensaje_transferencia', 'gemini_api_key', 'gemini_habilitado', 'gemini_prompt_extra', 'validacion_foto_habilitada', 'validacion_accion_auto', 'validacion_monto_tolerancia', 'whisper_url', 'whisper_token', 'whisper_habilitado', 'recarga_banco_nombre', 'recarga_banco_llave', 'recarga_banco_titular', ]; foreach ($keys as $key) { ChatConfig::set($key, $this->{$key}); } $this->alert('success', 'Configuracion guardada correctamente.'); } public function resetearWhisper(): void { $url = trim($this->whisper_url ?: ChatConfig::get('whisper_url')); $token = trim($this->whisper_token ?: ChatConfig::get('whisper_token')); if (! $url) { $this->whisperResult = '⚠️ La URL de Whisper está vacía.'; return; } try { $response = Http::timeout(10) ->withBasicAuth('whisper', $token) ->get(rtrim($url, '/asr')); // ping al servidor $this->whisperResult = $response->successful() ? '✅ Conexión con Whisper establecida correctamente.' : '❌ Whisper respondió con error ' . $response->status() . '.'; } catch (\Throwable $e) { $this->whisperResult = '❌ No se pudo conectar con Whisper: ' . $e->getMessage(); } } public function registrarWebhook(): void { $token = trim($this->telegram_token); if (! $token) { $this->webhookResult = '⚠️ El token de Telegram está vacío.'; return; } ChatConfig::set('telegram_token', $token); $webhookUrl = url('/chat/webhook/telegram'); try { $response = Http::timeout(15) ->post("https://api.telegram.org/bot{$token}/setWebhook", [ 'url' => $webhookUrl, ]); $data = $response->json(); if (! ($data['ok'] ?? false)) { $this->webhookResult = '❌ Error de Telegram: ' . ($data['description'] ?? 'respuesta desconocida'); return; } // Registrar comandos del bot (/menu, /salir, /cancelar) app(\App\Services\TelegramBotService::class)->registrarComandos(); $this->webhookResult = '✅ Webhook registrado y comandos configurados correctamente.'; } catch (\Throwable $e) { $this->webhookResult = '❌ No se pudo conectar con Telegram: ' . $e->getMessage(); } } public function render() { return view('livewire.chat.show-configuracion-chat'); } }