Din kalenderadministration fallerar inte för att du är oorganiserad. Den fallerar för att förfrågningar kommer in på den stökigaste platsen som finns: chatten. Ett “kan du flytta samtalet?” försvinner under fem andra meddelanden, och plötsligt är du dubbelbokad.
Den här WhatsApp-kalenderautomationen träffar grundare först, om vi ska vara ärliga. Men byråledare som jonglerar kundsamtal och ops managers som koordinerar interna möten känner av den också. Resultatet är enkelt: du meddelar din assistent en gång, och din kalender uppdateras utan fram och tillbaka.
Nedan ser du hur arbetsflödet beter sig i praktiken, vad du behöver för att köra det och hur det förvandlar chatt till strukturerade Google Calendar-åtgärder (med minne så att den inte “glömmer” vad du menade).
Varför det här spelar roll: kalenderförfrågningar försvinner i chatten
Kalenderadministration är bedrägligt dyrt eftersom det inte är en stor uppgift. Det är dussintals små avbrott. Du är halvvägs in i en offert, någon pingar “boka en avstämning nästa vecka”, du byter kontext, öppnar Google Calendar, ställer följdfrågor och glömmer sedan att skicka bekräftelsen. Senare ändrar någon tiden och nu letar du efter originaldetaljerna. Även när du gör allt “rätt” saknar chatten struktur, så misstag smyger sig in: fel tidszon, saknad mötestitel, ingen plats, eller så skickas aldrig inbjudan.
Det bygger upp snabbt. Här är var det oftast fallerar.
- Du läser en bokningsförfrågan i WhatsApp och tänker göra det senare, vilket är exakt så den försvinner.
- Följdfrågor (“Vilken dag?” “Vad är agendan?”) skapar en minitråd som är svår att återskapa när du väl öppnar kalendern.
- Ombokningar skapar dubbelarbete eftersom du manuellt måste hitta rätt händelse att ändra eller ta bort.
- När någon skickar en skärmdump eller ett foto skriver du om detaljerna för hand och missar oundvikligen något.
Så fungerar den här automationen
Här är hela arbetsflödet du kommer att sätta upp:
n8n Workflow Template: WhatsApp + Google Kalender: admin direkt i chatten
flowchart LR
subgraph sg0["WhatsApp 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/whatsapp.svg' width='40' height='40' /></div><br/>WhatsApp Trigger"]
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Agent1", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>send chat history to MongoDB"]
n3@{ icon: "mdi:cog", form: "rounded", label: "WeatherMap", 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/whatsapp.svg' width='40' height='40' /></div><br/>Download media"]
n5@{ icon: "mdi:robot", form: "rounded", label: "Analyze image", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request5"]
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n8@{ icon: "mdi:wrench", form: "rounded", label: "Think", 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/code.svg' width='40' height='40' /></div><br/>Code1"]
n10@{ icon: "mdi:wrench", form: "rounded", label: "Gmail tool", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Typing...."]
n12@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n13@{ icon: "mdi:wrench", form: "rounded", label: "Calendar Agent", pos: "b", h: 48 }
n14@{ icon: "mdi:location-exit", form: "rounded", label: "Get many events", pos: "b", h: 48 }
n15@{ icon: "mdi:location-exit", form: "rounded", label: "Create an event", pos: "b", h: 48 }
n16@{ icon: "mdi:location-exit", form: "rounded", label: "Update an event", pos: "b", h: 48 }
n17@{ icon: "mdi:location-exit", form: "rounded", label: "Delete an event", pos: "b", h: 48 }
n18@{ icon: "mdi:location-exit", form: "rounded", label: "Get an event", pos: "b", h: 48 }
n19@{ icon: "mdi:cube-outline", form: "rounded", label: "MongoDB Atlas Vector Store2", pos: "b", h: 48 }
n20@{ icon: "mdi:brain", form: "rounded", label: "gemini-2.5-flash", pos: "b", h: 48 }
n21@{ icon: "mdi:brain", form: "rounded", label: "gpt-5-nano", pos: "b", h: 48 }
n22@{ icon: "mdi:message-outline", form: "rounded", label: "Get many messages", pos: "b", h: 48 }
n23@{ icon: "mdi:message-outline", form: "rounded", label: "Get a message", pos: "b", h: 48 }
n24@{ icon: "mdi:wrench", form: "rounded", label: "Task agent", pos: "b", h: 48 }
n25@{ icon: "mdi:cog", form: "rounded", label: "Create a task in Google Tasks", pos: "b", h: 48 }
n26@{ icon: "mdi:cog", form: "rounded", label: "Delete a task in Google Tasks", pos: "b", h: 48 }
n27@{ icon: "mdi:cog", form: "rounded", label: "Get many tasks in Google Tasks", pos: "b", h: 48 }
n28@{ icon: "mdi:web", form: "rounded", label: "image creation", pos: "b", h: 48 }
n29@{ icon: "mdi:cog", form: "rounded", label: "Brave Search", pos: "b", h: 48 }
n30@{ icon: "mdi:cog", form: "rounded", label: "Brave Search1", pos: "b", h: 48 }
n31@{ icon: "mdi:brain", form: "rounded", label: "gpt-4.1-nanoChat Model1", pos: "b", h: 48 }
n32@{ icon: "mdi:wrench", form: "rounded", label: "Research agent", pos: "b", h: 48 }
n33@{ icon: "mdi:web", form: "rounded", label: "perprlexcia", pos: "b", h: 48 }
n34@{ icon: "mdi:wrench", form: "rounded", label: "Wikipedia", pos: "b", h: 48 }
n53@{ icon: "mdi:vector-polygon", form: "rounded", label: "codestral-embed-2505", pos: "b", h: 48 }
n56@{ icon: "mdi:brain", form: "rounded", label: "openai LLM", pos: "b", h: 48 }
n57@{ icon: "mdi:brain", form: "rounded", label: "openai LLM1", pos: "b", h: 48 }
n58@{ icon: "mdi:brain", form: "rounded", label: "openai/gpt-oss-120b", pos: "b", h: 48 }
n59@{ icon: "mdi:web", form: "rounded", label: "Tavily web search", pos: "b", h: 48 }
n60@{ icon: "mdi:brain", form: "rounded", label: "openai/gpt-5-mini", pos: "b", h: 48 }
n61@{ icon: "mdi:brain", form: "rounded", label: "openai/gpt-5-mini1", pos: "b", h: 48 }
n62["<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/whatsapp.svg' width='40' height='40' /></div><br/>Send message"]
n9 --> n1
n8 -.-> n1
n7 --> n4
n7 --> n11
n1 --> n62
n34 -.-> n32
n10 -.-> n1
n24 -.-> n13
n11 --> n9
n3 -.-> n1
n21 -.-> n10
n56 -.-> n1
n57 -.-> n1
n33 -.-> n32
n29 -.-> n32
n18 -.-> n13
n62 --> n2
n5 --> n9
n30 -.-> n32
n23 -.-> n10
n6 --> n5
n12 -.-> n1
n13 -.-> n1
n4 --> n6
n32 -.-> n1
n28 -.-> n1
n15 -.-> n13
n17 -.-> n13
n14 -.-> n13
n16 -.-> n13
n0 --> n7
n20 -.-> n10
n22 -.-> n10
n59 -.-> n32
n60 -.-> n24
n61 -.-> n13
n58 -.-> n32
n53 -.-> n19
n31 -.-> n32
n19 -.-> n1
n25 -.-> n24
n26 -.-> n24
n27 -.-> n24
end
subgraph sg1["Default Data Loader Flow"]
direction LR
n35@{ icon: "mdi:robot", form: "rounded", label: "Default Data Loader", pos: "b", h: 48 }
n36@{ icon: "mdi:robot", form: "rounded", label: "Extract Memory Info", pos: "b", h: 48 }
n37@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check If Worth Remembering", pos: "b", h: 48 }
n38@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n39@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n40["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook2"]
n41["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook3"]
n42@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields5", pos: "b", h: 48 }
n43@{ icon: "mdi:cog", form: "rounded", label: "Convert to File", pos: "b", h: 48 }
n44["<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/>HTTP Request"]
n45["<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/>Clean Prompt Text1"]
n46@{ icon: "mdi:robot", form: "rounded", label: "Summarize Chat", pos: "b", h: 48 }
n47@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model5", pos: "b", h: 48 }
n48["<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/whatsapp.svg' width='40' height='40' /></div><br/>Send message3"]
n49@{ icon: "mdi:cube-outline", form: "rounded", label: "MongoDB Atlas Vector Store", pos: "b", h: 48 }
n50@{ icon: "mdi:cube-outline", form: "rounded", label: "MongoDB Atlas Vector Store1", pos: "b", h: 48 }
n51@{ icon: "mdi:brain", form: "rounded", label: "gpt-4.1-nano", pos: "b", h: 48 }
n52@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n54@{ icon: "mdi:vector-polygon", form: "rounded", label: "codestral-embed-", pos: "b", h: 48 }
n55@{ icon: "mdi:vector-polygon", form: "rounded", label: "codestral-embed-2506", pos: "b", h: 48 }
n52 --> n45
n40 --> n36
n41 --> n52
n38 --> n49
n42 --> n43
n44 --> n42
n51 -.-> n52
n48 --> n46
n46 --> n49
n43 --> n48
n54 -.-> n49
n45 --> n44
n35 -.-> n49
n36 --> n37
n55 -.-> n50
n39 -.-> n36
n47 -.-> n46
n37 --> n38
n50 -.-> n52
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 n1,n5,n35,n36,n46,n52 ai
class n20,n21,n31,n56,n57,n58,n60,n61,n39,n47,n51 aiModel
class n8,n10,n13,n24,n32,n34 ai
class n12 ai
class n19,n49,n50 ai
class n53,n54,n55 ai
class n7,n37 decision
class n2,n6,n11,n28,n33,n59,n40,n41,n44 api
class n9,n45 code
classDef customIcon fill:none,stroke:none
class n0,n2,n4,n6,n9,n11,n62,n40,n41,n44,n45,n48 customIcon
Vad du bygger: en WhatsApp-assistent som uppdaterar Google Calendar
Det här arbetsflödet gör en WhatsApp-chatt till en entré för admin. När ett meddelande kommer in upptäcker automationen vad du skickade (text eller bild), bekräftar med en skriver-indikator och matar sedan in en strukturerad, enhetlig “förfrågan” till en AI-agent. Agenten läser meddelandet som en mänsklig assistent skulle göra, kontrollerar korttidsminnet för aktuell kontext och hämtar långsiktiga preferenser eller tidigare detaljer från ett MongoDB-vektorlager vid behov. Därefter väljer den rätt verktyg: skapa en händelse, hämta kommande händelser, ändra ett befintligt möte eller ta bort ett avbokat. Om du skickar en bild (till exempel en skärmdump med tider eller ett foto av en whiteboard) laddar den först ner och analyserar den, och använder sedan den extraherade informationen för att schemalägga korrekt.
Arbetsflödet startar med inkommande WhatsApp-meddelanden. Det standardiserar sedan inputen (inklusive bildanalys när det är relevant) och skickar förfrågan till en “hjärna”-agent som avgör vad som ska göras i Google Calendar. Till sist skickar det en tydlig bekräftelse tillbaka till WhatsApp och loggar konversationen för minne så att assistenten blir bättre över tid.
Det här bygger du
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du hanterar 6 schemaläggningsändringar per dag (nya bokningar, ombokningar, avbokningar). Manuell hantering innebär oftast att du öppnar Google Calendar, hittar rätt tidslucka, redigerar detaljer och sedan bekräftar tillbaka i WhatsApp, kanske 8 minuter per förfrågan. Det är runt 50 minuter dagligen. Med det här arbetsflödet skickar du ett WhatsApp-meddelande och agenten hanterar kalenderåtgärden; du gör i princip bara en snabb koll på bekräftelsen, vilket är närmare en eller två minuter per förfrågan. Du får tillbaka ungefär 40 minuter de flesta dagar, och “oj, jag glömde”-ögonblicken minskar kraftigt.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
- Åtkomst till WhatsApp Business Platform för att ta emot och skicka meddelanden.
- Google Calendar för att skapa och redigera händelser.
- MongoDB Atlas för att lagra långtidsminne (vektorlager).
- Åtkomst till AI-modell/API (OpenRouter, Groq eller Vercel AI Gateway) för agentens resonemang.
Kunskapsnivå: Medel. Du kommer att koppla in autentiseringar, sätta upp webhooks och testa några riktiga WhatsApp-meddelanden hela vägen end-to-end.
Vill du att någon bygger det här åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett WhatsApp-meddelande sätter igång allt. Arbetsflödet triggar på inkommande meddelanden och routar dem direkt efter typ (ren text vs. bild) så att det kan hantera varje typ korrekt.
Bilder tolkas innan agenten “tänker”. Om du skickade en skärmdump laddar arbetsflödet ner mediet, kör bildanalys via en multimodal modell och slår sedan ihop de extraherade detaljerna till samma format som en vanlig textförfrågan.
AI-agenten avgör vilken åtgärd som ska utföras. Orkestratorn använder korttidsminne för den aktuella konversationen och hämtar långtidskontext från MongoDB när det är användbart, och väljer sedan rätt verktyg (Google Calendar skapa/ändra/ta bort/hämta). Den kan även routa research eller andra verktyg, men kalenderflödet är där de flesta team känner tidsvinsten först.
Du får en bekräftelse tillbaka i WhatsApp. Efter att kalenderåtgärden körts svarar arbetsflödet med vad det gjorde (eller ställer en förtydligande fråga) och loggar konversationen så att assistenten kan minnas nästa gång.
Du kan enkelt justera kalenderbeteendet efter dina namngivningskonventioner, tidszonsregler eller policies som “fråga alltid innan schemaläggning”. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera WhatsApp-triggern
Sätt upp triggern för inkommande meddelanden så att ert arbetsflöde startar på WhatsApp-meddelanden och routar till rätt innehållsväg.
- Lägg till och konfigurera WhatsApp Incoming Trigger med uppdateringstypen messages.
- Credential Required: Anslut era whatsAppTriggerApi-inloggningsuppgifter i WhatsApp Incoming Trigger.
- Bekräfta att WhatsApp Incoming Trigger är ansluten till Route by Content som visas i flödet.
Steg 2: routa text- kontra bildmeddelanden
Separera bildmeddelanden från textchatt och starta rätt nedströmsflöde.
- I Route by Content, behåll bildvillkoret med
={{ $json.messages[0].image }}och chattvillkoret med={{ $json.messages[0].text?.body || '' }}. - Säkerställ att bildgrenen går till Fetch Media Content och chattgrenen går till Send Typing Indicator.
- Credential Required: Anslut era whatsAppApi-inloggningsuppgifter i Fetch Media Content.
- Credential Required: Anslut era whatsAppApi-inloggningsuppgifter i Send Typing Indicator.
- I Send Typing Indicator, behåll URL inställd på
=https://graph.facebook.com/v22.0/{{ $json.metadata.phone_number_id }}/messagesoch JSON Body som matchar payloaden för skrivindikatorn.
Steg 3: bygg ihop indata och kör den primära AI-orkestreraren
Normalisera det inkommande meddelandet och kör AI-agenten med minne, verktyg och modeller.
- I Assemble Input Payload, behåll JavaScript-logiken som väljer utdata från bildanalys eller text, och kastar ett fel om ingen indata finns.
- Bekräfta att Assemble Input Payload skickar vidare till Primary AI Orchestrator.
- I Primary AI Orchestrator, behåll Text-prompten med uttrycken
{{ $now }}och{{ $json.input }}. - Koppla på minne genom att låta Session Memory Buffer vara ansluten som ai_memory till Primary AI Orchestrator.
- Säkerställ att AI-modellerna som är länkade till Primary AI Orchestrator inkluderar OpenAI Gateway Model och Groq Gateway Model. Credential Required: Anslut era vercelAiGatewayApi-inloggningsuppgifter i OpenAI Gateway Model och era groqApi-inloggningsuppgifter i Groq Gateway Model.
- Se till att verktygsnoderna är kopplade som ai_tool: Weather Forecast Tool, Gmail Utility Agent, Calendar Assistant Agent, Research Assistant Agent, MongoDB Vector Tool A och Image Generation Hook.
Steg 4: konfigurera flödet för mediaanalys (bilder)
När en bild kommer in, hämta den, analysera den och mata in resultatet i AI-prompten.
- I Fetch Media Content, behåll Resource inställd på
media, Operation inställd påmediaUrlGetoch Media Get ID inställd på={{ $json.messages[0].image.id }}. - I Media Fetch Request, ställ in URL till
={{ $json.url }}och Authentication tillpredefinedCredentialTypemed Node Credential TypewhatsAppApi. - Credential Required: Anslut era whatsAppApi- och httpBearerAuth-inloggningsuppgifter i Media Fetch Request.
- I Inspect Image, behåll Resource inställd på
image, Input Typebinaryoch Operationanalyze. Credential Required: Anslut era googlePalmApi-inloggningsuppgifter. - Säkerställ att Inspect Image skickar vidare till Assemble Input Payload.
Steg 5: koppla verktyg för kalender, uppgifter och Gmail
Gör det möjligt för AI-assistenten att skapa, hämta och hantera kalenderhändelser, uppgifter och e-postsammanfattningar.
- Behåll Calendar Assistant Agent ansluten som ett verktyg till Primary AI Orchestrator, med dess prompt som använder
{{ $now }}. - Anslut Google Calendar-inloggningsuppgifter i kalenderverktygsnoderna (5 totalt): Retrieve Calendar Events, Create Calendar Entry, Modify Calendar Entry, Remove Calendar Entry och Fetch Calendar Entry. Credential Required: Anslut era googleCalendarOAuth2Api-inloggningsuppgifter i varje nod.
- Ställ in fälten i Create Calendar Entry till
={{ $fromAI('Start', ``, 'string') }}och={{ $fromAI('End', ``, 'string') }}, med sammanfattning={{ $fromAI('Summary', ``, 'string') }}. - För uppgifter, behåll Task Manager Agent ansluten och säkerställ att Add Task Item, Remove Task Item och Retrieve Task Items har task inställd på
[YOUR_ID]. Credential Required: Anslut era googleTasksOAuth2Api-inloggningsuppgifter på dessa tre noder. - För Gmail, behåll Gmail Utility Agent ansluten till Primary AI Orchestrator, och säkerställ att Retrieve Email List och Fetch Email Message använder gmailOAuth2-inloggningsuppgifter.
[YOUR_EMAIL] och [YOUR_ID] i kalender- och uppgiftsnoderna innan ni testar.Steg 6: konfigurera verktyg för research och webbsök
Låt assistenten besvara aktuella frågor med sökningar via Wikipedia, Brave och Tavily.
- Behåll Research Assistant Agent ansluten som ett ai_tool till Primary AI Orchestrator.
- Credential Required: Anslut era braveSearchApi-inloggningsuppgifter i Brave Web Search och Brave News Search.
- I Perplexcia Query Tool, behåll URL inställd på
http://selfhosted perplexicia link/api/searchoch headern Content-Type inställd påapplication/json. - I Tavily Search Tool, uppdatera headern Authorization genom att ersätta
Bearer [CONFIGURE_YOUR_API_KEY]med er riktiga Tavily API-nyckel. - Behåll Wikipedia Lookup ansluten till Research Assistant Agent för snabb faktakoll.
Steg 7: konfigurera pipeline för bildgenerering
Generera bilder baserat på användarens promptar och returnera dem via WhatsApp.
- Verifiera webhook-ingången Image Webhook med Path inställd på
92db4287-145c-4ae7-9931-ab57b4ecbe67och ansluten till Image Prompt Agent. - Säkerställ att Image Prompt Agent använder
{{ $json.body['user message:'] }}och är ansluten till Clean Prompt Text. Språkmodellen Vercel Nano Model måste vara ansluten som ai_languageModel. Credential Required: Anslut era vercelAiGatewayApi-inloggningsuppgifter i Vercel Nano Model. - I Clean Prompt Text, behåll JavaScript-koden som tar bort citationstecken och normaliserar blanksteg, och som output:ar
cleanedPrompt. - I Image API Request, behåll URL
https://api.together.xyz/v1/images/generationsoch JSON Body med{{ $json.cleanedPrompt }},"model": "black-forest-labs/FLUX.1-schnell", och bredd/höjd inställda till1024gånger768. Credential Required: Anslut era httpHeaderAuth-inloggningsuppgifter. - I Map Image Fields, behåll base64 inställd på
={{ $json.data[0].b64_json }}, och skicka sedan vidare till Convert Image File med OperationtoBinaryoch Source Propertybase64. - Skicka den binära bilden via Send Image Reply. Credential Required: Anslut era whatsAppApi-inloggningsuppgifter.
Steg 8: konfigurera minnesinfångning och vektorlagring
Extrahera, validera och lagra samtalsminne för framtida kontext.
- Behåll Memory Webhook med Path
a0299e2f-a81b-48e0-a912-d9749ecf1820ansluten till Extract Memory Details. - I Extract Memory Details, behåll prompten och säkerställ att språkmodellen Gemini Chat Model är ansluten. Credential Required: Anslut era googlePalmApi-inloggningsuppgifter i Gemini Chat Model.
- I Validate Memory Worth, behåll villkoret
={{ $json.text.toLowerCase() }}som inte är lika mednothing. - I Map Memory Fields, ställ in timestamp till
={{ $now }}, userID till[YOUR_ID], info till={{ $json.text }}, och mappa webhook-fälten för user_message och assistant_response. - Skicka validerat minne till MongoDB Vector Insert med metadata_field inställd på
=info. Credential Required: Anslut era mongoDb-inloggningsuppgifter.
Steg 9: konfigurera svar och loggning
Skicka WhatsApp-svar och logga konversationen till er databas-endpoint.
- Säkerställ att Primary AI Orchestrator ansluter till Send WhatsApp Reply och sedan till Log Chat to Database.
- Credential Required: Anslut era whatsAppApi-inloggningsuppgifter i Send WhatsApp Reply.
- I Log Chat to Database, behåll URL inställd på
https://n8n.iniyavan.space/webhook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxoch body-parametrarna som använder={{ $('WhatsApp Incoming Trigger').item.json.messages[0].text.body }}och={{ $('Primary AI Orchestrator').item.json.output }}.
Steg 10: testa och aktivera ert arbetsflöde
Kör end-to-end-tester för text- och bildmeddelanden och aktivera sedan arbetsflödet för produktion.
- Klicka på Execute Workflow och skicka ett textmeddelande till WhatsApp-numret för att bekräfta att Send Typing Indicator → Assemble Input Payload → Primary AI Orchestrator → Send WhatsApp Reply körs utan problem.
- Skicka ett bildmeddelande för att bekräfta att Fetch Media Content → Media Fetch Request → Inspect Image → Assemble Input Payload fungerar korrekt.
- Verifiera att Log Chat to Database tar emot payloaden för användarmeddelande och assistentsvar.
- Om bildgenerering testas via Image Webhook, bekräfta att Send Image Reply returnerar bilden och att Summarize Conversation skriver till MongoDB Vector Insert.
- När testerna går igenom, växla arbetsflödet till Active för att aktivera produktionsautomation.
Felsökningstips
- Google Calendar OAuth-autentiseringar kan gå ut eller sakna rätt scopes. Om det skapar fel, kontrollera först din OAuth consent screen i Google Cloud och den anslutna autentiseringen i n8n.
- Om du använder webhooks och en externt nåbar n8n kan små nätverksförändringar bryta callbacks. Bekräfta att dina webhook-URL:er fortfarande är publika och att din reverse proxy eller brandvägg inte har börjat blockera förfrågningar.
- Behörigheter i WhatsApp Business Platform är lätta att konfigurera fel. Om triggern tar emot meddelanden men svaren misslyckas, kontrollera dina Meta-appinställningar, godkänt telefonnummer och token-giltighet igen.
Snabba svar
Cirka 60–90 minuter när dina WhatsApp- och Google-uppgifter är klara.
Nej. Du kopplar mest konton och klistrar in några API-nycklar. Det är en del konfigurationsarbete (webhooks, autentiseringar, testning), men du bygger ingen app.
Ja. n8n har ett gratis självhostat alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader för AI-modell/API (ofta några dollar i månaden vid lätt användning) och MongoDB Atlas om du går bortom gratisnivån.
Två alternativ: n8n Cloud (hanterat, enklast setup) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och hanterar n8n bra. Självhosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Du kan byta Google Calendar-verktygen till “endast läsning” genom att ta bort verktygen för att skapa/ändra/ta bort kalenderpost, eller tvinga fram godkännanden genom att låta agenten föreslå en åtgärd och bara exekvera den efter att du svarar “bekräfta”. Vanliga anpassningar är att lägga till standardlängd på möten, tvinga arbetstider och spara kundpreferenser (som “lägg alltid till Zoom”) i MongoDB-minnesspåret.
Oftast beror det på en utgången eller ogiltig Meta-token, eller att WhatsApp Business-appen inte har rätt behörigheter för telefonnumret du använder. Dubbelkolla dina Meta developer-inställningar och bekräfta sedan att samma autentisering är vald på både triggern och noderna som skickar meddelanden. Om inkommande meddelanden kommer fram men utgående svar misslyckas är det nästan alltid auth eller telefonnummerkonfiguration.
På en typisk n8n Cloud-plan kan du hantera tusentals körningar per månad; vid självhosting finns ingen fast körningsgräns, det beror mest på din server och hur tunga dina AI-anrop är. I praktiken kan de flesta små team köra detta hela dagen utan problem så länge ni undviker enorma batchjobb genom samma agent. Om du förväntar dig toppar (som en supportlinje) spelar rate limits från WhatsApp och din AI-leverantör större roll än n8n i sig.
För det här arbetsflödet: ja, oftast. Du flyttar inte bara fält från A till B; du routar mellan verktyg, hanterar bilder och använder minne så att assistenten håller sig konsekvent mellan konversationer. n8n låter dig också självhosta, vilket gör körkostnaderna förutsägbara när volymen växer. Zapier eller Make kan vara enklare för grundläggande “nytt meddelande → skapa händelse”-flöden, men de blir klumpiga när du lägger till förgreningar, webhooks och långtidskontext. Prata med en automationsexpert om du vill ha hjälp att välja.
Det är så här “admin hanterad i chatten” ska kännas. Sätt upp det en gång, låt arbetsflödet ta avbrotten och håll kalendern korrekt utan att behöva passa den.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.