SMS Delivery Reports

Delivery Reports

When an MT message is delivered to a handset, or fails for any reason, you will receive a callback with a delivery report. This is required for charged messages, optional (but recommended) for free messages. If the message is multi-part message, then it will get a delivery report for each part. It can be sent in JSON, XML, or HTTP GET/POST key/value pairs. If you want to change your format or your URL, please contact Support.

Common requires that your receiver responds with a HTTP status of 200 OK to acknowledge receipt of the delivery report. For added reliance, Common can also require that your receiver responds with a certain string in the body as well; this is optional. If you want this, please contact Support and they will enable it on your Gate.

Delivery reports will be POSTed to your service from the following IPs, please make sure there is an opening in your firewall for the Hosts listed further below in this document.

 

Delivery reports contain the following fields:

Field

Data type

Description

refId

String

If you used a refId when submitting the message, this will be mirrored here. If not, this will be null.

id

String

This is Common’s internal message ID for this message. It mirrors the ID which was given to you when submitting the message. If the message is a multipart message, the id will have the following pattern {id}${n}* where n is the ordinal number that identifies the part.

 

*Example: abc123$0 is the first part of the message with id abc123

operator

String

The telecom operator the message was sent to (The end-users’s operator)

sentTimestamp

DateTime

The timestamp when Common sent the message to the telecom operator.

UTC time formatted according to RFC3339.

timestamp

DateTime

The timestamp from the telecom operator for this status message. UTC time formatted according to RFC3339.

resultCode

Integer

The status of the message. For what the different codes mean, see Status codes table below.

operatorResultCode

String

The unmapped status of the message from the operator. Each telecom operator has different statuses and this is only provided for debugging or reference, resultCode is the real status.

segments

Integer

The number of segments (of 140 bytes) the message was split into for delivery.

gateCustomParameters

<List>KeyValue

If there are any custom parameters set on your gate, they will be provided here. Usually blank.

customParameters

<List>KeyValue

If there are any extra fields in the delivery report Common receives from the operator, they will be listed here. Usually blank or non-important. Note: the parameters source and destination (as defined in the request) added by default to the customParameters.

Result Codes

Follow this link for a listing of common result codes,https://sergel.atlassian.net/wiki/spaces/~7012173a4d6732ef54b5ea88da4ffab44a251/pages/1926660101.

Delivery Report Example

The following example is an example of a successfully delivered message. refId and id have been set to invalid values in this example.

{ "refId": "0", "id": "0", "operator": "no.telenor", "sentTimestamp": "2015-11-19T09:37:35Z", "timestamp": "2015-11-19T09:37:00Z", "resultCode": 1001, "operatorResultCode": "2", "segments": 1, "gateCustomParameters": {}, "customParameters": { "received": "2015-11-19 10:37:36" } }

 

The following example is an example of a message which was attempted sent to a phone number which does not exist. refId and id have again been set to invalid values in this example.

{ "refId": "0", "id": "0", "operator": null, "sentTimestamp": "2015-11-19T10:17:37Z", "timestamp": "2015-11-19T10:17:37Z", "resultCode": 2106, "operatorResultCode": null, "segments": 1, "gateCustomParameters": {}, "customParameters": { "received": "2015-11-19 11:17:37" } }

List of hosts

The following hosts are currently used for outgoing messaging from the SMS Platform.