Bot Telegram per la trascrizione
Guida pratica · Presuppone che tu abbia completato la guida rapida di Speech to Text e disponga di un token per bot Telegram e di un account Supabase.
Introduzione
In questo tutorial imparerai a creare un bot Telegram che trascrive messaggi audio e video in oltre 90 lingue usando TypeScript e il modello ElevenLabs Scribe tramite l’API Speech to Text.
Requisiti
- Un account ElevenLabs con una chiave API.
- Un account Supabase (puoi registrarti gratuitamente tramite database.new).
- La CLI di Supabase installata sul tuo computer.
- Il runtime Deno installato sul tuo computer e, facoltativamente, configurato nel tuo IDE preferito.
- Un account Telegram.
Configurazione
Registra un bot Telegram
Usa BotFather per creare un nuovo bot Telegram. Esegui il comando /newbot e segui le istruzioni per creare un nuovo bot. Al termine, riceverai il token segreto del bot. Conservalo in modo sicuro per il passaggio successivo.

Crea un progetto Supabase in locale
Dopo aver installato la CLI di Supabase, esegui il seguente comando per creare un nuovo progetto Supabase in locale:
Crea una tabella del database per registrare i risultati della trascrizione
Ora crea una nuova tabella del database per registrare i risultati della trascrizione:
Verrà creato un nuovo file di migrazione nella directory supabase/migrations. Apri il file e aggiungi il seguente codice SQL:
Crea una Supabase Edge Function per gestire le richieste webhook di Telegram
Ora crea una nuova Edge Function per gestire le richieste webhook di Telegram:
Se usi VS Code o Cursor, seleziona y quando la CLI visualizza il prompt “Generate VS Code settings for Deno? [y/N]”!
Configura le variabili d’ambiente
Nella directory supabase/functions, crea un nuovo file .env e aggiungi le seguenti variabili:
Dipendenze
Il progetto usa alcune dipendenze:
- Il framework open source grammY per gestire le richieste webhook di Telegram.
- La libreria @supabase/supabase-js per interagire con il database Supabase.
- L’SDK JavaScript di ElevenLabs per interagire con l’API Speech to Text.
Poiché Supabase Edge Function usa il runtime Deno, non devi installare le dipendenze: puoi invece importarle tramite il prefisso npm:.
Scrivi il codice del bot Telegram
Nel file scribe-bot/index.ts appena creato, aggiungi il seguente codice:
Approfondimento sul codice
Ci sono alcuni aspetti del codice da notare. Vediamoli passo dopo passo.
Gestione della richiesta in arrivo
Per gestire la richiesta in arrivo, usa l’handler Deno.serve. L’handler verifica che la richiesta abbia il segreto corretto e poi la passa alla funzione handleUpdate.
Gestisci messaggi vocali, audio e video
Il framework grammY offre un modo pratico per filtrare tipi di messaggio specifici. In questo caso, il bot ascolta messaggi vocali, audio e video.
Usando il contesto della richiesta, il bot estrae i metadati del file e poi usa EdgeRuntime.waitUntil di Supabase Background Tasks per eseguire la trascrizione in background.
In questo modo puoi fornire una risposta immediata all’utente e gestire la trascrizione del file in background.
Trascrizione con l'API ElevenLabs
Infine, nel worker in background, il bot usa l’SDK JavaScript di ElevenLabs per trascrivere il file. Quando la trascrizione è completata, il bot risponde all’utente con il testo trascritto e scrive una voce di log nel database Supabase usando supabase-js.
Esegui il deployment su Supabase
Se non l’hai già fatto, crea un nuovo account Supabase su database.new e collega il progetto locale al tuo account Supabase:
Applica le migrazioni del database
Esegui il seguente comando per applicare le migrazioni del database dalla directory supabase/migrations:
Vai all’editor delle tabelle nella dashboard di Supabase: dovresti vedere una tabella transcription_logs vuota.

Infine, esegui il seguente comando per eseguire il deployment della Edge Function:
Vai alla vista Edge Functions nella dashboard di Supabase: dovresti vedere la funzione scribe-bot distribuita. Prendi nota dell’URL della funzione, perché ti servirà in seguito; dovrebbe essere simile a https://<project-ref>.functions.supabase.co/scribe-bot.

Configura il webhook
Imposta l’URL del webhook del tuo bot su https://<PROJECT_REFERENCE>.functions.supabase.co/telegram-bot (sostituendo <...> con i rispettivi valori). Per farlo, esegui una richiesta GET al seguente URL, ad esempio nel browser:
Tieni presente che FUNCTION_SECRET è il segreto impostato nel file .env.

Imposta i segreti della funzione
Ora che hai configurato tutti i segreti in locale, puoi eseguire il seguente comando per impostarli nel tuo progetto Supabase:
Testa il bot
Infine, puoi testare il bot inviandogli un messaggio vocale, un file audio o video.

Dopo aver ricevuto la trascrizione come risposta, torna all’editor delle tabelle nella dashboard di Supabase: dovresti vedere una nuova riga nella tabella transcription_logs.
