ESMEs can request intermediate and final delivery statuses for MT messages. Delivery Receipts are sent back to the ESME via DeliverSM PDUs and can be sent on any of the RX or TRX binds bound to the SMSC.
Types of Delivery Receipts
The ESME can request notifications to track the progress of a message before the final delivery outcome of the message. The only intermediate notification supported right now is when the message is submitted to the Carrier.
Final Delivery Notifications
These will have the final delivery outcome of a message. If a message fails due to a temporary error within the SMSC or during delivery to the Carrier, the message is retried automatically and failure is reported back to the ESME after the SMSC has given up retrying the message.
Final Delivery notifications include
- The message was successfully delivered to the phone by the Carrier
- The Carrier could not deliver the message to the phone.
- The message delivery failed in the SMSC before attempting to or while attempting to send to the Carrier.
Requesting a Delivery Receipt
Delivery Receipts can be requested from the SMSC by setting the registered_delivery parameter in a SubmitSM PDU. The SMSC uses the bits 0,1 and 4 of the registered_delivery param as per the SMPP 3.4 spec to determine the types of delivery receipts that will be returned. The supported combinations for the param are listed below
x x x 0 x x 0 0
No Delivery Receipts requested.
x x x 0 x x 0 1
Final successful and failure outcome notifications requested.
x x x 0 x x 1 0
Final failure outcomes notifications requested.
x x x 1 x x 0 1
All intermediate and final delivery outcome notifications requested.
Parsing a Delivery Receipt PDU
Delivery Receipts are sent back to the ESME via DeliverSM PDUs.
The following params are set in Delivery Receipt PDUs
- The esm_class is set to 4
- The message_id is set in the receipted_message_id param.
- The status of the message is set in message_status. Refer to Sec 5.2.28 in the SMPP 3.4 spec for the all the possible values. All statuses except ENROUTE are Final Delivery Notifications.
- The short_message is formatted with more information, refer to Appendix B in the SMPP 3.4 spec for more information on the format. Ignore the "id" field in the short_message because it does not have enough characters to fit the message_id.
Network Specific Error Code
The network specific error code in the short_message will have more information on the cause for the message failure. Some of these errors should never occur because Vibes checks and ensures that these will not happen prior to transmission, but the error codes are included in the list for completeness.
Carrier Submission Error Codes ( 21 - 100 )
Carrier submission error codes are errors that occur during the transmission of a message to the carrier. They indicate a failure of the Carrier to accept the message for delivery, along with the reason for the failure.
Message content too long
The maximum message length has been exceeded.
Message failed due to internal bind configuration error
Contact Vibes Support to check source of configuration error.
Message failed due to internal error while submitting message
Contact Vibes Support to check cause of the error.
Invalid source address
T-Mobile specific description:
Source address blacklisted
Invalid destination address
The destination MDN for the message is invalid, due to:
Destination address blacklisted
Carrier message queue full
Exceeded allowed Carrier throttle rates
Carrier failed while delivering message due to temporary error
Carrier failed while delivering message
Carrier temporarily unable to route message
Carrier unable to route message
Carrier system unavailable
Destination not opted in to receive messages from source address
Invalid number of destinations
Invalid distribution list name
Invalid submit to distribution list
Invalid number of messages
Invalid scheduled delivery time
Invalid Validity Period value
MDN not on Carrier Network
Unknown Error while submitting to the Carrier
Carrier Delivery Receipt Error Codes ( 100 - 140 )
Delivery Receipt error responses indicate the failure of the carrier to deliver a message to the phone.
Carrier returned that the receipt state of the message is Unknown.
Message validity expired before the Carrier could deliver to the phone
Message was deleted by the Carrier
Message was undeliverable by the Carrier to the phone
Message was accepted on behalf of the phone
Message was rejected by the phone
The MDN is not opted in for premium/subscription services
Verizon specific status when the VMP does not have an opt-in for the MDN. Not a part of the SMPP spec.
Carrier failed while submitting message
Verizon specific status. Not a part of the SMPP spec.
A general catch-all error when Vibes is not able to parse the status of the message returned by the Carrier.