Um product não definido é um estado suportado que envia de graça
Deixarproduct fora de uma credencial é configuração válida. Ela combina com product:isNull: na
tabela de roteamento e é tarifada apenas por regras de tarifa que elas próprias não carregam produto.
Essa última cláusula é toda a armadilha. Uma regra sem produto se aplica a todos os produtos, mas
uma mensagem sem produto enxerga apenas as regras que também não têm nenhum. Elas não são duas
formas de escrever “qualquer”.
Duas configurações fecham isso, ambas desligadas por padrão:
O roteamento least-cost deliberadamente ainda tolera um fornecedor sem regra de tarifa de custo —
essa é uma questão diferente de saber se o cliente pode ser cobrado, e transformar uma linha esquecida
de tarifa de fornecedor em uma indisponibilidade seria pior do que o que ela previne.
Por que a checagem é de pertinência, não de não-vazio
system_type em um bind SMPP sobrescreve o produto da credencial, e é texto livre que não é
validado em nenhum outro lugar.
Assim, um cliente que faz bind com prem quando o produto é premium passa perfeitamente em qualquer
teste de não-vazio, e cai exatamente no estado sem tarifação acima. Somente checando o nome contra o
catálogo é que se pega isso — que é o que conf.product.required faz, e por que ele não é simplesmente
“o produto precisa estar definido”.
HTTP não tem bind e portanto não tem sobrescrita: nele o product da credencial é a única fonte.
Antes de ligar qualquer uma delas, leia o relatório de pré-verificação na página Servers do
painel: ela lista os logins que deixariam de conectar. Note o que ela não pode ver — para um login
SMPP ela checa o fallback da credencial, então um cliente fazendo bind com um system_type digitado
errado não aparecerá lá.
A página Pricing carrega a outra pré-verificação: o tráfego das últimas 24 horas que não teve
preço, nomeado por conta e produto. Isso é precisamente o que smsg.rating.unrated.refuse começaria a
recusar. Ela conta mensagens cujo CDR não tem price_rule_id, então uma regra deliberadamente
configurada como 0 não está nela — uma rota grátis permanece grátis e continua enviando.
A linha do catálogo
Isentando um produto de whitelisting
- Um produto isento sobrescreve a conta. Uma conta configurada como
ENFORCEainda envia livremente sob um produto isento. - Nenhum produto não é isento. Tráfego nomeando nenhum produto é checado. Caso contrário, a saída
de uma whitelist seria simplesmente parar de enviar um
system_type. - Um produto desconhecido não é isento. Um nome sem linha em
app_producté checado. É um erro de digitação em uma credencial muito mais frequentemente do que uma intenção.
enabled = false) também encerra sua isenção: produtos isentos são lidos
como enabled AND NOT whitelist_enabled. Essa direção é a segura — o tráfego começa a ser checado em
vez de parar. Mas pode começar a recusar sender IDs que ninguém aprovou, portanto retire da lista um
produto isento deliberadamente, e não como arrumação.
Nomeando um produto em um envio REST
Um chamador REST pode enviarproduct em /secure/send, /secure/sendbatch e /secure/rate, e ele
é aceito apenas de um login cujo allowedProducts o nomeie.
Uma lista de permissão em vez de um simples campo pela mesma razão que tudo mais nesta página: o
produto seleciona a tarifa, então um chamador livre para nomear seu próprio produto está livre para
escolher seu próprio preço.
How pricing works
Onde cada lado é tarifado, e o que um valor desconhecido significa.
Rolling whitelisting out
Os quatro interruptores, e a ordem em que se aplicam.