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

# ساعات الصمت: بوابات القنوات على مستوى المؤسسة مقابل نافذة الحملة الاحتياطية

> اختر وضع ساعات الصمت لديك: بوابة القناة على مستوى المؤسسة، ونافذة الاستدعاء الاحتياطية للحملات (drip/journey)، وكيفية تفاعل المُقبضين لعمليات الإرسال العامة 1:1 وحركة الحملات.

# ساعات الصمت: بوابات القنوات على مستوى المؤسسة مقابل نافذة الحملة الاحتياطية

بوابة ساعات الصمت في Orbit مملوكة للمستأجر: كل ما في هذه الصفحة هو عنصر
تحكم **تُكوّنه بنفسك** (أو تختار إبقاءه معطّلاً). الاستثناء الوحيد هو
نافذة TCPA الفيدرالية للصوت للمستلمين الأمريكيين، والمشمولة في قسمها
الخاص أدناه. تفعيل ساعات الصمت قرارك أنت — لا يشترط CAN-SPAM ولا GDPR أي
شيء منها.

هذه الصفحة هي دليل المشغّل لتلك البوابة. ثلاث واجهات تُكوِّن وضعك:

1. **بوابة القناة على مستوى المؤسسة** — مفاتيح تبديل لكل قناة في إعدادات
   المؤسسة (`settings → quiet_hours.<channel>.enabled`)، تُكتب عبر
   `PUT /api/v1/settings/general` وتظهر في إعدادات المؤسسة على لوحة
   التحكم (انظر أيضاً [وضع الامتثال](/compliance/posture-overview)).
2. **نافذة الحملة الاحتياطية** — زوج بدء/انتهاء واحد على مستوى المؤسسة
   لإرسالات drip وjourney التي لا تحمل صف الحملة فيها نافذة صريحة. في
   لوحة التحكم: **الإعدادات → حدود الحملة → ساعات الصمت الافتراضية**؛
   عبر API: `GET`/`PUT /api/v1/campaigns/quiet-hours/settings`.
3. **نقطة نهاية المعاينة** — `GET /api/v1/compliance/quiet-hours/preview`،
   فحص للقراءة فقط يجيب على سؤال «هل يمر هذا الإرسال إلى هذا المستلم
   الآن؟». شغّلها قبل كل طرح؛ تُفصَّل في الدليل أدناه.

## النافذتان

| المُقبض                                                                   | يغطي                                                                                                   | مُكوَّن في                                                                                    |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
| بوابة القناة على مستوى المؤسسة (`organizations → settings → quiet_hours`) | كل إرسال على كل قناة تفعّلها: لوحة التحكم، API، التدفقات، إرسال الحملات                                | كتلة `quiet_hours` في إعدادات المؤسسة (انظر أدناه)                                            |
| نافذة الحملة الاحتياطية                                                   | إرسالات drip + journey فقط، وفقط عندما لا يحمل صف الحملة `quiet_hours_start` / `quiet_hours_end` خاصته | الإعدادات → حدود الحملة → ساعات الصمت الافتراضية، أو `campaigns/quiet-hours/settings` عبر API |

النافذة الاحتياطية للحملة هي بالضبط ما يقوله اسمها — احتياط، وليست
بوابة ثانية. ترتيب الحل لإرسال حملة: نافذة صف الحملة الخاص أولاً، ثم
احتياط المؤسسة، ثم الافتراضي للمنصة 21:00 → 09:00 (تستمر ساعات الصمت من
21:00 إلى 09:00 بالتوقيت المحلي للمستلم).

يمكن أن يختلف المُقبضان. إرسال تُرسله حملة يقيّم نافذة مسار الحملة
كطبقة واحدة؛ بوابة القناة على مستوى المؤسسة — عندما تكون قد فعّلت تلك
القناة — هي طبقة منفصلة تُقيَّم في موضع الإرسال. عامل بوابة المؤسسة كوضع
لحركة 1:1، والنافذة الاحتياطية للحملة كالنظام الافتراضي لحركة الجمهور
الكبير. الإرسال المحظور يُبلِغ عن `next_allowed_at` — خطط حول النافذة
بدلاً من إعادة المحاولة.

نوافذ الاحتياط التي يمكنك ضبطها في أي من الطبقتين يمكنها فقط **تضييق**
النطاق؛ لا توسّع أبداً بوابة قناة قمت بتفعيلها.

## بوابة القناة على مستوى المؤسسة لكل قناة

بوابة القناة اختيارية (opt-in) لكل قناة. كل إدخال لكل قناة يدعم:

| الحقل          | المعنى                                                                                                                            |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`      | ما إذا كانت البوابة تنطبق على هذه القناة. كل القنوات الافتراضي لها `false`.                                                       |
| `start_hour`   | ساعة البدء الشاملة بتنسيق 24 ساعة (0–23)، مثلاً `8` لـ 08:00 بالتوقيت المحلي للمستلم.                                             |
| `end_hour`     | ساعة الانتهاء الحصرية بتنسيق 24 ساعة (0–23)، مثلاً `21` لـ 21:00 بالتوقيت المحلي للمستلم. `start_hour > end_hour` هي نافذة ليلية. |
| `allowed_days` | قائمة اختيارية بأيام الأسبوع المسموح بها، `0` = الأحد … `6` = السبت. اتركها للسماح بكل يوم.                                       |

مفاتيح على مستوى المؤسسة (تنطبق على كل القنوات معاً):

| المفتاح                         | المعنى                                                                                                                                                   |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `default`                       | نافذة جزئية تملأ الحقول التي لم يضبطها إدخال لكل قناة.                                                                                                   |
| `unknown_timezone_policy`       | `skip` (الافتراضي) أو `enforce_utc` أو `deny` — انظر قسم المنطقة الزمنية أدناه.                                                                          |
| `consent_overrides_quiet_hours` | عندما تكون `true` (الافتراضي)، يعبر المستلم الذي لديه سجل موافقة صريحة البوابة — استثناء TCPA «prior express consent». يعمل على القنوات غير الصوتية فقط. |

### الوضع الافتراضي لكل قناة

ما لم تُفعِّل قناة، لا شيء يُحتَجَز. عندما تُفعِّل قناة دون تحديد ساعات،
تطبق ساعات المنصة:

| القنوات                                                        | النافذة الافتراضية (التوقيت المحلي للمستلم) |
| -------------------------------------------------------------- | ------------------------------------------- |
| `sms`, `mms`, `rcs`, `viber`, `telegram`, `voice`              | 08:00–21:00                                 |
| `whatsapp`, `instagram`, `messenger`, `apple_messages`, `line` | 09:00–21:00                                 |
| `email`, `fax`, `push`, `web_chat`                             | 08:00–21:00 عند التفعيل                     |

مجموعة القنوات الكاملة التي تقبلها البوابة: `sms`, `mms`, `whatsapp`,
`rcs`, `viber`, `telegram`, `voice`, `email`, `instagram`, `messenger`,
`line`, `apple_messages`, `fax`, `push`, `web_chat`.

### استثناءان يُبقيان حركة المرور الأساسية سارية

* **الموافقة الصريحة المسبقة** — مع ضبط
  `consent_overrides_quiet_hours` على `true` (الافتراضي)، يعبر المستلم
  الذي لديه سجل موافقة صريحة عبر أي قناة غير صوتية. الصوت لا يأخذ هذا
  الاستثناء أبداً.
* **مسار حركة المعاملات** — الإرسالات التي يوسمها المُتصِّل كمعاملات
  (OTP، التنبيهات، الإشعارات الحسابية) معفاة من البوابة حتى على قناة
  مفعّلة. الصوت لا يأخذ هذا الاستثناء أيضاً أبداً.

اضبط `consent_overrides_quiet_hours` على `false` فقط إذا كنت تريد
إرسالات متوقفة بلا استثناءات موافقة.

## نافذة الحملة الاحتياطية

أي مُتصِّل معتمَد يقرؤها؛ فقط المالك/المسؤول يكتبها.

اقرأ نافذة الاحتياط الحالية:

```bash theme={null}
curl https://api.orbit.devotel.io/api/v1/campaigns/quiet-hours/settings \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

```json theme={null}
{
  "enabled": false,
  "start_hour": null,
  "end_hour": null,
  "platform_default_start": 21,
  "platform_default_end": 9
}
```

`platform_default_start` / `platform_default_end` يُردِّدان الساعات التي
تستخدمها إرسالات drip وjourney عندما يكون التجاوز معطّلاً — ورِثها أو
استبدلها، الخيار لك. في لوحة التحكم هذا النموذج هو **الإعدادات → حدود
الحملة → ساعات الصمت الافتراضية**. اضبط نافذتك الخاصة (كلتا الساعتين
مطلوبتان عندما تكون `enabled` true):

```bash theme={null}
curl -X PUT https://api.orbit.devotel.io/api/v1/campaigns/quiet-hours/settings \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true, "start_hour": 22, "end_hour": 7 }'
```

امسح عائداً إلى الافتراضي للمنصة:

```bash theme={null}
curl -X PUT https://api.orbit.devotel.io/api/v1/campaigns/quiet-hours/settings \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": false }'
```

النوافذ الليلية (مثلاً بدء `22`، انتهاء `7`) مقبولة في كلتا الطبقتين —
زوج `start > end` يلفّ حول منتصف الليل.

## حل المنطقة الزمنية للمستلم

تعمل البوابة بالتوقيت *المحلي للمستلم*. يتبع حل المنطقة الزمنية هذه
السلسلة:

1. إشارة `recipientTimezone` صريحة من المُتصِّل، عند تقديمها.
2. رمز منطقة الولايات المتحدة → منطقة زمنية IANA، لأرقام +1.
3. رمز البلد E.164 → منطقة زمنية IANA تمثيلية (أوروبا، آسيا، الأمريكتين،
   والأسواق المشغّلة الشائعة).
4. لمستلمي البريد الإلكتروني، المنطقة الزمنية الافتراضية للمؤسسة.
5. عندما لا يحل أي مما سبق — `unknown_timezone_policy` للمؤسسة (قابل
   للتكوين أيضاً في لوحة التحكم عند **الإعدادات → الصوت**):

| السياسة                                                   | السلوك                                                                            |
| --------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `skip` (الافتراضي لكل قناة باستثناء صوت المستلم الأمريكي) | السماح — fail-open للمستلمين خارج الولاية القضائية الأمريكية.                     |
| `deny` (الافتراضي فقط لصوت المستلم الأمريكي)              | الحظر. يُرجع `422 QUIET_HOURS_TIMEZONE_UNKNOWN` (الصوت: `TCPA_TIMEZONE_UNKNOWN`). |
| `enforce_utc`                                             | التقييم ضد UTC — نافذة حتمية بغض النظر عن المستلم.                                |

إذا حل المستلم إلى منطقة زمنية، فإن حظر قناة مفعّلة عادي يُرجع
`422 QUIET_HOURS_BLOCKED` (الصوت: `TCPA_DIALING_WINDOW_BLOCKED`) مع
النافذة و`next_allowed_at` في تفاصيل الخطأ.

## استثناء TCPA الفيدرالي للصوت

صوت الحملة والمُطلِب للمستلمين **الأمريكيين** محظور بشدة خارج النافذة
الفيدرالية 08:00–21:00 بالتوقيت المحلي للمستلم — لا بوابة مؤسسة ولا
نافذة احتياط ولا علم موافقة يُخفِّفه، والمستلم الأمريكي الذي لا يمكن حل
منطقته الزمنية يُحظر fail-closed. هذا هو المُقبض الوحيد الذي تملكه
المنصة؛ ينطبق على صوت الحملة والمُطلِب فقط، وليس على المكالمات 1:1
المخصصة أو أي قناة مراسلة.

المستلمون غير الأمريكيين يتبعون القواعد العادية: سياسة `skip` fail-open
تنطبق على المستلمين خارج الولاية القضائية الأمريكية، وبوابة قناة الصوت
الخاصة بك (إذا فُعِّلت) تتراكب عليها. يمكنك دائماً التضييق أكثر من
النافذة الفيدرالية — مثلاً بوابة صوت 09:00–20:00 بالتوقيت المحلي للمستلم
— لكنك لا تستطيع أبداً توسيعها.

صوت 1:1 المخصص من لوحة التحكم خارج النافذة الفيدرالية يتصل مع سجل
تنبيهي ما لم تُفعِّل قناة `voice` في بوابة المؤسسة، مما يجعله حظراً
شديداً (`422 TCPA_DIALING_WINDOW_BLOCKED`).

## الموافقة تتجاوز ساعات الصمت

بـ `consent_overrides_quiet_hours: true` (الافتراضي)، يعبر المستلم الذي
تحتفظ بموافقة صريحة له البوابة على القنوات **غير الصوتية** — استثناء
TCPA «prior express consent». يظل المستلم المسموح قابلاً للوصول داخل
ساعاتك المغلقة؛ والمُتصِّل بلا سجل موافقة يُحتَجَز حتى تفتح النافذة.

اضبطها على `false` عندما لا يجب أن تُخفِّف الموافقة نافذتك أبداً.
تتجاهل البوابة العلم كلياً على قناة `voice` — الصوت يعتمد على النافذة
الفيدرالية والطبقات الاتحادية، وليس على استثناء الموافقة.

## الطبقات الاتحادية المصغرة TCPA

بعض الولايات الأمريكية تُراكِب فوق الساعات الفيدرالية نافذة اتصال أشد أو
حظراً على أيام الأسبوع (حظر فلوريدا يوم الأحد، نوافذ أوكلاهوما/ميسيسيبي،
وغيرها). تتركب الطبقات بقاعدة **الأشد تقييداً يفوز**: يجب أن يجتاز
الإرسال النافذة الفيدرالية *و* كل طبقة ولاية قابلة للتطبيق؛ يمكن للطبقة
أن تُضيِّق لكن لا توسّع أبداً. حظر الصوت يُتعقَّب بهذه أسباب الفشل:

* `outside_state_window` — طبقة ولاية ضيّقت النافذة وهذه الساعة وقعت
  خارجها.
* `state_blocked_day` — الطبقة تحظر الاتصال في هذا اليوم من الأسبوع
  كلياً.

الجدول الكامل لكل ولاية وأي ولايات المستلم تحل إلى كل طبقة موجود في
[نوافذ الاتصال حسب ولاية الولايات المتحدة](/compliance/state-calling-windows).

## دليل التشغيل

**قائمة مراجعة الطرح.** قبل أن تُفعِّل قناة أو تدفع قائمة واسعة:

1. عاين عينة من المستلمين بـ
   `GET /api/v1/compliance/quiet-hours/preview?phone=<E.164>&channel=<channel>`،
   مضيفاً `timezone_override=<IANA>` فقط عندما يحمل نظام CRM لديك إشارة
   أفضل مما تحله الرقم.
2. أكّد كتلة بوابة المؤسسة: `GET /api/v1/settings/general` واقرأ شجرة
   `quiet_hours` قبل `PUT` — الكتابات تُدمَج في المستوى الأعلى، لكن مفتاح
   `quiet_hours` نفسه يُستبدَل كلياً (انظر قسم الكتابة أدناه).
3. للطروح الكبيرة، راقب `GET /api/v1/settings/compliance-health` —
   تحذيراته تُرتِّب أسوأ مخالف (المرسل الأكثر احتجازاً، مجموعات الأخطاء)
   لتُصلِّح أولاً أكثر المسارات ضجيجاً.

**الاحتجازات لكل مستلم، وليست لكل مستأجر.** مُتصِّل واحد محتجَز عند
21:05 بالتوقيت المحلي للمستلم يحظر فقط إرسالات ذلك المُتصِّل؛ بقية
دفعتك تستمر بالقبول بالتوازي. إرسال 1:1 محتجَز يُلقي
`422 QUIET_HOURS_BLOCKED` مع `next_allowed_at` في تفاصيل الخطأ — خُطِّط
عند ذلك الطابع الزمني بدلاً من إعادة المحاولة في حلقة. الإرسال المحتجَز
لا يستهلك أبداً حصة أو حجز خانة، لذا تُقبَل إعادات المحاولة نظيفة بمجرد
فتح النافذة.

**تستغرق الكتابات حتى دقيقة تقريباً للوصول إلى كل موضع إرسال** — إعدادات
المؤسسة مُخزَّنة مؤقتاً في مسار الإرسال. القراءات فورية؛ تحقق من الوضع
المُدمَج بـ `GET` قبل الطرح.

## أمثلة عملية

### طرح كبير عند 21:05 — سلوك قائمة الاحتجاز

تدفع قائمة من 1,000 مستلم عبر API عند لحظة يقع فيها جزء من قائمتك خارج
بوابة مؤسستك 08:00–21:00 بالتوقيت المحلي للمستلم. كل مستلم يُحل
مستقلاً ضد بوابة `sms` المفعّلة لديك:

* المستلمون داخل النافذة يُقبَلون فوراً.
* المستلمون المحتجَزون يحصلون على `422` مع `next_allowed_at`؛ عاملك
  يُوقِفهم ويستمر بالدفعة. الدفعة نفسها لا تتوقف — الاحتجازات لكل مستلم.
* عندما تُعاد فتح نافذة كل مستلم، أعد إرسال الصف المُوقِف؛ لم تُحرَق أي
  خانة أثناء الاحتجاز.

تحقق من مستلم محدد دون حرق المحاولة:

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/quiet-hours/preview?phone=%2B14155551234&channel=sms" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

```json theme={null}
{
  "allowed_now": false,
  "local_hour": 21,
  "local_timezone": "America/New_York",
  "window_start_local": "08:00",
  "window_end_local": "21:00",
  "next_allowed_at": "2026-08-26T12:00:00Z",
  "reason": "outside_window",
  "channel": "sms"
}
```

`next_allowed_at` طابع زمني ISO آمن من التوقيت الصيفي — مرِّره مباشرة
إلى مجدولك.

### مستلم صوت أمريكي غير محلول المنطقة الزمنية — fail-closed

اتصال صوت حملة إلى `+15551234567` حيث رمز المنطقة لا يحل أي منطقة زمنية
يصطدم بوضع fail-closed للحارس الفيدرالي: يُرفَض الاتصال بـ
`422 TCPA_TIMEZONE_UNKNOWN` قبل أي حساب نافذة. أصلح البيانات — اضبط
المنطقة الزمنية للمُتصِّل على السجل أو مرِّر `recipientTimezone` — ثم
أعد الإدخال في القائمة.

نفس الإدخال غير المحلول على قناة `sms` مع `unknown_timezone_policy: "deny"`
ينتهي بـ `422 QUIET_HOURS_TIMEZONE_UNKNOWN`؛ مع سياسة `skip` الافتراضية
يمر fail-open. سياسة `deny` هي الافتراضي فقط لصوت المستلم الأمريكي، وفقاً
لاستثناء الفيدرالي أعلاه.

### تجاوز الموافقة داخل النافذة

مُتصِّلان، بوابة `sms` مفعّلة، 22:30 بالتوقيت المحلي للمستلم (خارج
نافذتك):

```text theme={null}
المُتصِّل أ — سجل موافقة في الملف     → مسموح (السبب: consent_override)
المُتصِّل ب — لا سجل موافقة           → محتجَز (422 QUIET_HOURS_BLOCKED)
```

بـ `consent_overrides_quiet_hours: false`، يُحتَجَز كلاهما حتى 08:00
بالتوقيت المحلي للمستلم. على `voice`، العلم لا ينطبق إطلاقاً — كل محاولة
صوت تُبوَّب على حساب النافذة وحده.

## تفعيل قناة عبر API إعدادات المؤسسة

لا توجد نقطة نهاية كتابة ساعات صمت مخصَّصة لبوابة القناة؛ تعيش داخل مخزن
إعدادات المؤسسة، وكل إرسال يقرؤها. حدِّثها عبر
`PUT /api/v1/settings/general` (مالك/مسؤول):

```bash theme={null}
curl -X PUT https://api.orbit.devotel.io/api/v1/settings/general \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "settings": {
      "quiet_hours": {
        "sms": { "enabled": true },
        "whatsapp": { "enabled": true, "start_hour": 9, "end_hour": 21 },
        "unknown_timezone_policy": "skip",
        "consent_overrides_quiet_hours": true
      }
    }
  }'
```

اقرأ الوضع الحالي بـ `GET /api/v1/settings/general` وانظر كتلة
`quiet_hours` في `settings` المُعادة.

<Warning>
  ادمج ثم تحقق. `PUT /settings/general` يُدمِج الإعدادات في المستوى
  الأعلى، لذا كتابة تحتوي *فقط* `quiet_hours` تُبقي إعداداتك الأخرى
  سليمة — لكن كتابة تضع في جذرها كائن `quiet_hours` كاملاً تُستبدِل هذا
  المفتاح. إذا كنت تريد الاحتفاظ بالمدخلات الموجودة (مثلاً نافذة
  `default` أو مفاتيح الورقة المُخزَّنة لنافذة الحملة الاحتياطية)، اقرأ
  الكتلة الحالية أولاً وادمج قبل الكتابة.
</Warning>

تستغرق الكتابات حتى دقيقة تقريباً للوصول إلى كل موضع إرسال — إعدادات
المؤسسة مُخزَّنة مؤقتاً في مسار الإرسال.

## اختر وضعاً

1. **اترك كل شيء معطّلاً (الافتراضي)** إذا كنت تعمل خارج ولايات ساعات
   الصمت القضائية، أو تعالج الحدود في مكان آخر. تحفوة واحدة: صوت الحملة
   والمُطلِب الأمريكي يظل محظوراً بشدة — لا يمكن إيقافه.
2. **مشغّل تسويق أمريكي** — فعّل `sms` (والصوت إذا اتصلت مخصص) في بوابة
   المؤسسة؛ ساعات المنصة 08:00–21:00 بالتوقيت المحلي للمستلم تُطبَّق
   فوراً. استثناء الموافقة يُبقي المستلمين المسموحين قابلين للوصول.
3. **مشغّل EU/APAC بحملات drip** — اضبط احتياط الحملة على نافذتك
   المحلية (مثلاً 22:00 → 07:00) في الإعدادات → حدود الحملة حتى كل drip
   وjourney يفتقر إلى نافذته الخاصة يرسل ضمن نظامك. أضف بوابة المؤسسة
   لكل قناة إذا أردت أيضاً احتجاز حركة 1:1.

## انظر أيضاً

* [بوابات الإرسال](/compliance/send-gates) — نقطة نهاية المعاينة وكومة
  البوابات الكاملة (DNC, RND, إيقاف الطوارئ).
* [نوافذ الاتصال حسب ولاية الولايات المتحدة](/compliance/state-calling-windows)
  — أي ولايات تحمل طبقة mini-TCPA أشد وكيف يُتعقَّب الحظر إلى قانون.
* [مرجع API → الامتثال](/api-reference/endpoints/compliance) — مخططات
  الطلب/الاستجابة الكاملة.
* [اختبار A/B للحملة](/guides/campaign-ab-testing) — كيف يمر اختيار
  الفائز وتجارب الاحتجاز عبر هذه البوابة و[حدود التكرار](/guides/frequency-caps)
  لكل مُتصِّل.
