# استخدام بيانات استجابة webhook في رحلتك

## نظرة عامة

عندما تقوم بـ [ربط القيم من استجابة webhook](/ar/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables)، يقوم Pushwoosh بتخزينها كمتغيرات يمكنك استخدامها لاحقًا في الرحلة، في أي مكان تستخدم فيه [سمة Event](/ar/product/audience-data-and-segmentation/events/#2-set-attributes).

<Aside type="note">
لإضافة عنصر **Webhook** وتكوين **Response mapping**، راجع [Webhook](/ar/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables).
</Aside>

## حفظ قيمة webhook كـ Tag باستخدام Update user profile

يمكن لـ [**Webhook**](/ar/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) إرجاع بيانات من نظام خارجي، مثل معرف مستخدم CRM أو حالة الاشتراك، التي لا يخزنها Pushwoosh في ملف تعريف المستخدم بعد. يقوم [**Update user profile**](/ar/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response) بحفظ القيم المربوطة كـ [Tags](/ar/product/audience-data-and-segmentation/user-data-tags/tags/) حتى تتمكن من استخدامها في [الشرائح (segments)](/ar/product/audience-data-and-segmentation/segmentation/)، و[المحتوى الديناميكي (dynamic content)](/ar/product/personalization/dynamic-content/)، وخطوات الرحلة اللاحقة.

### مثال: حفظ معرف مستخدم CRM كـ Tag

يقوم مستخدم جديد بالتسجيل في تطبيقك، وتقوم الرحلة بإنشاء سجل مطابق في CRM الخاص بك. يتيح لك حفظ معرف مستخدم CRM المرتجع كـ Tag الرجوع إلى نفس سجل CRM أو تحديثه لاحقًا، على سبيل المثال من رحلة أخرى أو استدعاء Webhook للمتابعة، بدلاً من إنشاء سجل مكرر في كل مرة يعود فيها المستخدم إلى الرحلة.

**تدفق الرحلة:** Trigger-based Entry → Webhook → Update user profile → Exit

1.  أنشئ رحلة باستخدام **Trigger-based Entry** على حدث `SignUp`.
2.  أضف عنصر **Webhook** بعد خطوة الدخول. قم بتسميته (على سبيل المثال، `Create user in CRM`) وقم بتعيين عنوان URL للطلب إلى نقطة نهاية إنشاء المستخدم في CRM الخاص بك.
3.  في **Response mapping**، قم بتعيين **Path** إلى حقل المعرف في الاستجابة (على سبيل المثال، `data.user.id`) و **Attribute** إلى `crm_user_id`.

<img src="/journey-elements-webhook-response-data-1.webp" alt="ربط استجابة Webhook مع مسار data.user.id والخاصية crm_user_id" />

4.  أضف عنصر **Update user profile** بعد خطوة **Webhook**.

5.  في **Dynamic Tag Value**، انقر فوق **+ Dynamic Value**. في **Tag**، حدد الـ Tag الذي يخزن معرف CRM (أنشئه مسبقًا إذا لزم الأمر). في **Event**، حدد خطوة webhook بالاسم الذي أعطيته لها (`Create user in CRM`). في **Dynamic Value**، حدد `crm_user_id`.
<img src="/journey-elements-webhook-response-data-2.webp" alt="قيمة Tag ديناميكية مع Tag لمعرف CRM، وخطوة Event Webhook، وقيمة ديناميكية crm_user_id" />
6.  أضف **Exit** في نهاية الفرع.
<img src="/journey-elements-webhook-response-data-3.webp" alt="فرع الرحلة ينتهي بـ Exit بعد خطوة Update user profile" />

<Aside type="caution">
إذا كانت قيمة webhook مفقودة لمستخدم ما (لم تكن الاستجابة JSON، أو لم يتم حل **Path**، أو فشل الاستدعاء)، يتخطى Pushwoosh تحديث ذلك الـ Tag. يحتفظ الـ Tag بقيمته السابقة أو يبقى غير معين، وتستمر الرحلة دون أي خطأ في هذه الخطوة. قم بتشغيل [**Test webhook**](/ar/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) قبل الإطلاق لتأكيد الربط الخاص بك. [اعرف المزيد](/ar/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response).
</Aside>

## جدولة تأخير من قيمة webhook باستخدام Time Delay

غالبًا ما تكون تواريخ الزيارة، ومواعيد التجديد النهائية، وفترات التسليم موجودة في نظام حجز أو فوترة خارجي. بعد أن يقوم [**Webhook**](/ar/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) بربط التاريخ من استجابة API، يمكن لـ [**Time Delay**](/ar/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response) إيقاف الرحلة مؤقتًا حتى تلك اللحظة، على سبيل المثال قبل يومين من الموعد، حتى يتم إرسال الرسالة التالية في الوقت المحدد.

### مثال: جدولة تذكير من تاريخ في الاستجابة

يقوم مستخدم بحجز موعد في تطبيقك. تجلب الرحلة تاريخ الزيارة من نظام الحجز الخاص بك وترسل تذكيرًا عبر إشعار فوري (push) قبل يومين من الزيارة.

1.  أنشئ رحلة باستخدام **Trigger-based Entry** على حدث `AppointmentBooked`.
2.  أضف عنصر **Webhook** بعد خطوة الدخول. قم بتسميته (على سبيل المثال، `Get appointment details`) وقم بتعيين عنوان URL للطلب إلى API نظام الحجز الخاص بك.
3.  في **Response mapping**، قم بتعيين **Path** إلى حقل التاريخ في الاستجابة (على سبيل المثال، `appointment.date`) و **Attribute** إلى `visit_date`.
<img src="/journey-elements-webhook-response-data-4.webp" alt="خطوة Webhook مع ربط الاستجابة لـ appointment.date إلى visit_date" />
4.  أضف عنصر **Time Delay** بعد خطوة **Webhook**. حدد **Based on user/event data**، وقم بتعيين **Get date from** إلى **Event**، وقم بتعيين **Event** إلى خطوة webhook بالاسم الذي أعطيته لها (`Get appointment details`)، وقم بتعيين **Event value** إلى `visit_date`، وقم بتعيين التأخير إلى **Before** `2` **Days**.
<img src="/journey-elements-webhook-response-data-5.webp" alt="تكوين Time Delay من webhook visit_date مع إزاحة Before 2 Days" />
5.  إذا كان بإمكان المستخدمين الحجز قبل أقل من يومين من الزيارة، فقم بتمكين **Split to branches if the date's in the past or date is empty** على عنصر **Time Delay**. يؤدي هذا إلى إنشاء فرعين، **In the past** و **In the future**. راجع [تقسيم الفروع عندما يكون التاريخ في الماضي أو فارغًا](/ar/product/customer-journey/journey-elements/flow-controls/time-delay/#split-branches-when-the-date-is-in-the-past-or-empty).
6.  أضف خطوة **Push** مع رسالة التذكير الخاصة بك. إذا تم تمكين التقسيم، أضف هذا الـ **Push** في كلا الفرعين: **In the past** (إرسال فوري) و **In the future** (بعد **Time Delay**).
7.  أضف **Exit** في نهاية كل فرع.
<img src="/journey-elements-webhook-response-data-6.webp" alt="تقسيم Time Delay إلى فرعي In the past و In the future، كل منهما يحتوي على خطوات Push و Exit" />

<Aside type="caution">
إذا كانت القيمة المربوطة مفقودة أو ليست تاريخًا صالحًا، يخرج المستخدم من الرحلة مع وجود خطأ في هذه الخطوة.

إذا كانت الزيارة أقرب من يومين، فإن الهدف **Before** `2` **Days** يكون بالفعل في الماضي عندما يصل المستخدم إلى **Time Delay**، ويغادر المستخدم الرحلة دون أي خطأ ودون أي تذكير ما لم تقم بتمكين **Split to branches if the date's in the past or date is empty**.

على عكس [**Update user profile**](/ar/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response)، الذي يترك الـ Tag دون تغيير ويستمر، فإن **Time Delay** يوقف المستخدم عندما يكون التاريخ مفقودًا أو غير صالح أو في الماضي (بدون تقسيم الفروع).
تأكد من أن webhook الخاص بك يعيد تاريخًا بشكل موثوق به بتنسيق [مدعوم](/ar/product/customer-journey/journey-elements/flow-controls/time-delay/#delay-based-on-user-or-event-data). قم بتشغيل [**Test webhook**](/ar/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) قبل الإطلاق. [اعرف المزيد](/ar/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response).
</Aside>

## أشياء يجب أخذها في الاعتبار

*   **صيغة المسار (Path syntax):** استخدم مسارًا مفصولًا بنقاط (على سبيل المثال، `data.user.id`). لا يتم دعم أحرف البدل والفلاتر. راجع [ربط استجابة Webhook](/ar/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) للحصول على التفاصيل.
*   **حجم الاستجابة:** لا تتم معالجة الاستجابات التي يزيد حجمها عن 64 كيلوبايت للربط.
*   **الاختبار:** قم بتشغيل [**Test webhook**](/ar/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) في عنصر **Webhook** قبل استخدام القيم المربوطة في رحلة حية.