Assistant virtuel pour la Résidence Moeris, migré de n8n vers Next.js + Vercel.
┌─────────────────────┐ ┌──────────────────────┐
│ Vercel (Next.js) │ HTTP │ VPS / Railway │
│ │ ──────► │ OpenWA Easy API │
│ • Widget chat │ │ (WhatsApp Web) │
│ • /api/chat │ └──────────────────────┘
│ • Gemini AI │
│ • Google Sheets │
│ • Resend Email │
└─────────────────────┘
| Composant | Technologie |
|---|---|
| Frontend | Next.js 15 + React |
| IA | Google Gemini via Vercel AI SDK |
| Mémoire | Upstash Redis |
| OpenWA (service séparé) | |
| Logs | Google Sheets API |
| Emails | Resend |
| Base de connaissances | data/moeris-knowledge.md |
Le chatbot propose un formulaire guidé pour simplifier les demandes de réservation :
| Étape | Widget interactif |
|---|---|
| Dates d'arrivée / départ | Calendrier visuel |
| Nombre de voyageurs | Compteur +/- (adultes & enfants) |
| Type de chambre | Cartes sélectionnables avec tarifs |
| Nom du client | Champ texte |
| Canal de contact | Boutons Email / WhatsApp |
| Coordonnées | Email ou téléphone (+228) |
| Demandes spéciales | Puces rapides + zone libre |
| Validation | Récapitulatif avant envoi |
npm install
cp .env.example .env.local
# Remplissez GOOGLE_GENERATIVE_AI_API_KEY au minimum
npm run devOuvrez http://localhost:3000.
cd services/openwa
npm install
# Voir services/openwa/README.mdCopiez .env.example vers .env.local et configurez :
| Variable | Obligatoire | Description |
|---|---|---|
GOOGLE_GENERATIVE_AI_API_KEY |
✅ | Clé API Gemini |
GEMINI_MODEL |
Optionnel | Modèle Gemini (défaut : gemini-2.5-flash-lite) |
UPSTASH_REDIS_REST_URL |
Recommandé | Mémoire des sessions |
UPSTASH_REDIS_REST_TOKEN |
Recommandé | Token Upstash |
OPENWA_API_URL |
Pour WhatsApp | URL du service OpenWA |
OPENWA_API_KEY |
Pour WhatsApp | Clé API OpenWA |
GOOGLE_SERVICE_ACCOUNT_* |
Pour Sheets | Compte de service Google |
RESEND_API_KEY |
Pour emails | Clé API Resend |
- Poussez le repo sur GitHub
- Importez sur vercel.com
- Ajoutez les variables d'environnement
- Déployez
npx vercelOpenWA ne tourne pas sur Vercel. Hébergez-le sur un VPS ou Railway, puis renseignez OPENWA_API_URL dans Vercel.
Remplacez le contenu de data/moeris-knowledge.md par l'export de votre Google Doc.
Les fichiers HTML/JS d'origine sont dans legacy/. Le workflow n8n est conservé dans Moeris.json.
Accepte multipart/form-data :
| Champ | Type | Description |
|---|---|---|
type |
text | audio |
Type de message |
chatInput |
string | Message texte |
file |
File | Fichier audio (si type=audio) |
sessionId |
string | ID de session UUID |
reservationData |
JSON | Données structurées du formulaire interactif |
Réponse :
[{ "responseText": "Bonjour et bienvenue..." }]