Skip to main content

Barrières d’envoi

Au-delà du consentement et de la suppression, plusieurs vérifications réglementaires s’exécutent au moment de l’envoi. Orbit les regroupe sous le nom de barrières d’envoi : chacune peut retenir ou bloquer un message ou un appel avant sa distribution. Cette page couvre les barrières que vous configurez ou interrogez directement. Tous les endpoints ci-dessous sont enracinés sur https://api.orbit.devotel.io/api/v1/compliance.
DNC et RND effectuent la vérification par rapport aux registres nationaux — les registres Do-Not-Call de la FTC au niveau fédéral et des États, ainsi que le TCR Universal Opt-Out pour DNC, et la Reassigned Numbers Database de la FCC pour RND. Il ne s’agit pas de flux que vous connectez ou intégrez par locataire : lorsqu’un instantané du registre est en place, la plateforme le maintient centralement plutôt que de lire depuis votre propre intégration. Mais la vérification est désactivée par défaut — chaque barrière reporte federal_feeds_synced / feed_synced à false jusqu’à ce qu’un instantané soit réellement synchronisé pour elle, et reste derrière un commutateur d’opt-in par organisation. Tant que les deux ne sont pas vraies, ces endpoints renvoient une réponse de désactivation et un numéro présent uniquement sur un registre fédéral est lu comme libre (voir chaque barrière ci-dessous pour son comportement exact). Cette page ne constitue pas un avis juridique — confirmez vos obligations TCPA/FCC auprès d’un conseil juridique.

BAA — la barrière d’envoi HIPAA

Lorsque votre organisation opte pour le mode HIPAA (vous traitez des PHI), chaque envoi sortant — qu’il s’agisse de messages individuels ou de campagnes groupées — est bloqué jusqu’à ce qu’un Business Associate Agreement (BAA) exécuté et en vigueur soit enregistré. L’exécution du BAA est la première étape de la séquence HIPAA ; la barrière d’envoi est le garde-fou d’exécution qui ne peut être contourné. Un envoi bloqué renvoie 422 HIPAA_BAA_REQUIRED avec un reason parmi pending, expired ou not_signed, et le docs_url dans la charge utile d’erreur pointe vers le flux d’exécution du BAA. Un 500 HIPAA_BAA_GATE_DB_FAIL signifie que la barrière n’a pas pu vérifier le statut du BAA — elle échoue fermée (les envois restent bloqués) plutôt que de risquer une transmission de PHI qu’elle ne peut vérifier. Réessayez sous peu ; si le problème persiste, contactez le support.
La barrière vérifie aussi la piste d’audit : lorsque la lecture du statut du BAA ne peut être validée, l’envoi est bloqué et l’échec est consigné dans l’audit PHI plutôt que d’être laissé passer silencieusement.
Un BAA exécuté a une durée d’un an ; l’expiration est recalculée à partir de l’horodatage d’exécution au moment de l’envoi, de sorte qu’un BAA arrivé à échéance bloque à nouveau même si la tâche cron quotidienne de vérification d’expiration n’a pas encore été exécutée. Si votre organisation n’atteste pas le mode HIPAA, cette barrière est une no-op — elle n’inspecte jamais que les organisations qui ont déclaré que les PHI sont dans le périmètre. Suivez la séquence complète dans Intégration HIPAA : du BAA à l’audit complet.

Heures de silence

Les règles d’heures de silence bloquent les messages et appels qui s’afficheraient en dehors des heures locales autorisées du destinataire (p. ex. la fenêtre TCPA de 8 h à 21 h). Orbit résout le temps local du destinataire à partir de la région de son numéro de téléphone. GET /quiet-hours/preview vous indique si un envoi est autorisé actuellement, et quelle est la prochaine heure autorisée — utilisez-le pour planifier en dehors de la fenêtre.
La barrière des heures de silence est opt-in par canal et par organisation — chaque canal est livré avec le commutateur désactivé, de sorte que les SMS, WhatsApp et autres envois d’un nouveau locataire ne sont pas retenus par les heures de silence tant que vous n’activez pas la barrière pour ce canal. Activez-la par canal depuis les paramètres d’heures de silence de votre organisation dans le tableau de bord Orbit ; les fenêtres répertoriées s’appliquent alors automatiquement. Une fois activées, les fenêtres sont 08:00–21:00 (heure locale du destinataire) pour SMS/voix et 09:00–21:00 pour les canaux WhatsApp/Meta, sauf si vous définissez votre propre start_hour/end_hour. E-mail, fax et push ne sont pas soumis aux heures de silence.
Fenêtre vocale TCPA aux États-Unis : conseil pour les appels ad-hoc, blocage dur pour les campagnes. Pour les appels vocaux sortants vers des destinataires américains (+1), Orbit évalue la fenêtre fédérale TCPA de composition de 8 h à 21 h en heure locale du destinataire à chaque appel — mais la façon dont le résultat est appliqué dépend du chemin d’appel :
  • La composition ad-hoc 1:1 depuis le tableau de bord est à titre de conseil par défaut. Un appel en dehors de la fenêtre enregistre un journal structuré de conseil mais est quand même distribué. Pour retenir ces appels plutôt, activez le commutateur d’heures de silence vocales pour votre organisation ; son activation applique la fenêtre de 8 h à 21 h comme retenue stricte.
  • Le trafic vocal de campagne et de composeur est toujours dur-bloqué en dehors de la fenêtre, indépendamment de vos paramètres de locataire. Un appel de campagne ou de composeur placé en dehors de 8 h à 21 h en heure locale du destinataire est rejeté avec 422 TCPA_FEDERAL_DIALING_WINDOW_BLOCKED — il n’y a pas d’opt-out par organisation pour la voix automatisée ou groupée, et le commutateur d’heures de silence vocales ne l’assouplit pas. Si le fuseau horaire du destinataire ne peut être résolu, l’appel échoue fermé et est également bloqué.
Planifiez les appels de campagne et de composeur à l’intérieur de la fenêtre de 8 h à 21 h en heure locale du destinataire — utilisez GET /quiet-hours/preview pour trouver la prochaine heure autorisée.

DNC — Do Not Call

GET /dnc/check indique si un numéro figure sur une liste Do-Not-Call avant que vous ne l’appeliez ou lui envoyiez un SMS. Pour la posture de bout en bout — sources, fraîcheur et le caveat de fail-open — voir Vérification DNC.
Lorsqu’il est activé, il renvoie :
Le source indique quelle couche a signalé le numéro (votre drapeau DNC de contact, la liste DNC, la liste de suppression ou une désinscription de consentement).
La barrière s’applique uniquement tant qu’aucun flux Do-Not-Call n’est synchronisé. Dans cet état, l’endpoint est retenu derrière le paramètre d’organisation dnc_sync_enabled (désactivé par défaut) et renvoie 403 DNC_SYNC_NOT_ENABLED jusqu’à ce que vous optiez — reconnaissant qu’Orbit ne fait pas encore de vérification par rapport à un registre fédéral pour vous, de sorte qu’un numéro présent uniquement sur la liste FTC se lit comme on_dnc: false.Une fois qu’Orbit a synchronisé un instantané fédéral, d’État ou TCR, la barrière dnc_sync_enabled est contournée : l’endpoint se sert directement et federal_feeds_synced renvoie true. Lisez ce champ à chaque réponse pour confirmer si une vérification fédérale soutient réellement le résultat.

Vérification préalable en lot

POST /dnc/scrub exécute la même chaîne sur une liste entière en un seul appel — jusqu’à 500 numéros E.164 par requête, avec un filtre optionnel de juridiction country. Il renvoie des verdicts par numéro plus des comptes de synthèse on_dnc / clear, est limité par débit à 10 requêtes par minute par organisation, et se situe derrière la même barrière décrite ci-dessus.
Pour le workflow de campagne — barrière, découpage en lots, acheminement des numéros signalés vers la suppression et cadence de re-vérification — voir Vérification préalable DNC en lot.

Dépannage de la barrière

Lorsque l’un des endpoints DNC est retenu à 403 DNC_SYNC_NOT_ENABLED :
  1. Confirmez l’état de la barrière sans exécuter de vérification — appelez GET /dnc/availability. Il rapporte la barrière exacte que les deux endpoints appliquent : available, votre org_opt_in et federal_feeds_synced.
  2. Activez l’accusé de l’organisation — activez dnc_sync_enabled dans les paramètres de conformité de votre tableau de bord. Le drapeau est par organisation et échoue fermé : un drapeau jamais défini, une valeur stockée comme chaîne ou nombre plutôt que booléen true, ou une recherche de paramètres qui échoue se résolvent tous à OFF — une organisation qui n’a jamais visité les paramètres de conformité obtient toujours le 403.
  3. Ou attendez l’instantané — une fois que la plateforme synchronise un flux fédéral, d’État ou TCR, la barrière se retire d’elle-même et federal_feeds_synced bascule à true ; l’accusé n’est plus consulté.
  4. Distinguez les homonymes — 401 est l’authentification, 422 est un téléphone malformé, et 429 sur /dnc/scrub est sa limite de 10 requêtes par minute, pas la barrière.
La démarche complète est Dépannage : pré-vérification DNC au 403.

RND — Reassigned Numbers Database

Les numéros de téléphone américains sont réattribués à de nouvelles personnes. La Reassigned Numbers Database de la FCC vous permet de vérifier si un numéro a été déconnecté après la date à laquelle vous avez obtenu le consentement — un « abri sûr » contre le fait d’envoyer un SMS ou d’appeler la mauvaise personne. GET /rnd/check prend le phone et la consent_date (YYYY-MM-DD) :
Tant que feed_synced est false, c’est la seule réponse que l’endpoint renvoie, quel que soit le phone et la consent_date — aucune date de déconnexion n’est encore enregistrée, donc chaque verdict se dégrade à no_data. status est l’un de yes, no ou no_data — le verdict de la base de données de la FCC pour la paire (phone, consent_date) : safe_harbor est true uniquement lorsque status est no. last_disconnect_date est la date de déconnexion définitive la plus récente enregistrée (null lorsqu’aucune), et feed_synced est false jusqu’à ce que l’ingestion du flux RND soit configurée — tant qu’il est false, chaque verdict est no_data. Étant donné derrière rnd_scrub_enabled (désactivé par défaut) ; renvoie 403 RND_SCRUB_NOT_ENABLED pendant que c’est désactivé.

Activation et désactivation de la vérification RND

Utilisez PUT /api/v1/compliance/rnd/settings pour contrôler le drapeau rnd_scrub_enabled :
L’activation est bloquée par HTTP 409 RND_FEED_NOT_CONFIGURED jusqu’à ce que le flux de la Reassigned Numbers Database de la FCC (le flux reassigned.us de SomosGov) soit connecté à votre déploiement. Activer la fonctionnalité avant que le flux ne soit ingéré créerait un contrôle de conformité qui ne réalise aucune vérification réelle de numéros réattribués — vous basculeriez le drapeau, mais chaque recherche /rnd/check renverrait toujours no_data. Le blocage 409 empêche cette fausse impression de protection. La désactivation (enabled: false) est toujours permise, même si aucun flux n’est encore connecté.

RMD — Robocall Mitigation Database

Les émetteurs de voix américains doivent déposer un enregistrement Robocall Mitigation Database décrivant leur statut STIR/SHAKEN et leur plan de mitigation. Orbit stocke et suit votre dépôt.
  • GET /rmd — lire votre enregistrement plus un bloc recertification avec renewal_deadline et action_required.
  • POST /rmd — créer ou mettre à jour le dépôt.
  • POST /rmd/submit → statut submitted.
  • POST /rmd/certify → statut active.
  • POST /rmd/remediation (avec une reason) → statut remediation_required.
  • POST /rmd/resolve → retour à active.
  • POST /rmd/withdraw → statut withdrawn.
stir_shaken_status est complete, partial ou none. Un mitigation_plan est requis sauf si le statut est complete. Le cycle de vie est draft → submitted → active → remediation_required → active | withdrawn.

Arrêt d’urgence

L’arrêt d’urgence est un commutateur d’extinction à l’échelle de l’organisation qui arrête immédiatement tout le trafic sortant SMS, MMS, voix et composeur — utilisez-le lors d’un incident (une campagne mal configurée, une clé compromise, une erreur de contenu). Pour le runbook complet de l’opérateur, voir le guide de l’arrêt d’urgence.
GET /emergency-stop renvoie le drapeau active actuel plus activated_at, activated_by et reason. L’activation et la désactivation nécessitent une clé admin/propriétaire.
Tant que l’arrêt d’urgence est actif, tout le trafic de campagne sortante SMS, MMS, voix et composeur pour l’organisation est bloqué. Les envois transactionnels Verify/OTP et l’e-mail ne sont pas soumis à l’arrêt d’urgence — ils s’exécutent par des chemins de livraison séparés, de sorte qu’un contact peut toujours recevoir un code de connexion tant que le commutateur est actif. Si vous avez aussi besoin de mettre en pause ceux-ci, désactivez le profil Verify ou le expéditeur d’e-mail pertinent. Désactivez l’arrêt dès que l’incident est résolu.

Bloc des abrégés d’urgence (VOICE)

Chaque appel vocal sortant résout sa destination par rapport à la table d’abréges d’urgence à l’échelle de la plateforme avant qu’aucun SIP ne quitte la plateforme — US 911, EU 112, UK 999, AU 000. Une destination qui correspond à l’une d’elles est rejetée avant expédition :
  • Code d’erreur : 422 EMERGENCY_CALLING_NOT_SUPPORTED
  • Charge utile de la raison : les details portent la destination masquée et l’abrégé assorti (to, emergency_code) plus un pointeur docs_url vers la page des appels d’urgence ; une campagne, une composition ad hoc et une origination de trunk SIP prennent tous le même bloc.
  • Contrôle du locataire : aucun — la table est une constante de plateforme fixe et le rejet est une barrière stricte. Aucun paramètre de locataire, demande d’assistance ou paramètre d’API ne la lève, et parce que le bloc se déclenche avant vol, aucune expédition d’opérateur ne se produit et rien n’est facturé.
C’est le seul bloc de cette page qu’une revue de posture ne peut jamais cadrer comme « la propriété du locataire » : contrairement aux barrières opt-in ci-dessus, vous ne pouvez pas le désactiver, et contrairement au DNO ci-dessous, il n’y a pas de liste à freeliste — la destination rejetée est le problème, et la correction est de router l’appel vers un vrai numéro PSTN et de diriger les utilisateurs pour composer les services d’urgence depuis un téléphone mobile ou fixe. Le comportement complet, le raisonnement E911 et vos obligations d’opérateur (divulguer la limitation partout où votre produit offre un téléphone logiciel ou un flux d’appel d’agent) sont sur la page Appels d’urgence ; la Référence des codes d’erreur liste le code sous Voix.

Rejet de l’ID d’appelant Do-Not-Originate (VOICE)

Une fois que la destination passe la vérification d’urgence, la caller-id résolue (la from que vous présentez) est filtrée par rapport à la liste Do-Not-Originate (DNO) — des numéros qui ne doivent jamais apparaître comme numéro de partie appellante parce qu’ils sont invalides, non attribués, ou entrants seulement (lignes gouvernementales, bancaires ou IFS usurpées, gratuit entrants seulement, plages non attribuées). Une from correspondant à une entrée DNO est rejetée durement au moment de l’origination, avant expédition :
  • Code d’erreur : 422 VOICE_DNO_BLOCKED
  • Charge utile de la raison : un 422 au moment de l’origination, avant qu’aucun SIP ne sorte ; l’assortiment est par préfixe, donc une entrée E.164 complète ne correspond qu’à ce numéro exactement alors qu’un préfixe plus court correspond à une plage non attribuée ou entrants seulement.
  • Contrôle du locataire : opt-in au niveau de l’organisation. La ligne de base de la plateforme se livre vide par défaut — il n’y a pas d’ensemble DNO universellement sûr, et un défaut incorrect bloquerait des caller-id légitimes — alors la vérification est un appel pas de travail abordable jusqu’à ce que vous optiez. Vous freeliste la liste via vos paramètres d’organisation avec les même modes de remplacement extend / replace / subtract que la couche des préfixes bloqués utilise. Un échec de recherche de paramètres échoue ouvert vers la ligne de base de la plateforme (généralement vide), délibérément : un hoquet transitoire de base de données ne doit pas retenir chaque appel sortant.
Le défaut d’échec ici est l’inverse de l’avertissement DNC/RND en tête de cette page : rien n’est bloqué jusqu’à ce que vous ajoutiez des entrées, et les erreurs s’ouvrent plutôt que ferment. Présentez un DID vérifié dont vous êtes propriétaire et la barrière est silencieuse. Configurez la liste comme décrit dans Blocage Do-Not-Originate (DNO) de l’ID d’appelant ; pour un appel rejeté, suivez Dépannage : les blocs de destination vocale et d’urgence.

Fenêtre de débit vocal par pays (VOICE)

La voix sortante passe aussi par une garde de débit par pays de destination à fenêtre coulissante. Une rafale concentrée sur un pays à coût élevé déclenche le plafond même quand aucun appel isolé ne paraissait excessif, et l’appel est rejeté :
  • Code d’erreur : 429 VOICE_COUNTRY_RATE_LIMITED
  • Charge utile de la raison : le corps nomme le pays, sa limit par minute et la fenêtre, p. ex. { "limit": 60, "country": "GB", "window": "1m" }. La fenêtre est coulissante (la minute en cours pondérée contre la queue de la minute précédente), pas un bloc strict.
  • Contrôle du locataire : aucun à basculer — c’est une raille de trafic vocal, pas un contrôle de conformité, et il n’y a pas de liste blanche à modifier. Lisser l’envoi l’éclaircit sans changement de configuration ; l’appel rejeté peut composer à nouveau dès que la fenêtre tourne au-dessus.
Il est documenté ici aux côtés des barrières parce qu’il se déclenche sur le même chemin pré-expédition — et les opérateurs le lisent régulièrement en erreur comme un « bloc de conformité » aux revues de posture. Il n’en est pas un : aucun verdict réglementaire ne s’y attache, et une campagne coincée à la limite du pays se redéclenche à chaque tentative, alors la correction est de faire une pause et de distribuer, pas de réessayer en place. La boucle de correction est Dépannage : les blocs de destination vocale et d’urgence.

Centre de préférences

Le centre de préférences est une page publique signée par jeton où un contact gère ses propres opt-ins par canal, la fréquence des messages et (si activé) les demandes de suppression de données — sans se connecter. Les mises à jour s’écoulent directement dans le consentement, la suppression et la barrière STOP. Configurez-le une fois, puis générez un lien par contact. La démarche complète — chaque champ de configuration, emplacement du lien et surfaces de flux de mise à jour — se trouve dans le guide du centre de préférences :
  • POST /preference-center (admin/propriétaire) — définir l’image de marque, les channels offerts, les options de fréquence et le commutateur de suppression GDPR.
  • GET /preference-center — lire la configuration actuelle.
  • POST /preference-center/link avec { "contactId": "cnt_…" } — générer un lien signé (HMAC-SHA256, TTL de 30 jours) à envoyer par e-mail ou SMS au contact.
Le contact utilise ensuite le lien public (GET/PUT /compliance/preferences/{token}) pour voir et mettre à jour ses préférences. La désinscription ici enregistre une révocation de consentement, ajoute une entrée de suppression et définit la barrière STOP ; la réinscription l’inverse.
Demander la suppression depuis le centre de préférences enregistre une demande de suppression GDPR de l’héritage uniquement — elle marque le contact pour suppression mais ne lance pas le pipeline DSAR suivi. Elle n’a pas d’horloge SLA, aucune exportation de données déchiffrée ni certificat d’effacement de l’article 17. Pour déposer une demande de droit à l’effacement suivie par SLA, exportant les données du contact et produisant un certificat d’effacement, utilisez l’endpoint DSAR (POST /compliance/dsar, propriétaire/admin uniquement) — voir Demandes de sujets à l’information personnelle.

Règles par pays

GET /country-rules est la référence réglementaire en lecture seule derrière ces barrières — par pays et par canal, elle rapporte les types d’expéditeurs autorisés, si l’enregistrement de l’ID de l’expéditeur est none / recommended / required, les exigences de mots-clés d’arrêt, le support bidirectionnel, le support DLR et le débit par défaut.
Utilisez-la pour comprendre, avant de lancer sur un marché, ce que chaque destination exige — voir Exigences de conformité par pays pour un guide champ-par-champ de lecture de cette référence.

Références connexes