# العمل مع العملاء ونظام CRM

## العمل مع العملاء

<mark style="color:red;">**المفتاح:**</mark>

was\_in\_state() | days\_from\_last\_message() | free\_client() | assign\_to\_user() | distribute\_client()| get\_operator() | get\_operator\_name() | delete\_pended\_messages() | set\_note() | add\_unread() | clear\_unread() | unsubscribe()|block\_client() | unblock\_client() | set\_client\_name() | get\_bind\_clients() | get\_current\_pipline\_id()

<details>

<summary>الوصف</summary>

**was\_in\_state(message\_id)**\
يتحقق مما إذا كان العميل في الحالة المحددة (الحظر). يمكنك الحصول على رقم الحظر من المحرر.

<figure><img src="/files/d9448706badeb7dbaca23f8898686a69df60077e" alt=""><figcaption><p>يعرض السطر العلوي من محرر الحظر رقم الحظر.</p></figcaption></figure>

**days\_from\_last\_message()**\
يحدد عدد الأيام منذ آخر رسالة للعميل. أُنشئت للتحقق مما إذا كان ذلك يقع ضمن نافذة الـ 24 ساعة.

مثال: \
`d = days_from_last_message()`

{% hint style="info" %}
إذا مرّ أكثر من 30 يومًا منذ آخر رسالة للعميل، فستُرجع الدالة القيمة 9999.
{% endhint %}

\
**إلغاء التعيين*****\_*****client()**\
يلغي تعيين المشغّل المسؤول.\r مثال: free\_client()

**assign\_to\_user(email, only\_active)**\
يُسند محادثة إلى مشغّل، حيث:

1. email - وسيط نصي (اختياري). إذا تم توفير البريد الإلكتروني فقط، فسيتم إسناد المحادثة إلى المشغّل المحدد بغض النظر عن حالته الحالية.&#x20;
2. only\_active - True أو False (وسيط اختياري). إذا تم ضبطه على True، فسيتم إسناد المحادثة إلى المشغّل المحدد فقط إذا كان على نوبة العمل حاليًا.

أمثلة:

`assign_to_user()` - يُسند محادثة إلى مشغّل عشوائي موجود على نوبة العمل حاليًا&#x20;

`assign_to_user('operator's email')` - يُسند محادثة إلى المشغّل بغض النظر عن حالته

`assign_to_user('operator's email', True)` - يُسند محادثة إلى المشغّل المحدد فقط إذا كان على نوبة العمل حاليًا

**distribute\_client()**\
يُسند محادثة إلى المشغّل وفقًا لإعدادات التوزيع التلقائي. \
مثال:  `distribute_client()`

**get\_operator**()\
يسترجع البريد الإلكتروني للمشغّل المسؤول

مثال: `get_operator()`&#x20;

يمكن استخدامه لإسناد المهام إلى المشغّل المسؤول أو للتحقق من وجوده. إذا لم يوجد مشغّل مسؤول، فسيُرجع None.

**get\_operator\_name**()\
يسترجع اسم المشغّل المسؤول

مثال:  `get_operator_name()`&#x20;

يمكن استخدامه لعرض معلومات للعميل. إذا لم يوجد مشغّل مسؤول، فسيُرجع None. وإذا لم يكن للمشغّل اسم معيّن، فسيُرجع بريده الإلكتروني.

**delete\_pended\_messages()**\
يحذف جميع الرسائل المجدولة للعميل الحالي. افتراضيًا، يحذف أيضًا الرسائل التي تم إنشاؤها بواسطة **"عدم الإلغاء"** الأسهم. للاحتفاظ بالرسائل من **"عدم الإلغاء"** الأسهم، مرّر الوسيط False: delete\_pended\_messages(False).

**set\_note(comment)**\
يضيف تعليقًا إلى محادثة.

مثال: **`set_note`**`('Redo')`

**add\_unread(count)**\
يعلّم محادثة مع عميل بأنها غير مقروءة

يمكن حذف الوسيط count أو ضبطه على 1؛ وفي هذه الحالة ستظهر في المحادثة مع العميل إشارة +1 رسالة غير مقروءة.

<div data-with-frame="true"><figure><img src="/files/4a85204ede13f948b825a1f3a07831e301b2bf89" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/3a0cb94390c7c829f58e39f7fa8e7b2c45027eb1" alt="" width="375"><figcaption></figcaption></figure></div>

إذا تم تمرير أي رقم آخر، فسيظهر في **"العملاء"** القسم كعدد الرسائل غير المقروءة من عميل.

<div data-with-frame="true"><figure><img src="/files/05f1a5bf12eec92a35b873509706aafdeec49519" alt="" width="563"><figcaption></figcaption></figure></div>

**clear\_unread()**\
يعلّم المحادثة كمقروءة

**unsubscribe()**\
دالة لإلغاء الاشتراك من رسائل الروبوت. يوجد مثال [في هذا المقال.](/doc/ar/alrsael-altjaryh/ilghaa-alashtrak-mn-alrwbwt.md)&#x20; بالنسبة للعميل الذي أُلغي اشتراكه، ستظهر علامة — رسالة حمراء مع علامة ×.

<div data-with-frame="true"><figure><img src="/files/0c06aff7758495059e1e58c07488154f23fca946" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/e9048b4ec2c20ff9fd6d79dd23144d6cc7b3eb91" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
**مهم!**

الـ **يتم تنفيذ الحاسبة أولًا**، وبعد ذلك فقط تُرسل الرسالة.

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

1. **أولًا، أرسل كتلة** تحتوي على الرسالة النهائية.
2. **ثم، أرسل كتلة فارغة** تحتوي على دالة إلغاء الاشتراك/الحظر.

**إذا حاولت تنفيذ الأمرين في كتلة واحدة، فلن تُرسل الرسالة.**
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/7f029f726ca826d9e8dbbe287a7187580f159754" alt="" width="563"><figcaption></figcaption></figure></div>

إذا وضعت `unsubscribe()` الدالة في حاسبة الكتلة نفسها مع رسالتك، فلن **تُرسل الرسالة**، وسيعرض النظام خطأً.

<div data-with-frame="true"><figure><img src="/files/59bc575425d6f51dd440f9f43c0dd416e2ffdfaf" alt="" width="563"><figcaption></figcaption></figure></div>

**block\_client()**\
يحظر العميل من إرسال الرسائل إلى الروبوت. كما سيتم إلغاء الرسائل المجدولة سابقًا من الروبوت. ومع ذلك، سيظل من الممكن مراسلة العميل مباشرة من المحادثة في **"العملاء"** القسم

<div data-with-frame="true"><figure><img src="/files/270ea5fdb57382ee150b3fb4e9459bb538e3a4ec" alt="" width="563"><figcaption></figcaption></figure></div>

سيكون على العميل المحظور علامة — أيقونة قفل حمراء.

<div data-with-frame="true"><figure><img src="/files/1a45dd0a6d0dcdc26a8cd0247781e931b37f1e06" alt="" width="563"><figcaption></figcaption></figure></div>

**unblock\_client()**\
يفك حظر العميل. سيتمكن العميل من التفاعل مع الروبوت مرة أخرى والاستمرار عبر سلاسل الرسائل.

**set\_client\_name(name)**\
يغيّر اسم العميل. مرّر اسم العميل كسلسلة نصية بين علامتي اقتباس مزدوجتين. يمكنك أيضًا استخدام متغير يحتوي على اسم العميل، مثلًا: set\_client\_name("John Smith")

**get\_bind\_clients()**\
دالة بلا معاملات تُرجع مصفوفة من معرّفات العملاء المرتبطين بالعميل الحالي.

**get\_current\_pipline\_id()**\
دالة بلا معاملات تُرجع معرّف القمع الذي يوجد فيه العميل حاليًا.

إذا كانت صفقة العميل في مرحلة "غير المعالجة"، فستُرجع None.

</details>

## العمل مع المهام&#x20;

{% hint style="success" %}
الدوال التي تعمل مع المهام تُرجع حالة العملية كـ **True أو معرّف المهمة عند النجاح. في حال الفشل، تُرجع False أو None.**
{% endhint %}

{% hint style="info" %}
يستخدم MaviBot تنسيق التاريخ **"dd.mm.yyyy"** وتنسيق الوقت **"HH:MM"**.
{% endhint %}

create\_task() | update\_task() | done\_task() | delete\_task()

<details>

<summary>الوصف</summary>

**create\_task(email, name, date\_srok, description, time\_srok)** – ينشئ مهمة

المعلمات:\ <mark style="color:red;">**!**</mark>**&#x20;البريد الإلكتروني** - البريد الإلكتروني للشخص المسؤول\ <mark style="color:red;">**!**</mark>**&#x20;name** - اسم المهمة\ <mark style="color:red;">**!**</mark>**&#x20;date\_srok** - تاريخ الاستحقاق، التاريخ\ <mark style="color:red;">**!**</mark>**&#x20;description** - وصف المهمة\
**time\_srok** - وقت الاستحقاق، الوقت

**update\_task(task\_id,email, name, date\_srok, description, time\_srok)** - يحدّث مهمة

المعلمات:\ <mark style="color:red;">**!**</mark>**&#x20;task\_id**- معرّف المهمة\ <mark style="color:red;">**!**</mark>**&#x20;البريد الإلكتروني** - البريد الإلكتروني للشخص المسؤول\ <mark style="color:red;">**!**</mark>**&#x20;name** - اسم المهمة\ <mark style="color:red;">**!**</mark>**&#x20;date\_srok** - تاريخ الاستحقاق، التاريخ\ <mark style="color:red;">**!**</mark>**&#x20;description** - وصف المهمة\
**time\_srok** - وقت الاستحقاق، الوقت

**done\_task(task\_id)**- يعلّم المهمة كمكتملة

المعلمات:\ <mark style="color:red;">**!**</mark>**&#x20;task\_id**- معرّف المهمة

**delete\_task(task\_id)** – يحذف مهمة

المعلمات:\ <mark style="color:red;">**!**</mark>**&#x20;task\_id**- معرّف المهمة

</details>

<details>

<summary>أمثلة</summary>

لننشئ مهمة للمشغّل:

<div data-with-frame="true"><figure><img src="/files/d7d6ac9d8f59da51dadb323ec253e774cf051f25" alt="" width="563"><figcaption></figcaption></figure></div>

حدّث تاريخ الاستحقاق والوصف.

<div data-with-frame="true"><figure><img src="/files/6da8ffc273c83eee47c8643846a9cc0b094502b3" alt="" width="563"><figcaption><p>تحديث المهمة</p></figcaption></figure></div>

علّم المهمة كمكتملة.

<div data-with-frame="true"><figure><img src="/files/0a17c63262a6de2f118775b4aac6b3621f54319d" alt="" width="563"><figcaption><p>وضع علامة اكتمال على المهمة</p></figcaption></figure></div>

حذف المهمة

<div data-with-frame="true"><figure><img src="/files/a4450106534afa19765673832f96aa3a3482480e" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

`task_id=create_task('admin@mavibot.ai', 'Test', '22.01.2023', 'test task', '08:00') status=delete_task(task_id)`

</details>

## العمل مع الصفقات

get\_order\_id() | create\_order() | set\_order\_name() | set\_order\_budget() | get\_active\_orders\_ids() | get\_success\_orders\_ids() | get\_fail\_orders\_ids() | get\_order\_var() | get\_order\_vars() | set\_order\_var() | set\_order\_vars() | move\_order\_to\_next\_state() | set\_order\_status\_success() | set\_order\_status\_fail(order\_id)| get\_state\_id() | change\_state() | get\_order\_id\_by\_var\_value() | latest\_order\_datetime() | count\_client\_orders(), get\_count\_orders() | delete\_order(order\_id)

<details>

<summary>الوصف</summary>

<mark style="background-color:blue;">**استرجاع معرّف الصفقة الحالية**</mark>

**get\_order\_id()** - يُرجع حالة الصفقة.

<mark style="background-color:blue;">**إنشاء صفقة جديدة**</mark>

**create\_order(name, budget, description, client\_name, phone, email, state\_id)**\
ستكون الصفقة النشطة حاليًا في القمع، مع متغيراتها، متاحة فقط في الدوال المتعلقة بالصفقات وفي نظام CRM.\
\
**معاملات الدالة:** \ <mark style="color:red;">**!**</mark>**&#x20;name** - (اختياري)، اسم الصفقة. إذا لم يُحدد، تُطبَّق الدالة على الصفقة النشطة الحالية للعميل.

<mark style="color:red;">**!**</mark>**&#x20; budget** - (اختياري) قيمة الصفقة. إذا لم تُحدَّد، تُطبَّق على الصفقة النشطة الحالية.\
إذا كان **budget** ليس رقمًا، فستُرجع الدالة: **يجب أن تكون القيمة المالية رقمًا**

**description** - (اختياري)، وصف الصفقة.

معاملات إضافية لإنشاء العميل:

**client\_name** - (اختياري) سلسلة نصية، اسم عميل جديد

**phone** - (اختياري) سلسلة نصية، رقم هاتف عميل جديد.

**البريد الإلكتروني** - (اختياري) سلسلة نصية، عنوان البريد الإلكتروني لعميل جديد.

لإنشاء عميل، يجب توفير الهاتف أو البريد الإلكتروني على الأقل. إذا تم توفير الهاتف ولم يوجد عميل بهذا الهاتف في المشروع، فسيتم إنشاء عميل جديد.

إذا تم توفير البريد الإلكتروني دون هاتف ولم يوجد عميل بهذا البريد الإلكتروني، فسيتم إنشاء عميل جديد.

معامل إضافي:

**state\_id** - رقم، يتيح ضبط الحالة الأولية للصفقة عند الإنشاء

<mark style="background-color:blue;">**تعيين أو تحديث اسم الصفقة**</mark>

**set\_order\_name(name, order\_id)**

**name** - ❗مطلوب، سلسلة نصية؛ اسم الصفقة

**order\_id** - (اختياري) معرّف الصفقة. إذا لم يُحدد، يطبَّق التغيير على الصفقة النشطة الحالية للعميل.

<mark style="background-color:blue;">**تعيين أو تحديث ميزانية الصفقة**</mark>

**set\_order\_budget(budget, order\_id)**

**budget** -❗مطلوب، رقم؛ قيمة الصفقة

**order\_id** - (اختياري) معرّف الصفقة. إذا لم يُحدد، يطبَّق على الصفقة النشطة الحالية للعميل.

لاستخدام order\_id بشكل صحيح:

1. يمكنك تحديده يدويًا — احصل على معرّف الصفقة ومرّره كمعامل للدالة إذا كنت تريد استهداف صفقة محددة.

<div data-with-frame="true"><figure><img src="/files/2a9a0ff21d25f28e4b81f2c3886f2c624233810d" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/2c66d3e9cf4d13a6981052c6a6c7be97bfba2815" alt="" width="375"><figcaption></figcaption></figure></div>

1. استرجعه باستخدام الدالة get\_order\_id()، لأن المتغير المدمج order\_id يُرجع القيمة بالصيغة {client\_id}-{order\_id}، مما قد يؤدي إلى سلوك غير صحيح.

<mark style="background-color:blue;">**استرجاع قوائم الصفقات**</mark> \
((باستثناء الصفقات المؤرشفة أو الناجحة أو الفاشلة))

**get\_active\_orders\_ids()**&#x20;

<mark style="background-color:blue;">**احصل على قائمة بمعرّفات الصفقات الناجحة**</mark>

**get\_success\_orders\_ids()**&#x20;

<mark style="background-color:blue;">**احصل على قائمة بمعرّفات الصفقات الفاشلة**</mark>

**get\_fail\_orders\_ids()**

<mark style="background-color:blue;">**استرجاع قيمة متغير صفقة**</mark>

**get\_order\_var(order\_id, variable)**&#x20;

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;order\_id** - معرّف الصفقة&#x20;

<mark style="color:red;">**!**</mark>**&#x20;variable** - اسم المتغير الذي تريد استرجاع قيمته

<mark style="background-color:blue;">**استرجاع بيانات الصفقة**</mark>

**get\_order\_vars(order\_id, names)**&#x20;

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;order\_id** - معرّف الصفقة

**names** - مصفوفة بأسماء المتغيرات المراد استرجاعها. إذا لم تُحدد، فستُرجع الدالة جميع متغيرات الصفقة المحددة

ترجع الدالة قاموسًا يحتوي على المتغيرات المدرجة في **names** المصفوفة للصفقة المحددة بواسطة **order\_id**. إذا لم يتم توفير **names** ، فستُرجع قاموسًا بجميع متغيرات الصفقة المحددة.

<mark style="background-color:blue;">**إضافة متغير صفقة**</mark>

**set\_order\_var(order\_id, variable, value)**

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;order\_id** - معرّف الصفقة

<mark style="color:red;">**!**</mark>**&#x20;variable** - اسم المتغير المراد إضافته أو تحديثه في الصفقة

{% hint style="warning" %}
إذا كنت تريد تغيير معاملات الصفقة "name" أو "description"، فاستخدم اسمي المتغيرين "name" أو "description" على التوالي.
{% endhint %}

<mark style="color:red;">**!**</mark>**&#x20;value** - قيمة المتغير

<mark style="background-color:blue;">**إضافة عدة متغيرات للصفقة**</mark>

**set\_order\_vars(order\_id, variables\_dict)**&#x20;

المعلمات:

<mark style="color:red;">**!**</mark>**&#x20;order\_id** - معرّف الصفقة.&#x20;

<mark style="color:red;">**!**</mark>**&#x20;variables\_dict** - قاموس من المتغيرات

<mark style="background-color:blue;">**الانتقال إلى حالة القمع التالية**</mark>

**move\_order\_to\_next\_state(order\_id)**&#x20;

المعلمات:\
**order\_id** - معرّف الصفقة. إذا لم يُحدد، فسيتم نقل الصفقة النشطة الحالية.\
يتم تحديد ترتيب حالات الصفقة وفقًا للتسلسل المضبوط في MavibotCRM.

<mark style="background-color:blue;">**استرجاع مرحلة القمع في MavibotCRM**</mark>

**get\_state\_id(client\_id, order\_id)** \
يمكنك أيضًا نسخ معرّف حالة المسار مباشرةً من **"إعدادات الحالة"**.

المعلمات:

**order\_id -** معرّف صفقة العميل

يمكنك استدعاء الدالة مع أو بدون **order\_id** المعامل. إذا تم حذف order\_id، فسترجع الدالة معرّف حالة القمع للصفقة النشطة الحالية.

للاستخدام الصحيح لـ order\_id:

1. يمكنك تحديده يدويًا بالحصول على معرّف الصفقة وتمريره كمعامل للدالة عندما تريد استهداف صفقة معينة.
2. استرجعه باستخدام الدالة get\_order\_id()، لأن المتغير المدمج order\_id يُرجع قيمة بالصيغة {client\_id}-{order\_id}، مما قد يسبب سلوكًا غير صحيح.

<mark style="background-color:blue;">**نقل العميل المحتمل عبر قمع MavibotCRM بحسب معرّف الحالة**</mark>

**change\_state(state\_id, order\_id)**&#x20;

المعلمات:\ <mark style="color:red;">**!**</mark> **state\_id -** معرّف حالة القمع\
**order\_id (** اختياري) - معرّف الصفقة المراد نقلها عبر المسار. إذا لم يُذكر، فسيتم نقل الصفقة النشطة الحالية.

<mark style="background-color:blue;">**الحصول على معرّف الصفقة بواسطة اسم المتغير وقيمته**</mark>

get\_order\_id\_by\_var\_value(var\_name, var\_value, client\_id)

المعلمات:\ <mark style="color:red;">!</mark> var\_name - اسم المتغير\ <mark style="color:red;">!</mark> var\_value - قيمة المتغير؛\
client\_id - (اختياري) معرّف صفقة العميل؛ الافتراضي هو معرّف العميل في الروبوت

<mark style="background-color:blue;">**الحصول على تاريخ ووقت أحدث صفقة**</mark>

latest\_order\_datetime(client\_id, dt\_fmt)

المعاملات:\
client\_id - (اختياري) معرّف صفقة العميل؛ الافتراضي هو معرّف العميل في الروبوت؛\
df\_fmt - (اختياري) التنسيق للتاريخ والوقت المُرجعين؛ الافتراضي هو "%d.%m.%y %H:%M"

<mark style="background-color:blue;">**الحصول على عدد صفقات العميل**</mark>

count\_client\_orders(client\_id, state\_id, get\_all, active)

المعاملات:\
client\_id - (اختياري) معرّف صفقة العميل؛ الافتراضي هو معرّف العميل في الروبوت؛\
state\_id - (اختياري) معرّف حالة الصفقة في المسار؛\
get\_all - (اختياري) علامة تصفية للمعامل active؛ الافتراضي 1 (التصفية حسب active معطلة)؛\
active - يُستخدم فقط عندما تكون get\_all تساوي 0؛ يصفّي الصفقات النشطة؛ الافتراضي 1 (يُرجع الصفقات النشطة فقط)؛

<mark style="background-color:blue;">**الحصول على عدد الصفقات في حالة صفقة محددة**</mark>

get\_count\_orders(id) - يُرجع عدد الصفقات الموجودة حاليًا في حالة محددة من المسار بحسب معرّف الحالة.

تأخذ الدالة معاملًا واحدًا:

<mark style="color:red;">**!**</mark> id - معرّف حالة الصفقة.&#x20;

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

<div data-with-frame="true"><figure><img src="/files/2e3d0cb97bc60baaddb464052936571d5840d5fe" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/d4cd8c21cdc7222e2f7cb1926e0b03410f75781a" alt="" width="375"><figcaption></figcaption></figure></div>

يمكن العثور على معرّف المرحلة في الإعدادات.

بعد ذلك، تحتاج إلى إدخال الدالة في الحاسبة كما يلي:

<div data-with-frame="true"><figure><img src="/files/8d5a6977218ff0f6fba5bbb8724ac089d68f46c2" alt="" width="563"><figcaption></figcaption></figure></div>

عند اختبار الروبوت، سيتكون رد الروبوت من عدد الصفقات في الحالة المحددة بواسطة القيمة الممررة إلى الدالة.

<mark style="background-color:blue;">**حذف صفقة**</mark>

delete\_order(order\_id) — يحذف صفقة في **MaviBotCRM**.

order\_id - (اختياري) معرّف الصفقة المراد حذفها. إذا لم يُذكر، فسيتم حذف أحدث صفقة.&#x20;

</details>

<details>

<summary>أمثلة</summary>

جميع الدوال سهلة الاستخدام.\r\nعلى سبيل المثال، لننشئ صفقة جديدة ونرسل رقمها إلى العميل:

<div data-with-frame="true"><figure><img src="/files/98a2a75fb53524a1a7592a5520bc0bd7105c5ed5" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/bfda7386e1a65c3408d442499f66f72dbee4ec5a" alt="" width="563"><figcaption><p>تسجيل طلب العميل</p></figcaption></figure></div>

يمكنك الحصول على معرّف الصفقة النشطة الحالية للعميل باستخدام الدالة get\_order\_id()، أو استرجاع القائمة الكاملة لصفقات العميل باستخدام get\_active\_orders\_ids().

<div data-with-frame="true"><figure><img src="/files/597ddeac6f6d8f1c4d7be2f1562f55057321bedf" alt="" width="563"><figcaption><p>استرجاع معرّف الصفقة النشطة الحالية</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/238f7ab33359089e04d6ad8fe95f7e15577896cc" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/171a70bfd08dd2d439332983dac580db870cd0de" alt="" width="563"><figcaption><p>استرجاع قائمة الصفقات النشطة</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/703fd94f3986e3b66eca0ee5eb0bbca719cc085a" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>مثال على الكود للنسخ</summary>

<pre><code><strong>/* إنشاء صفقة جديدة */
</strong>oid = create_order()

/* استرجاع معرّف الصفقة النشطة للعميل */
oid = get_order_id()

/* استرجاع قائمة الصفقات النشطة */
res = get_active_orders_ids()

/* إضافة أو تحديث متغير واحد في الصفقة */
res = set_order_var('40630', 'обновлено', '#{current_date}')

vars = {"VAR1": "V111", "VAR2": "V222"}
res2 = set_order_vars('40630', vars)

ovar = get_order_vars('40630')
</code></pre>

</details>

### <mark style="background-color:blue;">**تعيين وسم صفقة ناجحة**</mark>

set\_order\_status\_success()

{% tabs %}
{% tab title="الوصف" %}
**set\_order\_status\_success(order\_id)**&#x20;

المعلمات:

**order\_id** - معرّف الصفقة. إذا لم يُحدَّد المعامل، فسيتم تعيين الوسم للصفقة النشطة الحالية.
{% endtab %}
{% endtabs %}

### <mark style="background-color:blue;">**تعيين وسم صفقة فاشلة**</mark>&#x20;

set\_order\_status\_fail()

{% tabs %}
{% tab title="الوصف" %}
**set\_order\_status\_fail(order\_id)**&#x20;

المعلمات:

**order\_id** - معرّف الصفقة. إذا لم يُحدَّد المعامل، فسيتم تعيين الوسم للصفقة النشطة الحالية.
{% endtab %}
{% endtabs %}

### <mark style="background-color:blue;">**تعيين وسم صفقة مؤرشفة**</mark> &#x20;

set\_order\_status\_archive()

{% tabs %}
{% tab title="الوصف" %}
**set\_order\_status\_archive(order\_id)**&#x20;

المعلمات:

**order\_id** - معرّف الصفقة. إذا لم يُحدَّد المعامل، فسيتم تعيين الوسم للصفقة النشطة الحالية.
{% endtab %}

{% tab title="أمثلة" %}
/\* أرشفة الصفقة النشطة الحالية \*/

`res_arh = set_order_status_archive()`
{% endtab %}
{% endtabs %}


---

# 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/chatbot/functions/alaalh-alhasbh/crm.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.
