# إجراءات العميل لإضافة Pushwoosh Outsystems

يوفر المكون الإضافي (Plugin) مجموعة من إجراءات العميل لتسهيل إدارة إشعارات الدفع. تتيح لك هذه الإجراءات تسجيل وإلغاء تسجيل الأجهزة، وتعيين العلامات (tags) والحصول عليها، وإدارة رسائل البريد الوارد (inbox)، والمزيد.

## إجراءات العميل لإضافة Pushwoosh

### CheckPushwooshPlugin

يتحقق مما إذا كان المكون الإضافي Pushwoosh متاحًا حاليًا للاستخدام.

#### معلمات الإخراج

| IsAvailable | تُرجع `true` إذا كان المكون الإضافي متاحًا للاستخدام، وإلا فتُرجع `false`. |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

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

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-1.webp" alt="إجراء CheckPushwooshPlugin"/>

### RegisterDevice

يسجل جهازًا لتلقي إشعارات الدفع ويسترد رمز الدفع (Push Token).

#### معلمات الإدخال

| ApplicationCode | نص، رمز تطبيق Pushwoosh الذي تم الحصول عليه من إعدادات حسابك. |
| --------------- | ------------------------------------------------------------------------- |



#### معلمات الإخراج

| RegisterToken | الرمز الذي تم استلامه من Google أو Apple للجهاز. |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### UnregisterDevice

يلغي تسجيل جهاز من تلقي إشعارات الدفع.

#### معلمات الإخراج

| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### GetDeviceID

يسترد معرف الجهاز (device ID)، الذي يجب أن يكون معرفًا فريدًا.

#### معلمات الإخراج

| DeviceHwid | المعرف الفريد للجهاز. |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عند وجود خطأ. |

### GetDeviceType

يحصل على نوع الجهاز (Android أو iOS أو Windows).

#### معلمات الإخراج

| DeviceTypeId | معرف نوع هذا الجهاز. |
| ------------ | ----------------------------------- |

### GetTags

يجلب بيانات العلامات (tags) من Pushwoosh.

#### معلمات الإخراج

| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |
| Tags | تُرجع قائمة سجلات `Key`, `Value` تحتوي على جميع العلامات المخصصة لهذا الجهاز. |

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

1. استدعِ الإجراء **GetTags** لجلب بيانات العلامات من Pushwoosh.
2. يمكن الوصول إلى العلامات المُرجعة عبر قائمة **GetTags.Tags**.

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-2.webp" alt=""/>

3. استخدم الإجراء **LogMessage** لتسجيل مفتاح وقيمة كل علامة.

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-3.webp" alt=""/>

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-4.webp" alt=""/>

### PostEvent

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

#### معلمات الإدخال

| EventName | نص، اسم الحدث. |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| EventAttributes | قائمة سجلات `Key`, `Value`، تُستخدم لإرسال بيانات حدث إضافية إلى Pushwoosh (على سبيل المثال، لإجراء "UserLogin" قد ترغب في إرسال بيانات تسجيل الدخول، مثل - `{"username":"John"}`). |

معلمات الإخراج

| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

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

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-5.webp" alt=""/>

**1. تعيين (Assign)**

قم بإعداد أزواج المفتاح-القيمة لتعريف بيانات الحدث. على سبيل المثال، `KeyValue1.AttributeName` كـ "test1" و `KeyValue1.Value` كـ "test1value". وبالمثل، قم بتعريف `KeyValue2` باسم السمة والقيمة المناسبين.

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-6.webp" alt=""/>

2. أنشئ قوائم بالسمات التي سيتم ربطها بالحدث.

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-7.webp" alt=""/>

3. أخيرًا، قم بتكوين الإجراء **PostEvent**.

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-8.webp" alt=""/>

### SetBadgeNumber

يضبط رقم شارة أيقونة التطبيق.

#### معلمات الإدخال

| BadgeNumber | عدد صحيح، رقم شارة الأيقونة. |
| ----------- | --------------------------- |

#### معلمات الإخراج

| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### SetLanguage

يضبط لغة تطبيق مخصصة بدلاً من لغة النظام الافتراضية.

#### معلمات الإدخال

| Language | نص، لغة تطبيق مخصصة بتنسيق ISO المكون من حرفين (مثل "en"، "es"، "fr"). |
| -------- | --------------------------------------------------------------------------------- |

### SetTags

يرسل العلامات (tags) وقيمها إلى Pushwoosh.

#### معلمات الإدخال

| Tags | قائمة سجلات `TagName`, `TagValue` تحتوي على جميع العلامات التي تريد إرسالها. يجب أن يكون نوع `TagName` دائمًا نصًا، بينما يمكن أن يكون `TagValue` نصًا أو عددًا صحيحًا أو قيمة منطقية أو تاريخًا، إلخ. |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

#### معلمات الإخراج

| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

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

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-9.webp" alt=""/>

1. عيّن قيم العلامات. في المثال أدناه، هناك علامتان:

*   `Tag1` باسم `testTag` وقيمتها محددة بالتاريخ الحالي.
*   `Tag2` باسم `testTag2` وقيمتها محددة بـ `True`.

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-10.webp" alt=""/>

2. بعد ذلك، أضف العلامات إلى قائمة. في هذا المثال:

*   `ListAppend3` يضيف `Tag1` إلى قائمة `LocalTag`.
*   `ListAppend4` يضيف `Tag2` إلى قائمة `LocalTag`.

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-11.webp" alt=""/>

3. بعد ملء القائمة بالعلامات اللازمة، استخدم إجراء العميل **SetTags** لإرسال هذه القائمة إلى Pushwoosh.

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-12.webp" alt=""/>

### SetUserId

يعيّن معرف مستخدم (User ID) مخصصًا لهذا الجهاز.

#### معلمات الإدخال

| UserID | نص، معرف مستخدم مخصص. |
| ------ | --------------------- |

#### معلمات الإخراج

| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

## إجراءات العميل لبريد Pushwoosh الوارد (Inbox)

عملية التعامل مع البريد الوارد (Inbox) هي كالتالي:

1.  حمّل قائمة بكائنات `InboxMessage`.
2.  استخدم هذه الكائنات لعرض واجهة البريد الوارد.
3.  قم بتنفيذ الإجراءات المذكورة أدناه، أو احذف هذه الكائنات باستخدام الإجراءات الموضحة أدناه.

| code | نص | المعرف الفريد لإشعار البريد الوارد. |
| ----------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| title | نص | عنوان الإشعار. |
| message | نص | رسالة الإشعار. |
| imageUrl | نص | عنوان URL لصورة مخصصة مرفقة بالإشعار. |
| sendDate | <p>تاريخ</p><p>وقت</p> | يمثل الوقت الذي تم فيه إرسال الإشعار. |
| type | عدد صحيح | <p>نوع الإشعار.</p><p>القيم الممكنة:</p><ul><li>0 - إشعار عادي</li><li>1 - إشعار وسائط غنية</li><li>2 - إشعار URL</li><li>3 - إشعار رابط عميق</li></ul> |
| bannerUrl | نص | يحتوي على عنوان URL لشعار Android. |
| customData | قائمة سجلات `Key`, `Value` | تحتوي على قائمة بالمعلمات التي تم تمريرها كبيانات مخصصة. |
| isRead | قيمة منطقية | `True` إذا تمت قراءة إشعار البريد الوارد. |
| isActionPerformed | قيمة منطقية | <ul><li><strong>`True`</strong> إذا تم تنفيذ إجراء الإشعار. </li><li>للإشعارات العادية، <strong>`true`</strong> إذا تمت قراءة الإشعار. </li><li>للوسائط الغنية، <strong>`true`</strong> إذا تم عرض الوسائط الغنية. </li><li>لعناوين URL والروابط العميقة، <strong>`true`</strong> إذا تم فتح عنوان URL/الرابط العميق.</li></ul> |

### LoadMessages

يجلب إشعارات البريد الوارد من Pushwoosh.

#### معلمات الإخراج

| InboxMessages | قائمة `InboxMessage`، قائمة بجميع رسائل البريد الوارد. |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success | تُرجع **`true`** إذا سار كل شيء كما هو متوقع، و**`false`** إذا كان هناك خطأ. |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### ReadMessage

يضع علامة "مقروء" على رسالة البريد الوارد.

#### معلمات الإدخال

| MessageCode | نص، رمز `InboxMessage` (يتم استلامه كمعلمة لـ `InboxMessage` في `LoadMessages`). |
| ----------- | ------------------------------------------------------------------------------------------ |

#### معلمات الإخراج

| Success | `True` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### PerformAction

ينفذ إجراءً لرسائل البريد الوارد المحددة (على سبيل المثال، فتح عنوان URL في متصفح).

#### معلمات الإدخال

| MessageCode | نص، رمز `InboxMessage` (يتم استلامه كمعلمة لـ `InboxMessage` في `LoadMessages`). |
| ----------- | ------------------------------------------------------------------------------------------ |

#### معلمات الإخراج

| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### DeleteMessage

يزيل رسالة من البريد الوارد.

#### معلمات الإدخال

| MessageCode | نص، رمز `InboxMessage` (يتم استلامه كمعلمة لـ `InboxMessage` في `LoadMessages`). |
| ----------- | ------------------------------------------------------------------------------------------ |

#### معلمات الإخراج

| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### TotalMessagesCount

يُرجع العدد الإجمالي لرسائل البريد الوارد.

#### معلمات الإخراج

| MessagesCount | عدد صحيح، العدد الإجمالي لرسائل البريد الوارد. |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### UnreadMessagesCount

يُرجع عدد رسائل البريد الوارد غير المقروءة.

#### معلمات الإخراج

| UnreadMessagesCount | عدد صحيح، عدد رسائل البريد الوارد غير المقروءة. |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |

### MessagesWithNoActionPerformedCount

يُرجع عدد رسائل البريد الوارد التي لم يتم تنفيذ أي إجراء عليها.

#### معلمات الإخراج

| MessagesWithNoActionPerformedCount | عدد صحيح، عدد رسائل البريد الوارد التي لم يتم تنفيذ أي إجراء عليها. |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success | تُرجع `true` إذا سار كل شيء كما هو متوقع، و`false` إذا كان هناك خطأ. |
| Error | خطأ يحتوي على رمز الخطأ ورسالة الخطأ مع تفاصيل حول أي خطأ قد يكون قد حدث. يتم تعيينه فقط عندما تكون قيمة معلمة الإخراج `Success` هي `false`. |