Frågor om taxipriser verkar enkla. Sedan fastnar du i en Telegram-pingpong, kopierar adresser, frågar ”hämtning eller avlämning?” och försöker undvika att lämna fel belopp.
Dispatchteam märker det först. Men driftsansvariga och ägare som kör en liten fordonsflotta känner av det också. Den här automatiseringen för taxiprisofferter gör röriga chattmeddelanden till konsekventa uppskattningar, snabbt, utan att din personal behöver räkna i huvudet.
Du får se hur workflowet läser ett Telegram-meddelande, kontrollerar dina serviceregler i Postgres, beräknar avstånd med Google Maps och lämnar över felfri uppskattningsdata till leverantörer.
Så fungerar automatiseringen
Hela n8n-workflowet, från trigger till slutlig output:
n8n Workflow Template: Telegram + Google Maps: taxipris direkt
flowchart LR
subgraph sg0["Flow Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Flow Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Input", pos: "b", h: 48 }
n2@{ icon: "mdi:play-circle", form: "rounded", label: "Test Trigger", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Test Fields", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n5@{ icon: "mdi:memory", form: "rounded", label: "Postgres Chat Memory", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Output", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Update User Session", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "xAI @grok-2-1212", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Load User Memory", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Service Cache", 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/redis.svg' width='40' height='40' /></div><br/>Service Cache"]
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/postgres.svg' width='40' height='40' /></div><br/>Load Service Data"]
n13["<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/redis.svg' width='40' height='40' /></div><br/>Save Service Cache"]
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Active", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Inactive Output", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Service", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Error Output", pos: "b", h: 48 }
n18@{ icon: "mdi:database", form: "rounded", label: "Save User Memory", pos: "b", h: 48 }
n19@{ icon: "mdi:database", form: "rounded", label: "Create Route Data", pos: "b", h: 48 }
n20["<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/redis.svg' width='40' height='40' /></div><br/>Delete Route Data"]
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/redis.svg' width='40' height='40' /></div><br/>Route Data"]
n22@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Route Data", 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/code.svg' width='40' height='40' /></div><br/>Parse Route"]
n24["<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/>Parse Service"]
n25@{ icon: "mdi:web", form: "rounded", label: "Find Route Distance", pos: "b", h: 48 }
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/redis.svg' width='40' height='40' /></div><br/>Reset Session"]
n27@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n28@{ icon: "mdi:swap-vertical", form: "rounded", label: "English", pos: "b", h: 48 }
n29@{ icon: "mdi:swap-vertical", form: "rounded", label: "Chinese", pos: "b", h: 48 }
n30@{ icon: "mdi:swap-vertical", form: "rounded", label: "Japanese", pos: "b", h: 48 }
n31@{ icon: "mdi:cog", form: "rounded", label: "Call Back", pos: "b", h: 48 }
n32@{ icon: "mdi:cog", form: "rounded", label: "Taxi Service Provider", pos: "b", h: 48 }
n1 --> n11
n6 --> n31
n27 --> n29
n27 --> n30
n27 --> n28
n29 --> n31
n28 --> n31
n16 --> n26
n4 --> n21
n4 --> n17
n30 --> n31
n14 --> n13
n14 --> n15
n21 --> n22
n23 --> n32
n23 --> n27
n3 --> n1
n17 --> n31
n0 --> n1
n2 --> n3
n22 --> n23
n22 --> n6
n24 --> n16
n26 --> n20
n11 --> n10
n15 --> n31
n10 --> n24
n10 --> n12
n9 -.-> n4
n18 -.-> n4
n8 -.-> n4
n19 -.-> n4
n20 --> n4
n12 --> n14
n13 --> n16
n25 -.-> n4
n7 -.-> n4
n5 -.-> n4
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,n2 trigger
class n4 ai
class n8 aiModel
class n5 ai
class n10,n14,n22,n27 decision
class n7,n9,n11,n12,n13,n18,n19,n20,n21,n26 database
class n25 api
class n23,n24 code
classDef customIcon fill:none,stroke:none
class n11,n12,n13,n20,n21,n23,n24,n26 customIcon
Problemet: prisofferter blir en ändlös chatt
En kund frågar ”Hur mycket från flygplatsen till centrum?” och du tror att det tar 30 sekunder. Det gör det inte. Någon måste bekräfta adresser, kontrollera att tjänsten är aktiv i området, uppskatta avstånd, ta hänsyn till leverantörsregler och sedan skriva ett svar som inte triggar ytterligare fem frågor. Gör du det hela dagen blir dina ”snabba svar” ett extrajobb. Ännu värre: offerter blir inkonsekventa mellan handläggare, vilket leder till diskussioner vid upphämtning och obekväma återbetalningar senare.
Friktionen byggs på. Här är var det fallerar i verkligheten.
- Handläggare skriver om samma förtydligande frågor, så svarstiden glider från sekunder till flera minuter.
- Manuella avståndskontroller i Google Maps hoppas över när det är stressigt, och det är så dåliga offerter uppstår.
- Serviceregler sitter i någons huvud (eller i ett kalkylark), vilket gör att ny personal gissar.
- Överlämningar till leverantörer blir röriga, så ”offerten” blir aldrig en bokad resa.
Lösningen: Telegram → serviceregler → ruttavstånd → överlämning av offert
Det här n8n-workflowet fungerar som en offertkoordinator för din taxichatt. Ett meddelande kommer in från Telegram (direkt, eller från ett separat callcenter-workflow), och automatiseringen kontrollerar omedelbart din servicekonfiguration i PostgreSQL för att bekräfta att den finns och är aktiv. Därefter återställer den sessionsdata i Redis, rensar eventuell gammal ruttinfo och ber en AI-agent att omvandla kundens meddelande till strukturerad ”ruttdata” (hämtning, avlämning, språk och eventuell kontext). När rutten är tydlig anropar workflowet Google Maps Route API för att beräkna avstånd. Till sist formaterar den ett kundvänligt svar (inklusive flerspråkiga svar om du vill) och skickar vidare uppskattningspayloaden till ett eller flera leverantörs-sub-workflows för prissättning och dispatch.
Workflowet startar med en chatt-trigger och en serviceuppslagning. Sedan bygger det ruttdata med AI-agenten, använder Google Maps för att beräkna avstånd och lämnar över felfria detaljer till dina leverantörs-workflows. Inget mer improviserande medan kunden väntar.
Det här får du: automatisering vs. resultat
| Vad det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att ditt team hanterar 30 prisförfrågningar per dag i Telegram. Manuellt tar en ”enkel offert” ofta cirka 6 minuter: 2 minuter för att förtydliga platser, 2 minuter för att kolla Maps, 2 minuter för att skriva och lämna över till en leverantör. Det är ungefär 3 timmar per dag. Med det här workflowet kan en handläggare bara låta chatt-triggern gå, vänta på att Google Maps-avståndsuppslagningen och leverantörs-workflowet svarar, och sedan skicka slutmeddelandet — mer som 1 minuts uppmärksamhet per förfrågan. Du får tillbaka cirka 2 timmar de flesta dagar, och svaren håller sig konsekventa även när det är hektiskt.
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 ta emot och svara på offertförfrågningar
- Postgres för att lagra tjänster, regler och minne
- Redis för snabb session- och ruttcache
- Google Maps API-nyckel (hämta den i Google Cloud Console)
- Åtkomst till OpenAI- eller xAI-modell (skaffa en API-nyckel från din modellleverantör)
Kunskapsnivå: Avancerad. Du kopplar flera autentiseringsuppgifter, redigerar prompts och konfigurerar sub-workflows för dina leverantörer.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett Telegram-chattmeddelande sätter igång allt. Workflowet kan starta från den inbyggda chatt-triggern eller från en ”Execute Sub-workflow Trigger” om du redan har ett separat callcenter-workflow uppströms.
Dina serviceregler laddas och valideras. n8n kontrollerar Redis först (snabbt), sedan PostgreSQL vid behov, för att hitta matchande servicepost. Om tjänsten saknas eller är inaktiv returnerar den direkt ett tydligt felsvar i stället för att slösa någons tid.
En AI-agent omvandlar chatten till ruttdata. Automatiseringen rensar gammal ruttcache och använder sedan AI-agenten plus chattminne (Postgres-konversationsminne och valfritt användarminne) för att tolka vad kunden menade. Om meddelandet är ofullständigt kan agenten styra konversationen tills den har detaljer för hämtning och avlämning.
Google Maps beräknar avståndet och workflowet lämnar över prissättning. En HTTP-förfrågan anropar Google Maps Route API, sedan formaterar workflowet språkspecifika svar (engelska, kinesiska, japanska) och skickar en strukturerad payload till dina leverantörs-sub-workflows för slutlig offert och dispatchlogik.
Du kan enkelt justera reglerna för serviceuppslagning för att stödja flera varumärken eller regioner utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera workflowets starttrigger
Det här workflowet kan starta från ett manuellt anrop från ett överordnat workflow eller en chat-webhook. Sätt upp båda ingångarna så att automatiseringen kan triggas i produktion och vid testning.
- Lägg till och konfigurera Workflow Start Trigger för att tillåta körning från andra workflows.
- Konfigurera Chat Webhook Trigger för att ta emot inkommande chattförfrågningar för livekonversationer.
- Koppla Chat Webhook Trigger till Prepare Test Fields så att chatt-payloads normaliseras innan bearbetning.
- Koppla Workflow Start Trigger till Assign Input Fields för att normalisera indata från det överordnade workflowet.
Steg 2: anslut datakällor i Redis och Postgres
Det här workflowet använder Redis för caching och Postgres för serviceposter och minne. Konfigurera inloggningsuppgifter för alla Redis- och Postgres-noder för att undvika fel vid körning.
- I Read Service Cache, Write Service Cache, Read Route Cache, Remove Route Cache och Reset Session Cache, lägg till Redis-anslutningar.
- I Fetch Service Records, lägg till en Postgres-anslutning till er servicedatabas.
- I Retrieve User Memory och Store User Memory, lägg till Postgres-anslutningar för minneslagring.
- Säkerställ att alla Redis-verktygsnoder (Refresh Session Cache och Create Route Cache) är konfigurerade med Redis-åtkomst.
Steg 3: konfigurera cachekontroller och sammansättning av servicedata
Dessa noder avgör om data hämtas från cache eller databas, och hur servicedata sätts samman för vidare bearbetning nedströms.
- Bekräfta att Assign Input Fields skickar utdata till Read Service Cache för initial cacheuppslagning.
- Konfigurera Service Cache Check för att förgrena mellan Transform Service Payload (cacheträff) och Fetch Service Records (cachemiss).
- Sätt upp Active Status Check för att styra aktiva tjänster till Write Service Cache och inaktiva tjänster till Compose Inactive Response.
- I Transform Service Payload och Assemble Service Data, normalisera och kombinera servicefält för AI och routningslogik nedströms.
- Koppla Assemble Service Data till Reset Session Cache och därefter till Remove Route Cache för att rensa inaktuella routedata.
Steg 4: konfigurera AI-samordningsagenten och minne
AI-pipelinen orkestrerar routningsuppslagning, minneshämtning och uppdatering av sessionscache. Alla AI-verktyg och minnesnoder är kopplade till den överordnade agenten.
- Öppna AI Coordination Agent och koppla xAI Grok Chat Model som språkmodell.
- Koppla Postgres Conversation Memory som minnesmodul för bestående chattkontext.
- Koppla verktyg: Retrieve User Memory, Store User Memory, Create Route Cache, Refresh Session Cache och Lookup Route Distance till AI Coordination Agent.
- Bekräfta att Remove Route Cache matar in i AI Coordination Agent för att återställa kontext mellan serviceförfrågningar.
Steg 5: konfigurera logik för route-cache och parallell förgrening
Route-cachen styr om systemet använder cachad routedata eller genererar ny data, och förgrenar sedan till lokalisering av svar samt ett sekundärt sub-workflow.
- Säkerställ att AI Coordination Agent skickar utdata till Read Route Cache, och därefter till Route Cache Check för cacheutvärdering.
- Koppla Route Cache Check till Transform Route Payload vid cachemiss, och till Set Final Output vid cacheträff.
- I Transform Route Payload, bygg payloaden som ska användas för lokalisering av svar och det sekundära sub-workflowet.
- Transform Route Payload skickar utdata parallellt till både Run Sub-Workflow (Configure Required) 2 och Route Language Switch.
Steg 6: konfigurera språkroutning och sub-workflows
Språkspecifika svar genereras och routas till ett separat sub-workflow för slutlig leverans eller formatering.
- Konfigurera Route Language Switch för att förgrena till Chinese Response, Japanese Response och English Response.
- Säkerställ att varje responsnod (Chinese Response, Japanese Response, English Response) kopplas till Run Sub-Workflow (Configure Required).
- Koppla Compose Error Reply och Compose Inactive Response till Run Sub-Workflow (Configure Required) för enhetlig hantering av utdata.
- Konfigurera Run Sub-Workflow (Configure Required) och Run Sub-Workflow (Configure Required) 2 så att de pekar på rätt child-workflows.
Steg 7: testa och aktivera ert workflow
Validera varje väg—cacheträff, cachemiss, inaktiv status och flerspråkigt svar—innan ni aktiverar workflowet.
- Använd Chat Webhook Trigger för att köra ett manuellt test och bekräfta att data flödar genom Prepare Test Fields och Assign Input Fields.
- Verifiera att Service Cache Check och Route Cache Check routar korrekt baserat på cachestatus.
- Bekräfta att AI Coordination Agent returnerar utdata och att minnesverktygen anropas utan fel.
- Säkerställ att leverans sker via Run Sub-Workflow (Configure Required) och Run Sub-Workflow (Configure Required) 2.
- När testerna är godkända, växla workflowet till Active för produktionsanvändning.
Vanliga fallgropar
- Behörigheter för Telegram-boten kan blockera svar i grupper eller kanaler. Om meddelanden kommer fram men du inte kan svara, kontrollera botinställningar och chattbehörigheter först.
- Om du använder Wait-noder eller extern bearbetning (som leverantörers sub-workflows) varierar tidsättning. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Google Maps API-anrop misslyckas tyst när fakturering inte är aktiverad eller när Routes API inte är tillåtet. Kontrollera dina API-restriktioner och kvoter i Google Cloud innan du felsöker n8n.
Vanliga frågor
Räkna med cirka 1–2 timmar om din databas och dina API-nycklar är klara.
Nej, men du behöver vara bekväm med att redigera prompts och mappa fält mellan noder. Om du vill ändra Code-noderna är den delen mer teknisk.
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 volymer. Du behöver också räkna in användning av Google Maps API och kostnader för din AI-modell.
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 klarar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serveradministration.
Ja. Den här mallen förutsätter redan en ”service”-post i Postgres (tabellen sys_service som standard), så du kan lägga till rader per stad, fordonsklass eller prispolicy. Vanligtvis justerar du logiken för serviceuppslagning, uppdaterar AI-agentens prompt som skapar ruttdata och finjusterar leverantörens sub-workflow som beräknar slutpriset. Flerspråkighet är redan förberett med en språkväxel och separata svars-noder.
Oftast beror det på att boten inte får läsa meddelanden i den chatten, eller att webhook-/triggerkonfigurationen i Telegram är fel. Dubbelkolla bottoken i n8n-credentials och bekräfta sedan att chatten du testar i faktiskt tillåter boten att ta emot och skicka meddelanden. Om det fungerar i privat chatt men inte i grupper är behörigheter boven i de flesta fall.
Om du kör egen hosting i köläge (som den här mallen är byggd för) kan den hantera mycket, så länge din server och dina API:er hänger med. På n8n Cloud baseras gränsen på månatliga körningar, så dispatchteam med hög volym går vanligtvis upp en nivå. I praktiken är Google Maps-anropet den största flaskhalsen, så håll koll på kvoter och rate limits när volymerna växer.
För det här use caset, ja, eftersom du kombinerar chattminne, cachning med Redis, förgrenad logik och sub-workflows för leverantörer på ett ställe. Zapier och Make kan lösa delar av det, men så fort du behöver ”fortsätt fråga tills ruttdata är komplett” plus databasstyrda regler blir det klumpigt och dyrt. n8n ger dig också möjligheten till egen hosting, vilket spelar roll om du förväntar dig många meddelanden. Om du däremot bara vill ha en tvåstegsbot ”meddelande in, meddelande ut” kan enklare verktyg räcka. Prata med en automationsexpert om du vill ha en snabb rekommendation.
Sätt upp det här en gång, så slutar prisofferter att vara ett störningsmoment. Ditt team svarar snabbare, kunderna får tydligare besked och leverantörerna får felfria överlämningar som de faktiskt kan agera på.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.