Telegram-bot voor transcriptie
Bouw een Telegram-bot die audio- en videoberichten in meer dan 90 talen transcribeert met TypeScript met Deno in Supabase Edge Functions.
Handleiding · Er wordt van uitgegaan dat je de Speech to Text quickstart hebt voltooid en een Telegram-bottoken en Supabase-account hebt.
Inleiding
In deze tutorial leer je hoe je een Telegram-bot bouwt die audio- en videoberichten in meer dan 90 talen transcribeert met TypeScript en het ElevenLabs Scribe-model via de speech-to-text-API.
Vereisten
- Een ElevenLabs-account met een API-sleutel.
- Een Supabase-account (je kunt een gratis account aanmaken via database.new).
- De Supabase CLI, geïnstalleerd op je computer.
- De Deno-runtime, geïnstalleerd op je computer, en eventueel ingesteld in je favoriete IDE.
- Een Telegram-account.
Instellen
Een Telegram-bot registreren
Gebruik BotFather om een nieuwe Telegram-bot te maken. Voer de opdracht /newbot uit en volg de instructies om een nieuwe bot te maken. Aan het einde ontvang je je geheime bottoken. Bewaar deze veilig voor de volgende stap.

Lokaal een Supabase-project maken
Voer na het installeren van de Supabase CLI de volgende opdracht uit om lokaal een nieuw Supabase-project te maken:
Een databasetabel maken om de transcriptieresultaten te loggen
Maak vervolgens een nieuwe databasetabel om de transcriptieresultaten te loggen:
Hiermee wordt een nieuw migratiebestand gemaakt in de directory supabase/migrations. Open het bestand en voeg de volgende SQL toe:
Een Supabase Edge Function maken om Telegram-webhookrequests af te handelen
Maak vervolgens een nieuwe Edge Function om Telegram-webhookrequests af te handelen:
Als je VS Code of Cursor gebruikt, selecteer je y wanneer de CLI vraagt: “Generate VS Code settings for Deno? [y/N]”!
De omgevingsvariabelen instellen
Maak in de directory supabase/functions een nieuw .env-bestand en voeg de volgende variabelen toe:
Afhankelijkheden
Het project gebruikt enkele afhankelijkheden:
- Het opensource grammY Framework om de Telegram-webhookrequests af te handelen.
- De bibliotheek @supabase/supabase-js om met de Supabase-database te werken.
- De ElevenLabs JavaScript SDK om met de speech-to-text-API te werken.
Omdat Supabase Edge Function de Deno-runtime gebruikt, hoef je de afhankelijkheden niet te installeren. Je kunt ze via het voorvoegsel npm: importeren.
De Telegram-bot programmeren
Voeg de volgende code toe aan je nieuw gemaakte bestand scribe-bot/index.ts:
Toelichting op de code
Er zijn een paar zaken in de code die het vermelden waard zijn. We lopen ze stap voor stap door.
De inkomende request afhandelen
Gebruik de handler Deno.serve om de inkomende request af te handelen. De handler controleert of de request het juiste geheim bevat en geeft de request vervolgens door aan de functie handleUpdate.
Spraak-, audio- en videoberichten afhandelen
Het grammY-framework biedt een handige manier om op specifieke berichttypen te filteren. In dit geval luistert de bot naar spraak-, audio- en videoberichten.
Met de requestcontext haalt de bot de bestandsmetadata op en gebruikt vervolgens Supabase Background Tasks EdgeRuntime.waitUntil om de transcriptie op de achtergrond uit te voeren.
Zo kun je de gebruiker direct een reactie geven en de transcriptie van het bestand op de achtergrond afhandelen.
Transcriptie met de ElevenLabs API
Ten slotte gebruikt de bot in de achtergrondworker de ElevenLabs JavaScript SDK om het bestand te transcriberen. Zodra de transcriptie is voltooid, antwoordt de bot de gebruiker met het transcript en schrijft deze een logvermelding naar de Supabase-database met supabase-js.
Implementeren in Supabase
Maak, als je dat nog niet hebt gedaan, een nieuw Supabase-account aan op database.new en koppel het lokale project aan je Supabase-account:
De databasemigraties toepassen
Voer de volgende opdracht uit om de databasemigraties uit de directory supabase/migrations toe te passen:
Ga naar de tabeleditor in je Supabase-dashboard. Daar zou je een lege tabel transcription_logs moeten zien.

Voer ten slotte de volgende opdracht uit om de Edge Function te implementeren:
Ga naar de weergave Edge Functions in je Supabase-dashboard. Daar zou je de geïmplementeerde functie scribe-bot moeten zien. Noteer de functie-URL, want je hebt deze later nodig. Deze ziet er ongeveer zo uit: https://<project-ref>.functions.supabase.co/scribe-bot.

De webhook instellen
Stel de webhook-URL van je bot in op https://<PROJECT_REFERENCE>.functions.supabase.co/telegram-bot (vervang <...> door de juiste waarden). Voer hiervoor bijvoorbeeld in je browser een GET-request uit naar de volgende URL:
FUNCTION_SECRET is het geheim dat je in je .env-bestand hebt ingesteld.

De functiegeheimen instellen
Nu je alle geheimen lokaal hebt ingesteld, kun je de volgende opdracht uitvoeren om de geheimen in je Supabase-project in te stellen:
De bot testen
Ten slotte kun je de bot testen door er een spraakbericht, audiobestand of videobestand naartoe te sturen.

Nadat je het transcript als antwoord hebt gezien, ga je terug naar de tabeleditor in het Supabase-dashboard. Daar zou je een nieuwe rij in de tabel transcription_logs moeten zien.
