Setting up a lane
Read the match order before you send anything
Rules selecting on message class must sit above rules selecting on destination
Rules selecting on message class must sit above rules selecting on destination
A delivery receipt for a message whose sender was a numeric Indian address arrives with that number
in
to, once flag.reverseDlrSrcDst has swapped source and destination.Placed below a to matches ^91… rule, that receipt goes to a vendor instead of to the
customer.That is why the seed moves the destination rules down rather than just slotting a class rule in above
the catch-all.A gateway with no `type == 18` rule swallows every delivery receipt
A gateway with no `type == 18` rule swallows every delivery receipt
It falls to the catch-all, reaches the vendor worker, and is submitted upstream as a brand new
outbound message.
conf/routingTable.conf has always carried this rule. The database did not — and in database mode
the database wins.What each direction proves
1
Direction 1 first — MT out over SMPP
If this fails, nothing else will work either. It covers the longest path.
2
Direction 2 — the REST ingress
Failing here while 1 works isolates the problem to the HTTP ingress: auth, parsing, rate limits.
3
Direction 3 — receipts back
The one most often broken by routing order rather than by the receipt path itself.
4
Direction 4 — MO in
Needs the destination number mapped to an account. An unmapped message is recorded and delivered
nowhere, with nothing observable on the customer’s side.
Reading the outcome
Do not judge a lane by whether the send returned200 — that only means accepted for routing. Check:
cdr_submitfor a row, andcdr_finalfor an outcomecdr_rejectedfor anything refused, with its reason/ops/healthforsubmittedmoving on the vendor- The log for
message.accepted,message.submitted,message.dlr
Related
Throughput
A measured baseline to compare a load run against.
First checks
When a lane does not work.