iliadvoicemail-to-matrix#
Worker di Cloudflare che riceve email tramite Email Routing e le inoltra in una stanza Matrix.
Il caso principale supportato e' la segreteria telefonica di ILIAD:
- se l'email proviene da
vms@iliad.ite contiene un allegato audio, il worker carica l'audio su Matrix - invia un evento
m.audionella stanza configurata - se riesce a estrarre i metadati dal testo del messaggio, invia anche una nota nel thread con mittente, data e durata
Per le altre email, il worker invia un messaggio di testo con oggetto, mittente e corpo, poi carica eventuali allegati audio come messaggi Matrix separati.
Configurazione richiesta#
Il worker usa queste variabili di configurazione:
MATRIX_HOMESERVER: URL dell'homeserver MatrixMATRIX_ROOM_ID: room ID della stanza di destinazioneMATRIX_ACCESS_TOKEN: access token Matrix usato per inviare messaggi e caricare media
Nel repository, wrangler.jsonc contiene solo valori di esempio pubblici per MATRIX_HOMESERVER e MATRIX_ROOM_ID.
Non sono valori reali di deploy.
Modello di configurazione#
Questo progetto usa una separazione esplicita tra configurazione di esempio, configurazione locale e configurazione di deploy:
wrangler.jsonc: contiene la configurazione strutturale del worker e placeholder pubblici.dev.vars: contiene i valori reali per lo sviluppo locale ed e' ignorato da git- dashboard di Cloudflare: contiene le variabili reali di deploy per
MATRIX_HOMESERVEReMATRIX_ROOM_ID - secret di Cloudflare: contiene
MATRIX_ACCESS_TOKENper il deploy
In wrangler.jsonc e' attivo keep_vars: true.
Questo serve a evitare che wrangler deploy cancelli le variabili gestite nella dashboard di Cloudflare.
Sviluppo locale#
- Crea un file
.dev.varsnella root del progetto. - Copia i nomi delle variabili da
.dev.vars.example. - Inserisci i tuoi valori reali.
Esempio:
MATRIX_HOMESERVER="https://matrix.example.com"
MATRIX_ROOM_ID="!your-room-id:example.com"
MATRIX_ACCESS_TOKEN="replace-me"
Per lo sviluppo locale, Wrangler carica .dev.vars e rende queste variabili disponibili nel parametro env del worker.
Configurazione di deploy#
Per il deploy usa questo percorso canonico:
- imposta
MATRIX_HOMESERVEReMATRIX_ROOM_IDcome variabili nella configurazione runtime del Worker su Cloudflare - imposta
MATRIX_ACCESS_TOKENcome secret del Worker su Cloudflare
I valori presenti in wrangler.jsonc sono solo placeholder e non devono essere usati come configurazione reale.
Comandi utili#
nix develop- apre una shell connodeewranglernpm run dev- avviawrangler devnpm run deploy- eseguewrangler deploynpm run generate-types- rigeneraworker-configuration.d.tsnpm test- esegue la suite Vitest
Comportamento del worker#
Quando arriva un'email:
- il worker la parse tramite
postal-mime - legge il corpo testuale
- costruisce la configurazione Matrix da
env - distingue tra email ILIAD e email generiche
- invia testo, audio e note thread su Matrix tramite Client-Server API
Se l'invio a Matrix fallisce oppure l'email non contiene un corpo testuale valido, il worker rifiuta il messaggio.
Note importanti#
- la guida documenta solo il flusso dell'ambiente di default
.dev.varsserve solo in locale e non configura il deploykeep_vars: trueaiuta a preservare le variabili gestite su Cloudflare, ma non sostituisce la configurazione iniziale delle variabili o dei secret