Skip to main content

Heures de silence : portails de canal à l’échelle de l’organisation vs. la fenêtre de secours de campagne

Le portail d’heures de silence d’Orbit appartient au locataire : tout ce qui figure sur cette page est un contrôle que vous configurez (ou choisissez de laisser désactivé). La seule exception est la fenêtre fédérale TCPA de voix pour les destinataires américains, traitée dans sa propre section ci-dessous. L’activation des heures de silence est votre décision — rien ici n’est exigé par CAN-SPAM ou le RGPD. Cette page est le manuel d’exploitation de ce portail. Trois surfaces composent votre posture :
  1. Le portail de canal à l’échelle de l’organisation — des commutateurs par canal dans les paramètres de l’organisation (settings → quiet_hours.<channel>.enabled), écrits via PUT /api/v1/settings/general et reflétés dans les paramètres de l’organisation du tableau de bord (voir aussi Posture de conformité).
  2. La fenêtre de secours de campagne — une seule paire début/fin à l’échelle de l’organisation pour les envois drip et journey dont la ligne de campagne ne porte pas de fenêtre explicite. Dans le tableau de bord : Paramètres → Limites de campagne → Heures de silence par défaut ; via l’API : GET/PUT /api/v1/campaigns/quiet-hours/settings.
  3. Le point de terminaison de prévisualisationGET /api/v1/compliance/quiet-hours/preview, une vérification en lecture seule qui répond : « cet envoi vers ce destinataire passerait-il maintenant ? ». Exécutez-la avant chaque déploiement ; elle est traitée dans le manuel ci-dessous.

Les deux fenêtres

Le secours de campagne est exactement ce que son nom dit — un secours, pas un second portail. Ordre de résolution pour un envoi de campagne : d’abord la fenêtre propre de la ligne de campagne, puis le secours de l’organisation, puis le défaut de la plateforme 21:00 → 09:00 (les heures de silence s’étendent de 21 h à 9 h, heure locale du destinataire). Les deux réglages peuvent diverger. Un envoi diffusé par campagne évalue la fenêtre du chemin de campagne comme une couche ; le portail de canal de l’organisation — lorsque vous avez activé ce canal — est une couche séparée évaluée au point d’envoi. Traitez le portail de l’organisation comme la posture pour le trafic 1:1 et le secours de campagne comme le régime par défaut pour le trafic en masse. Un envoi bloqué rapporte next_allowed_at — planifiez autour de la fenêtre plutôt que de réessayer. Les secours que vous pouvez fixer à l’une ou l’autre des couches ne peuvent que resserrer l’enveloppe ; ils n’élargissent jamais un portail de canal que vous avez activé.

Portail par canal à l’échelle de l’organisation

Le portail de canal est opt-in par canal. Chaque entrée par canal prend en charge : Clés à l’échelle de l’organisation (s’appliquent à tous les canaux ensemble) :

Posture par défaut par canal

Tant que vous n’activez pas un canal, rien n’est retenu. Quand vous activez un canal sans préciser d’heures, les heures de la plateforme entrent en vigueur : L’ensemble complet des canaux acceptés par le portail : sms, mms, whatsapp, rcs, viber, telegram, voice, email, instagram, messenger, line, apple_messages, fax, push, web_chat.

Deux exceptions qui maintiennent le trafic essentiel en circulation

  • Consentement exprès préalable — avec consent_overrides_quiet_hours à true (défaut), un destinataire disposant d’un registre de consentement explicite franchit tout canal non vocal. La voix ne prend jamais cette exception.
  • Voie de trafic transactionnel — les envois que l’appelant marque comme transactionnels (OTP, alertes, notifications de compte) sont exemptés du portail même sur un canal activé. La voix ne prend jamais cette exception non plus.
Mettez consent_overrides_quiet_hours à false uniquement si vous voulez des envois arrêtés sans exceptions de consentement.

Fenêtre de secours de campagne

Tout appelant authentifié la lit ; seul le propriétaire/administrateur l’écrit. Lisez la fenêtre de secours actuelle :
platform_default_start / platform_default_end renvoient les heures que les envois drip et journey utilisent tant que la substitution est désactivée — héritez-les ou remplacez-les, à vous de choisir. Dans le tableau de bord, ce formulaire se trouve sous Paramètres → Limites de campagne → Heures de silence par défaut. Fixez votre propre fenêtre (les deux heures sont requises quand enabled vaut true) :
Revenez au défaut de la plateforme :
Les fenêtres de nuit (par exemple début 22, fin 7) sont acceptées aux deux couches — une paire start > end traverse minuit.

Résolution du fuseau horaire du destinataire

Le portail travaille en heure locale du destinataire. La résolution du fuseau horaire suit cette chaîne :
  1. Une indication explicite recipientTimezone de l’appelant, lorsqu’elle est fournie.
  2. Indicatif de zone des États-Unis → fuseau horaire IANA, pour les numéros +1.
  3. Code pays E.164 → un fuseau horaire IANA représentatif (Europe, Asie, Amériques et marchés opérateurs courants).
  4. Pour les destinataires e-mail, le fuseau horaire par défaut de l’organisation.
  5. Quand rien de tout cela ne se résout — la unknown_timezone_policy de l’organisation (également configurable dans le tableau de bord sous Paramètres → Voix) :
Si le destinataire se résout bien en un fuseau horaire, un blocage normal de canal activé renvoie 422 QUIET_HOURS_BLOCKED (voix : TCPA_DIALING_WINDOW_BLOCKED) avec la fenêtre et next_allowed_at dans le détail de l’erreur.

Exception fédérale TCPA de voix

La voix de campagne et de composeur vers des destinataires américains est bloquée de façon stricte en dehors de la fenêtre fédérale 8 h – 21 h heure locale du destinataire — aucun portail d’organisation, fenêtre de secours ou drapeau de consentement ne la desserre, et un destinataire américain dont le fuseau horaire ne peut pas être résolu est bloqué en fail-closed. C’est le seul réglage que la plateforme possède ; il s’applique uniquement à la voix de campagne et de composeur, pas aux appels 1:1 ad hoc ni à aucun canal de messagerie. Les destinataires non américains jouent selon le portail ordinaire : la politique skip fail-open s’applique aux destinataires hors juridiction américaine, et votre propre portail du canal de voix (s’il est activé) s’ajoute par-dessus. Vous pouvez toujours resserrer au-delà de la fenêtre fédérale — par exemple un portail de voix de 09:00–20:00 heure locale du destinataire — mais jamais l’élargir. La voix 1:1 ad hoc depuis le tableau de bord en dehors de la fenêtre fédérale compose avec un journal de notification, sauf si vous avez activé le canal voice sur le portail de l’organisation, ce qui en fait une retenue stricte (422 TCPA_DIALING_WINDOW_BLOCKED).

Le consentement prime sur les heures de silence

Avec consent_overrides_quiet_hours: true (défaut), un destinataire pour lequel vous détenez un consentement explicite franchit le portail sur les canaux non vocaux — l’exception TCPA « prior express consent ». Un destinataire autorisé reste joignable pendant vos heures fermées ; un contact sans registre de consentement est retenu jusqu’à l’ouverture de la fenêtre. Mettez-le à false quand le consentement ne doit jamais desserrer votre fenêtre. Le portail ignore entièrement le drapeau sur le canal voice — la voix dépend de la fenêtre fédérale et des superpositions étatiques, pas de l’exception de consentement.

Superpositions étatiques mini-TCPA

Certains États américains superposent une fenêtre d’appel plus stricte ou une interdiction de jour de la semaine aux heures fédérales (l’interdiction du dimanche en Floride, les fenêtres de l’Oklahoma/Mississippi et autres). Les superpositions se composent selon le plus restrictif gagne : un envoi doit franchir la fenêtre fédérale et chaque superposition étatique applicable ; la superposition peut resserrer mais jamais élargir. Les blocages de voix se retracent avec ces motifs d’échec :
  • outside_state_window — une superposition étatique a resserré la fenêtre et cette heure est tombée en dehors.
  • state_blocked_day — la superposition interdit entièrement de composer ce jour de la semaine.
Le tableau complet État par État et quels États du destinataire se résolvent dans chaque superposition se trouve dans Fenêtres d’appel par État américain.

Manuel d’exploitation

Liste de contrôle de déploiement. Avant d’activer un canal ou de pousser une liste large :
  1. Prévisualisez un échantillon de destinataires avec GET /api/v1/compliance/quiet-hours/preview?phone=<E.164>&channel=<channel>, en ajoutant timezone_override=<IANA> uniquement quand votre CRM fournit une meilleure indication que celle que le numéro résout.
  2. Confirmez le bloc du portail de l’organisation : GET /api/v1/settings/general et lisez l’arborescence quiet_hours avant le PUT — les écritures fusionnent au niveau supérieur, mais la clé quiet_hours elle-même est remplacée en gros (voir la section écriture ci-dessous).
  3. Pour les déploiements en masse, surveillez GET /api/v1/settings/compliance-health — ses avertissements classent le pire contrevenant (expéditeur le plus retenu, groupes d’erreurs) pour que vous corrigiez d’abord la voie la plus bruyante.
Les retenues sont par destinataire, pas par locataire. Un contact retenu à 21:05 heure locale du destinataire bloque uniquement les envois de ce contact ; le reste de votre lot continue d’être admis en parallèle. Un envoi 1:1 retenu lève 422 QUIET_HOURS_BLOCKED avec next_allowed_at dans le détail de l’erreur — planifiez à ce timestamp plutôt que de réessayer dans une boucle. Un envoi retenu ne consomme jamais de quota ni de réservation de créneau, de sorte que les réessais se readmettent proprement une fois la fenêtre ouverte. Les écritures mettent jusqu’à environ une minute pour atteindre chaque point d’envoi — les paramètres de l’organisation sont mis en cache brièvement sur le chemin d’envoi. Les lectures sont immédiates ; vérifiez la posture fusionnée avec un GET avant de déployer.

Exemples déroulés

Déploiement en masse à 21:05 — comportement de la file de retenue

Vous poussez une liste de 1 000 destinataires via l’API au moment où une fraction de votre liste se situe en dehors de votre portail d’organisation 08:00–21:00 heure locale du destinataire. Chaque destinataire se résout indépendamment contre votre portail sms activé :
  • Les destinataires dans la fenêtre sont admis immédiatement.
  • Les destinataires retenus reçoivent un 422 avec next_allowed_at ; votre worker les gare et poursuit le lot. Le lot lui-même n’est pas en pause — les retenues sont par destinataire.
  • Quand la fenêtre de chaque destinataire se rouvre, re-soumettez la ligne garée ; aucun créneau n’a été brûlé pendant la retenue.
Vérifiez un destinataire particulier sans brûler la tentative :
next_allowed_at est un timestamp ISO protégé contre le passage à l’heure d’été — transmettez-le tel quel à votre planificateur.

Destinataire de voix américain à fuseau horaire non résolu — fail-closed

Une composition de voix de campagne vers +15551234567 dont l’indicatif de zone ne résout aucun fuseau horaire heurte la posture fail-closed de la garde fédérale : la composition est rejetée avec 422 TCPA_TIMEZONE_UNKNOWN avant tout calcul de fenêtre. Corrigez les données — fixez le fuseau horaire du contact sur l’enregistrement ou passez recipientTimezone — puis remettez en file. La même entrée non résolue sur le canal sms avec unknown_timezone_policy: "deny" se termine en 422 QUIET_HOURS_TIMEZONE_UNKNOWN ; avec la politique skip par défaut, elle passe en fail-open. La politique deny n’est le défaut que pour la voix vers destinataires américains, conformément à l’exception fédérale ci-dessus.

Substitution de consentement dans la fenêtre

Deux contacts, portail sms activé, 22:30 heure locale du destinataire (en dehors de votre fenêtre) :
Avec consent_overrides_quiet_hours: false, les deux se retiennent jusqu’à 08:00 heure locale du destinataire. Sur voice, le drapeau ne s’applique pas du tout — chaque tentative de voix est portée par le calcul de fenêtre seul.

Activez un canal via l’API de paramètres de l’organisation

Il n’existe pas de point de terminaison d’écriture d’heures de silence dédié pour le portail de canal ; il réside dans le magasin de paramètres de l’organisation, et chaque point d’envoi le lit. Mettez-le à jour via PUT /api/v1/settings/general (propriétaire/administrateur) :
Lisez la posture actuelle avec GET /api/v1/settings/general et observez le bloc quiet_hours dans les settings renvoyés.
Fusion-puis-vérification. PUT /settings/general fusionne les paramètres au niveau supérieur, donc une écriture qui ne contient que quiet_hours laisse vos autres paramètres intacts — mais une écriture à la racine de laquelle vous placez un objet quiet_hours complet REMPLACE cette clé. Si vous voulez conserver les entrées existantes (par exemple une fenêtre default ou les clés feuille stockées du secours de campagne), lisez d’abord le bloc actuel et fusionnez avant d’écrire.
Les écritures mettent jusqu’à environ une minute pour atteindre chaque point d’envoi — les paramètres de l’organisation sont mis en cache brièvement sur le chemin d’envoi.

Choisissez une posture

  1. Laisser tout désactivé (défaut) si vous opérez hors des juridictions à heures de silence, ou si vous gérez les limites ailleurs. Une réserve : la voix de campagne et de composeur américaine reste bloquée de façon stricte — cela ne peut pas être désactivé.
  2. Opérateur marketing américain — activez sms (et la voix si vous composez en ad hoc) sur le portail de l’organisation ; les heures de la plateforme 08:00–21:00 heure locale du destinataire s’appliquent immédiatement. L’exception de consentement maintient les destinataires autorisés joignables.
  3. Opérateur UE/APAC avec campagnes drip — fixez le secours de campagne à votre fenêtre locale (par exemple 22:00 → 07:00) dans Paramètres → Limites de campagne pour que tout drip et journey sans fenêtre propre envoie dans votre régime. Ajoutez le portail de l’organisation par canal si vous voulez aussi retenir le trafic 1:1.

Voir aussi