Skip to main content
A mesma gramática de routingTable.conf, com o valor por unidade onde routing coloca o target.
Regras são agrupadas sob um cabeçalho [scope] e avaliadas de cima para baixo dentro dele. O primeiro match vence, então regras específicas ficam acima do catch-all.

Um escopo é um lado do trade

[*] é só do lado de venda. Um fornecedor nunca herda dele, então um custo sem regra fica desconhecido em vez de silenciosamente virar o preço de venda. Que reportaria uma margin de zero em tráfego que você está de fato pagando.
Nada no schema distingue um escopo de fornecedor de um escopo de conta; o gateway distingue pelo lookup que pergunta. fireflo import --dry-run classifica todo escopo e nomeia os que não consegue classificar como nenhum dos dois. É assim que um escopo que carrega e casa com nada em silêncio é detectado.

Valores

Decimal, no máximo 4 casas decimais. Parseado exatamente, nunca por floating point, então 0.0450 significa 0.0450.
smsg.money.scale controla com quantas casas um total é publicado. Tarifas por mensagem sempre mantêm quatro, porque 0.0450 mostrado como 0.05 é 11% de erro em toda mensagem. Veja Rating.

Condições

Atributos são os do engine de roteamento: to, from, body, product, systemId, owner_id, type e o resto. matches é uma expressão regular e está ancorada. ^61.* casa com um número inteiro, um 61 puro não. Combine condições com ~~, que precisa aparecer nas três posições:

O catch-all

Sem um default, uma mensagem que não casa com nada é registrada como uma tarifa UNKNOWN, não como grátis. Esse é o desfecho honesto, e significa que a mensagem é entregue e billada a ninguém até você notar. smsg.rating.unrated.refuse transforma isso em recusa.

Forma trabalhada

Custo e preço vivem no mesmo arquivo e são a mesma gramática, que é por que o painel de controle agrupa como What we pay e What we charge em vez de misturar em uma lista. Em modo de banco este arquivo não é lido depois do startup; os mesmos dados vivem em app_rate_rule e suas tabelas de condição. Veja Banco de dados e Como funciona o pricing.