# روبوت دردشة للحجز عبر الإنترنت

## معلومات عامة

روبوت محادثة للحجز عبر الإنترنت هو مجموعة من وظائف مُنشئ القمع التي تتيح لك أتمتة عملية جدولة الخدمات لشركتك.

يعتمد سير عمل الروبوت على التنفيذ المتسلسل للوظائف: استلام البيانات لعرضها على العميل، ثم تمرير هذه البيانات إلى وظائف جديدة للحصول على نتائج جديدة.

أثناء تنقل العميل عبر القمع، يجب أن تمرر إلى كل كتلة لاحقة فقط البيانات التي تتوافق مع اختيار العميل — استخدم هذه البيانات لتكوين استدعاءات الوظائف التالية.

بفضل القدرة على استرجاع البيانات الوسيطة (على سبيل المثال، مناصب الموظفين وفئات الخدمات) وتمريرها لتصفية الموظفين والخدمات، يمكنك تهيئة قمعك بمرونة ومنح العميل التحكم في خطوات تقدمه.

{% hint style="info" %}
جميع الطرق الموصوفة في هذه المقالة تُرجع مصفوفة من القواميس.

للتعامل معها بسهولة، نوصي بمراجعة الأقسام [المصفوفات](broken://pages/688b628464c66ec7df9005c9e27f089b1024e90b) و [القواميس](broken://pages/a40e454bf5d510a7682460eb01980df416f91bb4).&#x20;

كما أن استخدام الدالة لتوليد إجراءات المستخدم (اختيار الخدمة، التاريخ، الحجز) نوصي بالنظر في [الطريقة tools\_make\_button\_str\_checker](/doc/ar/chatbot/functions/alaalh-alhasbh/arrays.md).&#x20;
{% endhint %}

فيما يلي مخطط لسير عمل الروبوت، حيث تمثل كل كتلة من المخطط استدعاءً محددًا لدالة، وتشير الأسهم إلى تدفق البيانات المنقولة من كتلة إلى أخرى. تتيح لك المعلومات المنقولة في هذه التدفقات تصفية البيانات المطلوبة، وكذلك إنشاء وقت حجز أو إلغاؤه أو تعديله.

<figure><img src="/files/5836da5487081e32de87cf3e2079bdeabd4c662c" alt="" width="563"><figcaption><p>مخطط روبوت المحادثة</p></figcaption></figure>

{% hint style="info" %}
لرؤية مخطط إعداد تفصيلي لروبوت محادثة الحجز عبر الإنترنت مع الدوال المستخدمة، ارجع إلى قسم [مثال على تنفيذ الروبوت](#example-of-bot-implementation) في هذه المقالة.&#x20;
{% endhint %}

## استرجاع معلومات الفروع

لإنشاء قمع حجز عبر الإنترنت واسترجاع معلومات حول فروع المشروع، استخدم الدالة get\_companies\_for\_booking.

تُرجع الدالة قائمة تحتوي على بيانات كل فرع (قمع) مفعّل فيه خيار «الحجز عبر الإنترنت» في إعداداته.

تُقدَّم البيانات على شكل أزواج مفتاح-قيمة وتشمل معرف الفرع (id)، والاسم (name)، والعنوان (address).

لا تأخذ الدالة أي معاملات.

### مثال على الاستخدام:

استدعاء الدالة داخل كتلة:

<figure><img src="/files/7e3f990e38bae3ca38b8909c4f9b9ba784988d9f" alt="" width="375"><figcaption></figcaption></figure>

مثال على البيانات المُعادة:

<figure><img src="/files/4923243dc747f013e18067da5dd06cd7964e40e4" alt="" width="375"><figcaption></figcaption></figure>

## استرجاع معلومات حول المناصب أو فئات الخدمات

تتيح لك الدالة get\_categories\_for\_booking(company\_id) استرجاع قائمة بجميع أنواع المتخصصين أو فئات الخدمات لفرع معيّن.

يحتوي كل عنصر في القائمة المُعادة على معرّف (id)، واسم (name)، ووصف (description) للمنصب أو فئة الخدمة. تُعرض البيانات على شكل أزواج «مفتاح-قيمة»:

#### المعاملات:

<table><thead><tr><th width="310">المعامل</th><th>الوصف</th></tr></thead><tbody><tr><td>company_id (مطلوب) </td><td>معرف الفرع، التنسيق المتوقع — عدد صحيح.</td></tr></tbody></table>

### مثال على الاستخدام:

مثال على استدعاء الدالة في كتلة كود:

<figure><img src="/files/47c9638fd2cd95d0d8d057338e8c56fc470bb293" alt="" width="375"><figcaption></figcaption></figure>

## استرجاع معلومات حول الموظفين

إذا كنت بحاجة إلى تقديم معلومات عن موظفي الفرع، فاستخدم الدالة get\_employees\_for\_booking.

سيُرجع الاستدعاء قائمة بيانات تحتوي على معرف الموظف (id)، والاسم (name)، والمعلومات (information)، والمسمى الوظيفي (job\_title).

يمكنك أيضًا تصفية الموظفين حسب قائمة الخدمات أو المسمى الوظيفي أو فئة الخدمة. للقيام بذلك، مرّر معاملًا إضافيًا في استدعاء الدالة: service\_ids أو job\_title\_id أو service\_category\_id.

#### ترتيب المعاملات:

company\_id -> service\_ids -> job\_title\_id -> service\_category\_id

#### **المعاملات:**

<table><thead><tr><th width="287"></th><th></th></tr></thead><tbody><tr><td>company_id (مطلوب)</td><td>معرف الفرع، التنسيق المتوقع — عدد صحيح؛</td></tr><tr><td>service_ids (اختياري)</td><td>معرّف الخدمة أو قائمة بمعرّفات الخدمات، التنسيق المتوقع — عدد صحيح أو قائمة أعداد صحيحة بين أقواس مربعة مفصولة بفواصل، مثل [844, 845]</td></tr><tr><td>job_title_id (اختياري)</td><td>معرّف المسمى الوظيفي، التنسيق المتوقع — عدد صحيح؛</td></tr><tr><td>service_category_id (اختياري) </td><td>معرّف فئة الخدمة، التنسيق المتوقع — عدد صحيح؛</td></tr></tbody></table>

**ملاحظة:**

إذا كنت تريد استرجاع جميع موظفي الفرع، فاترك قيم service\_ids وjob\_title\_id وservice\_category\_id فارغة.

* مثال على الاستدعاء: get\_employees\_for\_booking(14275391)

لتصفية الموظفين حسب قائمة معرّفات الخدمات، مرّر القائمة كالمعامل الثاني واترك job\_title\_id وservice\_category\_id فارغين.

* مثال على الاستدعاء: get\_employees\_for\_booking(14275391, \[844, 845])

لتصفية الموظفين حسب المسمى الوظيفي، مرّر المعرف إلى المعامل job\_title\_id واترك service\_ids وservice\_category\_id فارغين.

* مثال على الاستدعاء: get\_employees\_for\_booking(14275391, “”, 1021)

للحصول على الموظفين الذين يقدمون خدمات من فئة محددة، اترك service\_ids وjob\_title\_id كسلاسل فارغة، ومرّر معرف الفئة المحددة إلى service\_category\_id.

* مثال على الاستدعاء: get\_employees\_for\_booking(14275391, “”, “”, 1019)

### مثال على الاستخدام:

استدعاء الدالة داخل كتلة كود:

<figure><img src="/files/a712c0dde90278bac7109fa71eb41387daad8f01" alt=""><figcaption></figcaption></figure>

مثال على البيانات المُعادة:

<figure><img src="/files/4b6d9c0897bd6763c0b64de99a45fa55daac3b6c" alt="" width="375"><figcaption></figcaption></figure>

## الحصول على معلومات حول الخدمات

للحصول على معلومات حول الخدمات التي يقدمها الفرع، استخدم **get\_services\_for\_booking** الدالة.

نتيجة للاستدعاء، سيُرجع الروبوت قائمة تحتوي على بيانات الخدمات. يتضمن كل إدخال خدمة معرّفًا (**id**)، واسمًا (**title**)، ووصفًا (**description**)، وسعرًا (**price**)، ومدة الخدمة بالدقائق (**duration**).

يمكنك تصفية القائمة الناتجة حسب فئة الخدمة أو حسب الموظف أو حسب كليهما في الوقت نفسه. للقيام بذلك، مرّر المعاملات الإضافية **service\_category\_id** و/أو **employee\_id** عند استدعاء الدالة.

#### ترتيب المعاملات:

company\_id -> service\_category\_id -> employee\_id

**المعاملات:**

<table><thead><tr><th width="310"></th><th></th></tr></thead><tbody><tr><td>company_id (مطلوب) </td><td>معرف الفرع، التنسيق المتوقع – عدد صحيح؛</td></tr><tr><td>service_category_id (اختياري) </td><td>معرف فئة الخدمة، التنسيق المتوقع – عدد صحيح؛</td></tr><tr><td>employee_id (اختياري) </td><td>معرف الموظف، التنسيق المتوقع – عدد صحيح؛</td></tr></tbody></table>

#### ملاحظة إلى قسم «المعاملات»:

إذا كنت تريد استرجاع جميع خدمات الفرع، فاترك **service\_category\_id** و **employee\_id** القيم فارغة.

* مثال على الاستدعاء: get\_services\_for\_booking(14275391)

إذا كنت تريد تصفية الخدمات حسب الفئة و/أو الموظف، فمرّر المعرّفات المقابلة إلى **service\_category\_id** و **employee\_id** المعاملات. للتصفية بمعامل واحد فقط، ضع سلسلة فارغة للمعامل الآخر.

أمثلة على الاستدعاء:

* get\_services\_for\_booking(14275391, 1018) - تصفية حسب فئة الخدمة؛
* get\_services\_for\_booking(14275391, “”, 512978) - تصفية حسب الموظف؛
* get\_services\_for\_booking(14275391, 1018, 463665) - التصفية بكلا المعاملين؛

### &#x20;مثال على الاستخدام:

استدعاء الدالة داخل كتلة:

<figure><img src="/files/eddb146822fb583c1758996cd4f6ccd0b9287434" alt=""><figcaption></figcaption></figure>

مثال على البيانات المُعادة:

<figure><img src="/files/63cbff0ea871cc7b89a3edd239a962f1d506e96d" alt="" width="375"><figcaption></figcaption></figure>

## الحصول على تواريخ الحجز المتاحة

بعد أن يختار العميل الخدمات المراد حجزها، يحتاج إلى استرجاع قائمة بتواريخ الحجز المتاحة.

لتوليد هذه القائمة، استخدم **get\_dates\_for\_booking** الدالة.

ستتحقق الدالة من الفترات الزمنية المتاحة وتُرجع قائمة بالتواريخ المناسبة بصيغة «اليوم.الشهر.السنة».

#### ترتيب المعاملات كما يلي:

company\_id -> service\_ids -> employee\_id -> days\_limit

#### المعاملات:

<table><thead><tr><th width="309.33941650390625"></th><th></th></tr></thead><tbody><tr><td>company_id (مطلوب) </td><td>معرف الفرع، التنسيق المتوقع – عدد صحيح؛</td></tr><tr><td>service_ids (اختياري)</td><td>قائمة معرّفات الخدمات للحجز، التنسيق المتوقع – عدد صحيح أو قائمة أعداد صحيحة بين أقواس مربعة مفصولة بفواصل (مثل 842 أو [842, 843])؛</td></tr><tr><td>employee_id (اختياري)</td><td>معرف الموظف، التنسيق المتوقع – عدد صحيح. إذا تُركت قيمة المعامل فارغة أو مُرّرت كسلسلة فارغة “” – فستبحث الدالة عن التواريخ المتاحة بين جميع الموظفين الذين يقدمون المجموعة الكاملة من الخدمات من قائمة service_ids؛</td></tr><tr><td>days_limit (اختياري)</td><td>عدد الأيام من التاريخ الحالي التي يتم خلالها البحث عن التواريخ المتاحة، التنسيق المتوقع – عدد صحيح، القيمة الافتراضية – 14 (يومًا)؛</td></tr></tbody></table>

### مثال على الاستخدام:

استدعاء الدالة داخل كتلة:

<figure><img src="/files/77b9cb72521de45313aa56b037b2fc3deb9bdf17" alt=""><figcaption></figcaption></figure>

مثال على البيانات المُعادة:

<figure><img src="/files/df9a03bd9c97b5d6b9442ab1a4aef3ae28823f5f" alt="" width="375"><figcaption></figcaption></figure>

## الحصول على فترات الحجز المتاحة

للحصول على قائمة بفترات الحجز المتاحة، استخدم **get\_slots\_for\_booking** الدالة.

ستتحقق الدالة من الوقت المتاح في التاريخ المحدد وتُرجع قائمة بالفترات المجانية بصيغة «ساعات:دقائق»، على سبيل المثال \[“09:00”, “11:00”, “14:30”, “16:00”].

#### ترتيب المعاملات كما يلي:

company\_id -> service\_ids -> employee\_id -> slot\_interval

#### المعاملات:

<table><thead><tr><th width="284"></th><th></th></tr></thead><tbody><tr><td>company_id (مطلوب)</td><td>معرف الفرع، التنسيق المتوقع – عدد صحيح؛</td></tr><tr><td>service_ids (اختياري) - </td><td>قائمة معرّفات الخدمات للحجز، التنسيق المتوقع – عدد صحيح أو قائمة أعداد صحيحة (مثل 842 أو [842, 843])؛</td></tr><tr><td>date (اختياري) - </td><td>تاريخ التحقق من الفترات، التنسيق المتوقع – سلسلة نصية بصيغة «اليوم.الشهر.السنة»، على سبيل المثال “01.01.2024”؛</td></tr><tr><td>employee_id (اختياري)</td><td>معرف الموظف، التنسيق المتوقع – عدد صحيح. إذا تُركت قيمة المعامل فارغة أو مُرّرت كسلسلة فارغة، فستبحث الدالة عن الفترات المجانية في جداول جميع الموظفين العاملين في التاريخ المحدد والذين يقدمون المجموعة الكاملة من الخدمات من قائمة service_ids؛</td></tr><tr><td>slot_interval (اختياري) </td><td>الفاصل الزمني بالدقائق بين الفترات المتاحة، التنسيق المتوقع – عدد صحيح، القيمة الافتراضية – 30 (دقيقة)؛</td></tr></tbody></table>

### مثال على الاستخدام:

استدعاء الدالة داخل الكتلة:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXc7GJ9EjdCro_idrF14dVYscslN653oUESQaAFjHBWZrSO8q4joGD95kXjFfaX-E2oRT_nLCdKNrGdN9j5wBVJFKOgiyG2ZGDJNjR-l3OAhvP2E0pPTA0dOiYD3WxGdxdD57bRO-UC3CoGVVO4XV3Cq5BNpc8cZ1S6S0lsnlw?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

مثال على البيانات المُعادة:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXe6V_i1iPe4C6A6CDJPu6GNK4fFLzUzq4ktYRRf01jRRgvRl87Ir3hWs2GbWRsYatbz0o8srDyE6pHklrvZ129tilNr5fuR9C_lhQP75MO-_Mfi9JVgcTvHoldK6Y8dcZ_cQamJp2JDxBfA8OU3a9cDgPavncaz-9aU_p31qg?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## إنشاء حجز

لإنشاء حجز عبر الإنترنت، استخدم **create\_booking** الدالة.

إذا نجح الحجز، فستُرجع الدالة معلومات عن حالة العملية (status) بقيمة True وتفاصيل الحجز (booking) بصيغة «مفتاح: قيمة».

تتضمن بيانات الحجز الجديد ما يلي:

* المعرّف (id)،&#x20;
* التاريخ (booking\_date)،&#x20;
* الوقت (booking\_time)،&#x20;
* أسماء الخدمات (services)،&#x20;
* مدة الحجز (service\_duration)،&#x20;
* التكلفة الإجمالية (total\_cost)،&#x20;
* اسم الموظف المُعيّن (employee\_name)، والمسمى الوظيفي الخاص به (job\_title)،&#x20;
* اسم الفرع (company\_name) وعنوان الفرع (company\_address)&#x20;

بصيغة «مفتاح: قيمة».

#### ترتيب المعاملات:&#x20;

company\_id -> service\_ids -> booking\_date -> booking\_time -> employee\_id

المعاملات:

<table><thead><tr><th width="288"></th><th></th></tr></thead><tbody><tr><td>company_id (مطلوب)</td><td>معرف الفرع، التنسيق المتوقع – عدد صحيح؛</td></tr><tr><td>service_ids (مطلوب)</td><td>قائمة معرّفات الخدمات للحجز، التنسيق المتوقع – عدد صحيح أو قائمة أعداد صحيحة (مثل 5 أو [5, 10, 15])؛</td></tr><tr><td>booking_date (مطلوب)</td><td>تاريخ الحجز، التنسيق المتوقع – سلسلة نصية بصيغة «اليوم.الشهر.السنة»، على سبيل المثال “15.01.2024”؛</td></tr><tr><td>booking_time (مطلوب) </td><td>وقت الحجز، التنسيق المتوقع – سلسلة نصية بصيغة «ساعات:دقائق»، على سبيل المثال “12:30”؛</td></tr><tr><td>employee_id (اختياري)</td><td>معرف الموظف، التنسيق المتوقع – عدد صحيح. إذا تُركت قيمة المعامل فارغة أو مُرّرت كسلسلة فارغة “”، فستجري الدالة الحجز مع موظف عشوائي يقدم المجموعة الكاملة من الخدمات من قائمة service_ids، إذا كانت متاحة في التاريخ والوقت المحددين؛</td></tr></tbody></table>

### &#x20;مثال على الاستخدام:

استدعاء الدالة داخل الكتلة:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdb3Fq2gqGtJ-QK342Hr12Ckv-krW_04_uAeJsCcnKpCq_iTC8mAxXjXvc_UqOVAOfm7WGcHYlfcvZjImoZXoNuPYCctsZOPB35toHI4zWMmK-sr3GoEdujlh8YQRxXsF_qN-I836wsU3AKhMvP8t0KiF0h6syWhECIxsynkQ?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

مثال على استجابة حجز ناجح:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfsZPfW9v1VoJqC3nNqtnlLQJS-KhAaEi3uUzhz26vYmcxajMRMwd7NnZVZB2LpmavglbNibSpAAJIlo0mbge1_K6rguZTf1tE4NxkBPmKQ1GCy0x47vzfkIV5DTN-R-RlYpMZ-bfAQ-vrZ_tEM6mugSbn0E5BAjHCVN2Gdmw?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

عند إنشاء الحجوزات ثم طلب الفترات المتاحة مرة أخرى، ستلاحظ أن القوائم أصبحت أقصر. على سبيل المثال، في 05.02.2024 لم تعد الفترة 18:00 متاحة (كانت متاحة فقط في جدول فيكتوريا)، وبالنسبة إلى بول طومسون يمكن الآن حجز قصة شعر رجالية وتصفيف لحية من 9:00 إلى 14:00، لأن المدة الإجمالية للخدمات هي ساعة و45 دقيقة، ولدى بافل حجز آخر بالفعل في 16:00.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfglzV1DHx8clVfshVMInDi9MOS6sAlPGG8Axr6FYKBAeINwRaj2gvJMRYNcec7ZmDCnFKYCkU64AQqz2mgMWxCnp4G4YPRPb6C9D9g9KLKFM2e2bCVpBA2refY_fChq-W1uNy196r5d8dNZUudGRg-2qgN9NX20lCteL8AZw?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## الحصول على معلومات حول الحجوزات القادمة للعميل

يمكنك عرض الحجوزات الحالية للعميل من خلال استدعاء **get\_bookings\_info** الدالة.

سيُرجع الرد قائمة بالحجوزات النشطة، مع معلومات تفصيلية لكل حجز.

تُقدَّم معلومات الحجز بصيغة «مفتاح: قيمة» وتشمل:

* معرّف الحجز (booking\_id)،&#x20;
* التاريخ (booking\_date)،&#x20;
* الوقت (booking\_time)،&#x20;
* المعرّفات (service\_ids) والأسماء (service\_names) للخدمات المحددة،&#x20;
* مدة الحجز (booking\_duration)،&#x20;
* التكلفة الإجمالية للخدمات (total\_cost)،&#x20;
* معرّف الموظف المُعيَّن (employee\_id) واسمه (employee\_name)، ومسمّاه الوظيفي (job\_title)،&#x20;
* معرّف الفرع (company\_id)&#x20;
* واسم الفرع (company\_name) وعنوانه (company\_address).

#### المعاملات:

<table><thead><tr><th width="253"></th><th></th></tr></thead><tbody><tr><td>client_id (اختياري)</td><td>معرّف العميل، مطلوب — هذا المعامل ضروري إذا أردت استرجاع الحجوزات لعميل محدد؛ بشكل افتراضي، يستخدم معرّف العميل من المحادثة مع الروبوت.</td></tr></tbody></table>

### مثال على الاستخدام:

استدعاء الدالة داخل الكتلة:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeKlJcFxIx3cc_3vb8g0MARiqu6iNE4eW8BEmVY21MjT74GxS2U7JKFaAn6Sia99v4kQ4O8HuHFYkQJs8jCNmtpZHIkKq1SZ3_3BCBSA7mCs_iXVk6Ucu8hWTOHN7mPa0J5LGG5QSRK8TSP9BEZracVVNQBZKuZkLJx36r_TA?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

مثال على البيانات المُعادة:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcHzfzRWdUXAmr-iwrHhcdpHYraOD--i4jjI5ftsc-KRzzEOOFArT3hKZE--WucI4m3_b2v0DK99dV4EL2BQ9d0U2q-2fGHM6RiCHX_YUl7kgI-SA4zJIHs4zFte6GhgQAMfUY9Qim4THusxMhKielEnXQuHzapLqmh_oZm?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## تغيير تاريخ ووقت الحجز

يمكن للعميل تغيير تاريخ ووقت الحجز بشكل مستقل. للقيام بذلك، يحتاج إلى الوصول إلى كتلة القمع حيث يتم استدعاء **modify\_booking\_time** الدالة.

إذا نجحت العملية، فستُرجع الدالة حالة العملية (status) بقيمة True ورسالة (message) «تم تعديل وقت الحجز» بصيغة «مفتاح: قيمة».

#### ترتيب المعاملات:&#x20;

order\_id -> new\_date -> new\_time

#### المعاملات:

<table><thead><tr><th width="300"></th><th></th></tr></thead><tbody><tr><td>order_id (مطلوب) </td><td>معرّف الحجز، القيمة المتوقعة – عدد صحيح؛</td></tr><tr><td>new_date (مطلوب)</td><td>تاريخ الحجز الجديد، التنسيق المتوقع – سلسلة نصية بصيغة «اليوم.الشهر.السنة»، على سبيل المثال “16.01.2024”؛</td></tr><tr><td>new_time (مطلوب)</td><td>وقت الحجز الجديد، التنسيق المتوقع – سلسلة نصية بصيغة «ساعات:دقائق»، على سبيل المثال “14:30”؛</td></tr></tbody></table>

### مثال على الاستخدام:

استدعاء الدالة داخل الكتلة:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcDyllYwQDcuLOWIAFTCHb4A765baTgyFrir86V0h3ja3OQpECP2D5TszmK-M_PbKmQRVbp1LFLUMc_JIU4m9562kGnWz9WILVhjpMhf1jZw5bOUXCuBbUasMKWeaTo0pATOPujX4QK6laEk2TlXPU6Qycc7xlih1KbEBxK?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

رد الروبوت على العملية الناجحة:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdKqYrp28WS18aq3-_0I_3iDJUc2FmzwsilP1-5do9jmVjjVJ3Igfflo9rMnU_KEWWdAUYSZtjp6B0bVxwBcc7P21RvWVIeCOEAq0pNEh1KYDxJATu71S1Fiil4gicJeFuq5MAcp7bnQdUqRf8kjrWMXuA2_Fl09tjKwEPI?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

أصبحت الفترة 16:00 التي كانت مشغولة سابقًا متاحة الآن للحجز، ويمكن الآن إنشاء حجز جديد للخدمات نفسها بدءًا من 11:00 فقط

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeM-8-vu5dfYf4DlMnzlWTk08tQm80ne-qTBJleANK0Mjn-TuZWyMbO13Hex4FzdwvCgQspNeErgWwQkTZIejzDWK1BItCGxrLpAi9D0XFx75rqFvUF9UChQ_LoZqUNozZzKwubmGkx7XSgsTm-_1CBORCt5Nidh5X4ohbx?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

في معلومات حجز العميل، سترى أيضًا وقت الحجز المحدث:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeCyMMrRSlqAdCpmu0-HWsS6iKxW6xHjdtcnZ2NjxLTaRy7W_w3mhyLZQ2PjZgpvbmHRnRML-5A6hTwHpgpLaTerklX-opM8_UTQAeuT-ev2bd7AvC6N1ynPf50EUVRs6m4hZU4YIKnWQRamRcGbror5uJ7ElZ2v2KPtX1NxQ?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## إلغاء الحجز

يمكن للعميل إلغاء حجز موجود بشكل مستقل. للقيام بذلك، يحتاج إلى الوصول إلى الكتلة حيث يتم استدعاء **cancel\_booking** الدالة.

سيُرجع الإلغاء الناجح حالة العملية (status) بقيمة True ورسالة (message) «تم حذف الحجز» بصيغة «مفتاح: قيمة».

ترتيب المعاملات:

pipeline\_id -> order\_id

المعاملات:

<table><thead><tr><th width="321"></th><th></th></tr></thead><tbody><tr><td>pipeline_id (مطلوب)</td><td>معرف الفرع، القيمة المتوقعة – عدد صحيح؛</td></tr><tr><td>order_id (مطلوب)</td><td>معرّف الحجز، القيمة المتوقعة – عدد صحيح؛</td></tr></tbody></table>

### مثال على الاستخدام:

استدعاء الدالة داخل الكتلة:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdWFqf619l5j1eQoe4p6QCPqGGsqcyEefKLs5PJxPwecillJaxUnQSC5eHFcT2olsrM62PHJDVGyxeD6Tl2xg3id27f-p51spmVZFjlDhSwzw3TwMx-CbQT9n3fnjYLPCO4wlqtKdB0cd1W36dp9wXYg4gEVJh6eketyDUQ?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

رد الروبوت على الإلغاء الناجح:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXe7FcrjKQxzoEgo3wfMuUt0a9zkPVkb02ojx5pZ3KYWU5NfLazmLhgCaNxvigreYXXfzYFEhd5KyF7D3808VLBGl5Cte7YRXI0cWQK3J9ZV05G5y5XUIXGq1Arcac2KrPmHnCCakarcTFXd_9X5_4yYsI6j4rpMySaZr3lA?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

بعد الإلغاء، أصبحت الفترتان “09:00” و“10:00” متاحتين للحجز مرة أخرى:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcRLLDJ0un8QPUj11yC8VDy2TlbbgUHuDd13YSQ3AZU3ey4Cg00SMEke5LFPKWGHR8em7BWHiH8l-bSqGICNAU5CP9ORBGI9CFMKziB0JQLZA0QUvYJ8q-SXXQGQsPCnEWdNrDZ1G7bZupR4zOLgGpJt9TgZBxG_R1MPf9f?key=KyjJFgzVYb53MOCGur8CUg" alt=""><figcaption></figcaption></figure>

## مثال على تنفيذ الروبوت

### إعدادات روبوت المحادثة

**الكتلة رقم 1.** البدء. لا توجد إجراءات خاصة مطلوبة

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcXoXRmydVuSiBv9lAWBG-5rDy8cIcNbk2zjsJ7o5kxShJEExU13A9O2v9pFuqG6oTndOvrnRft3jHQaZFf-7RGYiFM09FPzpQdrdS47_ttQcgLvbDExj9xIBEjJ80qVPHSAFzfth5zcO_rCvqk66FaK-Nx?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption><p>الكتلة 1.</p></figcaption></figure>

**الكتلة رقم 2**. في هذه الكتلة، نسترجع البيانات التي ستُقدَّم إلى العميل.

وصف محتوى الحاسبة:

* comp\_id - معرف كتلة الخدمة، ويمكن العثور عليه في قسم «الخدمات»؛
* data - معلومات حول الخدمات المقدمة
* res - قاموس يحتوي على البيانات اللازمة لتوليد الأزرار وضبط الشروط
* numbered\_list - قد يكون مفيدًا إذا كانت قائمة الخدمات تحتاج إلى تكرارها بصيغة نصية
* buttons - مصفوفة أزرار مُولَّدة من بيانات الخدمة
* checker - مصفوفة بأسماء الخدمات، تُستخدم لضبط الشروط للانتقال إلى الكتلة التالية

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdLGPcvhDRumGklk525zCB4VEqziavYPoNoqJiC3XD036d1R_jcSF2yeDhFZvrTOTxFrALYNF9_ezfdbKxgn6fSuIkTyCzHb9Cxaw3cW9ywtyUbvf3Bezb3ukuZC3fFuM5e0Jb8tNCyWRqUv-8aev2MHeo?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption><p>الكتلة رقم 2</p></figcaption></figure>

**الكتلة رقم 3**. استرجاع وعرض بيانات الخدمة المحددة.

title - في مصفوفة القواميس **data**، اعثر على القاموس حيث المفتاح **title** يساوي **question**. من ذلك القاموس، احصل على القيمة للمفتاح نفسه **title**

description - وبالمثل، احصل على القيمة للمفتاح **description**

price - وبالمثل، احصل على القيمة للمفتاح **price**

serv\_id - وبالمثل، احصل على القيمة للمفتاح **id**

b - أنشئ مصفوفة من السلاسل النصية التي ستُعرض كأزرار أسفل الرسالة

res - من المصفوفة **b**، أنشئ مصفوفة من القواميس كما في الكتلة السابقة

buttons - احصل على المصفوفة لعرض الأزرار

أصبح لدينا الآن متغيرات تحتوي على اسم الخدمة ووصفها وسعرها الذي اختاره العميل

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfoMVt3v-buSCBlpe9hKGoFoemSKQW0oeLLZ7LZwZ24vR507mCOTzuewDhUsfCangNsex0sKbdc9k-HeJXQ-ermTNsf_p3O4xtlpygOhFmzyWZ2cjCDxHUUdZq0gCsiSGJmSWIkN04n4XOkpX2t6nHVORhb?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption><p>الكتلة رقم 3</p></figcaption></figure>

**الكتلة رقم 4.** عرض تواريخ الحجز المتاحة

print\_dates - استخدم الدالة للحصول على تواريخ الحجز المتاحة للخدمة المحددة

print\_dates - أضف السلسلة النصية «العودة إلى قائمة الخدمات» إلى مصفوفة التواريخ إذا كنت تريد أن يظهر هذا الزر مع التواريخ.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXeNbqnf6RHcvKlt8ECsxm7uUQpLClSJ2kVgW9HPi35Pmq5XtsAR_yXWCxHr_0CYwJ4whUQfdof71uxnPt8BHxobfYJdxGeDhmf3BXd5NHAPyC12RT6cRIzn8g_Kda70WRAhjYhJ85Vfhi9i40aqUu-Kvg8E?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

بالنسبة للسهم العائد إلى الخطوة السابقة، اضبط أولوية أعلى من السهم ذي #{checker}، لأن #{checker} يحتوي أيضًا على الشرط «العودة إلى قائمة الخدمات».

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcuUIlqDrtiEGIX7Dk8d1YILa_s9F2bRzrgcgQ_eytukzhEe2IDatqW7VPPgyQeLfzOYqtY-vL2rdCaGYSf3PSRpe4JSXlHD68TJHrOHec6tBRvMOp_sIMs3bqWAQKX9jWPDsWjY-CGQnZEc8QPr2ZGikXQ?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**الكتلة رقم 5.**\
في الكتلة رقم 5 نحفظ التاريخ الذي اختاره العميل. يجب القيام بذلك في كتلة منفصلة لأن المتغير question في المراحل اللاحقة وعند العودة إلى الكتلة 6 لن يحتوي بعد الآن على التاريخ الذي اختاره العميل.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfBnoXAoC-hwhm7MJk242wb1qbGz4qwZr-L180d271_eNanul0suKBZUdiYAy95nTZD7rVZv5bYgnB8dZ3u0pW75yMtdz2mQ6bzqTTAxEhVZAihD-VCj-45M9jldb6Ic_JuyDEWsvlodPlxY-2150k62HuW?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**الكتلة رقم 6.** اختيار وعرض الخانات المتاحة للحجز.

data - نحصل على الخانات المتاحة.

المنطق نفسه كما في الكتلة رقم 4 مع عرض التواريخ المتاحة. من المهم أيضًا ألا تنسى ضبط أولوية أعلى للسهم «العودة إلى اختيار التاريخ»

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXdO4UUM3CyFvJN5lNulwUwHbEWQhng6kaW_YVmOrbkP-2VoQHB3Sg09TkpPv5joYo3EV_9iaFI68B4dfgzL49RveaMzZHQIOs7mKyzFgsA6PKrwrKM0oMKZVGMZjbyz2rxIi0kpaOZFZIStEzUvASiyunli?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**الكتلة رقم 7.** حفظ الوقت المختار في متغير ومحاولة تسجيل العميل.&#x20;

choosed\_time - نحفظ الوقت

a - محاولة تسجيل العميل

booking\_result - نحصل على نتيجة تنفيذ الدالة.&#x20;

من الضروري الحصول على النتيجة، إذ قد يحاول عدة أشخاص الحجز في الوقت نفسه.&#x20;

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXczzYBOEvinNi3ixDewD_V6XrrfAwjChrujdPmo7MK1m1qV-8depW4IV8_-VxA6_u2RKwTBYifAi4q5kxN1OEG_6m9exNS-hAvtB2VH49kP-X5uuAboxpgb--ugGdit-JI6inwRHXMQtbPbqSy-oe3ZvLi_?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**الكتلة رقم 7.1.** تعذّر تسجيل العميل.

هذه الكتلة مطلوبة فقط لعرض رسالة الخطأ. بعد إرسال الرسالة، نعيد العميل إلى اختيار وقت الحجز

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXflFxwu5IdfEsIzK1dpt4STbIc6GY2HDz-NvpW6vmG12aBRj5TWgaN2O_YWlLaCSN3B52bMDf8EIMo2kKofNkTzD_TqRWu7F5rEL1NiFrlPiJwLntEG9DgdSKYocFtNQMADKTMJFHADE4fPUgeFJJ5crM3y?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**الكتلة رقم 8.** تم الحجز بنجاح.

نُبلغ العميل بأنه تم حجز الخدمة ونعرض زر الدفع.

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXebWZ4RSKanJHHLwJmqRzx_sQAwEqpnz7hMmMOqJziY9J4IpSAPevmApHRz_oR3GEIuceV_IOAi1XdpUMqNtgC5nI-vB75hIq_9NDudNSGzYESotA-rl-WCFjLtcVQA6kiFvcDvij0koA2ttg4NVvwwiQI?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

مثال على إعداد الأزرار.&#x20;

لإعداد ذلك، نستخدم المتغيرات التي حصلنا عليها في الكتلة رقم 3:

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcuWNRouJXZN4GcbOP_g5b2cBGtzMjW3t20fJDYvPqy02QHr_Mx7seJfSJSjnieOxRiuZ2eQ8F8iJEcBkllOYNYR4cXYGFfuK69jsVhnLUuq-3a2a5Lts8UXEJyP1m0DvNoEmyDiMcXXpLQX8srFEgvnSo?key=Gdkru5ZyRiCm0ujtl74quw" alt="" width="375"><figcaption></figcaption></figure>

**الكتلة رقم 8.1.**

في هذه الكتلة نؤكد نجاح الدفع. نُعدّ الانتقال إلى الكتلة وفقًا لنظام الدفع المستخدم

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcKwiimzQWaWQdY87DhVF0EHgXGIN1am1ybhpQIN2ZjubanvoORX4nF86oxQfeDUH0rSfPPLQp4BVRDYJh0wMWQRp-ko-Dm8PmWeBPyA9KvPiSwDt6GkzUrsFw9ITDDjH7-JsG97mxgwZ_8OtCMFVVkhPza?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

**الكتلة رقم 8.2.** العميل لم يدفع ثمن الخدمة. إلغاء التسجيل

إذا لم يدفع العميل ثمن الخدمة في الوقت المناسب، يمكننا إلغاء التسجيل إذا لزم الأمر.

or\_id - نحصل على معرّف الطلب

cancel\_status - بعد تنفيذ الدالة نحصل على رد يوضح ما إذا كان الإلغاء قد تم بنجاح.&#x20;

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXe0S7A8roVZ-cqy20A7SABHlZEH561HeUudCIFcTEmV19DibNgEWLoEqZ45pWtukMuEdaxuJ1KjsvAiR7hFeGCrNLIMBghZIglifArlGWnBA1O6uKfGoeHRyfYihmIH1EalHVrqOKJKW6AsvOraqTIM2k6j?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

في هذا المثال سيدخل العميل إلى كتلة الإلغاء بعد 5 ثوانٍ من استلام رابط الدفع، أما في الحالة الحقيقية فيمكنك تحديد المدة المطلوبة، فقط لا تنسَ تفعيل مفتاح «إلغاء إذا غادر الكتلة».

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXf4JnYF9gJdYh1IeHnh0KIP8TBthzNABp_TjejLyQXugQBBb_Xvz4yfoedExR9VJy6koxfpNqGkYe38fioTFrzuuioJjVVVp2HLB9w8gRt5LqMcFX5samcaj30aBLV69MVTCNrg2bEbnVaoxv5IuUidtB3Y?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

المخطط الكامل:<br>

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXelLMX7_UQ0Op_QDn8S-GKMp68O-cJDYMFviZLju8TUjMMYKIMwyv9AePru93ccedeKajHSx4kP5e4t1XFfAtabSJBfluvE7q-VsZkx1rO3ICGBm0dvVUtEriaro8UXixY6XratDgILrSOMHfXIpfaHb8Y?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

### عرض توضيحي<br>

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcgQC7kI1xOkzZOYyijAdDELqmlgit1O615fU0RQjYF-g-ztgkNayFf2gaPupplvgiAoE1T_bOdSh-dLO4Oaqu2AVnmh-5uooWhCc3BOqqdIzgQh6gV4r3l86VJHRgXEOZTmKD3HqbXoTuRrpZ8qYJOj4Ol?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXcMs9Sg7IOqKfcvVdL5ud1odnPrlHg0Acfa71bnpFAfmQ_7GP4AsKI7JI2GVzAQZV9a2d0jMGmFamGiuD_mMG00SsfAQZvje_aPGybcmsKBU0F2VpTbv5H9qPPA5gszFwQyZaaG3TH9HDutSZE19JzNo5nV?key=Gdkru5ZyRiCm0ujtl74quw" alt=""><figcaption></figcaption></figure>

## Callback خاص بالتسجيل

بعد التسجيل، سيصل إلى المحادثة مع العميل callback — إشعار بالتسجيل — بالشكل التالي:

<figure><img src="/files/9ec8c0aa4b9928fe13d24127a38026ecb71a2d7d" alt="" width="464"><figcaption></figcaption></figure>

<mark style="color:orange;">**new\_order\_in\_calendar**</mark> - الجزء غير القابل للتغيير من callback&#x20;

&#x20;<mark style="color:yellow;">**\[489046159]**</mark> - order\_id  معرّف الطلب&#x20;

<mark style="color:red;">**تمت إضافة تسجيل التاريخ\_و\_الوقت**</mark>

<mark style="color:purple;">**لمدة 30 دقيقة**</mark> - مدة الخدمة&#x20;

<mark style="color:red;">**إلى الكائن: اختبار 30**</mark> - إلى أي كائن تحديدًا تمت إضافة التسجيل

شكل callback نفسه:

***`new_order_in_calendar: [489046159] تمت إضافة تسجيل من 2025-06-01 14:00 إلى 2025-06-01 14:30 لمدة 30 دقيقة. إلى الكائن: اختبار 30`***

يمكن إعداد التفاعل مع callback بكتابة القيمة في شرط الكتلة:

<figure><img src="/files/0f389ff31199180db9fd9e7547f7d26c3e96022d" alt=""><figcaption></figcaption></figure>

يمكن داخل الكتلة كتابة رسالة رد مناسبة للعميل.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/ar/booking/chatbot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
