chatbot-web-app / index.html
salomonsky's picture
Upload index.html with huggingface_hub
56069b3 verified
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chatbot</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" rel="stylesheet">
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="chat-tab" data-bs-toggle="tab" data-bs-target="#chat" type="button" role="tab">💬 Chat</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="config-tab" data-bs-toggle="tab" data-bs-target="#config" type="button" role="tab">⚙️ Configuración</button>
</li>
{% if config.NGROK_URL %}
<li class="nav-item ms-auto d-flex align-items-center">
<div class="input-group">
<input type="text" class="form-control" value="{{ config.NGROK_URL }}" id="ngrokUrl" readonly>
<button class="btn btn-primary" onclick="shareUrl()">🔗 Copiar URL</button>
</div>
</li>
{% endif %}
</ul>
<div class="tab-content" id="myTabContent">
<!-- Tab de Chat -->
<div class="tab-pane fade show active" id="chat" role="tabpanel">
<div class="chat-container">
<div class="chat-main">
<div class="control-panel">
<div class="row">
<div class="col-md-4">
<label for="modoSelect" class="form-label">📋 Modo:</label>
<select id="modoSelect" class="form-select">
<option value="soporte" selected>🔧 Soporte Técnico</option>
<option value="seguros">🛡️ Seguros</option>
<option value="creditos">💰 Créditos</option>
<option value="cobranza">💵 Cobranza</option>
<option value="encuestas">📊 Encuestas</option>
</select>
</div>
<div class="col-md-4">
<label for="modeloSelect" class="form-label">🤖 Modelo:</label>
<select id="modeloSelect" class="form-select">
<option value="gemini" selected>🧠 Gemini</option>
<option value="mixtral">⚡Mixtral</option>
</select>
</div>
<div class="col-md-4">
<label for="vozSelect" class="form-label">🎤 Voz:</label>
<select id="vozSelect" class="form-select">
<option value="EDGE" selected>🗣️ Jorge (MX)</option>
<option value="EDGE_ES">👨 Álvaro (ES)</option>
<option value="VITS">🎙️ VITS (ES)</option>
</select>
</div>
</div>
</div>
<div id="chatBox"></div>
<div class="input-group">
<input type="text" id="textInput" class="form-control" placeholder="Escribe tu mensaje...">
<button id="sendText" class="btn btn-primary">
<i class="fas fa-paper-plane"></i> Enviar
</button>
<button id="startRecording" class="btn btn-primary recording-button">
<i class="fas fa-microphone"></i>
</button>
</div>
<div class="status-label" id="statusLabel">Iniciando...</div>
</div>
<div class="voice-commands">
<h5>🎤 Comandos de Voz</h5>
<div class="command-group">
<span class="command-pill stop">⏹️ Alto</span>
<span class="command-pill stop">⏹️ Detente</span>
<span class="command-pill stop">⏹️ Silencio</span>
<span class="command-pill stop">⏹️ Calla</span>
</div>
<div class="command-group">
<span class="command-pill greet">👋 Hola</span>
<span class="command-pill greet">👋 Buenos días</span>
<span class="command-pill greet">👋 Buenas tardes</span>
</div>
<div class="command-group">
<span class="command-pill interest">✨ Me interesa</span>
<span class="command-pill interest">✨ Dime más</span>
<span class="command-pill interest">✨ Acepto</span>
</div>
</div>
</div>
</div>
<!-- Tab de Configuración -->
<div class="tab-pane fade" id="config" role="tabpanel">
<div class="config-container mt-4">
<div class="card">
<div class="card-header">
<h5 class="mb-0">Configuración de APIs</h5>
</div>
<div class="card-body">
<form id="apiConfigForm">
<div class="mb-3">
<label for="openaiKey" class="form-label">OpenAI API Key</label>
<input type="password" class="form-control" id="openaiKey" placeholder="Ingresa tu API key de OpenAI">
</div>
<div class="mb-3">
<label for="huggingfaceKey" class="form-label">Hugging Face API Key</label>
<input type="password" class="form-control" id="huggingfaceKey" placeholder="Ingresa tu API key de Hugging Face">
</div>
<div class="mb-3">
<label for="elevenLabsKey" class="form-label">ElevenLabs API Key</label>
<input type="password" class="form-control" id="elevenLabsKey" placeholder="Ingresa tu API key de ElevenLabs">
</div>
<button type="submit" class="btn btn-primary">Guardar configuración</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<script src="{{ url_for('static', filename='js/config.js') }}"></script>
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
setTimeout(() => {
const startRecordingBtn = document.getElementById('startRecording');
if (startRecordingBtn) {
startRecordingBtn.click();
}
}, 2000);
});
function shareUrl() {
const url = document.getElementById('ngrokUrl').value;
navigator.clipboard.writeText(url).then(() => {
const btn = document.querySelector('button[onclick="shareUrl()"]');
const originalText = btn.innerHTML;
btn.innerHTML = '✅ ¡Copiado!';
setTimeout(() => {
btn.innerHTML = originalText;
}, 2000);
}).catch(err => {
alert("URL del túnel: " + url);
});
}
</script>
</body>
</html>