Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Telegram + Postgres: en bot som minns och kostar mindre

Rickard Andersson Partner, Nodenordic.se

Din Telegram-bot funkar … tills den inte gör det. Svaren börjar upprepa sig. Kontexten försvinner. Någon ställer “samma” fråga på tre olika sätt, och du betalar för tre olika AI-anrop.

Det här problemet med en Telegram Postgres-bot slår först mot supportansvariga, eftersom de ser de frustrerade följdfrågorna. Marknadsteam som hanterar community-DM:s och grundare som svarar på pre-sales-frågor känner av det också. Du vill ha svar som håller sig konsekventa, även efter en lång tråd, utan att bränna din AI-budget.

Det här arbetsflödet gör Telegram till en assistent med minne: det lagrar chattkontext i Postgres, sammanfattar långa trådar, skickar enkla frågor till billigare modeller och hanterar röstmeddelanden utan att förvandla inkorgen till kaos. Du får se vad det gör, vad du behöver och var team oftast kör fast.

Så fungerar den här automatiseringen

Se hur den här löser problemet:

n8n Workflow Template: Telegram + Postgres: en bot som minns och kostar mindre

Utmaningen: Telegram-botar som glömmer (och blir dyra)

De flesta Telegram-“AI-botar” beter sig som guldfiskar. De svarar på det senaste meddelandet, kanske kastar ett öga på lite nylig historik, och gissar sedan. Så fort en konversation blir lång blir kontext antingen för dyr att skicka (många tokens) eller för riskabel att hoppa över (fel svar, inkonsekvent policy, upprepade förtydligande frågor). Lägg till röstmeddelanden så blir det ännu värre. Du får långsamma svar, högre modellförbrukning än du planerat och en supportupplevelse som känns märkligt spretig.

Det blir dyrt snabbt, särskilt när samma användare kommer tillbaka varje dag och din bot “träffar dem” som om det vore första gången.

  • Folk upprepar sig eftersom boten inte kan bära med sig kontext genom en tråd, vilket drar ut på samtalen.
  • Du betalar för big-model-anrop på enkla frågor, eftersom inget klassificerar förfrågningar innan ett svar genereras.
  • Lång chatthistorik gör promptar onödigt stora, så svaren blir långsammare och ibland skapar fel vid formatering när de skickas tillbaka till Telegram.
  • Röstmeddelanden blir manuellt jobb när transkribering inte är inbyggd i samma arbetsflöde som svarar och kommer ihåg.

Lösningen: en minnessmart Telegram-assistent med Postgres + modellrouting

Det här arbetsflödet startar så fort ett meddelande når din Telegram-bot och avgör sedan vilken typ av meddelande det är (text, röst eller något den inte kan hantera på ett felfritt sätt). För text normaliserar det inkommande data, hämtar relevant chatthistorik från Postgres och kombinerar användar- och assistentmeddelanden till ett enda “konversationspaket” så att AI:n ser en sammanhängande tråd. När tråden blir lång sammanfattar den konversationen med en lättviktig modell, vilket håller kontexten användbar utan att trycka in varje tidigare meddelande i prompten. Därefter klassificerar den förfrågan och routar den till rätt Gemini-modell: billig och snabb för snabb Q&A, mer kapabel för komplexa resonemang. Till sist formaterar den utdata säkert för Telegram MarkdownV2, svarar i chatten och lägger till den nya utväxlingen i Postgres så att boten faktiskt kommer ihåg nästa gång.

Flödet börjar med Telegram, sedan tillför Postgres minne, och Gemini hanterar både sammanfattning och svar. Röstmeddelanden laddas ned, korrigeras för MIME-egenheter, transkriberas till text och körs genom samma minnes- och routinglogik. Resultatet är en konsekvent assistentupplevelse, inte två separata spår som glider isär över tid.

Vad som förändras: före vs. efter

Effekt i verkligheten

Säg att din bot hanterar cirka 40 konversationer per dag och att varje konversation i snitt har 6 fram-och-tillbaka-meddelanden. Utan minne hoppar en människa ofta in för att dubbelkolla kontext för “Vilket abonnemang har jag?” eller “Vad lovade du tidigare?”, kanske 2 minuter per konversation, vilket blir cirka 80 minuter per dag. Med det här arbetsflödet hämtas chatthistorik automatiskt, sammanfattas när den blir lång och routas till en billigare modell för enkla frågor. Den mänskliga insatsen sjunker nära noll, och botens svarstid förbättras med ungefär en tredjedels sekund per svar, vilket känns rappare i chatten.

Krav

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • Telegram Bot API för att ta emot och skicka meddelanden.
  • PostgreSQL för att lagra chattminne i en tabell.
  • Google Gemini API-nyckel (hämta den från Google AI Studio) för routing, sammanfattning och transkribering.

Kunskapsnivå: Medel. Du kopplar in inloggningsuppgifter och kör en engångs-SQL för att skapa en tabell, men du bygger ingen app.

Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).

Flödet i arbetsflödet

Ett Telegram-meddelande triggar körningen. Arbetsflödet lyssnar på inkommande meddelanden och visar direkt en “skriver”-åtgärd, så att boten känns responsiv medan bearbetning sker i bakgrunden.

Inkommande innehåll normaliseras och klassificeras. En switch skiljer text från röst, och sedan rensas data till en konsekvent struktur så att senare steg inte skapar fel vid saknade fält.

Minnet hämtas, komprimeras och används smart. Postgres returnerar chatthistorik, meddelanden kombineras och långa konversationer sammanfattas med en lättviktig Gemini-modell så att den slutliga prompten förblir kort och relevant.

Assistenten svarar med rätt modell och skickar sedan ett säkert svar. En modellväljare routar enkla frågor till billigare alternativ och komplexa frågor till starkare resonemang. Svaret formateras för Telegram MarkdownV2 och skickas tillbaka, och sedan lagras utväxlingen i Postgres till nästa gång.

Du kan enkelt ändra reglerna för modellrouting så att de matchar din budget, eller byta sammanfattningsprompten för att styra din tonalitet. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-implementeringsguide

Steg 1: konfigurera Telegram-triggern

Konfigurera Telegram-ingången så att inkommande meddelanden startar arbetsflödet och skrivindikatorer skickas parallellt.

  1. Lägg till och öppna Telegram Incoming Trigger och ställ sedan in Updates till message.
  2. Credential Required: Anslut era telegramApi-uppgifter i Telegram Incoming Trigger.
  3. Anslut Telegram Incoming Trigger till både Input Type Switch och Send Typing Action för att matcha den parallella körningen: Telegram Incoming Trigger skickar output till både Input Type Switch och Send Typing Action parallellt.
  4. Öppna Send Typing Action och ställ in Operation till sendChatAction och Chat ID till {{ $json.message.chat.id }}.
  5. Credential Required: Anslut era telegramApi-uppgifter i Send Typing Action.

Steg 2: anslut Telegram-inmatningsroutning och mediehantering

Routa text jämfört med röstmeddelanden, ladda ned röstfiler, korrigera MIME-typer och förbered en konsekvent input för efterföljande bearbetning.

  1. Konfigurera Input Type Switch med två regler: Text finns på {{ $('Telegram Incoming Trigger').item.json.message.text }}, och Voice Message finns på {{ $('Telegram Incoming Trigger').item.json.message.voice }}.
  2. Från Text-outputen ställer ni in Extract Text Message så att den skapar message som {{ $('Telegram Incoming Trigger').item.json.message.text }} och chat_id som {{ $('Telegram Incoming Trigger').item.json.message.chat.id }}.
  3. Från Voice Message-outputen konfigurerar ni Download Voice File med File ID satt till {{ $('Telegram Incoming Trigger').item.json.message.voice.file_id }}.
  4. Credential Required: Anslut era telegramApi-uppgifter i Download Voice File.
  5. Anslut Download Voice FileCorrect MIME TypesTranscribe Voice Input för att normalisera binärdata före transkribering.
  6. Ställ in Transcribe Voice Input till Resource audio, Input Type binary, Operation analyze, och Text till What's in this audio message from telegram user?.
  7. Credential Required: Anslut era googlePalmApi-uppgifter i Transcribe Voice Input.
  8. Ställ in Extract Audio Message så att den mappar message som =Voice message description:{{ $json.candidates?.[0]?.content?.parts?.[0]?.text || $json.content?.parts?.[0]?.text }} och chat_id som {{ $('Telegram Incoming Trigger').item.json.message.chat.id }}.
  9. För innehåll som inte stöds behåller ni Prepare Error Message med message satt till It was not possible to process the file.File type not supported. och chat_id till {{ $('Telegram Incoming Trigger').item.json.message.chat.id }}.
  10. Normalisera både text- och ljudvägarna med Normalize Incoming Data med message {{ $json.message }} och chat_id {{ $json.chat_id }}.

Steg 3: konfigurera lagring av chattminne (Postgres)

Skapa minnestabellen och ladda in senaste konversationshistoriken för kontextmedvetna svar.

  1. Använd Manual Run Trigger för det engångsflöde som sätter upp databasen.
  2. Öppna Create Memory Table och ställ in Operation till executeQuery med SQL:en i Query exakt som den är angiven i noden.
  3. Credential Required: Anslut era postgres-uppgifter i Create Memory Table.
  4. Konfigurera Fetch Chat History med Operation select och Limit 25, och välj tabellen public.chat_memory.
  5. Credential Required: Anslut era postgres-uppgifter i Fetch Chat History.
  6. Anslut Normalize Incoming DataFetch Chat HistoryCombine Messages för att aggregera historisk kontext.

Steg 4: ställ in summering, klassificering och modellroutning

Summera chatthistorik, klassificera svårighetsgrad och routa till rätt Gemini-modell.

  1. I Combine Messages aggregerar ni message för att skapa en meddelandelista som används för summering.
  2. Konfigurera Summarize and Classify med Text satt till =Chat Memory: {{ $('Combine Messages').item.json.message.join('\n') }} User Request: {{ $('Normalize Incoming Data').item.json.message }} och Prompt Type satt till define.
  3. Anslut Structured Output Decoder som output-parser för Summarize and Classify, med JSON-schemat som redan finns i noden.
  4. Koppla Gemini Flash Lite Summarizer som språkmodell för Summarize and Classify.
  5. Credential Required: Anslut era googlePalmApi-uppgifter i Gemini Flash Lite Summarizer.
  6. Ställ in Model Choice Router för att routa baserat på {{ $json.output.difficulty }} med tre inputs.
  7. Koppla Gemini Flash Lite Model, Gemini Flash Model och Gemini Pro Model till Model Choice Router som de tre språkmodell-inputarna.
  8. Credential Required: Anslut era googlePalmApi-uppgifter i Gemini Flash Lite Model, Gemini Flash Model och Gemini Pro Model.

Credential Required: Structured Output Decoder är en AI-subnod. Lägg till uppgifter på dess föräldranod, Summarize and Classify, via den anslutna språkmodellen (Gemini Flash Lite Summarizer).

Steg 5: konfigurera svarsgenerering och minnesuppdateringar

Generera assistentens svar och lagra det, samtidigt som ni skickar formaterad output tillbaka till Telegram.

  1. Ställ in Response Agent med Text till =Context: {{ $json.output.context }} User request: {{ $('Normalize Incoming Data').item.json.message }}.
  2. Anslut Summarize and ClassifyResponse Agent.
  3. Följ det parallella flödet: Response Agent skickar output till både Markdown V2 Formatter och Append Chat Memory parallellt.
  4. I Markdown V2 Formatter behåller ni den medföljande JavaScript-koden för MarkdownV2-sanitization och chunking.
  5. Konfigurera Dispatch Telegram Reply med Text satt till {{ $json.message }} och Chat ID satt till {{ $('Telegram Incoming Trigger').item.json.message.chat.id }}.
  6. Credential Required: Anslut era telegramApi-uppgifter i Dispatch Telegram Reply.
  7. I Append Chat Memory säkerställer ni att mappningen skapar message som =User: {{ $('Normalize Incoming Data').item.json.message }} Agent: {{ $json.output }} och session_id som {{ $('Normalize Incoming Data').item.json.chat_id }}.
  8. Credential Required: Anslut era postgres-uppgifter i Append Chat Memory.

⚠️ Vanlig fallgrop: Om Telegram-svar misslyckas på grund av formatering, bekräfta att Dispatch Telegram Reply har parse_mode satt till MarkdownV2 och att alla svar passerar genom Markdown V2 Formatter.

Steg 6: testa och aktivera ert arbetsflöde

Kör igenom manuella och skarpa tester för att bekräfta meddelanderoutning, AI-svar och minneslagring.

  1. Klicka på Execute WorkflowManual Run Trigger för att skapa tabellen via Create Memory Table.
  2. Skicka ett textmeddelande till er Telegram-bot och bekräfta att Telegram Incoming Trigger triggas, att Send Typing Action körs och att svaret levereras av Dispatch Telegram Reply.
  3. Skicka ett röstmeddelande och verifiera flödet: Download Voice FileCorrect MIME TypesTranscribe Voice InputExtract Audio MessageNormalize Incoming Data.
  4. Kontrollera att Append Chat Memory sparar en ny rad i public.chat_memory för varje tur i konversationen.
  5. När testerna lyckas, slå på arbetsflödet till Active så att Telegram Incoming Trigger körs i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp med

  • Telegram-inloggningsuppgifter kan löpa ut eller kräva specifika behörigheter. Om saker slutar fungera, kontrollera din bot-token i BotFather och bekräfta sedan först Telegram Trigger-credentials i n8n.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre ned misslyckas på tomma svar.
  • Standardpromptar i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera utdata för alltid.

Vanliga frågor

Hur snabbt kan jag implementera den här automatiseringen för en Telegram Postgres-bot?

Cirka en timme om din Telegram-bot och Postgres-databas är redo.

Kan icke-tekniska team implementera den här Telegram Postgres-boten?

Ja, men någon behöver vara bekväm med att klistra in SQL en gång och testa inloggningsuppgifter. Efter det är löpande ändringar mest promptar och routingregler.

Är n8n gratis att använda för det här arbetsflödet för en Telegram Postgres-bot?

Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in Gemini API-användning, som beror på hur ofta du träffar den större resonemangsmodellen.

Var kan jag hosta n8n för att köra den här automatiseringen?

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 obegränsat antal körningar men kräver grundläggande serveradministration.

Hur anpassar jag den här Telegram Postgres-botlösningen till mina specifika utmaningar?

Du kan justera routingen i “Model Choice Router” så att fler (eller färre) meddelanden går till premium-modellen, och sedan finjustera “Summarize and Classify” för att sammanfatta i din ton och plocka ut de signaler du bryr dig om. Många team ändrar också reglerna i “Markdown V2 Formatter” för att matcha sin egen stil och lägga till skyddsräcken för länkar, priser eller policyspråk. Om du inte behöver röst kan du stänga av spåret “Download Voice File” och “Transcribe Voice Input” för att förenkla arbetsflödet.

Varför misslyckas min Telegram-anslutning i det här arbetsflödet?

Oftast är det en felaktig bot-token eller fel credential vald i Telegram Trigger. Skapa en ny token i BotFather, uppdatera den i n8n och testa igen. Om svar skickas men nedladdningar misslyckas, kontrollera filbehörigheter och att grenen för röstmeddelanden tar emot korrekt file_id.

Vilken kapacitet har den här Telegram Postgres-botlösningen?

På n8n Cloud Starter fungerar den vanligtvis bra för en bot för ett mindre team; volymen beror främst på dina exekveringsgränser och modellkostnader. Om du kör egen hosting finns ingen exekveringsbegränsning från n8n, men storleken på din VPS och Postgres-prestanda blir flaskhalsen. I praktiken hanterar de flesta botar av den här typen utan problem tiotals till några hundra meddelanden per dag på en enkel VPS om promptar hålls strama med sammanfattning.

Är den här automatiseringen för en Telegram Postgres-bot bättre än att använda Zapier eller Make?

Ofta, ja. Det här arbetsflödet bygger på grenlogik (text vs röst vs fel), minneslagring och modellrouting, vilket blir klumpigt och dyrt i många “enkla” automationsverktyg. n8n ger dig också möjlighet till egen hosting, vilket spelar roll när antalet körningar ökar. Zapier eller Make kan fortfarande fungera för en minimal bot, men du slår i taket snabbt när du lägger till sammanfattning, formateringsfixar och databasläsningar/-skrivningar. Om du är osäker, prata med en automationsexpert så får du en rak rekommendation.

När detta väl rullar slutar din bot att “träffa” samma användare om och om igen. Den kommer ihåg, den svarar snabbare och den spenderar din AI-budget som om det vore dina egna pengar – för det är det.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal