> ## Documentation Index
> Fetch the complete documentation index at: https://knowledge.flowella.io/llms.txt
> Use this file to discover all available pages before exploring further.

# خطافات الويب

> قم بتكوين خطافات الويب الصادرة من الإعدادات → خطافات الويب: عناوين URL لنقطة النهاية، وأسرار التوقيع، واشتراكات الأحداث، وإعادة المحاولات، وسجلات التسليم.

<Frame>
  <img src="https://mintcdn.com/flowella/PuGNWwHHg6Nlq3MM/images/Screenshots/flowella-webhooks.png?fit=max&auto=format&n=PuGNWwHHg6Nlq3MM&q=85&s=6b4378754549ac127c02626ed49d468d" alt="Flowella outbound webhooks" width="2774" height="1686" data-path="images/Screenshots/flowella-webhooks.png" />
</Frame>

تتيح خدمة Webhooks لموقع Flowella إرسال الأحداث إلى أنظمتك الخاصة في الوقت الفعلي — على سبيل المثال، إخطار بريدك الإلكتروني CRM عند تسليم رسالة عبر WhatsApp ، أو بدء مهمة في الخلفية عند فشل مزامنة نموذج عبر HubSpot . تتناول هذه الصفحة شاشة **الإعدادات → Webhooks** داخل التطبيق.

للاطلاع على مخططات الحمولة لكل حدث، راجع [مرجع Webhooks](/ar/api-reference/webhooks).

## من يمكنه إدارة Webhooks

لا يمكن إلا لأدوار **المالك** و**المسؤول** رؤية الإعدادات → Webhooks. لا تتمتع الأدوار الأخرى بحق الوصول.

## إضافة نقطة نهاية webhook

<Steps>
  <Step title="افتح الإعدادات → خطاف الويب">
    من شريط التنقل الأيسر، انتقل إلى **الإعدادات → Webhooks**.
  </Step>

  <Step title="انقر فوق إضافة نقطة نهاية">
    أدخل عنوان URL العام لـ HTTPS الذي يجب أن ترسل إليه Flowella الأحداث. لا يُقبل HTTP (بدون TLS).
  </Step>

  <Step title="اختر الأحداث التي تريد الاشتراك فيها">
    اختر نوعًا واحدًا أو أكثر من أنواع الأحداث — على سبيل المثال،`message.delivered` ،`template.approved` ،`flow.sync.failed` . توجد قائمة الأحداث الكاملة في [مرجع Webhooks](/ar/api-reference/webhooks). يمكنك الاشتراك في جميع الأحداث باستخدام مربع اختيار واحد.
  </Step>

  <Step title="نسخ سر التوقيع">
    Flowella يعرض سر التوقيع **مرة واحدة** في نهاية عملية الإنشاء. احفظه في مخزن آمن — ستستخدمه للتحقق من توقيع HMAC في كل طلب وارد.
  </Step>

  <Step title="إرسال حدث اختبار">
    استخدم زر **إرسال اختبار** لإطلاق حدث اصطناعي في نقطة النهاية الخاصة بك. يسجل سجل التسليم النتيجة حتى تتمكن من التأكد من أن المعالج الخاص بك موصول قبل بدء التشغيل.
  </Step>
</Steps>

## التوقيع والتحقق

يتضمن كل طلب webhook رأس "`X-Flowella-Signature` " مع توقيع HMAC-SHA256 لنص الطلب الخام، محسوبًا باستخدام سر التوقيع الخاص بنقطة النهاية الخاصة بك. تحقق منه قبل الوثوق بالحمولة:

<CodeGroup>
  ```js Node.js theme={null}
  import crypto from "crypto";

  function verify(rawBody, signature, secret) {
    const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
    return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
  }
  ```

  ```python Python theme={null}
  import hmac, hashlib

  def verify(raw_body: bytes, signature: str, secret: str) -> bool:
      expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
      return hmac.compare_digest(expected, signature)
  ```

  ```ruby Ruby theme={null}
  require "openssl"

  def verify(raw_body, signature, secret)
    expected = OpenSSL::HMAC.hexdigest("sha256", secret, raw_body)
    Rack::Utils.secure_compare(expected, signature)
  end
  ```

  ```php PHP theme={null}
  function verify(string $rawBody, string $signature, string $secret): bool {
      $expected = hash_hmac('sha256', $rawBody, $secret);
      return hash_equals($expected, $signature);
  }
  ```
</CodeGroup>

يتضمن الطلب أيضًا:

-`X-Flowella-Timestamp` — الطابع الزمني لنظام Unix في وقت الإرسال. قم برفض الطلبات التي يكون الطابع الزمني فيها أكثر من 5 دقائق في الماضي أو المستقبل لمنع هجمات إعادة التشغيل. -`X-Flowella-Event` — نوع الحدث (على سبيل المثال،`message.delivered` ). -`X-Flowella-Delivery` — معرف تسليم فريد، مفيد لإزالة التكرار.

## المحاولات المتكررة والتراجع

إذا عادت نقطة النهاية الخاصة بك برمز حالة غير 2xx (أو انتهت مهلة الانتظار بعد 10 ثوانٍ)، فإن Flowella تعيد المحاولة مع تراجع أسي:

| المحاولة   | التأخير بعد السابقة |
| ---------- | ------------------- |
| 1 (أولية)  | —                   |
| 2          | 30 ثانية            |
| 3          | دقيقتان             |
| 4          | 10 دقائق            |
| 5          | ساعة واحدة          |
| 6          | 6 ساعات             |
| 7 (نهائية) | 24 ساعة             |

بعد 7 محاولات فاشلة، يتم وضع علامة **فشل** على التسليم ويتم إسقاطه. **لا** يتم تعطيل نقطة النهاية تلقائيًا — لا يزال بإمكانك تلقي الأحداث المستقبلية على نفس نقطة النهاية.

إذا فشلت 100 عملية تسليم متتالية، يقوم Flowella **بإيقاف** نقطة النهاية تلقائيًا وإرسال إشعار`WEBHOOK_PAUSED` . استأنفها من قائمة الصف بعد إصلاح المشكلة الأساسية.

## سجل التسليم

يتوسع كل صف من صفوف نقاط النهاية ليظهر سجل التسليم الذي يعرض محاولات الأيام السبعة الأخيرة:

* **نوع الحدث ومعرفه**
* **الحالة** — ناجح، فاشل، إعادة المحاولة
* **رقم المحاولة**
* **رمز الاستجابة ومدتها**
* **نص الاستجابة** (أول 1 كيلوبايت)
* **تم الإرسال في**

انقر فوق أي عملية تسليم لعرض الطلب والاستجابة بالكامل، أو **إعادة التسليم** يدويًا.

## إدارة نقاط النهاية

من قائمة صف نقطة النهاية، يمكنك:

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

## الأسئلة الشائعة

<AccordionGroup>
  <Accordion title="هل يمكنني الحصول على أكثر من نقطة نهاية واحدة؟">
    نعم — لا يوجد حد أقصى. تمتلك معظم المؤسسات 1–3 نقاط نهاية (الإنتاج، والتجهيز، ومستودع سجل داخلي). حافظ على عدد منخفض حتى يتم توزيع الأحداث بشكل متوقع.
  </Accordion>

  <Accordion title="ما الفرق بين خطافات الويب وواجهة برمجة التطبيقات (API)؟">
    واجهة برمجة التطبيقات (API) هي **سحب** — يطلب كودك من Flowella الحالة. أما Webhooks فهي **دفع** — حيث يُعلم Flowella كودك عند تغير الحالة. استخدم Webhooks لأي شيء كنت ستقوم باستقصائه بطريقة أخرى.
  </Accordion>

  <Accordion title="هل تتضمن خطافات الويب بيانات حساسة؟">
    تتضمن حمولات Webhook معرّفات المحادثة وأرقام هواتف الاتصال ومحتوى الرسائل وأسماء القوالب. تعامل مع السر وعنوان URL لنقطة النهاية على أنهما حساسان. قم بتقييد نقطة النهاية الخاصة بك لقبول POST من نطاق IP الخاص بـ Flowella إذا كانت البنية التحتية الخاصة بك تسمح بذلك.
  </Accordion>

  <Accordion title="كيف يمكنني اختبار خطاف الويب محليًا؟">
    استخدم أداة نفق (ngrok، Cloudflare Tunnel) لعرض نقطة النهاية الخاصة بـ localhost على عنوان URL HTTPS عام، ثم وجه **نقطة نهاية اختبار** إليها. لا تضع عنوان URL للنفق في نقطة النهاية الخاصة بالإنتاج — فهي تنتهي صلاحيتها.
  </Accordion>
</AccordionGroup>

## ذات صلة

<CardGroup cols={2}>
  <Card title="مرجع Webhooks" icon="webhook" href="/ar/api-reference/webhooks">
    أنواع الأحداث ومخططات الحمولة والرؤوس.
  </Card>

  <Card title="مفاتيح واجهة برمجة التطبيقات" icon="key" href="/ar/settings/api-keys">
    النصف الآخر من التكامل البرمجي.
  </Card>

  <Card title="مقدمة واجهة برمجة التطبيقات" icon="code" href="/ar/api-reference/introduction">
    الأخطاء وحدود المعدل وترقيم الصفحات.
  </Card>

  <Card title="أحداث الإخطار" icon="bell" href="/ar/app/notification-events">
    نفس الأحداث التي يتم تسليمها إلى موجز التطبيق والبريد الإلكتروني.
  </Card>
</CardGroup>
