معلومات عامة
روبوت الدردشة للحجز عبر الإنترنت هو مجموعة من وظائف بناء مسار التحويل التي تتيح لك أتمتة عملية جدولة الخدمات لشركتك.
يعتمد سير عمل الروبوت على التنفيذ المتسلسل للوظائف: استقبال البيانات لعرضها على العميل، ثم تمرير هذه البيانات لتشغيل وظائف جديدة والحصول على نتائج جديدة.
أثناء تحرك العميل عبر مسار التحويل، يجب عليك تمرير البيانات التي تتوافق مع اختيار العميل فقط إلى كل كتلة لاحقة - استخدم هذه البيانات لتكوين استدعاءات الوظائف التالية.
بفضل القدرة على استرداد البيانات الوسيطة (على سبيل المثال، مناصب الموظفين وفئات الخدمات) وتمريرها لتصفية الموظفين والخدمات، يمكنك تكوين مسار التحويل الخاص بك بمرونة ومنح العميل التحكم في خطوات تقدمه.
جميع الطرق الموصوفة في هذه المقالة تُرجع مصفوفة من القواميس.
للعمل معها بشكل مريح، نوصي بمراجعة أقسام المصفوفات والقواميس.
أيضًا، لاستخدام وظيفة إنشاء إجراءات المستخدم (اختيار الخدمة، التاريخ، الحجز)، نقترح النظر في طريقة tools_make_button_str_checker.
أدناه رسم تخطيطي لسير عمل الروبوت، حيث تمثل كل كتلة في الرسم التخطيطي استدعاء وظيفة محددة، وتشير الأسهم إلى تدفق البيانات المنقولة من كتلة إلى أخرى. تتيح لك المعلومات المنقولة في هذه التدفقات تصفية البيانات المطلوبة، بالإضافة إلى إنشاء موعد الحجز أو إلغائه أو تعديله.

لرؤية رسم تخطيطي مفصل لتكوين روبوت الدردشة للحجز عبر الإنترنت مع الوظائف المستخدمة، راجع قسم مثال على تنفيذ الروبوت في هذه المقالة.
استرداد معلومات الفرع
لإنشاء مسار تحويل للحجز عبر الإنترنت واسترداد معلومات حول فروع المشروع، استخدم وظيفة get_companies_for_booking.
تُرجع الوظيفة قائمة تحتوي على بيانات لكل فرع (مسار تحويل) تم تمكين "الحجز عبر الإنترنت" في إعداداته.
يتم توفير البيانات كأزواج مفتاح-قيمة وتتضمن معرف الفرع (id) واسمه (name) وعنوانه (address).
لا تأخذ الوظيفة أي معاملات.
مثال على الاستخدام:
استدعاء الوظيفة داخل كتلة:

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

استرداد معلومات حول المناصب أو فئات الخدمات
تتيح لك وظيفة get_categories_for_booking(company_id) استرداد قائمة بجميع أنواع المتخصصين أو فئات الخدمات لفرع معين.
يحتوي كل عنصر في القائمة المُعادة على معرف (id) واسم (name) ووصف (description) للمنصب أو فئة الخدمة. يتم تمثيل البيانات كأزواج "مفتاح-قيمة":
المعاملات:
| المعامل | الوصف |
|---|---|
| company_id (مطلوب) | معرف الفرع، التنسيق المتوقع - عدد صحيح. |
مثال على الاستخدام:
مثال على استدعاء الوظيفة في كتلة التعليمات البرمجية:

استرداد معلومات حول الموظفين
إذا كنت بحاجة إلى تقديم معلومات حول موظفي الفرع، استخدم وظيفة 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
المعاملات:
| company_id (مطلوب) | معرف الفرع، التنسيق المتوقع - عدد صحيح؛ |
| service_ids (اختياري) | معرف الخدمة أو قائمة بمعرفات الخدمات، التنسيق المتوقع - عدد صحيح أو قائمة أعداد صحيحة بين قوسين مربعين مفصولة بفواصل، على سبيل المثال [844, 845] |
| job_title_id (اختياري) | معرف المسمى الوظيفي، التنسيق المتوقع - عدد صحيح؛ |
| service_category_id (اختياري) | معرف فئة الخدمة، التنسيق المتوقع - عدد صحيح؛ |
ملاحظة:
إذا كنت ترغب في استرداد جميع موظفي الفرع، اترك قيم 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)
مثال على الاستخدام:
استدعاء الوظيفة في كتلة تعليمات برمجية:

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

الحصول على معلومات حول الخدمات
للحصول على معلومات حول الخدمات التي يقدمها الفرع، استخدم وظيفة get_services_for_booking.
كنتيجة للاستدعاء، سيعيد الروبوت قائمة تحتوي على بيانات الخدمة. يتضمن كل إدخال خدمة معرفًا (id) وعنوانًا (title) ووصفًا (description) وسعرًا (price) ومدة الخدمة بالدقائق (duration).
يمكنك تصفية القائمة الناتجة حسب فئة الخدمة أو حسب الموظف أو حسب كل من فئة الخدمة والموظف في وقت واحد. للقيام بذلك، قم بتمرير المعاملات الإضافية service_category_id و/أو employee_id عند استدعاء الوظيفة.
ترتيب المعاملات:
company_id -> service_category_id -> employee_id
المعاملات:
| company_id (مطلوب) | معرف الفرع، التنسيق المتوقع - عدد صحيح؛ |
| service_category_id (اختياري) | معرف فئة الخدمة، التنسيق المتوقع - عدد صحيح؛ |
| employee_id (اختياري) | معرف الموظف، التنسيق المتوقع - عدد صحيح؛ |
ملاحظة لقسم "المعاملات":
إذا كنت ترغب في استرداد جميع خدمات الفرع، اترك قيم 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) - تصفية حسب كلا المعاملين؛
مثال على الاستخدام:
استدعاء الوظيفة داخل كتلة:

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

الحصول على تواريخ الحجز المتاحة
بعد أن يختار العميل الخدمات للحجز، يحتاج إلى استرداد قائمة بتواريخ الحجز المتاحة.
لإنشاء هذه القائمة، استخدم وظيفة get_dates_for_booking.
ستتحقق الوظيفة من الفترات الزمنية المتاحة وتُعيد قائمة بالتواريخ المناسبة بتنسيق "day.month.year".
ترتيب المعاملات كما يلي:
company_id -> service_ids -> employee_id -> days_limit
المعاملات:
| company_id (مطلوب) | معرف الفرع، التنسيق المتوقع - عدد صحيح؛ |
| service_ids (اختياري) | قائمة بمعرفات الخدمات للحجز، التنسيق المتوقع - عدد صحيح أو قائمة أعداد صحيحة بين قوسين مربعين مفصولة بفواصل (على سبيل المثال 842 أو [842, 843])؛ |
| employee_id (اختياري) | معرف الموظف، التنسيق المتوقع - عدد صحيح. إذا تركت قيمة المعامل فارغة أو مررتها كسلسلة فارغة "" - ستبحث الوظيفة عن التواريخ المتاحة بين جميع الموظفين الذين يقدمون المجموعة الكاملة من الخدمات من قائمة service_ids؛ |
| days_limit (اختياري) | عدد الأيام من التاريخ الحالي التي يتم خلالها البحث عن التواريخ المتاحة، التنسيق المتوقع - عدد صحيح، القيمة الافتراضية - 14 (يومًا)؛ |
مثال على الاستخدام:
استدعاء الوظيفة داخل كتلة:

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

الحصول على فترات الحجز المتاحة
للحصول على قائمة بفترات الحجز المتاحة، استخدم وظيفة get_slots_for_booking.
ستتحقق الوظيفة من الوقت المتاح في التاريخ المحدد وتُعيد قائمة بالفترات المجانية بتنسيق "hours:minutes"، على سبيل المثال ["09:00", "11:00", "14:30", "16:00"].
ترتيب المعاملات كما يلي:
company_id -> service_ids -> employee_id -> slot_interval
المعاملات:
| company_id (مطلوب) | معرف الفرع، التنسيق المتوقع - عدد صحيح؛ |
| service_ids (اختياري) - | قائمة بمعرفات الخدمات للحجز، التنسيق المتوقع - عدد صحيح أو قائمة أعداد صحيحة (على سبيل المثال 842 أو [842, 843])؛ |
| date (اختياري) - | التاريخ للتحقق من الفترات، التنسيق المتوقع - سلسلة نصية بالشكل "day.month.year"، على سبيل المثال "01.01.2024"؛ |
| employee_id (اختياري) | معرف الموظف، التنسيق المتوقع - عدد صحيح. إذا تركت قيمة المعامل فارغة أو مررتها كسلسلة فارغة، ستبحث الوظيفة عن فترات مجانية في جداول جميع الموظفين الذين يعملون في التاريخ المحدد ويقدمون المجموعة الكاملة من الخدمات من قائمة service_ids؛ |
| slot_interval (اختياري) | الفاصل الزمني بالدقائق بين الفترات المتاحة، التنسيق المتوقع - عدد صحيح، القيمة الافتراضية - 30 (دقيقة)؛ |
مثال على الاستخدام:
استدعاء الوظيفة في الكتلة:

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

إنشاء حجز
لإنشاء حجز عبر الإنترنت، استخدم وظيفة create_booking.
إذا كان الحجز ناجحًا، ستعيد الوظيفة معلومات حول حالة العملية (status) بالقيمة True وتفاصيل الحجز (booking) بتنسيق "مفتاح: قيمة".
تتضمن بيانات الحجز الجديد:
- المعرف (id)،
- التاريخ (booking_date)،
- الوقت (booking_time)،
- أسماء الخدمات (services)،
- مدة الحجز (service_duration)،
- التكلفة الإجمالية (total_cost)،
- اسم الموظف المعين (employee_name) ومسماه الوظيفي (job_title)،
- اسم الفرع (company_name) وعنوان الفرع (company_address)
بتنسيق "مفتاح: قيمة".
ترتيب المعاملات:
company_id -> service_ids -> booking_date -> booking_time -> employee_id
المعاملات:
| company_id (مطلوب) | معرف الفرع، التنسيق المتوقع - عدد صحيح؛ |
| service_ids (مطلوب) | قائمة بمعرفات الخدمات للحجز، التنسيق المتوقع - عدد صحيح أو قائمة أعداد صحيحة (على سبيل المثال 5 أو [5, 10, 15])؛ |
| booking_date (مطلوب) | تاريخ الحجز، التنسيق المتوقع - سلسلة نصية بالشكل "day.month.year"، على سبيل المثال "15.01.2024"؛ |
| booking_time (مطلوب) | وقت الحجز، التنسيق المتوقع - سلسلة نصية بالشكل "hours:minutes"، على سبيل المثال "12:30"؛ |
| employee_id (اختياري) | معرف الموظف، التنسيق المتوقع - عدد صحيح. إذا تركت قيمة المعامل فارغة أو مررتها كسلسلة فارغة ""، سيقوم الحجز مع موظف عشوائي يقدم المجموعة الكاملة من الخدمات من قائمة service_ids، إذا كان متاحًا في التاريخ والوقت المحددين؛ |
مثال على الاستخدام:
استدعاء الدالة في الكتلة:

مثال على رد الحجز الناجح:

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

الحصول على معلومات حول حجوزات العميل القادمة
يمكنك عرض حجوزات العميل الحالية عن طريق استدعاء الدالة get_bookings_info.
سيعيد الرد قائمة بالحجوزات النشطة، بالإضافة إلى معلومات مفصلة لكل حجز.
يتم تقديم معلومات الحجز بتنسيق "key: value" وتتضمن:
- معرف الحجز (booking_id)،
- التاريخ (booking_date)،
- الوقت (booking_time)،
- معرفات الخدمات (service_ids) وأسماء الخدمات (service_names) المحددة،
- مدة الحجز (booking_duration)،
- التكلفة الإجمالية للخدمات (total_cost)،
- معرف الموظف (employee_id) واسم الموظف (employee_name) المعين، ومسماه الوظيفي (job_title)،
- معرف الفرع (company_id)
- اسم الفرع (company_name) وعنوانه (company_address).
المعاملات:
| client_id (اختياري) | معرف العميل، مطلوب – هذه المعلمة مطلوبة إذا كنت ترغب في استرداد الحجوزات لعميل معين؛ بشكل افتراضي، يستخدم معرف العميل من الدردشة مع البوت. |
مثال على الاستخدام:
استدعاء الدالة في الكتلة:

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

تغيير تاريخ ووقت الحجز
يمكن للعميل تغيير تاريخ ووقت الحجز بشكل مستقل. للقيام بذلك، يحتاج إلى الوصول إلى كتلة المسار حيث يتم استدعاء الدالة modify_booking_time.
إذا نجحت العملية، ستعيد الدالة حالة العملية (status) بالقيمة True ورسالة (message) "Booking time modified" بتنسيق "key: value".
ترتيب المعاملات:
order_id -> new_date -> new_time
المعاملات:
| order_id (مطلوب) | معرف الحجز، القيمة المتوقعة – عدد صحيح؛ |
| new_date (مطلوب) | تاريخ الحجز الجديد، التنسيق المتوقع – سلسلة نصية بالشكل "day.month.year"، على سبيل المثال "16.01.2024"; |
| new_time (مطلوب) | وقت الحجز الجديد، التنسيق المتوقع – سلسلة نصية بالشكل "hours:minutes"، على سبيل المثال "14:30"; |
مثال على الاستخدام:
استدعاء الدالة في الكتلة:

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

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

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

إلغاء الحجز
يمكن للعميل إلغاء حجز قائم بشكل مستقل. للقيام بذلك، يحتاج إلى الوصول إلى الكتلة حيث يتم استدعاء الدالة cancel_booking.
سيعيد الإلغاء الناجح حالة العملية (status) بالقيمة True ورسالة (message) "Booking deleted" بتنسيق "key: value".
ترتيب المعاملات:
pipeline_id -> order_id
المعاملات:
| pipeline_id (مطلوب) | معرف الفرع، القيمة المتوقعة – عدد صحيح؛ |
| order_id (مطلوب) | معرف الحجز، القيمة المتوقعة – عدد صحيح؛ |
مثال على الاستخدام:
استدعاء الدالة في الكتلة:

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

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

مثال على تنفيذ البوت
إعدادات الشات بوت
الكتلة رقم 1. البداية. لا حاجة لإجراءات خاصة

الكتلة رقم 2. في هذه الكتلة، نسترد البيانات التي سيتم تقديمها للعميل.
وصف محتوى الحاسبة:
- comp_id - معرف كتلة الخدمة، الذي يمكن العثور عليه في قسم "الخدمات";
- data - معلومات حول الخدمات المقدمة
- res - قاموس بالبيانات اللازمة لإنشاء الأزرار وتعيين الشروط
- numbered_list - قد يكون مفيدًا إذا كانت قائمة الخدمات بحاجة إلى تكرار في شكل نصي
- buttons - مصفوفة من الأزرار التي تم إنشاؤها من بيانات الخدمة
- checker - مصفوفة من أسماء الخدمات، تُستخدم لتعيين شروط الانتقال إلى الكتلة التالية

الكتلة رقم 3. استرداد وعرض البيانات حول الخدمة المحددة.
title - في مصفوفة القواميس data، ابحث عن القاموس الذي يساوي فيه المفتاح title القيمة question. من هذا القاموس، احصل على القيمة لنفس المفتاح title
description - بالمثل، احصل على القيمة للمفتاح description
price - بالمثل، احصل على القيمة للمفتاح price
serv_id - بالمثل، احصل على القيمة للمفتاح id
b - أنشئ مصفوفة من السلاسل النصية التي سيتم عرضها كأزرار أسفل الرسالة
res - من المصفوفة b، أنشئ مصفوفة من القواميس كما في الكتلة السابقة
buttons - احصل على المصفوفة لعرض الأزرار
الآن لدينا متغيرات تحتوي على اسم ووصف وسعر الخدمة التي اختارها العميل

الكتلة رقم 4. عرض تواريخ الحجز المتاحة
print_dates - استخدم الدالة للحصول على تواريخ الحجز المتاحة للخدمة المحددة
print_dates - أضف السلسلة النصية "العودة إلى قائمة الخدمات" إلى مصفوفة التواريخ إذا كنت تريد ظهور هذا الزر مع التواريخ.

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

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

الكتلة رقم 6. اختيار وعرض الخلايا المتاحة للحجز.
data - نحصل على الخلايا المتاحة.
المنطق هو نفسه كما في الكتلة رقم 4 مع عرض التواريخ المتاحة. من المهم أيضًا ألا ننسى ضبط أولوية أعلى للسهم "العودة إلى اختيار التاريخ"

الكتلة رقم 7. حفظ الوقت المحدد في متغير ومحاولة تسجيل العميل.
choosed_time - نحفظ الوقت
a - محاولة تسجيل العميل
booking_result - نحصل على نتيجة تنفيذ الدالة.
من الضروري الحصول على النتيجة لأنه قد يحاول عدة أشخاص التسجيل في نفس الوقت في نفس اللحظة.

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

الكتلة رقم 8. تم التسجيل بنجاح.
نخبر العميل بأنه تم تسجيله في الخدمة ونعرض زرًا للدفع.

مثال على إعداد الأزرار.
لإعداد الأزرار، نستخدم المتغيرات التي حصلنا عليها في الكتلة رقم 3:

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

الكتلة رقم 8.2. لم يدفع العميل ثمن الخدمة. إلغاء الحجز
إذا لم يدفع العميل ثمن الخدمة في الوقت المحدد، يمكننا إلغاء الحجز إذا لزم الأمر.
or_id - نحصل على معرف الطلب
cancel_status - بعد تنفيذ الدالة، نحصل على رد حول ما إذا تم الإلغاء بنجاح.

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

المخطط الكامل:

العرض التوضيحي


رد الاتصال حول الحجز
في الحوار مع العميل بعد الحجز، سيتم إرسال رد اتصال - إشعار بالحجز - بالشكل التالي:

new_order_in_calendar - الجزء غير القابل للتغيير من رد الاتصال
[489046159] - order_id معرف الطلب
تمت إضافة تسجيل من التاريخ_والوقت_الحجز
لمدة 30 دقيقة - مدة الخدمة
للكائن: اختبار 30 - أي كائن تمت إضافة التسجيل إليه
شكل رد الاتصال نفسه:
new_order_in_calendar: [489046159] تمت إضافة تسجيل من 2025-06-01 14:00 إلى 2025-06-01 14:30 لمدة 30 دقيقة. للكائن: اختبار 30
يمكنك تكوين رد الفعل على رد الاتصال عن طريق كتابة القيمة في شرط الكتلة:

في الكتلة، يمكنك كتابة رسالة الرد اللازمة للعميل.