import os
import json
import requests

# Recupera le variabili d'ambiente
N8N_WEBHOOK_URL = os.environ.get('N8N_WEBHOOK_URL')
N8N_SECRET_TOKEN = os.environ.get('N8N_SECRET_TOKEN')

def build_alexa_response(text):
    """Costruisce la risposta JSON per Alexa."""
    return {
        'version': '1.0',
        'response': {
            'outputSpeech': {
                'type': 'PlainText',
                'text': text
            },
            'shouldEndSession': True
        }
    }

def lambda_handler(event, context):
    """Punto di ingresso della funzione Lambda."""
    print(f"Richiesta ricevuta da Alexa: {json.dumps(event)}")

    if not N8N_WEBHOOK_URL or not N8N_SECRET_TOKEN:
        print("Errore: Variabili d'ambiente non configurate.")
        return build_alexa_response("Errore di configurazione del server.")

    headers = {
        'Content-Type': 'application/json',
        'X-N8N-Webhook-Secret': N8N_SECRET_TOKEN
    }

    try:
        response = requests.post(
            N8N_WEBHOOK_URL,
            headers=headers,
            data=json.dumps(event),
            timeout=8  # Alexa attende max 10 secondi
        )
        response.raise_for_status()  # Solleva un'eccezione per status code non-2xx

        n8n_data = response.json()
        tts_text = n8n_data.get('tts_response', 'Nessuna risposta ricevuta da Pompeo.')

        print(f"Risposta da n8n: {tts_text}")
        return build_alexa_response(tts_text)

    except requests.exceptions.RequestException as e:
        print(f"Errore nella chiamata a n8n: {e}")
        return build_alexa_response("Mi dispiace, non riesco a contattare Pompeo in questo momento.")
    except Exception as e:
        print(f"Errore generico: {e}")
        return build_alexa_response("Si è verificato un errore inaspettato.")
