Du ställer en enkel datafråga, och plötsligt väntar du. Väntar på att någon ska köra SQL. Väntar på en skärmdump. Väntar på ”vilken tabell ligger det i?”. Det är långsamt, distraherande och ärligt talat lite riskabelt när folk börjar dela råa exporter i slumpmässiga chattar.
Den här Postgres Telegram automation slår först mot produktteam och driftansvariga. Men marknadsförare som vill kolla kampanjprestanda och grundare som svarar på investerarfrågor känner samma friktion. Du får svar direkt i Telegram på några minuter, utan att dela ut databasåtkomst.
Nedan ser du hur arbetsflödet förvandlar ett meddelande (eller ett röstmeddelande) till en säker, begränsad Postgres-fråga och sedan svarar med strukturerade resultat du faktiskt kan använda.
Så fungerar den här automatiseringen
Det fullständiga n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Postgres till Telegram: snabba svar utan SQL
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n4@{ icon: "mdi:memory", form: "rounded", label: "Postgres Chat Memory", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model1", pos: "b", h: 48 }
n6@{ icon: "mdi:wrench", form: "rounded", label: "Think1", pos: "b", h: 48 }
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/>Download File1"]
n8@{ icon: "mdi:robot", form: "rounded", label: "Transcribe1", pos: "b", h: 48 }
n9["<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/>Telegram Trigger1"]
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Voice or Text", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Text", pos: "b", h: 48 }
n12["<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/merge.svg' width='40' height='40' /></div><br/>Merge"]
n13@{ icon: "mdi:robot", form: "rounded", label: "Main agent", pos: "b", h: 48 }
n14["<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 MESSAGE"]
n15@{ icon: "mdi:wrench", form: "rounded", label: "CALL QUERY AGENT", pos: "b", h: 48 }
n11 --> n12
n12 --> n13
n6 -.-> n13
n13 --> n14
n8 --> n12
n10 --> n7
n10 --> n11
n7 --> n8
n15 -.-> n13
n9 --> n10
n4 -.-> n13
n5 -.-> n13
end
subgraph sg1["When Executed by Another Workflow Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When Executed by Another Wor..", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Query agent", pos: "b", h: 48 }
n2@{ icon: "mdi:wrench", form: "rounded", label: "Think", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n16["<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/postgres.svg' width='40' height='40' /></div><br/>ACCES DATABASE WITH DYNAMIC .."]
n2 -.-> n1
n1 --> n16
n3 -.-> n1
n0 --> n1
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 n9,n0 trigger
class n8,n13,n1 ai
class n5,n3 aiModel
class n6,n15,n2 ai
class n4 ai
class n10 decision
class n16 database
classDef customIcon fill:none,stroke:none
class n7,n9,n12,n14,n16 customIcon
Problemet: datafrågor blir tidstjuvar
De flesta team har inget ”dataproblem”. De har ett kommunikationsproblem kring data. En enkel fråga som ”Vilka var våra 10 bästa produkter förra veckan?” blir till en Slack- eller Telegram-tråd, en överlämning till den enda personen som kan SQL, och ett resultat som kommer för sent för att agera på. Än värre: genvägen blir ofta en rå export eller en delad inloggning, vilket skapar säkerhetsrisk och rörig versionshantering. Och om någon råkar köra en obegränsad fråga kan du belasta produktion, skapa seghet och förstöra allas eftermiddag.
Friktionen byggs på. Här är var det oftast faller isär:
- Att svara på ”snabba frågor” stjäl ungefär 1–2 timmar per dag från personerna som kan fråga databasen.
- Manuella SQL-förfrågningar leder till fram-och-tillbaka för att reda ut vad ”aktiv” eller ”nyligen” faktiskt betyder.
- Team delar skärmdumpar eller exporter eftersom det går snabbare än att göra det rätt, vilket gör att känslig data sprids längre än den borde.
- En tung fråga utan LIMIT kan spika databaslasten och orsaka seghet vid sämsta möjliga tillfälle.
Lösningen: Telegram-frågor → säkra Postgres-svar
Det här arbetsflödet gör Telegram till ett kontrollerat gränssnitt för att ”fråga databasen”. En kollega skickar ett meddelande (eller ett röstmeddelande) som ”Visa mig de 10 senaste betalda ordrarna” och automatiseringen skickar det vidare via en AI-assistent som är byggd för att vara försiktig. Den validerar avsikten, genererar SQL via en dedikerad SQL-subagent och håller hårda output-gränser så att du inte råkar hämta enorma dataset. Sedan kör den frågan i Postgres och formaterar resultatet till ett lättläst Telegram-svar. Ingen SQL-kunskap krävs, och du har fortfarande skyddsräcken för vad assistenten får göra.
Arbetsflödet startar med en Telegram-trigger och slår sedan ihop text och transkriberat tal till en enda strukturerad input. Därefter tolkar primäragenten förfrågan och anropar SQL-subarbetsflödet när en fråga behövs. Till sist kör Postgres en begränsad sats och Telegram får tillbaka ett kortfattat svar.
Vad du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att teamet ställer 10 ”snabba” Postgres-frågor per dag i Telegram. Manuellt tar varje fråga ungefär 10 minuter av förtydliganden plus 10 minuter för att skriva, köra och klistra in resultat, så du bränner cirka 3 timmar dagligen. Med det här arbetsflödet skickas frågan en gång, assistenten genererar en begränsad fråga och svaret kommer tillbaka på cirka 2 minuter. Det är ungefär 2–3 timmar tillbaka de flesta dagar, och färre sena kvällspingar när någon behöver en siffra ”nu”.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att samla in frågor och skicka svar.
- PostgreSQL som databasen att fråga på ett säkert sätt.
- OpenRouter / Anthropic / OpenAI-uppgifter (hämta nycklar från din LLM-leverantörs dashboard).
Kompetensnivå: Medel. Du klistrar in systemprompter, mappar några fält och sätter Postgres-uppgifter, men du skriver ingen applikationskod.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande (eller röstmeddelande) startar allt. Telegram-triggern körs i samma stund som någon ställer en fråga, så arbetsflödet startar där konversationen redan sker.
Tal görs automatiskt om till text. Om input är ljud hämtar n8n röstfilen och kör transkribering så att resten av arbetsflödet kan hantera det som en vanlig fråga.
En AI-agent kontrollerar avsikten och genererar säker SQL. Primärassistenten tolkar vad användaren vill ha och anropar sedan en SQL-fokuserad subagent som skriver PostgreSQL-frågor med strikta LIMIT-regler och rimliga standardval.
Postgres kör, och Telegram får ett strukturerat svar. Arbetsflödet kör den dynamiska SQL:en, håller svaret kort (10 rader som standard, max 50) och skickar den formaterade outputen tillbaka till samma Telegram-chatt.
Du kan enkelt ändra ”tillåtna frågor” och resultatgränserna så att de matchar din risktolerans. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Telegram- och arbetsflödestriggers
Konfigurera båda ingångarna: Telegram-meddelanden för slutanvändare och intern körning av arbetsflöde för SQL-generering.
- Öppna Telegram Incoming Trigger och anslut er bot. Credential Required: Anslut era
telegramApi-uppgifter. - Verifiera att Telegram Incoming Trigger lyssnar efter updates inställt på
message. - Öppna Workflow Execution Trigger och behåll Input Source inställt på
passthroughför anrop av underarbetsflöden.
Steg 2: Routa röst vs text och normalisera indata
Det här arbetsflödet tar emot både röstmeddelanden och text. Route Voice Or Text delar upp flödet och normaliserar båda formaten till en enda textindata.
- I Route Voice Or Text, bekräfta att de två reglerna använder
={{ $json.message.voice.file_id }}och={{ $json.message.text }}med operatorn exists. - I Fetch Voice File, ställ in Resource till
fileoch File ID till={{ $json.message.voice.file_id }}. Credential Required: Anslut eratelegramApi-uppgifter. - I Audio Transcription, ställ in Resource till
audiooch Operation tilltranscribe. Credential Required: Anslut eraopenAiApi-uppgifter. - I Assign Text Input, skapa ett fält med namnet text och sätt det till
={{ $json.message.text }}. - Bekräfta att Fetch Voice File → Audio Transcription → Combine Inputs och Assign Text Input → Combine Inputs är kopplade så att båda vägarna konvergerar.
={{ $json.message.voice.file_id }}.Steg 3: Konfigurera AI-assistenter, minne och underarbetsflödesverktyg
Assistenten använder två LLM:er, minneslagring och ett underarbetsflödesverktyg för SQL-generering och körning.
- Öppna Primary DB Assistant och sätt Text till
={{ $json.text }}. Anpassa systemprompten med ert faktiska databasschema. - Anslut OpenRouter Chat Engine B som språkmodell för Primary DB Assistant. Credential Required: Anslut era
openRouterApi-uppgifter. - Koppla på minne genom att konfigurera Postgres Conversation Memory med Session Key satt till
[YOUR_ID]och Session ID Type satt tillcustomKey. Credential Required: Anslut erapostgres-uppgifter. - Säkerställ att Review Assistant Output och Run Sub-Workflow (Configure Required) är anslutna som verktyg till Primary DB Assistant. Lägg till uppgifter i den överordnade assistenten när det krävs.
- Öppna Run Sub-Workflow (Configure Required) och välj arbetsflödet i Workflow ID som innehåller Workflow Execution Trigger → SQL Query Assistant → Execute Dynamic SQL.
- I SQL Query Assistant, sätt Text till
={{ $json.query }}och bekräfta att systemmeddelandet är uppdaterat med ert riktiga schema och tabellnamn. - Anslut OpenRouter Chat Engine som språkmodell för SQL Query Assistant. Credential Required: Anslut era
openRouterApi-uppgifter.
Steg 4: Kör SQL och skicka Telegram-svar
Genererad SQL körs i Postgres och assistentens output skickas tillbaka till Telegram.
- I Execute Dynamic SQL, ställ in Operation till
executeQueryoch Query till{{ $json.output }}. Credential Required: Anslut erapostgres-uppgifter. - I Dispatch Telegram Reply, sätt Text till
={{ $json.output }}och Chat ID till[YOUR_ID]. Credential Required: Anslut eratelegramApi-uppgifter. - Bekräfta att flödet Combine Inputs → Primary DB Assistant → Dispatch Telegram Reply är kopplat från ände till ände.
[YOUR_ID].Steg 5: Testa och aktivera ert arbetsflöde
Validera både röst- och textvägar, bekräfta SQL-körning och aktivera arbetsflödet för användning i produktion.
- Klicka på Execute Workflow och skicka ett Telegram-textmeddelande till er bot för att verifiera vägen Telegram Incoming Trigger → Primary DB Assistant → Dispatch Telegram Reply.
- Skicka ett röstmeddelande för att validera bearbetningen Fetch Voice File → Audio Transcription → Combine Inputs.
- Trigga underarbetsflödet manuellt genom att köra arbetsflödet som innehåller Workflow Execution Trigger och verifiera att SQL Query Assistant genererar en query och att Execute Dynamic SQL returnerar resultat.
- Lyckad körning ska resultera i ett lättläst svar från Dispatch Telegram Reply i Telegram.
- När testerna är godkända, växla arbetsflödet till Active för att aktivera kontinuerlig bearbetning.
Vanliga fallgropar
- Telegram-botens autentiseringsuppgifter kan löpa ut eller tappa behörigheter. Om svaren plötsligt slutar, börja med att kontrollera bot-token och chattbehörigheter i Telegram-botens inställningar.
- Om du använder Wait-noder eller extern bearbetning (som transkribering) varierar processtiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet och, ännu viktigare, era schemaexempel tidigt annars kommer du korrigera luddiga svar för alltid.
Vanliga frågor
Cirka 45 minuter om dina databasuppgifter och din Telegram-bot är redo.
Nej. Du kopplar konton, klistrar in agentinstruktionerna och mappar några fält i n8n.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis testperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in LLM-API-kostnader från din leverantör (ofta några cent per dag vid låg volym).
Två alternativ: n8n Cloud (hanterad, 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. Uppdatera exemplen och schemahintarna som används av Primary DB Assistant och justera sedan instruktionerna för SQL-subagenten i SQL Query Assistant så att den känner till dina riktiga tabellnamn och tillåtna fält. Vanliga anpassningar är att strama åt tillåtna scheman, ändra standard-LIMIT från 10 till något mindre och formatera svar som ”KPI-kort” i stället för råa rader.
Oftast beror det på en ogiltig eller roterad bot-token. Skapa en ny Telegram-bot-token, uppdatera den i n8n och bekräfta sedan att boten kan läsa meddelanden i chatten du testar. Kontrollera också att din n8n-instans kan nå Telegram (vissa låsta servrar blockerar utgående trafik). Om det är rösttranskriberingen som fallerar kan det se ut som att Telegram är trasigt, när det egentligen är hämtningen av ljudfilen eller transkriberingssteget som timear ut.
Många, så länge du dimensionerar rimligt. På n8n Cloud styrs din gräns främst av dina månatliga körningar och samtidighet, så team med hög volym går vanligtvis upp en plan. Om du hostar själv finns ingen körningsgräns, men din server och databas avgör den praktiska kapaciteten. Eftersom arbetsflödet tvingar fram små resultatuppsättningar (10 som standard, upp till 50) är det generellt skonsamt mot Postgres, men du bör ändå lägga index för vanliga filter. Om du väntar toppar (som måndagsmorgonrapportering), överväg en läsreplika och peka arbetsflödet dit.
För det här arbetsflödet har n8n några fördelar: mer komplex logik med obegränsad förgrening utan extra kostnad, möjlighet till egen hosting för obegränsade körningar och inbyggda verktyg för agenter/minne som Zapier ofta lägger i premium-nivåer. Zapier eller Make kan fortfarande fungera om du bara vill ha ett grundmönster som ”skicka fråga, kör sparad fråga, returnera resultat”. När du vill ha två-agenters säkerhet och striktare skyddsräcken är n8n oftast smidigare. Prata med en automationsexpert om du väljer mellan dem.
Sätt upp det här en gång, så slutar ”Kan någon ta fram den siffran?” vara ett dagligt avbrott. Arbetsflödet tar hand om den repetitiva frågningen så att du kan fatta beslut snabbare och hålla databasåtkomsten under kontroll.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.