# استخدام قوالب Liquid

توسع قوالب Liquid بشكل كبير من إمكانيات التخصيص في Pushwoosh من خلال تنفيذ منطق متطور بالإضافة إلى استخدام [المحتوى الديناميكي](/ar/developer/guides/personalization/dynamic-content/) العادي.

يعتمد تخصيص الرسائل في Pushwoosh على [Tags (بيانات المستخدم)](/ar/developer/guides/audience-and-segmentation/tags/). يقدم Pushwoosh مجموعة متنوعة من [Tags الافتراضية](/ar/developer/guides/audience-and-segmentation/tags/#default-tags) و[Tags المخصصة](/ar/developer/guides/audience-and-segmentation/tags/#custom-tags). باستخدامها، يمكنك تحديد الاسم الأول للمستخدم، والمدينة، وسجل الشراء، وما إلى ذلك لإرسال رسالة أكثر تخصيصًا، على سبيل المثال: مرحبًا `{First_name}`، شكرًا لطلبك `{item}`.

تضيف قوالب Liquid المزيد من المنطق إلى المحتوى الديناميكي. على سبيل المثال، إذا كان Tag اشتراك المستخدم يحتوي على "free"، يمكنك إرسال رسالة لهم: "احصل على خصم 10%".

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

## الصيغة

تستخدم قوالب المحتوى المستندة إلى [Liquid by Shopify](https://shopify.github.io/liquid/) مزيجًا من [**tags**](/ar/developer/guides/personalization/liquid-templates/#tags) و[**objects**](/ar/developer/guides/personalization/liquid-templates/#objects) و[**filters**](/ar/developer/guides/personalization/liquid-templates/#filters) لتحميل المحتوى الديناميكي. تتيح لك قوالب المحتوى الوصول إلى متغيرات معينة من داخل القالب وإخراج بياناتها دون الحاجة إلى معرفة أي شيء عن البيانات نفسها.

<Aside type="note">
لمعرفة المزيد عن الصيغة، يرجى الرجوع إلى [توثيق Liquid](https://shopify.github.io/liquid/basics/introduction/).
</Aside>

### Objects

تحدد `objects` المحتوى الذي سيتم عرضه للمستخدم. يجب أن تكون `objects` محاطة بأقواس معقوفة مزدوجة: `{{ }}`

على سبيل المثال، عند تخصيص رسالة، أرسل `{{Name}}` في نصها لإضافة أسماء المستخدمين إلى محتوى الرسالة. سيحل اسم المستخدم (قيمة Name tag) محل كائن Liquid في الرسالة التي سيراها المستخدم.

<Tabs>
  <TabItem label="الإدخال">

```

مرحبًا {{Name}}! يسعدنا عودتك!

```

  </TabItem>

  <TabItem label="الإخراج">
    مرحبًا آنا! يسعدنا عودتك!
  </TabItem>
</Tabs>


### Tags

تنشئ `tags` المنطق وتدفق التحكم للقوالب. لا تنتج المحددات المئوية للأقواس المعقوفة `{%` و `%}` والنص الذي تحيط به أي إخراج مرئي عند عرض القالب. يتيح لك هذا تعيين متغيرات وإنشاء شروط أو حلقات دون إظهار أي من منطق Liquid للمستخدم.

على سبيل المثال، باستخدام `if` tag، يمكنك تغيير لغة الرسالة بناءً على اللغة المحددة على جهاز المستخدم:

<Tabs>
  <TabItem label="الإدخال">

```liquid
{% if Language == 'fr' %}
Salut!
{% else %}
Hello!
{% endif %}
````

  </TabItem>

  <TabItem label="الإخراج (fr)">
    Salut!
  </TabItem>

  <TabItem label="الإخراج (es)">
    Hello!
  </TabItem>
</Tabs>

### عوامل تشغيل Tags

<table data-header-hidden><thead><tr><th width="189.5" align="center">عامل التشغيل</th><th>الوصف</th></tr></thead><tbody><tr><td align="center"><code>==</code></td><td>يساوي</td></tr><tr><td align="center"><code>!=</code></td><td>لا يساوي</td></tr><tr><td align="center"><code>></code></td><td>أكبر من</td></tr><tr><td align="center"><code>&#x3C;</code></td><td>أصغر من</td></tr><tr><td align="center"><code>>=</code></td><td>أكبر من أو يساوي</td></tr><tr><td align="center"><code>&#x3C;=</code></td><td>أصغر من أو يساوي</td></tr><tr><td align="center"><code>or</code></td><td>أو المنطقية</td></tr><tr><td align="center"><code>and</code></td><td>و المنطقية</td></tr><tr><td align="center"><code>contains</code></td><td>يتحقق من وجود سلسلة فرعية داخل سلسلة نصية أو مصفوفة من السلاسل النصية</td></tr></tbody></table>

<Aside type="note">
في tags التي تحتوي على أكثر من عامل تشغيل `and` أو `or`، يتم فحص عوامل التشغيل بالترتيب _من اليمين إلى اليسار_. لا يمكنك تغيير ترتيب العمليات باستخدام الأقواس — الأقواس هي أحرف غير صالحة في Liquid وستمنع tags الخاصة بك من العمل.
</Aside>

### Filters

تعدل `filters` إخراج كائن أو متغير Liquid. يتم استخدامها داخل الأقواس المعقوفة المزدوجة `{{ }}` وتعيين المتغيرات، ويتم فصلها بحرف الأنبوب `|`. يمكن استخدام فلاتر متعددة على إخراج واحد، ويتم تطبيقها من اليسار إلى اليمين.


<Tabs>
<TabItem label="الإدخال">

```

{{ Name | capitalize | prepend:"Hello " }}

```

</TabItem>

<TabItem label="الإخراج">

Hello Anna

</TabItem>
</Tabs>

## استخدام قوالب Liquid في الرسائل المرسلة عبر API

استخدم صيغة Liquid في طلبات [`createMessage`](/ar/developer/api-reference/messages-api/#createmessage) لتنفيذ قوالب Liquid. تتوفر القوالب لمعلمة "content" في طلب `createMessage`، بالإضافة إلى أي معلمة أخرى تدعم المحتوى الديناميكي، على وجه الخصوص، معلمات "title" و "subtitle" و "image" الخاصة بالمنصة.

باستخدام قوالب المحتوى، يمكنك إما تحديد البيانات في طلبات API الخاصة بك (بتمرير معلمة "template\_bindings") أو الحصول على البيانات من قيم Tag المخزنة على أجهزة المستخدمين (بعدم استخدام معلمة "template\_bindings"). بهذه الطريقة، يمكنك بناء حملات إشعارات تستند إلى المستخدم تحتوي على محتوى وثيق الصلة للغاية.

<Aside type="note">
يرجى ملاحظة أنه على عكس المحتوى الديناميكي، يجب أن تكون المتغيرات في القوالب محاطة بأقواس معقوفة مزدوجة على النحو التالي: `{{myVariable}}`.
</Aside>

لتعريف منطق القالب باستخدام Tags التي تحتوي على مسافات في أسمائها، استخدم التقنية التالية:

**مثال**

```
{% capture my_tag %}{{My Tag}}{% endcapture %}
{% if my_tag == 'value' %}
المحتوى الذي سيتم إرساله في هذه الحالة
{% else %}
المحتوى الذي سيتم إرساله في حالة أخرى
{% endif %}
```
## حالات استخدام قوالب Liquid

ستجد هنا العديد من حالات الاستخدام التي تكون فيها قوالب Liquid مفيدة.

### إشعارات متعددة اللغات

تجعل قوالب Liquid من الممكن تحديد اللغة التي يجب أن يتلقى بها المستخدمون رسائل الإشعارات الخاصة بك بشكل قاطع. انظر إلى المثال البسيط لطلب API والرسالة المستلمة اعتمادًا على روابط القالب المستخدمة في الطلب.


<Tabs>
<TabItem label="إدخال Liquid">

```

{% if Language == 'es' %}
¡Hola!
{% else %}
Hello!
{% endif %}

````

</TabItem>

<TabItem label="طلب API">

```javascript
{
  "request": {
    "application": "XXXXX-XXXXX", // رمز تطبيق Pushwoosh
    "auth": "yxoPUlw.....IyEX4H", // رمز الوصول إلى API من لوحة تحكم Pushwoosh
    "notifications" : [ // معلمات رسالة الإشعار
      {
       "content": "{% raw %}
{% if language == 'es' %}¡Hola!{% else %}hello!{% endif %}
{% endraw %}",
        "template_bindings": { // اختياري. عند عدم تمرير template_bindings في الطلب، يتم استخدام قيم Tag من الجهاز.
         "language" : "es"
        }
      }
    ]
  }
}
````

</TabItem>

<TabItem label="الإخراج">

**إذا كانت اللغة 'es'**:
¡Hola!

**إذا كانت اللغة 'en'**:
Hello!

</TabItem>
</Tabs>


### طلب ترقية الاشتراك

شجع عملائك على ترقية اشتراكهم بناءً على خطتهم الحالية.

<Tabs>
  <TabItem label="إدخال Liquid">

```

{% if Subscription == 'Basic' %}
    قم بالترقية إلى الخطة الفضية للحصول على المزيد من ميزات المنتج ودعم على مدار الساعة طوال أيام الأسبوع.
{% elsif Subscription == 'Silver' %}
    قم بالترقية إلى الخطة الذهبية للحصول على دعم ذي أولوية وميزات متقدمة.
{% else %}
    يرجى الاتصال بمديرك لتجديد اشتراكك.
{% endif %}

````

</TabItem>

<TabItem label="طلب API">

```json
{
  "request": {
    "application": "XXXXX-XXXXX", // رمز تطبيق Pushwoosh
    "auth": "yxoPUlw.....IyEX4H", // رمز الوصول إلى API من لوحة تحكم Pushwoosh
    "notifications" : [ // معلمات رسالة الإشعار
      {
       "content": "{% raw %}
{% if Subscription == 'Basic' %}Upgrade to Silver for getting more product features and 24/7 support.{% elsif Subscription == 'Silver' %}Upgrade to Gold for priority support and advanced features.{% else %}Please contact your manager to renew your subscription. {% endif %}
{% endraw %}",
        "template_bindings": { // اختياري. عند عدم تمرير template_bindings في الطلب، يتم استخدام قيم Tag من الجهاز.
         "language" : "es"
        }
      }
    ]
  }
}
````

  </TabItem>

  <TabItem label="الإخراج">

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

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

**للمستخدمين الذين لديهم خطط أخرى:**
يرجى الاتصال بمديرك لتجديد اشتراكك.

  </TabItem>
</Tabs>


### Tags من نوع قائمة

تعتبر قوالب المحتوى مفيدة جدًا للتعامل مع Tags من نوع القائمة.

#### حجم متغير

إحدى حالات الاستخدام الممكنة هي تقديم محتوى مختلف اعتمادًا على عدد القيم التي يحتوي عليها Tag. على سبيل المثال، يمكنك تقديم خصومات مختلفة للعملاء ذوي السلوكيات المختلفة. لنفترض أن العميل لديه بعض العناصر في قائمة أمنياته — شجعه على الشراء بالخصم الأنسب بناءً على عدد المنتجات التي سيشتريها!


<Tabs>
<TabItem label="إدخال Liquid">

```

{% if WishList.size >= 3 %}
احصل على خصم 20% على عملية الشراء التالية!
{% elsif WishList.size == 2 %}
احصل على خصم 10% على عملية الشراء التالية!
{% else %}
مرحبًا، ألق نظرة على الملابس الخارجية الجديدة!
{% endif %}

````

</TabItem>

<TabItem label="طلب API">

```javascript
{
  "request": {
    "application": "XXXXX-XXXXX", // رمز تطبيق Pushwoosh
    "auth": "yxoPUlw.....IyEX4H", // رمز الوصول إلى API من لوحة تحكم Pushwoosh
    "notifications" : [ // معلمات رسالة الإشعار
      {
       "content": "{% raw %}
{% if WishList.size >= 3 %}Get 20% off your next purchase!{% elsif WishList.size == 2 %}Get a 10% discount on your next purchase!{% else %}Hey, take a look at new outwears!{% endif %}
{% endraw %}",
        "template_bindings": {
         "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"]
        }
      }
    ]
  }
}
````

</TabItem>

<TabItem label="حجم قائمة الأمنيات ≥ 3">

<img src="/personalization-liquid-templates-1.webp" alt="معاينة البريد الإلكتروني مع حجم قائمة أمنيات أكبر من أو يساوي 3" width="200"/>

</TabItem>

<TabItem label="حجم قائمة الأمنيات = 2">

<img src="/personalization-liquid-templates-2.webp" alt="معاينة البريد الإلكتروني مع حجم قائمة أمنيات يساوي 2" width="200"/>

</TabItem>
</Tabs>

#### المتغير يحتوي على

حالة أخرى قد تحتاج إلى تغطيتها هي التعامل مع قيم List Tags وتقديم المحتوى الأكثر صلة بناءً على القيم التي يحتوي عليها Tag.

<Tabs>
<TabItem label="إدخال Liquid">

```

{% if WishList contains 'Skinny Low Ankle Jeans' %}
احصل على خصم 20% على المنتجات في قائمة أمنياتك!
{% else %}
مرحبًا، ألق نظرة على بنطال Skinny Low Ankle Jeans الجديد كليًا!
{% endif %}

````

</TabItem>

<TabItem label="طلب API">

```javascript
{
  "request": {
    "application": "C90C0-0E786",
    "auth": "yxoPUlw.....IyEX4H", // رمز الوصول إلى API من لوحة تحكم Pushwoosh
    "notifications" : [ // معلمات رسالة الإشعار
      {
       "content": "{% raw %}
{% if WishList contains 'Skinny Low Ankle Jeans' %}Get 20% off your next purchase!{% else %}Hey, take a look at the brand new Skinny Low Ankle Jeans!{% endif %}
{% endraw %}",
        "template_bindings": {
         "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"]
        }
      }
    ]
  }
}
````

</TabItem>

<TabItem label="المتغير يحتوي على بيانات">

<img src="/personalization-liquid-templates-3.webp" alt="قالب مخصص مع بيانات" width="200"/>

</TabItem>

<TabItem label="المتغير لا يحتوي على بيانات">

<img src="/personalization-liquid-templates-4.webp" alt="عرض احتياطي عند فقدان البيانات" width="200"/>

</TabItem>
</Tabs>


### صيغ الجمع

باستخدام قوالب المحتوى، يمكنك تعديل محتوى الرسالة وفقًا لسلوك المستخدمين. على سبيل المثال، يمكنك تعديل نص الرسالة ليحتوي على كلمات بصيغة الجمع في حال كان List Tag يحتوي على أكثر من قيمة واحدة.


<Tabs>
<TabItem label="إدخال Liquid">

```
    احصل على خصم 20% على العنصر
{% if WishList.size > 1 %}
    ات في قائمة أمنياتك!
{% else %}
     في قائمة أمنياتك!
{% endif %}

````

</TabItem>

<TabItem label="طلب API">

```javascript
{
  "request": {
    "application": "C90C0-0E786",
    "auth": "yxoPUlw.....IyEX4H", // رمز الوصول إلى API من لوحة تحكم Pushwoosh
    "notifications" : [ // معلمات رسالة الإشعار
      {
       "content": "Get 20% off item{% raw %}
{% if WishList.size > 1 %}s in your WishList!{% else %} in your Wishlist!{% endif %}
{% endraw %}",
        "template_bindings": { // اختياري. عند عدم تمرير template_bindings في الطلب، يتم استخدام قيم Tag من الجهاز.
         "WishList" : ["Skinny Low Ankle Jeans", "Linen Trenchcoat", "High Waisted Denim Skirt", "Strappy Tiered Maxi Dress"]
        }
      }
    ]
  }
}
````

</TabItem>

<TabItem label="صيغة الجمع">

<img src="/personalization-liquid-templates-5.webp" alt="مثال على قالب بصيغة الجمع" width="200"/>

</TabItem>

<TabItem label="صيغة المفرد">

<img src="/personalization-liquid-templates-6.webp" alt="مثال على قالب بصيغة المفرد" width="200"/>

</TabItem>
</Tabs>

### المنطقة الزمنية

يقوم قالب المناطق الزمنية بتحويل التاريخ والوقت وفقًا للمنطقة الزمنية المحددة.

<Tabs>
<TabItem label="إدخال Liquid">
```
{{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}
```
</TabItem>

<TabItem label="طلب API">
```javascript title="مثال"
{
  "request" : {
    "auth" : "3H9bk8w3.....Acge2RbupTB", // رمز الوصول إلى API من لوحة تحكم Pushwoosh
    "application" : "XXXXX-XXXXX", // رمز تطبيق Pushwoosh
    "notifications" : [ // معلمات رسالة الإشعار
      {
        "content": "Current Date: {{ MyDate | timezone: MyTimezone | date: \"%Y-%m-%d %H:%M\" }}",
        "template_bindings": { // اختياري. عند عدم تمرير template_bindings في الطلب، يتم استخدام قيم Tag من الجهاز.
         "MyDate" : "2019-07-23 15:00",
         "MyTimezone" : "Asia/Dubai"
        }
      }
    ]
  }
}
```
</TabItem>
<TabItem label="الإخراج"> <img src="/personalization-liquid-templates-7.webp" alt="إخراج تاريخ مخصص في إشعار الدفع" width="200"/>
</TabItem>
</Tabs>


## المحتوى المتصل (Connected content)

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

#### حالات الاستخدام الرئيسية

- **توصيات المنتجات**: عرض قوائم منتجات مخصصة مصممة لكل مستخدم.

- **رموز الترويج**: إدراج رموز ترويجية فريدة تم إنشاؤها بواسطة خدمة خلفية.

#### المتطلبات الأساسية

* لاستخدام المحتوى المتصل، يجب أن يكون لديك خدمة خلفية خاصة بك تقوم بإنشاء وتوفير البيانات المطلوبة (مثل رموز الترويج، توصيات المنتجات) بناءً على **User ID أو HWID أو custom tags**. يقوم Pushwoosh بعد ذلك بجلب هذه البيانات قبل إرسال الرسالة.

### دليل التنفيذ خطوة بخطوة


#### الخطوة 1. إعداد الخدمة الخلفية

يجب أن تقوم الخدمة الخلفية بما يلي:

* قبول طلب يحتوي على معلمات خاصة بالمستخدم (مثل `userId`). يدعم المحتوى المتصل `UserID` أو `HWID` أو أي custom tags قمت بإعدادها في مشروعك.
* إرجاع استجابة JSON بالبيانات المطلوبة. يمكن بعد ذلك إدراج هذا المحتوى ديناميكيًا في الرسائل.

<Aside type="note" title="كيف يعمل">

تعمل الخدمة الخلفية كمزود بيانات، حيث تستجيب لطلبات HTTP بمعلومات خاصة بالمستخدم.

1. يرسل Pushwoosh طلبًا إلى الواجهة الخلفية الخاصة بك، ويمرر معرفات خاصة بالمستخدم كمعلمات استعلام.
2. تعالج الواجهة الخلفية الخاصة بك الطلب وتسترد البيانات المطلوبة.
3. تعيد الواجهة الخلفية الخاصة بك استجابة JSON.
4. قبل إرسال رسالة، يجلب Pushwoosh استجابة JSON من خدمة الواجهة الخلفية ويستخدم القيم المرتجعة (على سبيل المثال، `code`) في محتوى الرسالة ديناميكيًا.

**مثال على الاستجابة**

```
{ "code": "SPECIALOFFERFORUSER12345" }
```
</Aside>



#### الخطوة 2. إنشاء إعداد مسبق (Preset) مع محتوى متصل في Pushwoosh

1. في [محرر محتوى الإشعارات](/ar/product/content/push-presets/) أو [محرر محتوى البريد الإلكتروني](/ar/product/content/email-content/drag-and-drop-email-editor/)، أدخل صيغة المحتوى المتصل في حقل الرسالة.

**مثال**

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :save result %}
```
**تفصيل الصيغة**
|  |  |
| ----- | ----- |
| `connected_content` | يجلب بيانات JSON من عنوان URL الخلفي المحدد. |
|    `http://your-backend-url.com` | نقطة النهاية الخلفية التي تعيد البيانات المطلوبة بتنسيق JSON. |
| `userId={{ ${userid} }}` | معلمة استعلام ديناميكية تمرر معرف المستخدم إلى الواجهة الخلفية. |
| `:save result` | يخزن استجابة JSON التي تم جلبها في متغير `result` لاستخدامه في قوالب Liquid. |

![أدخل صيغة المحتوى المتصل](/connectedcontent.webp)

**المصادقة (اختياري)**

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

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}&auth=YOUR_API_KEY :save result %}
```

يمكنك أيضًا إرسال بيانات المصادقة (أو أي بيانات أخرى) كرؤوس HTTP باستخدام المعلمة الاختيارية `:headers` — وهي كائن JSON لأسماء وقيم الرؤوس.

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :headers {"Authorization": "Bearer YOUR_TOKEN", "X-Api-Key": "YOUR_API_KEY"} :save result %}
```
|  |  |
| ----- | ----- |
| `:headers {...}` | كائن JSON لرؤوس HTTP المرسلة مع الطلب، على سبيل المثال `Authorization: Bearer <token>`. |

<Aside type="caution" title="قيم ثابتة فقط">
تعمل متغيرات التخصيص `${}` فقط داخل عنوان URL. القيم داخل `:headers` ثابتة ولا يتم استيفاؤها.
</Aside>

**استخدام tags في المحتوى المتصل**

لتضمين custom tags، أدخلها كمعلمات استعلام في طلب **المحتوى المتصل** (`{{ tag_name }}`).

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}{{ Language }} :save result %}
```

2. بعد ذلك، أضف نص الرسالة الذي يتضمن **البيانات المستردة**، مثل هذا:

```

مرحبًا، {{userid}}، احصل على رمز الترويج الشخصي الخاص بك - {{result.code}}
```

![أضف نص الرسالة مع **البيانات المستردة**](/connectedcontent-1.webp)

3. بعد الانتهاء من محتوى الرسالة وتكوين إعدادات الإعداد المسبق، احفظه لإعادة استخدامه في الحملات.

<video src="/connectedcontent-2.webm" title="إرسال رسالة بمحتوى متصل" autoplay loop muted playsinline />

#### الخطوة 3. إرسال رسالة باستخدام الإعداد المسبق الذي تم تكوينه

أرسل رسالة باستخدام هذا الإعداد المسبق باستخدام [نموذج الإشعارات لمرة واحدة](/ar/product/messaging-channels/push-notifications/send-push-notifications/one-time-push/#how-to-send-a-push-notification-using-the-one-time-push-form) أو [نموذج البريد الإلكتروني](/ar/product/messaging-channels/emails/send-email/#how-to-send-a-one-time-email) أو [رحلة العميل](/ar/product/customer-journey/pushwoosh-journey-overview/).

<Aside type="caution" title="هام">
إذا أعادت الخدمة حالة غير HTTP 200 OK، فلن يتم إرسال البريد الإلكتروني أو الإشعار. هذا يضمن أن اتصالك يخرج فقط إذا تم استرداد البيانات اللازمة بنجاح.
</Aside>