Un produit non défini est un état supporté qui envoie gratuitement
Laisserproduct hors d’un login est une configuration légale. Il correspond à product:isNull: dans la table de routage et il n’est tarifé que par des règles de tarification qui elles-mêmes n’ont aucun produit.
Cette dernière clause est tout le piège. Une règle sans produit s’applique à chaque produit, mais un message sans produit ne voit que les règles qui n’en ont aucun. Ce ne sont pas deux orthographes de « n’importe quel ».
Deux paramètres le ferment, tous deux désactivés par défaut :
Le routage au moindre coût tolère volontairement toujours un vendeur sans tarif de coût. C’est une question différente de savoir si le client peut être facturé, et transformer une ligne de tarif vendeur oubliée en panne serait pire que la chose que cela évite.
Pourquoi le contrôle est l’appartenance, pas la non-vacuité
system_type sur un bind SMPP surcharge le produit du login, et c’est du texte libre validé nulle part ailleurs.
Donc un client qui bind prem quand le produit est premium passe parfaitement tout test de non-vacuité, et atterrit exactement dans l’état sans tarif ci-dessus. Seul le contrôle du nom contre le catalogue l’attrape. C’est ce que conf.product.required fait, et pourquoi ce n’est pas simplement « product doit être défini ».
HTTP n’a pas de bind et donc pas de surcharge : là le product du login est la seule source.
Avant d’activer l’un ou l’autre, lisez le rapport pré-vol sur la page Servers du panel : il liste les logins qui cesseraient de se connecter. Notez ce qu’il ne peut pas voir. Pour un login SMPP il vérifie le repli du login, donc un client qui bind un system_type mal orthographié n’y apparaîtra pas.
La page Pricing porte l’autre pré-vol : le trafic des 24 dernières heures qui n’avait aucun prix, nommé par compte et produit. C’est précisément ce que smsg.rating.unrated.refuse commencerait à refuser. Il compte les messages dont le CDR n’a pas de price_rule_id, donc une règle délibérément à 0 n’y est pas. Une route gratuite reste gratuite et continue d’envoyer.
La ligne du catalogue
Exempter un produit du whitelisting
- Un produit exempt surcharge le compte. Un compte réglé sur
ENFORCEenvoie toujours librement sous un produit exempt. - Aucun produit n’est pas exempt. Le trafic ne nommant aucun produit du tout est vérifié. Sinon la façon de sortir d’une whitelist serait d’arrêter d’envoyer un
system_type. - Un produit inconnu n’est pas exempt. Un nom sans ligne dans
app_productest vérifié. C’est une faute de frappe dans un login bien plus souvent qu’une intention.
enabled = false) met aussi fin à son exemption : les produits exempts sont lus comme enabled AND NOT whitelist_enabled. Cette direction est la sûre. Le trafic commence à être vérifié plutôt qu’à s’arrêter. Mais elle peut commencer à refuser des sender IDs que personne n’a approuvés, donc retirez un produit exempt de la liste délibérément plutôt que par rangement.
Nommer un produit sur un envoi REST
Un appelant REST peut envoyerproduct sur /secure/send, /secure/sendbatch et /secure/rate, et il n’est accepté que depuis un login dont allowedProducts le nomme.
Une liste blanche plutôt qu’un champ simple pour la même raison que tout le reste sur cette page : le produit sélectionne le tarif, donc un appelant libre de nommer son propre produit est libre de choisir son propre prix.
Comment fonctionne la tarification
Où chaque côté est tarifé, et ce que signifie un montant inconnu.
Déployer le whitelisting
Les quatre interrupteurs, et l’ordre dans lequel ils s’appliquent.