Ditt team behöver ett snabbt svar, så de skickar ett DM till dig. Du söker i Gmail, kopierar detaljer, ställer en följdfråga och klistrar sedan in svaret tillbaka i chatten. Upprepa. Det är inte “svårt” arbete, det är bara konstant.
Supportansvariga märker det när köerna växer. Ops-chefer märker det när godkännanden fastnar. Och ärligt talat märker grundare det mest när de blir den mänskliga routern för allt. En Telegram Gmail-automatisering gör de där “kan du kolla en grej?”-meddelandena till tydliga, spårbara kommandon.
Det här arbetsflödet gör Telegram till ett kontrollerat kommandocenter: godkända personer kan köra specifika förfrågningar och resultaten kommer tillbaka i chatten (och kan vid behov även skicka e-postuppdateringar). Nedan ser du hur behörighetsspärren fungerar, hur kommandon dirigeras till underarbetsflöden och vad du kan anpassa för att det ska passa din verksamhet.
Så fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Telegram + Gmail: kör förfrågningar via kommando
flowchart LR
subgraph sg0["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/>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/code.svg' width='40' height='40' /></div><br/>format_output_as_json"]
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/>Generic Output"]
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/>Processing has finished"]
n4@{ icon: "mdi:cog", form: "rounded", label: "Instagram post", pos: "b", h: 48 }
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/>Command not found"]
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/>Access Denied"]
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Access Control", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Seperate command and Parameter"]
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Valid Commands", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch to the Command", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Social Analysis", 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/telegram.svg' width='40' height='40' /></div><br/>Social Analysis Output"]
n13@{ icon: "mdi:cog", form: "rounded", label: "sentimental_analysis", 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/>Generic Output1"]
n7 --> n9
n7 --> n6
n4 --> n2
n9 --> n8
n11 --> n1
n0 --> n7
n13 --> n3
n10 --> n13
n10 --> n4
n10 --> n14
n10 --> n11
n10 --> n5
n1 --> n12
n8 --> n10
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 n7,n10 decision
class n1,n8 code
class n1 disabled
class n4 disabled
class n11 disabled
class n13 disabled
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n5,n6,n8,n12,n14 customIcon
Problemet: supportärenden fastnar i “chatt-ping-helvetet”
Mycket intern support är i praktiken samma tre steg: verifiera vem som frågar, slå upp något (ofta i Gmail eller ett annat system) och skicka tillbaka ett tydligt svar. Men när det sker i fri chattform blir det snabbt rörigt. Folk frågar på olika sätt, känsliga förfrågningar hamnar hos fel personer och du tappar tid på att reda ut vad de menade. Än värre: det går inte att skala. Så fort “personen som kan” är offline går allt långsammare och kunderna märker det.
Det summerar snabbt. Här är var det oftast faller isär.
- Du kopierar och klistrar från Gmail till Telegram, vilket är långsamt och lätt att göra fel.
- Förfrågningar kommer in som vaga meddelanden, så du lägger flera minuter på att bara få fram vad uppgiften faktiskt är.
- Det finns ingen inbyggd åtkomstkontroll i gruppchattar, så känsliga åtgärder begärs av fel personer.
- När någon skriver en okänd förfrågan måste du ändå svara manuellt med “vad menar du?” eller “här är alternativen”.
Lösningen: ett Telegram-kommandocenter som dirigerar arbetet och svarar tydligt
Det här n8n-arbetsflödet lyssnar efter Telegram-botkommandon, kontrollerar om avsändaren är behörig och dirigerar sedan kommandot till rätt underarbetsflöde. I stället för att låta vem som helst trigga vad som helst använder det först en behörighetsspärr. Om åtkomst nekas svarar det direkt med ett “åtkomst nekad”-meddelande och användarens konto-ID (så att du kan godkänna dem senare). Om kommandot är giltigt skickar arbetsflödet kommandot och argumenten vidare till ett underarbetsflöde, väntar på resultatet och skickar ett tydligt svar tillbaka i Telegram. För vissa kommandotyper kan det också tolka strukturerat utdata (som JSON) och formatera ett mer läsbart meddelande innan det publiceras.
Arbetsflödet startar när någon skickar ett Telegram-kommando. Det delar upp kommandot från dess argument, och sedan dirigerar en switch det till rätt körväg. Till sist får du ett snyggt svar i chatten (och mönstret stödjer Gmail-uppdateringar eller e-postnotiser när dina underarbetsflöden innehåller dem).
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 du får 20 interna förfrågningar per dag som handlar om “kolla Gmail, bekräfta detaljer, svara i chatten”. Manuellt är det kanske 5 minuter per ärende när du räknar in sök, kopiering och förtydliganden, så du tappar cirka 2 timmar per dag. Med det här arbetsflödet kör den som frågar ett kommando i Telegram (cirka 1 minut), underarbetsflödet gör uppslaget och formateringen, och resultatet kommer tillbaka i chatten en minut eller två senare. Du är i princip ur loopen, men har fortfarande kontroll.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Telegram-bot för att ta emot kommandon och publicera svar.
- Gmail (via underarbetsflöde) för att hämta meddelanden eller skicka uppdateringar.
- API-nyckel för Telegram-boten (hämta den från BotFather i Telegram).
Svårighetsgrad: Medel. Du kopplar in autentisering, redigerar en kommandolista och mappar varje kommando till rätt underarbetsflöde.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (kostnadsfri 15-minuters konsultation).
Så fungerar det
Ett Telegram-kommando triggar körningen. En användare skickar ett bot-kommando i Telegram (till exempel “/scan …” eller “/help”), och arbetsflödet fångar både meddelandet och användarens kontodetaljer.
En behörighetsspärr kontrollerar åtkomst. n8n jämför avsändarens Telegram-konto-ID mot din godkända lista. Om användaren inte är behörig stoppar arbetsflödet och skickar ett “åtkomst nekad”-svar (inklusive ID:t som du senare kan vitlista).
Kommandot städas upp och dirigeras. Ett litet kodsteg delar kommandot från dess argument, och sedan dirigerar en switch det till rätt väg. Om kommandot inte finns returnerar arbetsflödet en vänlig lista med giltiga kommandon i stället för att misslyckas tyst.
Ett underarbetsflöde gör jobbet och returnerar ett svar. Varje “execute workflow”-nod är där du kopplar in själva åtgärden, som att hämta en Gmail-uppdatering, skapa en intern rapport eller skicka ett e-postmeddelande. Utdatat formateras (inklusive JSON-tolkning vid behov) och publiceras tillbaka till Telegram så att den som frågade får ett tydligt, läsbart svar.
Du kan enkelt ändra listan med giltiga kommandon så att den matchar era interna processer, och sedan koppla varje kommando till nya underarbetsflöden i takt med att du bygger ut. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Telegram-triggern
Konfigurera den inkommande Telegram-webhooken som startar workflowet när ett nytt meddelande kommer in.
- Lägg till och öppna Telegram Intake Trigger.
- Ställ in Updates på
message. - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter.
- Spara noden så att n8n registrerar webhook-URL:en för er bot.
Steg 2: Sätt upp åtkomstkontroll och kommandokatalog
Definiera vem som får använda boten och publicera listan över giltiga kommandon för senare svar.
- Öppna Permission Gate och ställ in villkoret Left Value till
{{$json.message.from.id.toString()}}. - Ställ in villkoret Right Value till ert auktoriserade Telegram-användar-ID (för närvarande tomt i workflowet).
- Öppna Access Denied Notice och bekräfta att Text är satt till
=You don't have permission to use this bot! Contact the administrator to obtain permission access. Account ID:{{ $json.message.from.id }}. - I Access Denied Notice, ställ in Chat ID till
{{$node["Telegram Intake Trigger"].json["message"]["from"]["id"]}}. - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter i Access Denied Notice.
- Öppna List Valid Commands och ställ in validCommands till
Valid Commands: /list (list all available commands) /instagram (generate instagram post - parameter: quote (optional)) /social (check social media for the stock ticker - parameter: stock ticker) /sentiment: (do sentiment analysis for the stock ticker - parameter: stock ticker).
Steg 3: Tolka kommandon och routa förfrågningar
Dela upp det inkommande meddelandet i ett kommando och dess argument, och routa sedan till rätt gren.
- Öppna Split Command and Args och behåll JavaScript-logiken för parsning som den är.
- Verifiera att noden hämtar input från Telegram Intake Trigger med
$('Telegram Intake Trigger').first().json.message.text. - Öppna Route Command Options och bekräfta att de fyra reglerna jämför
{{$json.command}}med/sentiment,/instagram,/listoch/social. - Lämna Fallback Output inställt på
extraså att ogiltiga kommandon fångas upp.
Steg 4: Konfigurera sub-workflows för varje kommando
Koppla varje kommandogren till relevant sub-workflow. Dessa är för närvarande platshållare och inaktiverade.
- Öppna Run Sub-Workflow (Configure Required) och välj ett mål-workflow i Workflow ID.
- Öppna Run Sub-Workflow (Configure Required) 2 och välj ett mål-workflow i Workflow ID.
- I Run Sub-Workflow (Configure Required) 2, behåll workflowInputs-mappningen som mappar ticker till
{{$json.rest}}så att den parsade parametern skickas vidare. - Öppna Run Sub-Workflow (Configure Required) 3 och välj ett mål-workflow i Workflow ID.
- Aktivera varje Run Sub-Workflow (Configure Required)-nod efter att ni valt ett workflow.
Steg 5: Konfigurera Telegram-svar
Skicka strukturerade svar för varje route, inklusive kommandolista, generella svar, parsning av social scan och aviseringar för ogiltiga kommandon.
- Öppna Send General Reply och ställ in Text till
{{$json.output ?? "" }} {{ $json.text ?? "" }} {{ $json.html ?? "" }} --- Command:{{ $node["Split Command and Args"].json["command"] }} Parameter: {{ $node["Split Command and Args"].json["rest"] }}. - I Send General Reply, ställ in Chat ID till
{{$node["Telegram Intake Trigger"].json["message"]["from"]["id"]}}. - Öppna Command List Reply och ställ in Text till
{{$('List Valid Commands').first().json.validCommands}} --- Command:{{ $node["Split Command and Args"].json["command"] }} Parameter: {{ $node["Split Command and Args"].json["rest"] }}. - Öppna Invalid Command Reply och ställ in Text till
=Error: Command is not valid! {{ $('List Valid Commands').first().json.validCommands }} ---- Command:{{ $node["Split Command and Args"].json["command"] }} Parameter: {{ $node["Split Command and Args"].json["rest"] }}. - Öppna Notify Completion och ställ in Text till
=Processing has finished. Command:{{ $node["Split Command and Args"].json["command"] }} Parameter: {{ $node["Split Command and Args"].json["rest"] }}. - Inloggningsuppgifter krävs: Anslut era telegramApi-inloggningsuppgifter i alla Telegram-svarsnoder (Access Denied Notice, Send General Reply, Command List Reply, Invalid Command Reply, Notify Completion och Social Scan Response).
Steg 6: Tolka output från social scan (valfri gren)
Om ni använder kommandot /social, tolka JSON-output och formatera ett strukturerat svar.
- Öppna Parse JSON Output och behåll JavaScript-koden som extraherar JSON från ett markdown-kodblock.
- Aktivera Parse JSON Output om er sub-workflow för social scan returnerar en JSON-payload inuti markdown.
- Öppna Social Scan Response och ställ in Text till
=Symbol: {{ $json.symbol }} Sentiment Score: {{ $json.sentiment_score }} Rational: {{ $json.rationale }} --- Command:{{ $node["Split Command and Args"].json["command"] }} Parameter: {{ $node["Split Command and Args"].json["rest"] }}. - Ställ in Chat ID till
{{$node["Telegram Intake Trigger"].json["message"]["from"]["id"]}}.
Steg 7: Testa och aktivera ert workflow
Kör end-to-end-tester för att bekräfta åtkomstkontroll, routing och svar innan ni går live.
- Klicka på Execute Workflow och skicka ett Telegram-meddelande till er bot med
/list,/instagram,/socialoch ett ogiltigt kommando. - Bekräfta att workflow-vägen följer Telegram Intake Trigger → Permission Gate → List Valid Commands → Split Command and Args → Route Command Options och sedan går in i rätt gren.
- Verifiera att korrekta svar kommer från Telegram-svarsnoderna och att ogiltiga kommandon returnerar innehållet från Invalid Command Reply.
- När allt är verifierat, slå på workflowet till Active för att möjliggöra användning i produktion.
Vanliga fallgropar
- Telegram-uppgifter kan löpa ut eller bli felkonfigurerade efter ändringar i boten. Om svaren slutar fungera, kontrollera Telegram-autentiseringen i n8n och bekräfta att bot-token i BotFather fortfarande matchar.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder misslyckas på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Cirka 30 minuter om din Telegram-bot och dina underarbetsflöden är klara.
Ingen kodning krävs för grundkonfigurationen. Du kan behöva redigera en liten kodsnutt om du vill ha anpassad kommandotolkning, men det är valfritt.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in eventuella e-post- eller AI-kostnader som dina underarbetsflöden använder (till exempel OpenAI API-användning om du lägger till ett AI-svarssteg).
Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Uppdatera noden “List Valid Commands” så att den speglar vad du vill att folk ska kunna köra, och mappa sedan varje alternativ i switchen “Route Command Options” till en matchande “Execute Workflow”-nod. Vanliga anpassningar är ett “/gmail_latest”-kommando, ett “/approve”-kommando för intern sign-off och ett “/help”-kommando som skriver ut hela menyn.
Oftast handlar det om bot-token eller att fel Telegram-autentisering är vald i n8n. Skapa en ny token i BotFather vid behov, spara sedan om Telegram-autentiseringen och testa triggern igen. Bekräfta också att din bot faktiskt finns i chatten där du skickar kommandon, eftersom Telegram inte levererar uppdateringar som du förväntar dig om boten inte kan “se” meddelandet.
På n8n Cloud beror det på din plans månatliga körningar. Om du self-hostar finns ingen fast körningsgräns, så den praktiska gränsen blir din serverstorlek och hur tunga dina underarbetsflöden är (Gmail-sökningar och API-anrop brukar vara helt okej i småföretagsvolymer).
Ofta ja, eftersom det här upplägget behöver dirigering, åtkomstkontroll och underarbetsflöden, och det blir snabbt klumpigt (och dyrt) i enklare automationsverktyg. n8n ger dig också en väg för self-hosting, vilket är viktigt om teamet kör många interna kommandon. Med det sagt: om du bara behöver ett kommando som skickar ett e-postmeddelande kan Zapier eller Make vara snabbare att komma igång med. Det verkliga beslutet handlar om komplexitet: när du har mer än några få kommandon vill du ha strukturen med switch + underarbetsflöden. Om du är osäker, prata med en automationsexpert och skissa upp den enklaste versionen först.
När det här väl är på plats slutar din Telegram-chatt att vara en rörig inkorg och börjar fungera som en kontrollerad ärendekanal. Arbetsflödet tar hand om de repetitiva delarna, så att du kan fokusera på de ärenden som faktiskt kräver en människa.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.