Hébergement VPS n8n | Automatisation sécurisée et évolutive
Formation n8n en Français : Automatisation & Agents IA
<aside> 🎯
Goal of this course. Rebuild this workflow manually, node by node, live on camera. Every value, prompt, expression and JSON schema below is copy-paste ready, so you never have to open the finished workflow while filming.
</aside>
An AI customer-support agent on WhatsApp that reads your own website live to answer. No document upload, no vector store, no fine-tuning. When a page of your site changes, the answer changes with it.
Three things make this version different from a classic "website chatbot":
answer, needs_human, sentiment, topic and sources.flowchart TD
A["Receive WhatsApp message"] --> B["Configuration"]
B --> C{"Is a text question?"}
C -->|"false"| D["Ignore non-text updates"]
C -->|"true"| E["Website Support Agent"]
E --> F{"Needs a human?"}
F -->|"true"| G["Alert the support team by email"]
F -->|"false"| H["Send the answer on WhatsApp"]
G --> H
H --> I["Log the conversation in Google Sheets"]
J["OpenAI Chat Model"] -.-> E
K["Conversation Memory"] -.-> E
L["list_links"] -.-> E
M["get_page"] -.-> E
N["Answer Parser"] -.-> E
O["Output Fixer Model"] -.-> N
| Credential | Type | Where to get it |
|---|---|---|
| WhatsApp OAuth account | whatsAppTriggerApi | Meta for Developers → your app → App settings → Basic. Copy App ID and App Secret. ⚠️ There is no verify token field: n8n verifies Meta's challenge automatically on activation. |
| WhatsApp account | whatsAppApi | Meta for Developers → WhatsApp → API Setup. Copy the permanent access token and note the Phone Number ID. |
| OpenAi account | openAiApi | platform.openai.com → API keys → Create new secret key. |
| Gmail account | gmailOAuth2 | Google Cloud Console → OAuth client. Or use the n8n OAuth flow directly. |
| Google Sheets account | googleSheetsOAuth2Api | Same Google Cloud project, Sheets API enabled. |
<aside> ⚠️
The two crawler tools (list_links, get_page) need no credential at all. They read public pages of your website with a plain GET request.
</aside>