← Tutte le skill
In corso settembre 2026

Calendario Raccolta Rifiuti → Alexa

Un sistema che trasforma i calendari PDF della raccolta differenziata in promemoria vocali su Alexa — "cosa butto domani?" e un avviso ogni sera prima della raccolta.

Invocazione: “Alexa, apri calendario rifiuti”

PythonAlexaAWS LambdaNode.jsPDF

Il problema

Ricordarsi ogni sera quale bidone portare fuori è un classico. I calendari del gestore (SERIT) sono PDF: comodi da guardare, inutili da interrogare a voce. Volevo poter chiedere ad Alexa “cosa butto domani?” e, meglio ancora, ricevere un promemoria automatico la sera prima.

Architettura a tre strati

  1. Ingestione (offline) — scarica i PDF SERIT e li converte in JSON strutturato e validato. È l’unico strato legato al layout del PDF.
  2. Dati normalizzati — un file per comune/zona/anno più un catalog.json indice. Aggiungere un comune significa aggiungere file, senza toccare la skill.
  3. Skill Alexa (Node / AWS Lambda) — risponde a voce e programma i promemoria serali.

Il parser PDF (la parte più interessante)

I PDF SERIT hanno una particolarità insidiosa: i numeri dei giorni sono grafica vettoriale, non testo. Il parser ricostruisce quindi la data dalla sequenza dei giorni della settimana (che invece sono testo) più mese e anno, e la valida confrontandola con il giorno-settimana atteso. Se qualcosa non torna, il programma esce con un codice d’errore: è il segnale che il layout del PDF è cambiato e il parser va rivisto. Sui file di prova: zero incongruenze.

La skill Alexa

Il vincolo che ha ribaltato il progetto

La prima architettura creava i promemoria fuori sessione: una catena EventBridge → Lambda → Messaging API doveva svegliare la skill ogni sera e programmare l’avviso. Non funziona. Alexa vieta di creare promemoria fuori da una sessione con l’utente e risponde NOT_IN_SESSION, anche quando la skill è invocata tramite il canale di messaggistica. Un assunto sbagliato, smentito dai log.

La soluzione è un promemoria “a orizzonte”: quando apri la skill (o dici “attiva i promemoria”), la skill programma in un colpo solo tutte le raccolte delle successive ~6 settimane, ognuna come avviso vocale la sera prima. A ogni apertura fa un top-up e riempie le settimane mancanti. Il compromesso è dichiarato: è automatico per circa sei settimane, poi basta riaprire la skill per rinnovare l’orizzonte.

Stato

Fasi 0–2 completate e skill in produzione (parser PDF, comandi a voce, promemoria a orizzonte). Resta da confermare l’ultima verifica in-app dei promemoria. Prossima fase: generalizzare ad altri comuni SERIT e pubblicare la skill sullo Store.

Stack

Python (parser) · Node.js / Alexa ASK SDK · AWS Lambda · DynamoDB · Alexa Reminders API