Ditt team ställer samma frågor om och om igen, och du fortsätter att svara. ”Var finns den senaste återbetalningspolicyn?” ”Hur funkar vår process för ledighet?” ”Vilka verktyg är godkända?” Det är inte svårt arbete. Det är bara ihållande.
Det här är den typen av röra som drabbar ops-ansvariga först, men supportchefer och founders känner av det också. Med Drive Telegram answers på plats kan du göra om dina Google Drive-dokument till en Telegram-assistent som svarar på sekunder med den mest aktuella policytexten.
Nedan ser du hur arbetsflödet håller sig uppdaterat när filer ändras, hur frågor besvaras (även via röstmeddelanden) och vad du behöver för att köra det utan att behöva passa det.
Så här fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Google drive till telegram: direkta teamsvar
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n18@{ icon: "mdi:robot", form: "rounded", label: "Transcribe", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Text", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Voice or Text", 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/>Response"]
n22@{ icon: "mdi:robot", form: "rounded", label: "RAG Agent", 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/>Telegram Trigger"]
n24@{ icon: "mdi:memory", form: "rounded", label: "Window Buffer Memory1", 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/telegram.svg' width='40' height='40' /></div><br/>Download File2"]
n26@{ icon: "mdi:cube-outline", form: "rounded", label: "Supabase Vector Store3", pos: "b", h: 48 }
n27@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n28@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI3", pos: "b", h: 48 }
n29@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model3", pos: "b", h: 48 }
n30@{ icon: "mdi:wrench", form: "rounded", label: "MarketingLadder", pos: "b", h: 48 }
n19 --> n22
n22 --> n21
n18 --> n22
n20 --> n25
n20 --> n19
n25 --> n18
n30 -.-> n22
n23 --> n20
n28 -.-> n26
n27 -.-> n30
n29 -.-> n22
n24 -.-> n22
n26 -.-> n30
end
subgraph sg1["File Updated Flow"]
direction LR
n8@{ icon: "mdi:play-circle", form: "rounded", label: "File Updated", 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/supabase.svg' width='40' height='40' /></div><br/>Delete Row(s)"]
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Get FIle ID", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Reformat", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Download File1", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Recursive Character Text Spl..", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Extract from File1", pos: "b", h: 48 }
n15@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI1", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Default Data Loader1", pos: "b", h: 48 }
n17@{ icon: "mdi:cube-outline", form: "rounded", label: "Supabase Vector Store1", pos: "b", h: 48 }
n11 --> n12
n10 --> n11
n8 --> n9
n9 --> n10
n12 --> n14
n15 -.-> n17
n14 --> n17
n16 -.-> n17
n13 -.-> n16
end
subgraph sg2["New File Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set ID", pos: "b", h: 48 }
n1@{ icon: "mdi:cube-outline", form: "rounded", label: "Supabase Vector Store", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Default Data Loader", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Recursive Character Text Spl..", pos: "b", h: 48 }
n4@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI", pos: "b", h: 48 }
n5@{ icon: "mdi:play-circle", form: "rounded", label: "New File", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Download File", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Extract from File", pos: "b", h: 48 }
n0 --> n6
n5 --> n0
n6 --> n7
n4 -.-> n1
n7 --> n1
n2 -.-> n1
n3 -.-> n2
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 n23,n8,n5 trigger
class n18,n22,n13,n16,n2,n3 ai
class n27,n29 aiModel
class n30 ai
class n24 ai
class n26,n17,n1 ai
class n28,n15,n4 ai
class n20 decision
classDef customIcon fill:none,stroke:none
class n21,n23,n25,n9 customIcon
Problemet: teamets kunskap bor i dokument, inte i chatten
Google Drive är där policys ”ska finnas”, vilket oftast betyder att de ligger begravda i mappar, är halvt uppdaterade och bara går att hitta av personen som skapade dem. Samtidigt sker det faktiska jobbet i Telegram. Så samma frågor studsar runt varje vecka, och någon måste avbryta det de gör för att klistra in ett svar (igen). Det värsta är säkerheten i svaret. Om du inte är 100 % säker på att du hittat senaste versionen tvekar du, lägger in brasklappar och tråden drar ut på tiden.
Det summerar sig snabbt. Här är var det faller isär.
- Folk frågar i chatten eftersom det känns långsammare att söka i Drive än att pinga en kollega.
- Svaren glider över tid, så två chefer kan ge två ”korrekta” policys.
- Röstmeddelanden gör det värre, eftersom någon nu måste lyssna, tolka och skriva tillbaka.
- När ett policydokument ändras har ingen tid att ”utbilda om teamet”, så förvirringen smyger sig tillbaka.
Lösningen: Google Drive-dokument → Telegram-svar (alltid aktuella)
Det här arbetsflödet gör en delad Google Drive-mapp till en levande kunskapsbas som teamet kan fråga direkt från Telegram. När någon skickar ett meddelande till din Telegram-bot avgör arbetsflödet om det är text eller ett röstmeddelande. Röstmeddelanden transkriberas och hanteras sedan som vilken annan fråga som helst. Därefter söker assistenten i en Supabase-vektordatabas (byggd från dina Drive-dokument) för att hämta de mest relevanta avsnitten. Till sist genererar OpenAI ett tydligt svar som är förankrat i det hämtade underlaget och skickar svaret tillbaka till Telegram, så teamet får ett snabbt, konsekvent svar i stället för en lång tråd.
Den andra halvan är det som gör det faktiskt tillförlitligt. Två Drive-triggade automatiseringar bevakar nya filer och filredigeringar. När ett dokument ändras extraherar arbetsflödet texten på nytt, delar upp den i chunkar, skapar nya embeddings och uppdaterar Supabase så att nästa svar speglar den uppdaterade policyn. Ingen manuell uppdatering, inga ”såg du det nya dokumentet?”-påminnelser.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultaten du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att teamet får 15 policyfrågor i veckan i Telegram, och att varje fråga tar cirka 10 minuter att reda ut, hitta rätt dokument och svara på. Det är ungefär 2,5 timmar, och ärligt talat blir det ofta mer när tråden spårar ur. Med det här arbetsflödet skickas varje fråga en gång (eller spelas in som ett röstmeddelande), och boten svarar på ungefär en minut efter att den har sökt i Supabase och genererat ett svar. Du granskar fortfarande enstaka specialfall, men du slutar betala den ”konstanta avbrottsskatten”.
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 teamets chattbaserade frågor och svar.
- Google Drive för att lagra policys, FAQ och dokument.
- Supabase för att lagra embeddings och köra vektorsökning.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard) för transkribering, embeddings och svar.
Svårighetsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och gör enklare testning med några riktiga frågor.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande startar allt. Arbetsflödet triggas när din bot tar emot ett nytt meddelande. En Switch-nod routar förfrågan baserat på vad användaren skickade, så att röstmeddelanden inte behandlas som vanlig text.
Röst blir text. Om meddelandet innehåller ljud hämtar n8n filen från Telegram och skickar den till OpenAI för transkribering. Korta röstmeddelanden kommer tillbaka snabbt. Längre kan ibland behöva lite extra väntetid.
Assistenten söker i dina dokument, inte på öppna internet. RAG-agenten tar frågan, genererar embeddings och frågar Supabase-vektorlagret för att hitta de mest relevanta chunkarna från dina Drive-filer. Sedan använder den en OpenAI-chattmodell för att skriva ett hjälpsamt svar baserat på den kontexten, vilket minskar ”hallucinerade” svar.
Svaren hamnar tillbaka i Telegram. Det slutliga meddelandet postas i samma Telegram-tråd så att användaren kan gå vidare. Inga dokumentlänkar krävs, men du kan lägga till dem om teamet föredrar att läsa källan.
Du kan enkelt anpassa datakälla och destination efter din miljö. Till exempel kan du byta Telegram mot Slack, eller begränsa sökningen till HR-dokument. Se hela implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementering
Steg 1: konfigurera triggrarna för Google Drive och Telegram
Konfigurera de inkommande händelsekällorna som startar ingest- och frågeflödena: Google Drive för filändringar och Telegram för användarfrågor.
- Öppna New File Trigger och ställ in Event till
fileCreatedoch Trigger On tillspecificFolder. - I New File Trigger väljer ni mappen under Folder to Watch och ersätter
[YOUR_ID]med ert Drive-mapp-ID. - Inloggningsuppgift krävs: Anslut era googleDriveOAuth2Api-uppgifter i New File Trigger.
- Öppna File Update Trigger och ställ in Event till
fileUpdatedoch Trigger On tillspecificFolder. - Inloggningsuppgift krävs: Anslut era googleDriveOAuth2Api-uppgifter i File Update Trigger.
- Öppna Telegram Message Trigger och behåll Updates inställt på
message. - Inloggningsuppgift krävs: Anslut era telegramApi-uppgifter i Telegram Message Trigger.
Steg 2: anslut Google Drive-nedladdning och initial vektorinläsning
Den här vägen läser in nyligen skapade filer, extraherar text och infogar vektorer i Supabase.
- I Assign Record ID ställer ni in tilldelningen för id till
{{ $json.id }}. - I Drive File Download ställer ni in Operation till
downloadoch File ID till{{ $json.id }}. - I Drive File Download aktiverar ni Google Docs-konvertering genom att ställa in Docs to Format till
text/plain. - Inloggningsuppgift krävs: Anslut era googleDriveOAuth2Api-uppgifter i Drive File Download.
- I Extract Text Content ställer ni in Operation till
text. - I Recursive Text Divider ställer ni in Chunk Size till
500och Chunk Overlap till100. - I Standard Data Loader ställer ni in metadata-värdet file_id till
{{ $('Assign Record ID').item.json.id }}. - I Supabase Vector Index ställer ni in Mode till
insertoch Table Name tilldocuments. - Inloggningsuppgift krävs: Anslut era supabaseApi-uppgifter i Supabase Vector Index.
- Inloggningsuppgift krävs: Anslut era openAiApi-uppgifter i OpenAI Embedding Builder (används för embeddings till Supabase Vector Index).
Steg 3: konfigurera omindexering vid filuppdatering
Den här vägen tar bort befintliga vektorer för uppdaterade filer och läser in nytt innehåll igen.
- I Remove Matching Rows ställer ni in Table till
documents, Operation tilldeleteoch Filter String till=metadata->>file_id=like.*{{ $json.id }}*. - Inloggningsuppgift krävs: Anslut era supabaseApi-uppgifter i Remove Matching Rows.
- I Capture File Identifier ställer ni in file_id till
{{ $('File Update Trigger').item.json.id }}. - I Drive File Download A ställer ni in File ID till
{{ $('Capture File Identifier').item.json.file_id }}och Operation tilldownload. - Inloggningsuppgift krävs: Anslut era googleDriveOAuth2Api-uppgifter i Drive File Download A.
- I Extract Text Content A ställer ni in Operation till
textoch använder sedan Recursive Text Divider A med Chunk Size300och Chunk Overlap50. - I Standard Data Loader A ställer ni in metadata file_id till
{{ $('Normalize Records').item.json.file_id }}. - I Supabase Vector Index A ställer ni in Mode till
insertoch Table Name tilldocuments. - Inloggningsuppgift krävs: Anslut era supabaseApi-uppgifter i Supabase Vector Index A och openAiApi-uppgifter i OpenAI Embedding Builder A.
Steg 4: routa Telegram-inmatning och hantera rösttranskribering
Det här avsnittet avgör om Telegram-meddelandet är text eller röst och förbereder sedan frågan för assistenten.
- I Route Voice or Text behåller ni de två reglerna som kontrollerar
{{ $json.message.voice.file_id }}och{{ $json.message.text }}med villkoret exists. - För röstmeddelanden skickar Route Voice or Text utdata till Telegram File Fetch (röstgrenen).
- I Telegram File Fetch ställer ni in Resource till
fileoch File ID till{{ $json.message.voice.file_id }}. - Inloggningsuppgift krävs: Anslut era telegramApi-uppgifter i Telegram File Fetch.
- I Transcribe Audio ställer ni in Resource till
audiooch Operation tilltranscribe. - Inloggningsuppgift krävs: Anslut era openAiApi-uppgifter i Transcribe Audio.
- För textmeddelanden skickar Route Voice or Text utdata till Map Text Input, som mappar text till
{{ $json.message.text }}.
Steg 5: konfigurera RAG-assistenten och vektorverktygen
Konfigurera assistenten så att den använder Supabase vector store och behåller konversationsminne.
- I RAG Assistant ställer ni in Text till
{{ $json.text }}och behåller Prompt Type somdefinemed det angivna systemmeddelandet. - Anslut OpenAI Chat Model B som språkmodell för RAG Assistant; ställ in Model till
gpt-4o. - Inloggningsuppgift krävs: Anslut era openAiApi-uppgifter i OpenAI Chat Model B.
- I Window Buffer Memory ställer ni in Session Key till
{{ $('Telegram Message Trigger').item.json.message.chat.id }}och Session ID Type tillcustomKey. - I Vector Store Tool behåller ni Name som
MarketingLadderoch Description somThis vector store holds information about Marketing Ladder agency. - Säkerställ att Supabase Vector Index B är ansluten som vektorlagret för Vector Store Tool; den använder Table Name
documents. - Inloggningsuppgift krävs: Anslut era supabaseApi-uppgifter i Supabase Vector Index B och openAiApi-uppgifter i OpenAI Embedding Builder B.
- OpenAI Chat Model A är ansluten som språkmodell för Vector Store Tool — se till att inloggningsuppgifter läggs till i OpenAI Chat Model A, inte i verktygsnoden.
Steg 6: konfigurera utdata för Telegram-svar
Skicka assistentens svar tillbaka till användaren i Telegram.
- I Send Telegram Reply ställer ni in Text till
{{ $json.output }}. - Ställ in Chat ID till
{{ $('Telegram Message Trigger').item.json.message.chat.id }}. - Inloggningsuppgift krävs: Anslut era telegramApi-uppgifter i Send Telegram Reply.
Steg 7: testa och aktivera ert workflow
Validera både ingest- och frågeflöden innan ni kör i produktion.
- Klicka Execute Workflow och ladda upp en ny fil till den övervakade Drive-mappen för att verifiera New File Trigger → Drive File Download → Extract Text Content → Supabase Vector Index.
- Uppdatera en befintlig fil för att verifiera File Update Trigger → Remove Matching Rows → Drive File Download A → Supabase Vector Index A.
- Skicka både ett textmeddelande och ett röstmeddelande till er Telegram-bot och bekräfta att Route Voice or Text routar korrekt och att Send Telegram Reply returnerar ett svar.
- En lyckad körning ska visa vektorinfogningar i Supabase och ett Telegram-svar genererat från RAG Assistant.
- När ni är nöjda, slå på workflowet till Active för kontinuerlig drift.
Vanliga fallgropar
- Google Drive-inloggningar kan gå ut eller sakna åtkomst till den delade mappen. Om nya filer inte indexeras, kontrollera först behörigheter för n8n-credentials och mappens delningsinställningar.
- Om du använder Wait-noder eller extern bearbetning (som transkribering) varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Supabase-tabeller och policies kan blockera inserts om Row Level Security är på utan rätt service key. Om vector upserts misslyckas, kontrollera Supabase-loggarna och bekräfta att du använder rätt API-nyckel för server-side writes.
Vanliga frågor
Cirka 60–90 minuter om din Drive-mapp och ditt Supabase-projekt är redo.
Nej. Du kopplar konton, klistrar in några API-nycklar och testar med riktiga frågor.
Ja. n8n har ett gratis alternativ för egen hosting 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 med OpenAI API-användning, som oftast landar på några dollar i månaden för små team (mer om du transkriberar mycket röst).
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, men då byter du ut Telegram Message Trigger- och Send Telegram Reply-noderna mot Slack-motsvarigheter, och behåller RAG-assistenten och Supabase-vektorsökningen likadana. Många team justerar också assistentprompten så att den matchar deras interna stilguide och lägger till en kort ”källa”-rad som hänvisar till filnamnet. Om du vill ha avdelningsspecifika svar kan du lägga till metadata vid indexering (som ”HR” eller ”Engineering”) och filtrera din vektorsökning så att den bara hämtar rätt dokument.
Oftast beror det på en ogiltig bot-token eller att boten inte har tillåtelse att läsa chatten du testar i. Skapa en ny token i BotFather, uppdatera Telegram-credentials i n8n och bekräfta att boten har lagts till i gruppen (med rättighet att läsa meddelanden). Om röstmeddelanden misslyckas men text fungerar, kontrollera att steget Telegram File Fetch tar emot ett file_id och att OpenAI-transkribering har en giltig API-nyckel.
Gott och väl för ett litet team. Med n8n Cloud Starter begränsas du av månatliga executions, medan egen hosting inte har något fast tak (det beror på din server). I praktiken är flaskhalsarna oftast OpenAI:s rate limits och hur många dokument du har indexerat, inte n8n i sig.
För en RAG-assistent som den här, ja i de flesta fall. Du behöver grenlogik (röst vs. text), filhantering, chunkning, embeddings och en uppdateringsloop för vektordatabasen när Drive-filer ändras. n8n är byggt för den typen av flerstegsflöden, och egen hosting är en stor fördel när användningen växer. Zapier eller Make kan fungera för enklare ”skicka meddelande när en fil ändras”-uppgifter, men blir klumpiga och dyra när du lägger till minne, retrieval och dokumentsynk. Om du är osäker, prata med en automationsexpert så får du en rak rekommendation.
När det här väl rullar blir ”Var hittar jag det där?” ett enminutssvar i chatten. Sätt upp det, håll dina dokument strukturerade, och låt arbetsflödet ta hand om alla återkommande pingar.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.