custom_tlvs carries them.
Four rules, and each has bitten someone
It is an object, not a list of pairs
It is an object, not a list of pairs
A bare number is DECIMAL
A bare number is DECIMAL
1401 is decimal 1401, which is tag 0x0579 — not the 0x1401 almost everybody means.This is the dangerous one, because it parses. Nothing is refused: the gateway sends tag 0x0579,
the carrier ignores a parameter it does not recognise, and the message is delivered without the value
it was supposed to carry. There is no error anywhere.Write 0x1401 when you mean hex. Decimal tags are legal and some vendors do publish them that way,
which is precisely why the gateway cannot guess for you.The tag is what follows the LAST underscore
The tag is what follows the LAST underscore
tmid_0x1401 is tag 0x1401. The name in front is decoration the gateway keeps for its own logs,
and it may itself contain underscores — source_network_id_5120 is tag 5120 decimal.A name on its own is not enough. The gateway matches on the number.Int8 means eight BYTES
Int8 means eight BYTES
:Int8 appended to a key pins the wire encoding. The widths are octets, following the SMPP
convention:Read as bits,
Int8 would look like a one-byte field and the resulting refusal is baffling. A DLT
template id around 1.4 × 10¹⁸ fits nowhere smaller than eight bytes.The field name keeps its underscore
Every other field on this API treats_ and - as the same character. custom_tlvs does not —
custom-tlvs is 400 Unknown argument.
Where else a tag can come from
You are not the only source, and yours does not always win:1
Your custom_tlvs
Only extracted if the listener declares the tag — undeclared tags are discarded, not passed
through.
2
Your credential's defaults
Set by your provider, filling tags you did not send. This is where a DLT entity id usually
belongs, since it is a property of you rather than of any one message.
3
The whitelist stamp
On an approved template. In
replace mode this overwrites what you sent — and that overwrite
is the approval.4
The vendor's defaults
Filling anything still unset at send time.
Related
TLV declarations
The full grammar and the five declaration levels.
Send one message
Every field on the endpoint.