وكيل ذكي لحجز المواعيد على واتساب
يحجز العملاء مواعيدهم على واتساب بلهجتهم — والوكيل يراجع تقويمك ويحجز الموعد ويبلغ فريقك.
كيف تعمل
- يطلب العميل الحجز على واتساب.
- يراجع الوكيل تقويمك ويعرض 2–3 مواعيد متاحة ضمن ساعات العمل.
- يكرر اليوم والوقت والخدمة، ثم يحجز الموعد.
- ينبّه فريقك على تيليجرام بالحجز الجديد.
ماذا يستطيع أن يفعل
على عكس الأتمتة الثابتة، يقرر الوكيل أي أدواته يستخدم وبأي ترتيب — ويتذكر المحادثة.
- يحجز بالمصرية أو الخليجية أو الفصحى — أو الإنجليزية
- يعرض فقط مواعيد متاحة فعلًا من تقويمك
- يجيب عن أسئلة الخدمات والأسعار
- يحفظ رقم العميل في الحجز، لتعمل أتمتة تذكير واتساب تلقائيًا
- يحوّل الإلغاء وتغيير المواعيد إلى فريقك
التعليمات (System prompt)
التعليمات التي تشكّل سلوك الوكيل. موجودة بالفعل داخل قالب n8n — انسخها إلى Make أو Zapier، وعدّل أجزاء YOUR_….
You are the WhatsApp booking assistant for YOUR_BUSINESS (a clinic, salon or studio).
Today is {{ $now.toFormat('cccc d LLLL yyyy, HH:mm') }}. Our timezone is YOUR_TIMEZONE. Opening hours: YOUR_OPENING_HOURS. Each appointment is YOUR_DURATION minutes. Services and prices: YOUR_SERVICES.
Reply in the customer's language and dialect (Egyptian Arabic, Gulf Arabic, Modern Standard Arabic or English). Be warm and brief.
Tools:
- "Check free slots": lists booked appointments in a time range. Use it to find free slots within opening hours, then offer 2–3 options.
- "Book appointment": books a confirmed slot. Use it only after the customer picks a time and gives their name and the service.
- "Notify team": alerts our team about every new booking, cancellation request, or question you can't answer.
Rules:
- Never invent services, prices or free slots — always check the calendar first.
- Never give medical, legal or other professional advice; offer to book an appointment instead.
- Repeat the day, time and service back to the customer before booking.
- For cancellations or changes, use "Notify team" and tell the customer the team will confirm.قواعد الأمان
مدمجة في التعليمات والأدوات:
- لا يخترع خدمات أو أسعارًا أو مواعيد متاحة أبدًا
- لا يقدم نصائح طبية أو مهنية أبدًا
- يؤكد اليوم والوقت والخدمة قبل الحجز
يستخدم مفتاح الذكاء الاصطناعي الخاص بك (Claude أو OpenAI أو غيرهما). التكلفة تعتمد على النموذج وطول المحادثة — والنموذج الصغير السريع يجعل معظم المحادثات بجزء من السنت.
المخطط
الكود
كود JavaScript المستخدم في خطوات Code، وهو مضمَّن بالفعل في القالب بالأسفل.
// Keeps only text messages and pulls out who sent it and what they asked.
const msg = $input.first().json.messages?.[0];
if (!msg || msg.type !== "text") return [];
return [{ json: { from: msg.from, question: msg.text.body } }];ابنِها بأداتك
اختر أداتك — نفس الأتمتة، خطوة بخطوة.
انسخه والصقه مباشرة في مساحة عمل n8n (Ctrl+V)، أو حمّله واستخدم Import from File. بعد ذلك اربط حساباتك واستبدل كل قيمة تبدأ بـ YOUR_. خطوات الذكاء الاصطناعي تستخدم نموذج Claude، ويمكنك استبداله بـ OpenAI أو Gemini أو Ollama.
عرض الكود (284 سطر)
{
"name": "وكيل ذكي لحجز المواعيد على واتساب (Flowngn)",
"nodes": [
{
"parameters": {
"content": "## وكيل ذكي لحجز المواعيد على واتساب\nيحجز العملاء مواعيدهم على واتساب بلهجتهم — والوكيل يراجع تقويمك ويحجز الموعد ويبلغ فريقك.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
"height": 260,
"width": 340
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Setup notes",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-420,
-60
]
},
{
"parameters": {
"updates": [
"messages"
]
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Incoming message",
"type": "n8n-nodes-base.whatsAppTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"webhookId": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1"
},
{
"parameters": {
"jsCode": "// Keeps only text messages and pulls out who sent it and what they asked.\nconst msg = $input.first().json.messages?.[0];\nif (!msg || msg.type !== \"text\") return [];\n\nreturn [{ json: { from: msg.from, question: msg.text.body } }];"
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Get question",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
300,
0
]
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.question }}",
"options": {
"systemMessage": "=You are the WhatsApp booking assistant for YOUR_BUSINESS (a clinic, salon or studio).\n\nToday is {{ $now.toFormat('cccc d LLLL yyyy, HH:mm') }}. Our timezone is YOUR_TIMEZONE. Opening hours: YOUR_OPENING_HOURS. Each appointment is YOUR_DURATION minutes. Services and prices: YOUR_SERVICES.\n\nReply in the customer's language and dialect (Egyptian Arabic, Gulf Arabic, Modern Standard Arabic or English). Be warm and brief.\n\nTools:\n- \"Check free slots\": lists booked appointments in a time range. Use it to find free slots within opening hours, then offer 2–3 options.\n- \"Book appointment\": books a confirmed slot. Use it only after the customer picks a time and gives their name and the service.\n- \"Notify team\": alerts our team about every new booking, cancellation request, or question you can't answer.\n\nRules:\n- Never invent services, prices or free slots — always check the calendar first.\n- Never give medical, legal or other professional advice; offer to book an appointment instead.\n- Repeat the day, time and service back to the customer before booking.\n- For cancellations or changes, use \"Notify team\" and tell the customer the team will confirm."
}
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Booking agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.9,
"position": [
600,
0
]
},
{
"parameters": {
"model": {
"__rl": true,
"value": "claude-sonnet-5",
"mode": "list"
},
"options": {}
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Claude model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"typeVersion": 1.3,
"position": [
260,
220
]
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('Get question').item.json.from }}",
"contextWindowLength": 10
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
430,
220
]
},
{
"parameters": {
"descriptionType": "manual",
"toolDescription": "Lists booked appointments between two dates, so you can find free slots within opening hours.",
"operation": "getAll",
"calendar": {
"__rl": true,
"value": "primary",
"mode": "id"
},
"returnAll": true,
"timeMin": "={{ $fromAI('start', \"Start of the time range, ISO 8601\", 'string') }}",
"timeMax": "={{ $fromAI('end', \"End of the time range, ISO 8601\", 'string') }}",
"options": {
"singleEvents": true,
"orderBy": "startTime"
}
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Check free slots",
"type": "n8n-nodes-base.googleCalendarTool",
"typeVersion": 1.3,
"position": [
600,
220
]
},
{
"parameters": {
"descriptionType": "manual",
"toolDescription": "Books a confirmed appointment in the calendar.",
"calendar": {
"__rl": true,
"value": "primary",
"mode": "id"
},
"start": "={{ $fromAI('start', \"Appointment start, ISO 8601 with timezone\", 'string') }}",
"end": "={{ $fromAI('end', \"Appointment end, ISO 8601 with timezone\", 'string') }}",
"additionalFields": {
"summary": "={{ $fromAI('title', \"Customer name - service, e.g. Sara - Haircut\", 'string') }}",
"description": "=Phone: +{{ $('Get question').item.json.from }}\nBooked via WhatsApp agent"
}
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Book appointment",
"type": "n8n-nodes-base.googleCalendarTool",
"typeVersion": 1.3,
"position": [
770,
220
]
},
{
"parameters": {
"descriptionType": "manual",
"toolDescription": "Sends a message to our team's Telegram group: new bookings, cancellation requests, or questions you can't answer.",
"chatId": "YOUR_TEAM_CHAT_ID",
"text": "={{ $fromAI('message', \"What the team needs to know, including the customer's phone\", 'string') }}",
"additionalFields": {
"appendAttribution": false
}
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Notify team",
"type": "n8n-nodes-base.telegramTool",
"typeVersion": 1.2,
"position": [
940,
220
]
},
{
"parameters": {
"operation": "send",
"phoneNumberId": "YOUR_PHONE_NUMBER_ID",
"recipientPhoneNumber": "={{ $('Get question').item.json.from }}",
"textBody": "={{ $json.output }}"
},
"id": "3f36c28d-dcaa-4fe7-afb0-dde2cffcb7d1",
"name": "Reply on WhatsApp",
"type": "n8n-nodes-base.whatsApp",
"typeVersion": 1,
"position": [
900,
0
]
}
],
"connections": {
"Incoming message": {
"main": [
[
{
"node": "Get question",
"type": "main",
"index": 0
}
]
]
},
"Get question": {
"main": [
[
{
"node": "Booking agent",
"type": "main",
"index": 0
}
]
]
},
"Booking agent": {
"main": [
[
{
"node": "Reply on WhatsApp",
"type": "main",
"index": 0
}
]
]
},
"Claude model": {
"ai_languageModel": [
[
{
"node": "Booking agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Memory": {
"ai_memory": [
[
{
"node": "Booking agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Check free slots": {
"ai_tool": [
[
{
"node": "Booking agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Book appointment": {
"ai_tool": [
[
{
"node": "Booking agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Notify team": {
"ai_tool": [
[
{
"node": "Booking agent",
"type": "ai_tool",
"index": 0
}
]
]
}
},
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": []
}في Make، أنشئ سيناريو جديدًا وأضف هذه الوحدات بالترتيب:
- WhatsApp Business Cloud › Watch Events (messages)
- Tools › Set variable / Iterator + Array aggregator (same logic as the Code step)
- Make AI Agents › Run an agent — give it these tools: “Check free slots” (Google Calendar), “Book appointment” (Google Calendar), “Notify team” (Telegram Bot); paste the system prompt as the agent's instructions
- WhatsApp Business Cloud › Send a Message
- كل تشغيل لوحدة يستهلك عمليات (operations) في Make — والباقة المجانية تتضمن حصة شهرية.
- دوال Make المدمجة (map و sum و formatDate…) تغني عن معظم خطوات Code؛ وللمنطق المعقد استخدم وحدة كود.
- قد تختلف أسماء الوحدات والخطوات قليلًا مع تحديث Make و Zapier لتطبيقاتهما.
في Zapier، أنشئ Zap جديدًا وأضف هذه الخطوات بالترتيب:
- WhatsApp — New Message
- Code by Zapier — Run JavaScript (paste the code from the Code section)
- Zapier Agents — create an agent (or AI by Zapier for a single step) — give it these tools: “Check free slots” (Google Calendar), “Book appointment” (Google Calendar), “Notify team” (Telegram); paste the system prompt as the agent's instructions
- WhatsApp — Send Message
- الـ Zaps التي فيها أكثر من خطوتين تحتاج باقة Zapier مدفوعة.
- الـ Webhooks والفلاتر/المسارات و Code by Zapier ميزات مدفوعة في بعض باقات Zapier.
- Code by Zapier يشغّل JavaScript: أعد استخدام الكود بالأعلى، مع قراءة المدخلات من inputData بدلًا من $json.
- قد تختلف أسماء الوحدات والخطوات قليلًا مع تحديث Make و Zapier لتطبيقاتهما.
نصائح
- استخدمه مع أتمتة "تذكير واتساب بمواعيد الغد" لتقليل الغياب.
أتمتات مشابهة
وكيل ذكي للعقارات على واتساب
يفهم ما يريده العميل، ويقترح وحدات مناسبة، ويحجز المعاينات — بالعربية أو الإنجليزية.
وكيل ذكي لمركز صيانة السيارات على واتساب
يسأل العملاء "عربيتي خلصت؟"، ويعرفون نطاقات الأسعار ويحجزون مواعيد الصيانة على واتساب.
وكيل مبيعات ذكي على واتساب (بالعربية)
يبيع على واتساب بلهجة العميل: يراجع منتجاتك، ويجيب الأسئلة، ويأخذ طلبات الدفع عند الاستلام.