Din supportinkorg är full av återkommande frågor, men svaren finns utspridda på tio olika ställen. Någon pingar dig i Telegram, och plötsligt jagar du PDF:er, skrollar i dokumentation och försöker hålla dig konsekvent medan du skriver samma svar igen.
Det här drabbar supportansvariga hårdast, om vi ska vara ärliga. Men grundare och byråägare som bygger botar åt kunder känner av det också. Med den här Telegram docs answers-automationen kan din bot svara på sekunder med hjälp av din faktiska dokumentation, även när användare skickar skärmdumpar, PDF:er eller röstmeddelanden.
Nedan ser du hur workflowet routar varje meddelandetyp, hämtar rätt kontext från Supabase och skickar varumärkesanpassade svar tillbaka via Telegram.
Så fungerar den här automatiseringen
Här är hela workflowet som du kommer att sätta upp:
n8n Workflow Template: Telegram + Supabase: snabba svar från dina docs
flowchart LR
subgraph sg0["Telegram Message 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 Message 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/>Send Telegram Reply"]
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/>Fetch Voice File"]
n3@{ icon: "mdi:robot", form: "rounded", label: "Transcribe Audio", pos: "b", h: 48 }
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/>Fetch PDF File"]
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 Image File"]
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/code.svg' width='40' height='40' /></div><br/>Normalize Image Mime"]
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/>Fetch Photo File"]
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/>Normalize Photo Mime"]
n9@{ icon: "mdi:robot", form: "rounded", label: "Analyze Photo Content", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate File Support", pos: "b", h: 48 }
n11["<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 Spreadsheet File"]
n12@{ icon: "mdi:cog", form: "rounded", label: "Parse PDF Text", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Parse Spreadsheet Data", 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 Typing Action"]
n15["<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/>Check Document Extensions"]
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/code.svg' width='40' height='40' /></div><br/>Categorize Documents"]
n17@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Incoming Message", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Document Types", 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/telegram.svg' width='40' height='40' /></div><br/>Fetch JSON File"]
n20@{ icon: "mdi:cog", form: "rounded", label: "Parse JSON Content", pos: "b", h: 48 }
n21["<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 XML File"]
n22@{ icon: "mdi:cog", form: "rounded", label: "Parse XML Content", pos: "b", h: 48 }
n23["<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 Word File"]
n24@{ icon: "mdi:cog", form: "rounded", label: "Convert File to Base64", pos: "b", h: 48 }
n25["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Docx to Text API"]
n26["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Retrieve Text Output"]
n27@{ icon: "mdi:robot", form: "rounded", label: "Analyze Uploaded Image", pos: "b", h: 48 }
n32@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n34@{ icon: "mdi:vector-polygon", form: "rounded", label: "Search Embeddings", pos: "b", h: 48 }
n35@{ icon: "mdi:memory", form: "rounded", label: "Postgres Conversation Memory", pos: "b", h: 48 }
n36@{ icon: "mdi:robot", form: "rounded", label: "Cohere Reranker", pos: "b", h: 48 }
n37@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Text Field", pos: "b", h: 48 }
n38@{ icon: "mdi:swap-vertical", form: "rounded", label: "Compose Photo Text", pos: "b", h: 48 }
n39@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Error Message", pos: "b", h: 48 }
n40@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Spreadsheet Text", pos: "b", h: 48 }
n41@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map JSON Text", pos: "b", h: 48 }
n42@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map XML Text", pos: "b", h: 48 }
n43@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map PDF Text", pos: "b", h: 48 }
n44@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Doc Text", pos: "b", h: 48 }
n46@{ icon: "mdi:robot", form: "rounded", label: "Knowledge Base Assistant", pos: "b", h: 48 }
n47@{ icon: "mdi:cube-outline", form: "rounded", label: "Supabase Vector Search", pos: "b", h: 48 }
n10 --> n16
n10 --> n39
n4 --> n12
n21 --> n22
n37 --> n46
n6 --> n27
n19 --> n20
n26 --> n44
n40 --> n46
n41 --> n46
n42 --> n46
n43 --> n46
n44 --> n46
n8 --> n9
n9 --> n38
n2 --> n3
n5 --> n6
n7 --> n8
n24 --> n25
n27 --> n38
n18 --> n5
n18 --> n4
n18 --> n23
n18 --> n11
n18 --> n19
n18 --> n21
n36 --> n47
n12 --> n43
n22 --> n42
n0 --> n17
n0 --> n14
n20 --> n41
n3 --> n46
n34 -.-> n47
n32 -.-> n46
n11 --> n13
n17 --> n37
n17 --> n2
n17 --> n7
n17 --> n15
n35 -.-> n46
n39 --> n46
n23 --> n24
n38 --> n46
n16 --> n18
n46 --> n1
n13 --> n40
n47 -.-> n46
n15 --> n10
n25 --> n26
end
subgraph sg1["Manual Execution Start Flow"]
direction LR
n28@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Execution Start", pos: "b", h: 48 }
n29@{ icon: "mdi:cog", form: "rounded", label: "Retrieve Drive File", pos: "b", h: 48 }
n30@{ icon: "mdi:robot", form: "rounded", label: "Default Data Loader", pos: "b", h: 48 }
n31@{ icon: "mdi:robot", form: "rounded", label: "Recursive Text Splitter", pos: "b", h: 48 }
n33@{ icon: "mdi:vector-polygon", form: "rounded", label: "Generate Embeddings", pos: "b", h: 48 }
n45@{ icon: "mdi:cube-outline", form: "rounded", label: "Insert Into Supabase Vectors", pos: "b", h: 48 }
n29 --> n45
n33 -.-> n45
n30 -.-> n45
n31 -.-> n30
n28 --> n29
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,n28 trigger
class n3,n9,n27,n36,n46,n30,n31 ai
class n32 aiModel
class n35 ai
class n47,n45 ai
class n34,n33 ai
class n10,n17,n18 decision
class n25,n26 api
class n6,n8,n15,n16 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n4,n5,n6,n7,n8,n11,n14,n15,n16,n19,n21,n23,n25,n26 customIcon
Varför det här spelar roll: supportsvar som inte spårar ur
Support är ett av de jobben där ”bara svara snabbt” låter enkelt tills du gör det hela dagen. Samma prisfråga dyker upp igen. Någon skickar en suddig skärmdump på ett fel. En annan slänger in en PDF och säger ”vad betyder avsnitt 4?” Du kan svara, visst, men den mentala belastningen är brutal och små inkonsekvenser smyger sig in. En kollega citerar en gammal policy. En annan använder fel länk. En vecka senare har du en röra: förvirrade kunder, längre trådar och mindre tid för jobbet som faktiskt driver verksamheten framåt.
Det bygger snabbt upp. Här brukar friktionen synas.
- Svaren varierar beroende på vem som svarar, vilket tyst urholkar förtroendet över tid.
- Filer blir ignorerade eftersom det tar för lång tid att öppna, läsa och sammanfatta dem under rusningstid.
- Röstmeddelanden och skärmdumpar tvingar dig in i ”manuell översättning”-läge innan du ens kan börja hjälpa.
- Även en hyfsad chatbot fallerar när frågor kräver kontext från din faktiska dokumentation, dina policys eller din kunskapsbas.
Vad du bygger: en Telegram-bot som svarar från din kunskapsbas
Det här workflowet gör Telegram till en praktisk ingång för support. Ett meddelande kommer in (text, röst, bild eller dokument), och workflowet routar det till rätt hanterare. Ljud transkriberas till text. Bilder och foton analyseras så att boten kan ”läsa” vad som visas. Dokument som PDF:er, kalkylark, JSON/XML och Word-filer parsas eller konverteras till text. Sedan använder workflowet din Supabase-vektordatabas för att hämta relevanta delar av din dokumentation, kombinerar den kontexten med användarens fråga och ber OpenAI att generera ett välgrundat svar. Till sist skickas svaret tillbaka till Telegram, i den ton du definierar.
Workflowet startar med en Telegram-trigger och en meddelanderouter som separerar varje inmatningstyp. Därefter normaliseras innehållet till ren text och berikas med hämtad kontext från Supabase (plus samtalsminne). AI-agenten tar fram ett konsekvent svar, och Telegram levererar det direkt.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att ditt team hanterar cirka 20 Telegram-frågor per dag, och att ungefär hälften innehåller en fil (PDF, skärmdump eller röstmeddelande). Manuellt är det lätt att lägga runt 10 minuter per fråga på att öppna bilagor, söka i dokumentation och formulera ett korrekt formaterat svar, så det blir runt 3 timmar per dag. Med det här workflowet lägger du kanske 1 minut på att läsa frågan medan boten transkriberar/extraherar och hämtar kontext från Supabase. Du får tillbaka cirka 2 timmar om dagen, utan att tvinga kunderna till en klumpig supportportal.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att ta emot meddelanden och skicka svar.
- Supabase för att lagra embeddings och köra vektorsök.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard).
Svårighetsgrad: Mellan. Du kopplar några inloggningar, klistrar in API-nycklar och redigerar prompts, men du behöver inte bygga en app.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett Telegram-meddelande kommer in. Telegram-triggern fångar användarens text, fil eller röstmeddelande. Workflowet skickar också en ”skriver”-indikator så att upplevelsen känns responsiv medan bearbetningen pågår.
Meddelandet routas och normaliseras. En Switch-nod routar efter inmatningstyp, och sedan extraherar workflowet användbar text: röst transkriberas, PDF:er och kalkylark parsas, Word-filer konverteras och bilder/foton analyseras för att skapa en textbeskrivning.
Din kunskapsbas söks igenom. AI-agenten kör ett retrieval-steg mot Supabase vektorsök, ofta med en reranker, så att bara de mest relevanta delarna av dokumentationen används som kontext. Samtalsminne kan också inkluderas så att återkommande användare inte behöver upprepa allt.
Ett svar genereras och skickas tillbaka. OpenAI producerar ett svar förankrat i de hämtade dokumentutdragen, och workflowet postar svaret i samma Telegram-chattråd.
Du kan enkelt justera agentprompten så att den matchar er tonalitet, era eskaleringsregler och vilka källor den får hänvisa till. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera Telegram-triggern
Det här arbetsflödet startar när ett Telegram-meddelande kommer in och kör direkt två grenar parallellt.
- Lägg till och öppna Telegram Message Trigger.
- Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter.
- Ställ in Updates till
message. - Bekräfta parallell körning: Telegram Message Trigger skickar utdata parallellt till både Route Incoming Message och Send Typing Action.
Steg 2: Anslut hämtning av Telegram-filer och routning
Meddelanden kategoriseras som text, röst, foto eller dokument och routas sedan till rätt hämtningsnoder.
- Öppna Route Incoming Message och verifiera de fyra utgångarna: Text, Audio, Photo och Document, där varje utgång kontrollerar
{{$json.message.text}},{{$json.message.voice}},{{$json.message.photo}}och{{$json.message.document}}. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter till alla Telegram-filnoder (Fetch Voice File, Fetch Photo File, Fetch Image File, Fetch PDF File, Fetch Word File, Fetch Spreadsheet File, Fetch JSON File, Fetch XML File och Send Typing Action).
- Ställ in Send Typing Action → Operation till
sendChatActionoch Chat ID till{{$json.message.chat.id}}. - I varje hämtningsnod ska ni behålla Resource satt till
fileoch säkerställa att rätt File ID-uttryck används (till exempel{{$json.message.document.file_id}}i dokumentnoder).
Steg 3: Ställ in dokumentvalidering och typ-routning
Dokumentuppladdningar valideras och kategoriseras innan filspecifik parsning börjar.
- Konfigurera Check Document Extensions så att listan över stödda filtyper behålls i koden:
['.jpg', '.jpeg', '.png', '.webp', '.pdf', '.doc', '.docx', '.xls', '.xlsx', '.json', '.xml']. - I Validate File Support ska ni säkerställa att villkoren kontrollerar att
{{$json.is_supported}}är true och att{{$json.reason}}är lika medsupported_file_type. - Bekräfta att lyckad väg routar till Categorize Documents och att felvägen routar till Map Error Message.
- Granska Categorize Documents för att säkerställa att den sätter fileTypeCategory till
image,pdf,word document,spreadsheet,jsonellerxml file. - Bekräfta att Route Document Types skickar varje kategori till rätt hämtningsnod (t.ex. Image → Fetch Image File).
Steg 4: Ställ in filparsning och normalisering
Varje filtyp normaliseras och konverteras till text för assistenten.
- För bilder ska ni behålla koden i Normalize Image Mime och Normalize Photo Mime oförändrad så att mimeType sätts korrekt före analys.
- Verifiera att Parse PDF Text använder Operation
pdf, att Parse Spreadsheet Data använderxlsx, att Parse JSON Content använderfromJsonoch att Parse XML Content använderxml. - Säkerställ att Convert File to Base64 använder Operation
binaryToProperyföre Docx to Text API. - I Docx to Text API ska ni sätta URL till
https://v2.convertapi.com/convert/docx/to/txtoch behålla JSON-body-uttrycket intakt. - Ersätt Authorization-headern i Docx to Text API med er ConvertAPI-token (för närvarande
[CONFIGURE_YOUR_TOKEN]). - Ställ in Retrieve Text Output → URL till
{{$json.Files[0].Url}}så att den konverterade texten hämtas.
[CONFIGURE_YOUR_TOKEN] med en giltig token.Steg 5: Ställ in AI-bearbetning och kunskapsbas
Det här steget kopplar ihop AI-analys, embeddings, vektorlager och assistentagenten.
- Autentiseringsuppgifter krävs: Anslut era openAiApi-autentiseringsuppgifter till Transcribe Audio, Analyze Photo Content, Analyze Uploaded Image och OpenAI Chat Model.
- Ställ in texten i Analyze Photo Content till
Describe the contents of this photo/imageoch texten i Analyze Uploaded Image tillDescribe the content of this image.. - För textmappning ska ni behålla att följande noder matar Knowledge Base Assistant: Map Text Field, Map PDF Text, Map Doc Text, Map Spreadsheet Text, Map JSON Text, Map XML Text och Compose Photo Text.
- I Compose Photo Text ska ni behålla text-värdet som
=Photo content: {{$json.content}} Photo caption: {{$('Telegram Message Trigger').item.json.message.caption}}. - Öppna Knowledge Base Assistant och sätt Text till
{{$json.text}}. - Anslut AI-undernoder till Knowledge Base Assistant och säkerställ att autentiseringsuppgifter läggs till på föräldranoderna: OpenAI Chat Model (språkmodell), Postgres Conversation Memory (minne) och Supabase Vector Search (verktyg). Lägg inte till autentiseringsuppgifter direkt på dessa undernoder.
- Autentiseringsuppgifter krävs: Anslut era postgres-autentiseringsuppgifter till Postgres Conversation Memory och behåll Session Key som
{{$('Telegram Message Trigger').item.json.message.chat.id}}. - Autentiseringsuppgifter krävs: Anslut era cohereApi-autentiseringsuppgifter till Cohere Reranker och era supabaseApi-autentiseringsuppgifter till Supabase Vector Search och Insert Into Supabase Vectors.
Steg 6: Anslut flödet för inläsning till kunskapsbasen
Arbetsflödet innehåller en manuell inläsningspipeline för att ladda kunskapsdokument till Supabase-vektorer.
- Öppna Manual Execution Start för att bekräfta att den här vägen endast körs vid manuell körning.
- I Retrieve Drive File ska ni sätta Operation till
downloadoch ersätta File ID[YOUR_ID]med er kunskapsbasfil. - Autentiseringsuppgifter krävs: Anslut era googleDriveOAuth2Api-autentiseringsuppgifter till Retrieve Drive File.
- I Default Data Loader ska ni sätta Data Type till
binaryoch Text Splitting Mode tillcustom. - Bekräfta att Recursive Text Splitter matar Default Data Loader och att Generate Embeddings är ansluten till Insert Into Supabase Vectors.
Steg 7: Konfigurera leverans av utdata
Assistentens slutliga utdata skickas tillbaka till användaren i Telegram.
- Öppna Send Telegram Reply och sätt Text till
{{$json.output}}. - Sätt Chat ID till
{{$('Telegram Message Trigger').item.json.message.chat.id}}. - Autentiseringsuppgifter krävs: Anslut era telegramApi-autentiseringsuppgifter till Send Telegram Reply.
Steg 8: Testa och aktivera ert arbetsflöde
Validera varje väg, bekräfta AI-svar och aktivera sedan arbetsflödet för produktion.
- Klicka på Execute Workflow för att testa den manuella inläsningsvägen och verifiera sedan att vektorer läggs till via Insert Into Supabase Vectors.
- Skicka ett Telegram-meddelande med text, röst, foto och ett dokument som stöds för att säkerställa att varje gren når Knowledge Base Assistant.
- Bekräfta lyckad körning genom att ta emot ett Telegram-svar från Send Telegram Reply med relevant innehåll.
- När testerna passerar, slå om arbetsflödet till Active så att Telegram Message Trigger körs i produktion.
Tips för felsökning
- Telegram-bottokens roteras eller klistras in fel oftare än man tror. Om svaren slutar komma, kontrollera Telegram-inloggningen i n8n först och bekräfta sedan att boten fortfarande kan skicka meddelanden till din chatt.
- Om du använder Wait-liknande timing (eller externa konverteringstjänster) varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar, särskilt för stora PDF:er eller långsamma dokument-till-text-konverteringar.
- Supabase vektorsök ser ”trasig” ut när embeddings inte matchar samma modell eller chunking-strategi. Om resultaten är irrelevanta, kontrollera embedding-inställningar, chunkstorlekar och att ditt ingest-workflow för kunskapsbasen faktiskt har lagt in nya vektorer.
Snabba svar
Cirka 1–2 timmar om dina nycklar och ditt Supabase-projekt är redo.
Nej. Du kommer mest att koppla inloggningar, klistra in API-nycklar och redigera prompts. Det finns lite lätt konfiguration kring filhantering, men det är inte ”bygga en backend”-arbete.
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 OpenAI-användning (vanligtvis några cent per konversation) samt eventuella anrop för dokumentkonvertering eller reranking som du aktiverar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade exekveringar men kräver grundläggande serverhantering.
Ja, och det bör du. Du kan byta vad som indexeras genom att ändra Google Drive-ingestflödet (den manuella sektionen ”Retrieve Drive File” till ”Insert Into Supabase Vectors”), och du kan forma hur assistenten beter sig genom att redigera agentprompten ”Knowledge Base Assistant”. Vanliga justeringar är att lägga till eskaleringsregler (”lämna över till en människa”), begränsa svar till specifika collections och ändra tonen för sälj jämfört med support.
Oftast beror det på en ogiltig eller roterad bottoken i dina Telegram-inloggningar. Det kan också vara chattbehörigheter (boten får inte skriva i den chatten), eller att du testar i en annan Telegram-tråd än den som triggern lyssnar på. Om triggern fungerar men svaren inte gör det, verifiera att noden ”Send Telegram Reply” pekar på rätt chat-ID från det inkommande meddelandet.
Om du self-hostar finns inget exekveringstak, så det beror mest på din server och API-begränsningar. På n8n Cloud sätter din plan din månatliga exekveringskvot. I praktiken hanterar det här workflowet supportvolym bra, men stora filer och bildanalys kan sänka genomströmningen, så många team börjar med ”dussintals per dag” och skalar upp när prompts och indexering är intrimmade.
För RAG-botar med flera filtyper är n8n oftast det enklare långsiktiga valet. Du får mer flexibel routing (Switch/If-logik), bättre kontroll över hur filer parsas och en tydlig väg till self-hosting för obegränsade körningar. Zapier eller Make kan fungera för enkla flöden med ”meddelande in, meddelande ut”, men när du lägger till embeddings, reranking och dokumentkonvertering märker du deras begränsningar. Den andra faktorn är kostnad: AI-workflows i flera steg kan bli dyra snabbt med prissättning per task. Prata med en automationsexpert om du vill ha hjälp att välja utifrån din volym.
När detta är live slutar din Telegram-bot att gissa och börjar svara utifrån samma dokumentation som teamet litar på. Sätt upp det, trimma prompten och njut av lugnet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.