En este ejercicio nos conectamos a la API de Openweather para obtener los datos en un Bot interactivo

Escribe el nombre de la ciudad del Mundo que quieras y el bot te dará los datos en tiempo real

Chat-Bot del Clima

Chat-Bot del Clima

🌟 ¡Aprende a consumir API´s para Tu Chat-Bot! 🌟

🔹 Paso a Paso:

  1. Estructura HTML:

    • Crear una estructura básica para el chat-bot.
  2. Estilo CSS:

    • Añadir transparencia, desenfoque y animaciones.
    • Usa backdrop-filter: blur() para el efecto de desenfoque. 🌫️
    • Anima la entrada de los mensajes con @keyframes. 🚀
  3. Lógica JavaScript:

    • Usar la API de OpenWeatherMap para obtener el clima y mostrarlo en el chat.

HTML

				
					<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Chat-Bot del Clima</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="chat-container">
        <div class="chat-header">
            <h1>Chat-Bot del Clima</h1>
        </div>
        <div class="chat-messages" id="chat-messages"></div>
        <div class="chat-input">
            <input type="text" id="user-input" placeholder="Escribe el nombre de una ciudad...">
            <button id="send-btn">Enviar</button>
        </div>
    </div>
    <script src="script.js"></script>
</body>
</html>

				
			

CSS

				
					body {
    font-family: Arial, sans-serif;
    background: url('background.jpg') no-repeat center center fixed;
    background-size: cover;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}

.chat-container {
    width: 400px;
    backdrop-filter: blur(10px);
    background: rgba(255, 255, 255, 0.1);
    border-radius: 8px;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    animation: fadeIn 1s ease-in-out;
}

.chat-header {
    background-color: rgba(98, 0, 234, 0.8);
    color: #fff;
    padding: 20px;
    text-align: center;
}

.chat-messages {
    flex: 1;
    padding: 20px;
    overflow-y: auto;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.message {
    margin-bottom: 15px;
    animation: slideIn 0.5s ease-in-out;
}

.message.user {
    text-align: right;
}

.message.bot {
    text-align: left;
}

.message .content {
    display: inline-block;
    padding: 10px 20px;
    border-radius: 20px;
    max-width: 70%;
}

.message.user .content {
    background-color: rgba(98, 0, 234, 0.8);
    color: #fff;
}

.message.bot .content {
    background-color: rgba(224, 224, 224, 0.8);
    color: #000;
}

.chat-input {
    display: flex;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

#user-input {
    flex: 1;
    padding: 15px;
    border: none;
    outline: none;
    font-size: 16px;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    backdrop-filter: blur(5px);
}

#send-btn {
    padding: 15px;
    background-color: rgba(98, 0, 234, 0.8);
    color: #fff;
    border: none;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

#send-btn:hover {
    background-color: rgba(55, 0, 179, 0.8);
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes slideIn {
    from {
        transform: translateY(20px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

				
			

JS

				
					document.getElementById('send-btn').addEventListener('click', sendMessage);
document.getElementById('user-input').addEventListener('keypress', function(e) {
    if (e.key === 'Enter') {
        sendMessage();
    }
});

async function sendMessage() {
    const inputElement = document.getElementById('user-input');
    const message = inputElement.value.trim();
    
    if (message === '') return;

    displayMessage('user', message);
    inputElement.value = '';

    const response = await fetchWeather(message);
    displayMessage('bot', response);
}

function displayMessage(sender, text) {
    const chatMessages = document.getElementById('chat-messages');
    const messageElement = document.createElement('div');
    messageElement.classList.add('message', sender);

    const contentElement = document.createElement('div');
    contentElement.classList.add('content');
    contentElement.innerText = text;

    messageElement.appendChild(contentElement);
    chatMessages.appendChild(messageElement);
    chatMessages.scrollTop = chatMessages.scrollHeight;
}

async function fetchWeather(city) {
    const apiKey = 'Tu clave API de Openweather';
    const apiUrl = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric&lang=es`;
    
    try {
        console.log(`Fetching weather for: ${city}`);
        const response = await fetch(apiUrl);
        console.log(`Response status: ${response.status}`);
        if (!response.ok) throw new Error('Ciudad no encontrada');
        const data = await response.json();
        console.log(`Data received: ${JSON.stringify(data)}`);
        return `El clima en ${data.name} es ${data.weather[0].description} con una temperatura de ${data.main.temp}°C.`;
    } catch (error) {
        console.error(`Error fetching weather data: ${error.message}`);
        return `Error: ${error.message}`;
    }
}

				
			
COMPARTIR EN:
Facebook
LinkedIn
WhatsApp

🎁 Descarga Gratis el Plugin Woo WhatsOrder

Woo WhatsOrder permite a tus clientes enviar su pedido a tu WhatsApp tras realizar una compra en WooCommerce. Fácil de configurar, rápido de implementar.
COMPARTIR EN:
Facebook
LinkedIn
WhatsApp

🔍 Analiza tu web con Inteligencia Artificial – Gratis y al instante

¿Tu sitio está optimizado? Con esta herramienta puedes descubrir en segundos cómo mejorar la UX de tu web gracias a la inteligencia artificial.
COMPARTIR EN:
Facebook
LinkedIn
WhatsApp

Checklist de UX para Desarrolladores

¿Cuántos errores de experiencia de usuario tiene tu web y aún no lo sabes? Este checklist UX te los revela todos.
COMPARTIR EN:
Facebook
LinkedIn
WhatsApp

Cómo enviar pedidos o reservas de WooCommerce a WhatsApp (con o sin API)

Pedidos de WooCommerce directamente en tu WhatsApp con dos métodos: un método simple sin programación y otro con la API de WhatsApp
COMPARTIR EN:
Facebook
LinkedIn
WhatsApp

Integrar la Síntesis de Voz de ElevenLabs en tu Proyecto Web

Añade un Agente entrenado con reconocimiento de voz
COMPARTIR EN:
Facebook
LinkedIn
WhatsApp

Canvas Web Component

Como desarrollador full stack, notarás que se aprovechan técnicas modernas (como shadow DOM, ResizeObserver y custom elements) para lograr un componente reutilizable y de alto rendimiento.