NowSMS SMPP Error Handling

NowSMS SMPP Error Handling SearchSearch
Author Message
Watson
New member
Username: Watson

Post Number: 1
Registered: 03-2007
Posted on Friday, March 23, 2007 - 02:30 pm:   

Hi NowSms, do you have documentation on how nowsms handles error codes returned from an SMPP provider, say mblox?
Bryce Norwood - NowSMS Support
Board Administrator
Username: Bryce

Post Number: 7011
Registered: 10-2002
Posted on Monday, March 26, 2007 - 10:44 pm:   

Hi Watson,

The default behaviour for NowSMS with an SMPP connection is as follows:

For most SMPP error codes, NowSMS will assume that the error is temporary, and retry message delivery with a delayed retry schedule.

The exceptions to this are detailed below:

The following error conditions cause NowSMS to record a message delivery failure and NOT retry sending:

ESME_RINVDSTADDR (0x0B, invalid destination/recipient address)
ESME_RINVSRCADDR (0x0A, invalid source/sender address)
ESME_RX_R_APPN (0x66, receiver reject message)

The following error codes cause NowSMS to retry more times than the RetryMaxAttempts setting (default=20) allows:

ESME_RTHROTTLED (0x58, throttle error, slow down)
ESME_RMSGQFUL (0x14, message queue full)


For all other errors, NowSMS will retry sending the message up to RetryMaxAttempts times (default=20).

However, if you have particular error codes from your SMS provider that you need to treat as failure, you can add them to the SMPPRejectErrorCodes setting.

For example, to treat the 0xFE error as a permanent error, you would edit SMSGW.INI, and under the [SMSGW] header, add:

SMPPRejectErrorCodes=FE

For error codes other than those listed above (or that are configured under the SMPPRejectErrorCodes setting in SMSGW.INI), NowSMS applies a delayed retry schedule.

The default behaviour for the delayed retry schedule works like this:

After the first error, a retry can be attempted immediately (but first NowSMS will try other pending messages in the outbound queue).

After the second error, NowSMS will wait 30 seconds before allowing the message to be retried. After the third error, NowSMS will wait 60 seconds before allowing the message to be retried. For each successive error, NowSMS waits an additional 30 seconds before allowing a retry. After 20 errors, the message will be considered as failed.

The following parameters can be applied to the [SMSGW] section of the SMSGW.INI file to provide additional control for the retry schedule:

RetryDelay=
RetryDelayMultiplier=
RetryDelayAfterAttempts=
RetryDelayMax=
RetryMaxAttempts=

The above parameters control retry behaviour for when NowSMS is submitting messages to an SMSC and an error occurs.

RetryDelay=#### specifies a number of seconds to wait to retry sending after an error condition, the default value is 30.

RetryDelayMultiplier=### specifies a multiplier to be applied for successive send failures, the default value is 1. For each failed attempt, the retry delay will be the product of RetryDelay*RetryDelayMultiplier*#FailedAttempts.

To use a fixed retry delay of RetryDelay, specify RetryDelayMultiplier=0.

RetryDelayAfterAttempts=### specifies that the retry delay should only be applied after ### failed attempts, the default value is 2. NowSMS will immediately retry a failed message send until it has made RetryDelayAfterAttempts, after which it will apply a retry delay.

RetryMaxAttempts=### specifies the maximum number of retries that NowSMS will attempt before a message is rejected, the default value is 20.

-bn
Oliver Dewdney
New member
Username: Odewdney

Post Number: 1
Registered: 04-2007
Posted on Thursday, April 19, 2007 - 05:17 pm:   

Shouldn't all error messages be treated as permenant error/failure with an exception list?

eg ESME_RTHROTTLED, ESME_RMSGQFUL, ESME_RX_T_APPN