Dina Telegram-chattar är fulla av beslut, kunddetaljer och “glöm inte det här”-ögonblick. Och sedan försvinner allt in i röstmeddelanden som ingen kan söka i, skumma igenom eller kopiera in i dokument.
Marknadschefer sitter och spelar upp ljud om och om igen för att plocka citat. Byråägare tappar bort action points i kundtrådar. Till och med ops-ansvariga märker det när godkännanden ligger gömda i 45 sekunder mumlad kontext. Den här Telegram-automationen för transkribering gör röst till strukturerad text du faktiskt kan använda.
Du sätter upp ett n8n-flöde som lyssnar efter röstmeddelanden, transkriberar dem med OpenAI, faller tillbaka till Gemini vid behov och postar läsbar text tillbaka i samma chatt (även när meddelandena är långa).
Så fungerar den här automationen
Här är det kompletta flödet du kommer att sätta upp:
n8n Workflow Template: Telegram + OpenAI: röstmeddelanden till sökbar text
flowchart LR
subgraph sg0["Incoming Telegram Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Incoming Telegram Trigger"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Notify Start Transcription"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Access Denied"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Alert Missing File"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Retrieve File for GPT"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Fetch File for Gemini"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Warn Unrecognized File"]
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Transcript Output"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Chunked Output"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Sender Access", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Detect Message Type", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Voice File ID", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Audio File ID", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Audio Format", pos: "b", h: 48 }
n14@{ icon: "mdi:robot", form: "rounded", label: "OpenAI Transcription", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Gemini Transcription", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Text Variable", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Text Variable 2", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Text Length", pos: "b", h: 48 }
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Split Text Chunks"]
n9 --> n10
n9 --> n2
n4 --> n14
n4 --> n1
n19 --> n8
n5 --> n15
n0 --> n9
n15 --> n17
n14 --> n16
n14 --> n5
n12 --> n13
n11 --> n13
n16 --> n18
n13 --> n4
n13 --> n6
n17 --> n18
n18 --> n7
n18 --> n19
n10 --> n11
n10 --> n12
n10 --> n3
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n14,n15 ai
class n9,n10,n13,n18 decision
class n19 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n4,n5,n6,n7,n8,n19 customIcon
Varför det här spelar roll: röstmeddelanden går inte att söka i
Röstmeddelanden känns snabba i stunden. Men senare blir de friktion. Någon frågar: “Vad sa kunden om prissättningen?” och plötsligt sitter du och skrollar i ljud, höjer volymen, spolar tillbaka och hoppas att du fångar det viktiga. Multiplicera det med en intensiv vecka av teamchattar så får du en tyst tidskostnad. Det värsta är kontextförlusten: beslut hamnar aldrig i era dokument, och uppföljningar missas eftersom den “riktiga informationen” låg i ljud.
Det blir snabbt mycket. Här är var det oftast faller ihop.
- Folk slutar dokumentera eftersom det är irriterande att spela upp ljud, så kunskap blir kvarlåst i Telegram.
- Manuell transkribering är långsam och felkänslig, särskilt när flera pratar eller accenter varierar.
- Ett långt röstmeddelande kan överskrida Telegrams gräns på 4 000 tecken vid transkribering, så texten kapas eller skickas aldrig.
- Utan åtkomstkontroll kan vem som helst trigga transkriberingar och bränna AI-krediter (ibland av misstag).
Vad du bygger: säker röst-till-text i Telegram
Det här flödet gör om Telegram-röstmeddelanden till läsbara text-svar, automatiskt. Det startar när någon postar ett röstmeddelande eller en ljudfil i din Telegram-grupp, verifierar att avsändaren får använda transkriberingstjänsten och fortsätter sedan. Om meddelandet innehåller ljud i ett format som stöds laddar n8n ner filen och skickar den till OpenAI för transkribering (med en snabb “transkribering startad”-notis så att ingen behöver gissa). Om OpenAI ger fel skickar flödet samma fil vidare till Gemini som backup. Till sist postas den transkriberade texten tillbaka i chatten, och långa transkript delas upp i flera meddelanden så att inget kapas.
Flödet är enkelt i praktiken. Telegram triggar körningen, åtkomstkontroll håller användningen i schack och AI sköter transkriberingen. Sedan formaterar n8n resultatet efter Telegrams begränsningar och levererar det direkt där teamet redan jobbar.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att teamet får 10 röstmeddelanden om dagen och att varje tar cirka 3 minuter att spela upp, pausa och skriva in i något användbart. Det är ungefär 30 minuter dagligen, och det är oftast de sämsta 30 minuterna eftersom det avbryter riktigt arbete. Med det här flödet skickar du röstmeddelandet som vanligt, får en “startad”-notis och får sedan transkriptet tillbaka i chatten. Din manuella tid blir nära noll, och långa meddelanden kommer fortfarande fram som flera delar i stället för att misslyckas.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att ta emot röstmeddelanden och posta transkript.
- OpenAI för att transkribera ljud med Whisper.
- Google Gemini som backup-transkribering om OpenAI misslyckas.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard).
Kunskapsnivå: Medel. Du kopplar Telegram + AI-uppgifter och justerar sedan några regler (behöriga användare, format och hur utdata ska hanteras).
Vill du att någon bygger det här åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett Telegram-meddelande kommer in. Flödet triggas av nya meddelanden i din grupp och fångar avsändardetaljer plus meddelandetyp (röstmeddelande, ljudfil eller bara text).
Åtkomst kontrolleras direkt. En “if”-regel verifierar avsändaren mot en godkänd lista. Om de inte är behöriga svarar n8n med ett åtkomst nekad-meddelande och stoppar, vilket innebär att du inte slösar AI-krediter på slumpmässiga förfrågningar.
Ljud upptäcks och valideras. Flödet avgör om det finns en fil att transkribera, hämtar rätt Telegram-file ID och kontrollerar ljudformatet (OGG-röstmeddelanden, MP3, M4A/MP4 och andra typer som stöds). Om det inte finns något ljud eller om formatet är okänt skickar det en tydlig varning tillbaka till chatten.
Transkriberingen körs, med fallback. n8n laddar ner filen och skickar den till OpenAI för transkribering samtidigt som den postar en snabb “startad”-notis. Om OpenAI ger fel routar flödet automatiskt samma fil till Gemini och mappar sedan textresultatet till en gemensam utdatavariabel så att resten av flödet beter sig likadant.
Transkriptet levereras säkert. Om transkriberingen är under Telegrams gräns på 4 000 tecken postas den en gång. Om den är längre delar ett kodsteg upp den i läsbara delar och skickar flera meddelanden i följd.
Du kan enkelt justera listan över behöriga användare så att den matchar ditt team, eller ändra hur uppdelningen fungerar utifrån er chattstil. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera Telegram-triggern
Sätt upp startpunkten som lyssnar efter inkommande Telegram-meddelanden och startar arbetsflödet.
- Lägg till och öppna Incoming Telegram Trigger.
- Ställ in Updates till
message. - Credential Required: Anslut era telegramApi-inloggningsuppgifter.
Tips: Säkerställ att er Telegram-bot redan är skapad och tillåts ta emot meddelanden från de användare ni planerar att auktorisera.
Steg 2: Validera avsändare och identifiera meddelandetyp
Spärra åtkomst till boten och routa meddelanden beroende på om de innehåller röst- eller ljudfiler.
- Öppna Validate Sender Access och ställ in villkoren så att endast auktoriserade användare tillåts, med
={{ $json.message.from.username }}och tillåtna värdenUser 2ochUser 1. - Bekräfta att Validate Sender Access routar till Detect Message Type på true-grenen och till Send Access Denied på false-grenen.
- I Detect Message Type, verifiera att reglerna kontrollerar voice- och audio-objekt med
={{ $json.message.voice }}och={{ $json.message.audio }}, och behåll Fallback Output inställd påextra. - Bekräfta att Detect Message Type routar till Set Voice File ID, Set Audio File ID eller Alert Missing File beroende på meddelandets innehåll.
⚠️ Vanlig fallgrop: Om användarnamnet i Validate Sender Access inte exakt matchar avsändarens Telegram-användarnamn (skiftlägeskänsligt), kommer arbetsflödet alltid att routa till Send Access Denied.
Steg 3: Förbered fil-ID:n och validera ljudformat
Extrahera fil-ID från meddelandet och tvinga igenom accepterade ljud-MIME-typer innan ni laddar ner filen.
- I Set Voice File ID, sätt tilldelningen file_id till
={{ $json.message.voice.file_id }}och aktivera Include Other Fields. - I Set Audio File ID, sätt tilldelningen file_id till
={{ $json.message.audio.file_id }}och aktivera Include Other Fields. - I Validate Audio Format, behåll MIME-kontrollerna för
audio/ogg,audio/mpeg,audio/mp4ochaudio/m4amed uttrycken som refererar till Incoming Telegram Trigger. - Bekräfta att false-grenen i Validate Audio Format routar till Warn Unrecognized File.
Credential Required: Anslut era telegramApi-inloggningsuppgifter till alla Telegram-åtgärdsnoder (totalt 8) inklusive Send Access Denied, Alert Missing File, Warn Unrecognized File, Notify Start Transcription, Retrieve File for GPT, Fetch File for Gemini, Send Transcript Output och Send Chunked Output.
Steg 4: Hämta filen och kör parallell transkribering
Ladda ner mediefilen och starta både transkriberingsprocessen och en användarnotis parallellt.
- I Retrieve File for GPT, ställ in Resource till
fileoch File ID till={{ $json.file_id }}. - Retrieve File for GPT ger utdata till både OpenAI Transcription och Notify Start Transcription parallellt.
- I Notify Start Transcription, ställ in Text till
Starting transcription. Please wait.och Chat ID till={{ $('Incoming Telegram Trigger').item.json.message.chat.id }}. - Credential Required: Anslut era openAiApi-inloggningsuppgifter till OpenAI Transcription.
Tips: Parallell körning säkerställer att användaren notifieras direkt medan transkriberingen startar i bakgrunden.
Steg 5: Konfigurera Gemini-fallback och mappa transkriberingstext
Skicka filen till Gemini och normalisera båda transkriberingsutdata till ett konsekvent text-fält.
- I Fetch File for Gemini, ställ in Resource till
fileoch File ID till={{ $('Retrieve File for GPT').item.json.result.file_id }}. - I Gemini Transcription, ställ in Resource till
audio, Input Type tillbinaryoch Binary Property Name till=data. - Credential Required: Anslut era googlePalmApi-inloggningsuppgifter till Gemini Transcription.
- I Map Text Variable, ställ in text till
={{ $json.text }}. - I Map Text Variable 2, ställ in text till
={{ $json.content.parts[0].text }}.
Steg 6: Routen baserat på textlängd och skicka utdata
Skicka korta transkript som ett enda meddelande och dela upp långa transkript i chunkar.
- I Check Text Length, behåll villkoret
={{ $json["text"].length }}lt4000. - På true-grenen, skicka utdata via Send Transcript Output med Text inställd på
={{ $json.text }}och Chat ID inställd på={{ $('Incoming Telegram Trigger').item.json.message.chat.id }}. - På false-grenen, använd Split Text Chunks med den angivna JavaScript-koden för att dela upp i chunkar om
4000tecken. - I Send Chunked Output, ställ in Text till
={{ $json.body }}och Chat ID till={{ $('Incoming Telegram Trigger').item.json.message.chat.id }}.
⚠️ Vanlig fallgrop: Om Split Text Chunks ändras så att den returnerar ett annat fält än body, kommer Send Chunked Output att skicka tomma meddelanden.
Steg 7: Testa och aktivera ert arbetsflöde
Verifiera beteendet end-to-end med riktiga Telegram-meddelanden innan ni går live.
- Klicka på Execute Workflow och skicka en röst- eller ljudfil till er Telegram-bot.
- Bekräfta att Notify Start Transcription skickar meddelandet “Starting transcription. Please wait.” omedelbart.
- Kontrollera att transkriberingsutdata visas via Send Transcript Output för kort text eller via flera meddelanden från Send Chunked Output för lång text.
- När allt är verifierat, växla arbetsflödet till Active för produktion.
Felsökningstips
- Telegram-uppgifter kan gå ut eller kräva rätt bot-behörigheter. Om meddelanden inte tas emot eller skickas, kontrollera först din Telegram-botåtkomst i n8n:s Credentials.
- Om du använder Wait-liknande timing någon annanstans i din arbetsyta eller förlitar dig på externa transkriberingssvar varierar behandlingstider. Öka väntetiden om noder längre fram misslyckas på grund av tomma svar.
- Standardprompter och inställningar i AI-noder kan vara generiska. Om du vill ha konsekvent formatering (punkter, action points, talar-etiketter) ska du definiera den utdatastilen tidigt, annars kommer du att behöva städa transkript manuellt.
Snabba svar
Cirka 30 minuter om din Telegram-bot och dina API-nycklar är klara.
Nej. Du kopplar mest konton och redigerar några enkla regler. Den enda “kod”-delen finns redan med för att dela upp lång text.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 $/månad för högre volym. Du behöver också räkna in API-användning för OpenAI och Gemini (de flesta team tycker att det är billigt för röstmeddelanden).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Du kan ändra kontrollen av behöriga användare i steget “Validate Sender Access”, byta transkriberingsleverantör genom att justera noderna för OpenAI och Gemini och finjustera logiken i “Split Text Chunks” om du vill ha kortare svar eller annan formatering (till exempel action points först).
Oftast handlar det om bot-behörigheter eller att en credential i n8n har gått ut. Bekräfta att din bot är med i gruppen, kan läsa meddelanden och kan posta svar, och spara sedan om Telegram-credentialn. Om det triggar men inte kan ladda ner filer kan file ID-mappningen vara fel för meddelandetypen (voice vs audio), så kontrollera meddelandedetektering samt stegen “Set Voice File ID / Set Audio File ID”.
I n8n Cloud beror det på planens månatliga körningar, och varje transkribering är typiskt en körning. Om du kör egen hosting finns ingen gräns för körningar, så den verkliga begränsningen blir din server och API:ernas rate limits. I praktiken klarar de flesta små team dussintals röstmeddelanden per dag utan att tänka på det. Om du transkriberar långt ljud hela dagen vill du ha köhantering och bättre övervakning.
Ofta, ja. n8n hanterar grenad logik (åtkomstkontroll, detektering av meddelandetyp, fallback till Gemini och uppdelning) utan att göra din automation till ett spaghetti-monster. Du får också möjlighet till egen hosting, vilket är viktigt om du förväntar dig hög volym eller vill ha förutsägbara kostnader. Zapier och Make kan fortfarande fungera om behoven är enkla, men det här flödet har tillräckligt många “if” för att pris och komplexitet lätt kan dra iväg. Om du är osäker: Prata med en automationsexpert och beskriv din volym samt dina säkerhetskrav.
När det här väl rullar slutar röstmeddelanden vara “förlorad kontext” och blir användbar dokumentation. Sätt upp det en gång och låt flödet göra det tråkiga jobbet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.