The SMS > STATUS SEND page does not display a description for messages «delivered« and those «queued.
However the error messages are displayed in the following format: Status_RoutingCode_ErrorCode
Below are the descriptions of the codes returned in case of error.
Note: For the protocol used, there is also the state DELIVRD (message delivered) but this will never be displayed, because it does not fall into the error’s examples
Depending on the route (SMSC) which is sent a SMS error the code may be different. The possible paths are identified by numbers (1, 2, 3, …)
For errors like «NACK« they depend on messages belonging to the 0x00000400-0x000004FF interval.
The first table shows errors are independent by the route, while the following tables report dependencies to the SMSC on which the message was routed.
ErrorCode |
Error Description |
0x00000000 |
No Error |
0x00000001 |
Message Length is invalid |
0x00000002 |
Command Length is invalid |
0x00000003 |
Invalid Command ID |
0x00000004 |
Incorrect BIND Status for given command |
0x00000005 |
ESME Already in Bound State |
0x00000006 |
Invalid Priority Flag |
0x00000007 |
Invalid Registered Delivery Flag |
0x00000008 |
System Error |
0x00000009 |
Reserved |
0x0000000A |
Invalid Source Address |
0x0000000B |
Invalid Dest Addr |
0x0000000C |
Message ID is invalid |
0x0000000D |
Bind Failed |
0x0000000E |
Invalid Password |
0x0000000F |
Invalid System ID |
0x00000010 |
Reserved |
0x00000011 |
Cancel SM Failed |
0x00000012 |
Reserved |
0x00000013 |
Replace SM Failed |
0x00000014 |
Message Queue Full |
0x00000015 |
Invalid Service Type |
0x00000016-0x00000032 |
Reserved |
0x00000033 |
Invalid number of destinations |
0x00000034 |
Invalid Distribution List name |
0x00000035-0x0000003F |
Reserved |
0x00000040 |
Destination flag is invalid (submit_multi) |
0x00000041 |
Reserved |
0x00000042 |
Invalid ‘submit with replace’ request (i.e. submit_sm with replace_if_present_flag set) |
0x00000043 |
Invalid esm_class field data |
0x00000044 |
Cannot Submit to Distribution List |
0x00000045 |
submit_sm or submit_multi failed |
0x00000046-0x00000047 |
Reserved |
0x00000048 |
Invalid Source address TON |
0x00000049 |
Invalid Source address NPI |
0x00000050 |
Invalid Destination address TON |
0x00000051 |
Invalid Destination address NPI |
0x00000052 |
Reserved |
0x00000053 |
Invalid system_type field |
0x00000054 |
Invalid replace_if_present flag |
0x00000055 |
Invalid number of messages |
0x00000056-0x00000057 |
Reserved |
0x00000058 |
Throttling error (ESME has exceeded allowed message limits) |
0x00000059-0x00000060 |
Reserved |
0x00000061 |
Invalid Scheduled Delivery Time |
0x00000062 |
Invalid message validity period (Expiry time) |
0x00000063 |
Predefined Message Invalid or Not Found |
0x00000064 |
ESME Receiver Temporary App |
0x00000065 |
ESME Receiver Permanent App Error |
0x00000066 |
ESME Receiver Reject Message Error |
0x00000067 |
query_sm request failed |
0x00000068-0x000000BF |
Reserved |
0x000000C0 |
Error in the optional part of the PDU |
0x000000C1 |
Optional Parameter not allowed |
0x000000C2 |
Invalid Parameter Length. |
0x000000C3 |
Expected Optional Parameter missing |
0x000000C4 |
Invalid Optional Parameter Value |
0x000000C5-0x000000FD |
Reserved |
0x000000FE |
Delivery Failure (used for data_sm_resp) |
0x000000FF |
Unknown Error |
0x00000100-0x000003FF |
Reserved for SMPP extension |
0x00000400-0x000004FF |
Reserved for SMSC vendor specific errors |
0x00000500-0xFFFFFFFF |
Reserved |
Error-Code |
Error Description |
401 |
Number blacklisted in system |
402 |
Client blacklisted in system |
403 |
Prefix blacklisted in system |
404 |
Invalid account Error |
405 |
No longer applicable |
406 |
Destination busy — The message was not sent due to the fact that the QoS was busy, please try again. |
407 |
Reply Type Error. |
408 |
MSIP Syntax Error. |
409 |
No longer applicable |
40A |
System unavailable. |
40B |
System unavailable. |
40C |
System unavailable. |
40D |
Profile Error. |
40E |
Username not set — No username was specified. |
40F |
Do not try again. Binary message not allowed on profile. — This message does not allow binary messages. |
410 |
Temporary System failure, please retry. |
411 |
Number unroutable. Do not retry. |
412 |
Number Temporarily unroutable, please try again. |
413 |
Number unroutable. Do not retry. |
414 |
Number unroutable on current settings. Do not retry. |
415 |
Number Temporarily unroutable, please try again. |
416 |
Number unroutable. Do not retry. |
417 |
Number unroutable. Do not retry. |
418 |
Number unroutable. Do not retry. |
419 |
Number unroutable. Do not retry. |
41A |
Number unroutable. Do not retry. |
41B |
Number unroutable. Do not retry. |
41C |
Number Temporarily unroutable, please try again. |
41D |
Number unroutable. Do not retry. |
41E |
Number Temporarily unroutable, please try again. |
41F |
Number Temporarily unroutable, please try again. |
420 |
Unable to send on local deliverer |
421 |
Cannot find originator for index. Do not retry. |
422 |
Destination unavailable, please try again. |
The following table shows the values of specific ErrorCode for the route. Lines highlighted in green relate to the message returned if the message is sent successfully.
There is no specific ErrorCode of this route. We only use information from the Status field.
Error-Code |
Error Description |
Permanent |
Status |
1 |
Phone related |
No |
BUFFERED |
2 |
Deliver related: message within operator |
No |
BUFFERED |
3 |
Accepted bySMSC |
No |
ACKED |
4 |
Delivered to mobile device |
n/a |
DELIVERED |
5 |
Message failed — detailed reason is unknown |
n/a |
FAILED |
6 |
Final status of message is unknown |
n/a |
UNKNOWN |
8 |
Message expired within the operator and failure reason is unknown |
No |
FAILED |
20 |
Permanent operator error |
Yes |
FAILED |
21 |
Credit related: message has been retried by operator |
No |
FAILED |
23 |
Absent subscriber permanent |
Yes |
FAILED |
24 |
Absent subscriber temporary |
No |
FAILED |
25 |
Operator network failure |
No |
FAILED |
26 |
Phone related error |
No |
FAILED |
27 |
Permanent phone related error |
Yes |
FAILED |
28 |
Anti-spam |
Yes |
FAILED |
29 |
Content related error |
Yes |
FAILED |
33 |
Age verification failure — parental lock |
Yes |
FAILED |
73 |
Mobile number portability error |
Yes |
FAILED |
74 |
Roaming error |
No |
FAILED |
76 |
Mobile number portability and blocking error |
Yes |
FAILED |
202 |
Mobile number portability error |
Yes |
FAILED |
Error code |
Error description |
Permanent |
Status |
0000 |
EC_DELIVRD |
Yes |
DELIVERED |
1 |
EC_UNKNOWN_SUBSCRIBER |
Yes |
UNDELIV |
5 |
EC_UNIDENTIFIED_SUBSCRIBER |
No |
EXPIRED |
6 |
EC_ABSENT_SUBSCRIBER_SM |
No |
EXPIRED |
9 |
EC_ILLEGAL_SUBSCRIBER |
Yes |
UNDELIV |
11 |
EC_TELESERVICE_NOT_PROVISIONED |
Yes |
UNDELIV |
12 |
EC_ILLEGAL_EQUIPMENT |
Yes |
UNDELIV |
13 |
EC_CALL_BARRED |
No |
EXPIRED |
21 |
EC_FACILITY_NOT_SUPPORTED |
No |
EXPIRED |
27 |
EC_ABSENT_SUBSCRIBER |
No |
EXPIRED |
31 |
EC_SUBSCRIBER_BUSY_FOR_MT_SMS |
No |
EXPIRED |
32 |
EC_SM_DELIVERY_FAILURE |
No |
EXPIRED |
33 |
EC_MESSAGE_WAITING_LIST_FULL |
No |
EXPIRED |
34 |
EC_SYSTEM_FAILURE |
No |
EXPIRED |
35 |
EC_DATA_MISSING |
Yes |
UNDELIV |
36 |
EC_UNEXPECTED_DATA_VALUE |
Yes |
UNDELIV |
256 |
EC_SM_DF_memoryCapacityExceeded |
No |
EXPIRED |
257 |
EC_SM_DF_equipmentProtocolError |
No |
EXPIRED |
258 |
EC_SM_DF_equipmentNotSM_Equipped |
No |
EXPIRED |
259 |
EC_SM_DF_unknownServiceCentre |
No |
EXPIRED |
260 |
EC_SM_DF_sc_Congestion |
No |
EXPIRED |
261 |
EC_SM_DF_invalidSME_Address |
No |
EXPIRED |
262 |
EC_SM_DF_subscriberNotSC_Subscriber |
No |
EXPIRED |
500 |
EC_PROVIDER_GENERAL_ERROR |
No |
EXPIRED |
502 |
EC_NO_RESPONSE |
No |
EXPIRED |
503 |
EC_SERVICE_COMPLETION_FAILURE |
No |
EXPIRED |
504 |
EC_UNEXPECTED_RESPONSE_FROM_PEER |
No |
EXPIRED |
507 |
EC_MISTYPED_PARAMETER |
No |
EXPIRED |
508 |
EC_NOT_SUPPORTED_SERVICE |
No |
EXPIRED |
509 |
EC_DUPLICATED_INVOKE_ID |
No |
EXPIRED |
511 |
EC_INITIATING_RELEASE |
No |
EXPIRED |
1024 |
EC_OR_appContextNotSupported |
No |
EXPIRED |
1025 |
EC_OR_invalidDestinationReference |
No |
EXPIRED |
1026 |
EC_OR_invalidOriginatingReference |
No |
EXPIRED |
1027 |
EC_OR_encapsulatedAC_NotSupported |
No |
EXPIRED |
1028 |
EC_OR_transportProtectionNotAdequate |
No |
EXPIRED |
1030 |
EC_OR_potentialVersionIncompatibility |
No |
EXPIRED |
1031 |
EC_OR_remoteNodeNotReachable |
No |
EXPIRED |
1152 |
EC_NNR_noTranslationForAnAddressOfSuchNatur |
No |
EXPIRED |
1153 |
EC_NNR_noTranslationForThisSpecificAddress |
No |
EXPIRED |
1154 |
EC_NNR_subsystemCongestion |
No |
EXPIRED |
1155 |
EC_NNR_subsystemFailure |
No |
EXPIRED |
1156 |
EC_NNR_unequippedUser |
No |
EXPIRED |
1157 |
EC_NNR_MTPfailure |
No |
EXPIRED |
1158 |
EC_NNR_networkCongestion |
No |
EXPIRED |
1159 |
EC_NNR_unqualified |
No |
EXPIRED |
1160 |
EC_NNR_errorInMessageTransportXUDT |
No |
EXPIRED |
1161 |
EC_NNR_errorInLocalProcessingXUDT |
No |
EXPIRED |
1162 |
EC_NNR_destinationCannotPerformReassemblyXUDT |
No |
EXPIRED |
1163 |
EC_NNR_SCCPfailure |
No |
EXPIRED |
1164 |
EC_NNR_hopCounterViolation |
No |
EXPIRED |
1165 |
EC_NNR_segmentationNotSupported |
No |
EXPIRED |
1166 |
EC_NNR_segmentationFailure |
No |
EXPIRED |
1281 |
EC_UA_userSpecificReason |
No |
EXPIRED |
1282 |
EC_UA_userResourceLimitation |
No |
EXPIRED |
1283 |
EC_UA_resourceUnavailable |
No |
EXPIRED |
1284 |
EC_UA_applicationProcedureCancellation |
No |
EXPIRED |
1536 |
EC_PA_providerMalfunction |
No |
EXPIRED |
1537 |
EC_PA_supportingDialogOrTransactionRealeased |
No |
EXPIRED |
1538 |
EC_PA_ressourceLimitation |
No |
EXPIRED |
1539 |
EC_PA_maintenanceActivity |
No |
EXPIRED |
1540 |
EC_PA_versionIncompatibility |
No |
EXPIRED |
1541 |
EC_PA_abnormalMapDialog |
No |
EXPIRED |
1793 |
EC_NC_responseRejectedByPeer |
No |
EXPIRED |
1794 |
EC_NC_abnormalEventReceivedFromPeer |
No |
EXPIRED |
1795 |
EC_NC_messageCannotBeDeliveredToPeer |
No |
EXPIRED |
1796 |
EC_NC_providerOutOfInvoke |
No |
EXPIRED |
2048 |
EC_TIME_OUT |
No |
EXPIRED |
2049 |
EC_IMSI_BLACKLISTED |
Yes |
UNDELIV |
2050 |
EC_DEST_ADDRESS_BLACKLISTED |
Yes |
UNDELIV |
2051 |
EC_InvalidMscAddress |
No |
EXPIRED |
4096 |
EC_InvalidPduFormat |
Yes |
UNDELIV |
4100 |
EC_Cancelled |
Yes |
EXPIRED |
4101 |
EC_ValidityExpired |
Yes |
UNDELIV |
Error-Code |
Status |
Permanent |
Descrizione |
00 |
DELIVRD |
Y |
Message is delivered to destination |
01 |
REJECTD |
Y |
SMPP Gateway cannot accept the message for delivery ( i.e. you run out of credit if your account is a prepaid one ) |
02 |
UNDELIV |
Y |
Mobile network attemtps to deliver the message have been failed |
03 |
ACCEPTED |
N |
Mobile network has accepted message for delivery |
04 |
FAILED |
Y |
Mobile network is unable to accept message for delivery |
05 |
EXPIRED |
Y |
Message validity period has expired |
99 |
UNKNOWN |
Y |
AT cannot determine the status of your message |
Error-Code |
Descrizione |
Permanent |
Status |
000 |
DELIVERED |
Y |
DELIVRD |
001 |
EXPIRED (generic error) |
||
002 |
UNKNOWN (generic error) |
UNKNOWN |
|
003 |
UNDELIV (generic error) |
UNDELIV |
|
004 |
UNDELIV (generic error) |
||
005 |
DELETED (generic error) |
||
006 |
FAILED (generic error) |
FAILED |
|
007 |
REJECTD (generic error) |
REJECTD |
|
008 |
UNKNOWN (generic error) |
UNKNOWN |
|
101 |
abort |
||
102 |
absent subscriber |
FAILED, UNDELIV |
|
103 |
absent subscriber sm |
||
104 |
absent subscriber temporary |
FAILED |
|
105 |
absent subscriber. imsi detached. |
||
106 |
absent subscriber. no paging response via msc. |
||
107 |
absent subscriber. roaming restriction. |
||
108 |
absent subscriber: the message is undeliverable |
||
109 |
age verification failure failed av |
||
110 |
age verification failure no previous av |
||
111 |
age verification failure parental lock |
||
112 |
age verification failure temporary av error |
||
113 |
agent not registered |
||
114 |
anti spam |
||
115 |
ati not allowed |
||
116 |
bad parameter value |
||
117 |
badly formatted transaction portion |
||
118 |
badly structured component |
||
119 |
barring service active |
||
120 |
bearer service not provisioned |
||
121 |
blacklisted destination |
||
122 |
blacklisted_opc |
||
123 |
blacklisted_prefix |
||
124 |
busysubscriber |
||
125 |
call barred |
UNDELIV |
|
126 |
cancelled |
||
127 |
charged failed |
||
128 |
connection aborted before delivery |
||
129 |
content related error |
||
130 |
context could not be loaded |
||
131 |
controling msc system failure |
||
132 |
could not asn.1 encode a parameter. |
||
133 |
could not decode an asn.1 encoded parameter. |
||
134 |
could not open map dialogue |
||
135 |
credit related message may be being retried |
||
136 |
credit related: message has been retried |
||
137 |
cug_reject |
||
138 |
customer blocked |
||
139 |
data missing |
||
140 |
data not found |
||
141 |
dcs inconsistency |
||
142 |
delivery fail |
REJECTD |
|
143 |
deregistered in hlr for gprs |
||
144 |
deregistered in hlr for non-gprs |
||
145 |
deregistered in the hlr for gprs |
||
146 |
deregistered in the hlr for non-gprs |
||
147 |
dest_address_blacklisted |
||
148 |
destination blocked |
||
149 |
destination blocked by customer |
||
150 |
destination network or country is blocked. |
||
151 |
device unable to receive sms |
||
152 |
dialogue collision |
||
153 |
dialogue queue size exceeded. |
||
154 |
dialogue timed out |
||
155 |
duplicate invoke id |
||
156 |
eir system failure |
||
157 |
equipment memory capacity exceeded |
||
158 |
equipment not sm equiped |
||
159 |
equipment not supported |
||
160 |
equipment protocol error |
||
161 |
error in ms |
||
162 |
error in smt |
||
163 |
esme client error |
||
164 |
exceeded maximum length |
||
165 |
expired |
FAILED |
|
166 |
facility not supported |
||
167 |
failed_to_req_routing_info |
||
168 |
flood protection in multiple identical messages |
||
169 |
format error |
||
170 |
forwardingfailed |
||
171 |
forwardingviolation |
||
172 |
gprs connection suspended |
||
173 |
gprs detached |
||
174 |
handset delivery failure |
||
175 |
handset error |
||
176 |
handset memory exceeded |
||
177 |
hlr error |
||
178 |
hlr failure |
||
179 |
hlr system failure |
ACCEPTD |
|
180 |
illegal character in message body |
||
181 |
illegal equipment |
||
182 |
illegal subscriber |
||
183 |
illegalss-operation |
||
184 |
imsi detached |
||
185 |
imsi_blacklisted |
||
186 |
inappropriate transport message |
||
187 |
incompatibleterminal |
||
188 |
incorrect ie length |
||
189 |
incorrect message length |
||
190 |
incorrect transaction portion |
||
191 |
initiating release |
||
192 |
insufficient credit |
||
193 |
insufficient credits to send message |
||
194 |
internal error code |
||
195 |
internal recoverable system failure |
||
196 |
internal server error |
||
197 |
invalid acct — your number has expire date |
||
198 |
invalid delivery outcome |
||
199 |
invalid destination address |
UNKNOWN |
|
200 |
invalid dialogue id |
||
201 |
invalid input format |
||
202 |
invalid msisdn/destaddr |
||
203 |
invalid parameter |
||
204 |
invalid params |
||
205 |
invalid payload length |
||
206 |
invalid pdu format |
||
207 |
invalid response received |
||
208 |
invalid service id from the request. |
||
209 |
invalid sme address |
||
210 |
invalid source address |
||
211 |
invalid srcaddr |
||
212 |
invalidmscaddress |
||
213 |
invalidpduformat |
||
214 |
invalidsme-address |
||
215 |
invalidtargetbasestation |
||
216 |
linked response unexpected |
||
217 |
local acl deny |
||
218 |
local cancel |
||
219 |
login incorrect |
||
220 |
longtermdenial |
||
221 |
max_attempts_reached |
||
222 |
mb_err_blacklisted_dpc |
||
223 |
mb_err_blacklisted_smsc |
||
224 |
mcef-set |
||
225 |
memory capacity exceeded |
||
226 |
message body error |
||
227 |
message expired within the operator |
||
228 |
message expired, reason unknown |
||
229 |
message too long |
||
230 |
message waiting list full |
||
231 |
missing mandatory ie |
||
232 |
missing parameter |
||
233 |
missing params |
||
234 |
mistyped component |
||
235 |
mnrf-set |
||
236 |
mnrg-set |
||
237 |
mobile number portability and blocking error |
||
238 |
mobile number portability error (client side) |
||
239 |
mobile number portability error (operator side) |
||
240 |
mobile subscriber not reachable |
||
241 |
ms not equipped |
UNKNOWN |
|
242 |
ms protocol error |
||
243 |
ms purged for gprs |
||
244 |
ms purged for non-gprs |
||
245 |
national blacklist |
||
246 |
nc_abnormaleventreceivedfrompeer |
||
247 |
nc_messagecannotbedeliveredtopeer |
||
248 |
nc_provideroutofinvoke |
||
249 |
nc_responserejectedbypeer |
||
250 |
network specific error codes |
||
251 |
network timeout |
||
252 |
nnr_destinationcannotperformreassemblyxudt |
||
253 |
nnr_errorinlocalprocessingxudt |
||
254 |
nnr_errorinmessagetransportxudt |
||
255 |
nnr_hopcounterviolation |
||
256 |
nnr_mtpfailure |
||
257 |
nnr_networkcongestion |
||
258 |
nnr_notranslationforanaddressofsuchnatur |
||
259 |
nnr_notranslationforthisspecificaddress |
||
260 |
nnr_sccpfailure |
||
261 |
nnr_segmentationfailure |
||
262 |
nnr_segmentationnotsupported |
||
263 |
nnr_subsystemcongestion |
||
264 |
nnr_subsystemfailure |
||
265 |
nnr_unequippeduser |
||
266 |
nnr_unqualified |
||
267 |
no free dialogues |
||
268 |
no interworking module available |
||
269 |
no is41 server available |
||
270 |
no mt connection found for short number |
||
271 |
no network response |
||
272 |
no own smh |
||
273 |
no paging response msc |
||
274 |
no paging response via sgsn |
||
275 |
no paging response via the msc |
||
276 |
no paging response via the sgsn |
||
277 |
no response from is41 server |
||
278 |
no response from peer |
||
279 |
no retry allowed |
||
280 |
no route found |
||
281 |
no session with user |
||
282 |
no subscriber reply |
||
283 |
no_response |
||
284 |
no_route_to_destination |
||
285 |
no_route_to_destination_sip |
||
286 |
no_sub_reply |
||
287 |
node not reachable |
||
288 |
nogroupcallnumberavailable |
||
289 |
nohandovernumberavailable |
||
290 |
noradioresourceavailable |
||
291 |
noroam |
||
292 |
nosubscriberreply |
||
293 |
not supported service |
||
294 |
not_prov |
||
295 |
not_supported |
||
296 |
not_supported_service |
||
297 |
numberchanged |
||
298 |
numberofpw-attemptsviolation |
||
299 |
operator barring |
||
300 |
operator network failure |
||
301 |
or_appcontextnotsupported |
||
302 |
or_encapsulatedac_notsupported |
||
303 |
or_invaliddestinationreference |
||
304 |
or_invalidoriginatingreference |
||
305 |
or_potentialversionincompatibility |
||
306 |
or_remotenodenotreachable |
||
307 |
or_transportprotectionnotadequate |
||
308 |
or-notallowed |
||
309 |
pa_abnormalmapdialog |
||
310 |
pa_maintenanceactivity |
||
311 |
pa_providermalfunction |
||
312 |
pa_ressourcelimitation |
||
313 |
pa_supportingdialogortransactionrealeased |
||
314 |
pa_versionincompatibility |
||
315 |
permanent handset error |
||
316 |
permanent operator error |
||
317 |
permanent phone related error |
||
318 |
phone related error |
||
319 |
phone switched off |
||
320 |
phone switched off or phone not reachable |
||
321 |
plmn system failure |
ACCEPTD |
|
322 |
portability error: the message was failed |
||
323 |
positionmethodfailure |
||
324 |
previous vlr system failure |
||
325 |
provider_general_error |
||
326 |
psa connection failed |
||
327 |
pvlr system failure |
||
328 |
radio subsystem system failure |
||
329 |
ref_in_use |
||
330 |
rejected |
||
331 |
rejected — smsc rejected |
||
332 |
relation with is41 server removed |
||
333 |
remote abort |
||
334 |
remote logic deny |
||
335 |
remote logic error |
||
336 |
removed by operator |
||
337 |
removed by sme |
||
338 |
resource limitation |
||
339 |
return error unexpected |
||
340 |
return result unexpected |
||
341 |
roaming error |
||
342 |
roaming level not supported |
||
343 |
roaming restriction |
||
344 |
route error, please contact support |
||
345 |
rtec error |
||
346 |
sc-addressnotincluded |
||
347 |
sc-congestion |
||
348 |
sccp_destination_cannot_perform_reassembly |
||
349 |
sccp_error_in_local_processing |
||
350 |
sccp_error_in_message_transport |
||
351 |
sccp_failure |
||
352 |
sccp_hop_counter_violation |
||
353 |
sccp_mtp_failure |
||
354 |
sccp_network_congestion |
||
355 |
sccp no translation for an address |
||
356 |
sccp_no_translation_for_this_specific_address |
||
357 |
sccp_segmentation_failure |
||
358 |
sccp_segmentation_not_suported |
||
359 |
sccp_subsystem_congestion |
||
360 |
sccp_subsystem_failure |
||
361 |
sccp_unequipped_failure |
||
362 |
sccp_unqualified |
||
363 |
screening error, terminating imsi blocked |
||
364 |
service center congestion |
||
365 |
service completion failure |
||
366 |
service temporary not available |
ACCEPTD |
|
367 |
service_completion_failure |
||
368 |
shorttermdenial |
||
369 |
sm delivery failure |
||
370 |
sm loop prevented |
||
371 |
sm loop prevention |
||
372 |
sm_df_equipmentnotsm_equipped |
||
373 |
sm_df_equipmentprotocolerror |
||
374 |
sm_df_invalidsme_address |
||
375 |
sm_df_memorycapacityexceeded |
||
376 |
sm_df_sc_congestion |
||
377 |
sm_df_subscribernotsc_subscriber |
||
378 |
sm_df_unknownservicecentre |
||
379 |
sm-deliveryfailure |
||
380 |
sms buffered. |
||
381 |
sms discarded |
||
382 |
sms expired. |
||
383 |
sms lower layer capabilities not provisioned |
||
384 |
sms lower layer not provisioned |
||
385 |
sms malformed. sms is not formed correctly |
||
386 |
sms sent, no delivery report received. |
||
387 |
sms submit from smsgw to smsc failure |
||
388 |
sms window exceeded. |
||
389 |
smsc congestion |
||
390 |
smsc failure |
||
391 |
smsc roaming |
||
392 |
ss_err_status |
||
393 |
ss_incompat |
||
394 |
ss_notavail |
||
395 |
ss_subviol |
||
396 |
ss-errorstatus |
||
397 |
ss-incompatibility |
||
398 |
ss-notavailable |
||
399 |
ss-subscriptionviolation |
||
400 |
subscriber absent |
||
401 |
subscriber barred |
||
402 |
subscriber busy |
||
403 |
subscriber busy for mt short message |
||
404 |
subscriber not provisioned |
||
405 |
subscriber not sc subscriber |
||
406 |
subscriber spend limit exceeded |
||
407 |
subscriber unable to be billed |
||
408 |
subscriber unavailable |
||
409 |
subscriber_busy_for_mt_sms |
||
410 |
subscriberlocationreport |
||
411 |
subscribernotsc-subscriber |
||
412 |
subscription failed |
||
413 |
subsequenthandoverfailure |
||
414 |
system failure |
ACCEPTD |
|
415 |
tc user not bound |
||
416 |
tcap error. |
||
417 |
tcap_abort1 (on hlr request) |
||
418 |
tcap_abort2 205 (on forwardsm) |
||
419 |
teleservice not provisioned |
||
420 |
temporary handset error — memory exceeded |
||
421 |
the dialogue has received a map-delimiter error |
||
422 |
the dialogue has received a map-service-request |
||
423 |
the end user belongs to a network operator |
||
424 |
the end user does not exist |
||
425 |
the end user has insufficient funds |
||
426 |
the end user is blocked |
||
427 |
the end user is not allowed to purchase premium |
||
428 |
the recipient has no credit |
||
429 |
the subscription period is expired |
||
430 |
throttling error |
||
431 |
time_out |
||
432 |
timeout waiting for response from peer. |
||
433 |
timer_exp |
||
434 |
tracingbufferfull |
||
435 |
ua_applicationprocedurecancellation |
||
436 |
ua_resourceunavailable |
||
437 |
ua_userresourcelimitation |
||
438 |
ua_userspecificreason |
||
439 |
umo (unauthorised message originator) |
||
440 |
umo with barring service active |
||
441 |
umo with operator barring |
||
442 |
unable to find outbound route for this sms. |
||
443 |
unauthorizedlcsclient |
||
444 |
unauthorizedrequestingnetwork |
||
445 |
unexp_tcap_msg |
||
446 |
unexpected data value |
||
447 |
unexpected data value (in idi message) |
||
448 |
unexpected data value (in internal message) |
||
449 |
unexpected data value |
||
450 |
unexpected error |
||
451 |
unexpected linked operation |
||
452 |
unexpected response from peer |
||
453 |
unexpected_response_from_peer |
||
454 |
unidentified subscriber via msc |
||
455 |
unidentified subscriber via sgsn |
||
456 |
unidentified subscriber via the msc |
||
457 |
unidentified subscriber via the sgsn |
||
458 |
unidentified subscriber |
||
459 |
unidentifiedsubscriber |
||
460 |
unknown alphabet |
||
461 |
unknown equipment |
||
462 |
unknown error |
FAILED |
|
463 |
unknown operator |
||
464 |
unknown service center |
||
465 |
unknown subscriber |
UNKNOWN |
|
466 |
unknown subscriber (gprs subscription unknown) |
||
467 |
unknown subscriber (imsi unknown) |
||
468 |
unknown subscriber (recipient address problem) |
||
469 |
unknownbasestation |
||
470 |
unknownmsc |
||
471 |
unknownorunreachablelcsclient |
||
472 |
unrecognized component |
||
473 |
unrecognized error |
||
474 |
unrecognized invoke id |
||
475 |
unrecognized message type |
||
476 |
unrecognized operation |
||
477 |
unrecognized transaction id |
||
478 |
ussd busy |
||
479 |
validityexpired |
||
480 |
vlr system failure |
FAILED |
|
481 |
vmsc system failure |
||
482 |
vp exceeded |
||
483 |
bind failed |
||
484 |
cannot submit to DL (Distribution list) |
||
485 |
command length is invalid |
||
486 |
destination flag is invalid (sm_multi) |
||
487 |
error in address service centre |
||
488 |
incorrect bind status |
||
489 |
message queue full |
||
490 |
mNP other operator not allowed |
||
491 |
param Retrieve Failed |
||
492 |
predefined Message Not Found |
||
493 |
protocol error. Error in data communication |
||
494 |
query SM Failed |
||
495 |
replace SM failed |
||
496 |
retry queue. Delivery retry |
||
497 |
sMS blocked due to unauthorised content |
||
498 |
submit SM/Multi failed |
||
499 |
submit w/replace invalid |
||
500 |
subscriber temp. unreachable while roaming |
||
501 |
unable to convert to IA5 ALPHABET |
||
502 |
unable to Unpack GSM message |
Error-Code |
Description |
Permanent |
Status |
0 |
Successfully delivered. |
Y |
DELIVERED |
3 |
SMSC did not return a status for this delivery |
UNKNOWN |
|
4 |
SMSC refused the message. |
Y |
REJECTED |
Message delivery expired. |
Y |
EXPIRED |
|
SMSC was not able to deliver the message. |
Y |
UNDELIVERABLE |
Справочное руководство
Comex HTTP API
- Введение
- Термины и определения
- Условные обозначения
- Взаимодействие с сервисом
- Авторизация
- Параметры запроса
- Отправка одиночного сообщения
- SMS
- Viber
- VK Notify
- Push
- FlashCall
- VoiceCall
- Параметры ответа
- Пакетная отправка сообщений
- Пример запроса
- Пример ответа
- Каскадная отправка
- Получение статусов доставки
- Запрос к API
- HTTP Callback
- Коды ошибок
- Общие коды ошибок
- SMS
- Viber
- VK Notify
- Push
- FlashCall
- Приём сообщений от абонентов
- Запрос к API
- HTTP Callback
Введение
Сервис Comex предназначен для отправки сообщений по различным каналам связи. Поддерживаются следующие каналы:
- SMS;
- Viber;
- электронная почта;
- личные сообщения Вконтакте;
- Push-сообщения;
- WhatsApp;
- FlashCall;
- VoiceCall;
Также с помощью сервиса вы можете получать:
- статусы отправленных сообщений;
- входящие сообщения от абонентов.
Термины и определения
-
ID ноды — уникальный идентификатор клиентского подключения в системе. У каждого клиента может быть несколько нод (и соответственно идентификаторов) с индивидуальными параметрами каналов отправки
-
MSID — уникальный идентификатор каждого сообщения на платформе i-Digital. По этому идентификатору вы можете отследить статус доставки сообщения, а специалисты технической поддержки — провести детальный анализ при возникновении проблем с доставкой.
-
CallBack (обратный вызов) — механизм , с помощью которого можно получать необходимую информацию по мере её поступления, не делая при этом дополнительных запросов к API.
Условные обозначения
Во всех примерах запросов используются обозначения в треугольных скобках, например
<имя отправителя>. Вместо такого обозначения при выполнении запроса нужно использовать значение соответствующего параметра.
Обозначения в круглых скобках указывают на возможные варианты содержимого, если их количество ограничено — например, (true|false). В запросе следует указывать только один из вариантов, разделенных вертикальной чертой.
Взаимодействие с сервисом
Взаимодействие с сервисом осуществляется через REST API с помощью стандартных HTTP-запросов.
Структура запроса:
- URI — https://external-api.i-dgtl.ru/
<вызываeмое действие>; - тип запроса — POST;
- Content-Type — application/json;
- авторизация — HTTP Basic;
- кодировка символов — UTF-8.
Авторизация
В API используется аутентификация на основе базовой схемы. При регистрации каждый клиент получает ID ноды (идентификатор подключения) и пароль. Для авторизации нужно перекодировать эти параметры, разделённые двоеточием, в формат base64. Пример для ОС семейства Linux (39999 — ID ноды, 123654 — пароль):
echo -n '39999:123654' | base64
Вывод приведённой команды выглядит так:
Эту строку нужно передавать во всех запросах в заголовке Authorization. Пример запроса к Comex HTTP API с помощью утилиты cURL:
curl -X POST -H "Content-Type: application/json" -H "Authorization: Basic Mzk5OTk6MTIzNjU0" -d '<содержимое запроса>' https://external-api.i-dgtl.ru/<вызываeмое действие>
Принципы формирования содержимого запроса описаны ниже.
Параметры запроса
Параметр | Тип | Значение | |
---|---|---|---|
@type | string | Тип сообщения (входящее или исходящее); имеет постоянное значение оutbound (исходящее) | |
addresses | object | Объект, содержащий адреса отправителя и получателя | |
source | string | Имя или адрес отправителя | |
destination | string | Адрес или номер телефона получателя | |
body | object | Объект, в котором передаётся содержимое сообщения | |
bodyType | string | Тип сообщения (SMS, e-mail, ВКонтакте, Viber, push, WhatsApp, FlashCall) | |
content | string | Содержимое сообщения (подробнее см. в примерах ниже) | |
nodeId | integer | Номер ноды | |
requestDelivery | boolean | Указывает, cледует ли предоставлять отчёт о доставке после отправки сообщения | |
expirationDate | timestamp | Время, до которого будет ожидаться получение статуса от оператора (timestamp в миллисекундах или в формате ISO 8601). По умолчанию составляет 24 часа с момента отправки сообщения. Если статус к этому времени не будет получен, возвращается ошибка 127 (см. описание ниже) |
ВАЖНО:
все временные метки в протоколе Comex передаются в формате Unixtime с учетом миллисекунд. Это отличается от наиболее распространенной реализации, где в основном используются секунды
Номер телефона указывается в международном формате MSISDN, состоящем из кода страны, DEF-кода оператора и номера абонента. Например, российский номер выглядит так: 79001234567, где 7 — код страны (Россия). Если клиент по той или иной причине использует другой формат номеров (со скобками, с дополнительными символами и т.п.), можно настроить автоматическую конвертацию номеров в MSISDN. Правила конвертации оговариваются с каждым клиентом индивидуально.
Будьте внимательны при использовании в SMS следующих символов:
£,¥,è,é,ù,ì,ò,Ç,Ø,ø,Å,å,Δ,Φ,Γ,Λ,Ω,Π,Ψ,Σ,Θ,Ξ,Æ,æ,ß,É,¤,¡,Ä,Ö,Ñ,Ü,§ ¿,ä,ö,ñ,ü,à,
NUL,SOH,STX,ETX,EOT,ENQ,ACK,BEL,BS,TAB,VT,SO,SI,DLE,DC1,DC2,DC3,DC4,NAK,
SYN,ETB,CAN,EM,SUB,FS,GS,RS,US,`,DEL.
Операторы могут не поддерживать эти символы или конвертировать сообщения в Unicode, тем самым увеличивая количество тарифицируемых частей сообщения.
Отправка одиночного сообщения
URI: https://external-api.i-dgtl.ru/message
SMS
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "text",
"content": "<текст сообщения>"
},
"nodeId": "<ID ноды>",
"requestDelivery": (true|false)
}
Viber
Отправка текстового сообщения
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "viber",
"content": "<текст сообщения>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
ВАЖНО:
- объём отправляемого через Viber текста не должен превышать 1000 символов.
Отправка сообщения с изображением
При отправке изображения через Viber в поле content включается JSON-объект в виде строки, в котором содержатся следующие дополнительные параметры:
- content_type — image;
- image_URL -ссылка на изображение.
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "viber",
"content": "{"content_type":"image","imageUrl":"<ссылка на изображение>"}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
ВАЖНО:
- так как параметр content_type является строкой, двойные кавычки необходимо экранировать при помощи обратной косой черты;
- поддерживаемые форматы изображений — JPEG и PNG;
- оптимальный размер изображения — 400×400 пикселей;
- Viber может не отображать некоторые изображения в зависимости от платформы получателя (iOS, Android) и/или наличия HTTPS. Для генерации гарантированно корректной ссылки на изображение обратитесь в техническую поддержку i-Digital.
Отправка сообщения с изображением и с кнопкой-ссылкой или кнопкой с номером телефона
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "viber",
"content": "{"content_type":"button","text":"<текст сообщения>","caption":"<текст кнопки>","action":"tel:+70000000000","imageUrl":"<ссылка на изображение>"}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры Viber-сообщения с изображением и кнопкой-ссылкой или кнопкой с номером телефона:
- content_type — button;
- text — текст сообщения;
- caption — имя кнопки;
- action — в качестве действия можно указать:
- ссылку, на которую будет выполнен переход после нажатия на кнопку;
- номер телефона в формате tel:+СХХХХХХХХХХ, где С – код страны, Х – номер телефона. После нажатия на кнопку пользователю будет предложено позвонить по номеру телефона.
- imageURL — ссылка на изображение, которое будет передано в сообщении.
ВАЖНО:
- длина имени кнопки не должна превышать 30 символов.
{
"@type": "outbound",
"addresses": {
"source": "<email-адрес отправителя>",
"destination": "<email-адрес получателя>"
},
"body": {
"bodyType": "email",
"html": (true|false),
"content": "<содержимое письма>",
"senderName": "<отображаемое имя отправителя>",
"subject": "<тема письма>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры e-mail-сообщения:
- html — формат почтового сообщения (HTML — true, plain text — false);
- content — полный текст сообщения (для сообщений в формате HTML передаётся со всеми необходимыми тэгами);
- senderName — отображаемое имя отправителя;
- subject — тема сообщения.
VK Notify
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "vk",
"content": "<текст сообщения>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Push
Пример 1
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "push",
"content": "<текст сообщения>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Пример 2
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "push",
"content": "<текст сообщения>"
},
"properties": {
"pushParameters": {
"shortMessage": "Test",
"fullMessage": "Текст тестового сообщения"
}
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Во втором примере в запросе содержитcя объект properties -> pushParameters с дополнительными параметрами
- shortMessage — текст короткого сообщения, которое будет отображено на экране мобильного телефона сразу после получения;
- fullMessage — текст полного сообщения, которое будет отображено в приложении после нажатия на короткое сообщение.
FlashCall
FlashCall — звонок с номера, последние цифры которого являются кодом авторизации/подтверждения.
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "flashcall",
"content": "<текст сообщения>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
В запросе на отправку вызова FlashCall в качестве значения параметра content можно указать как последовательность от 4 до 6 цифр, так и произвольный текст. В последнем случае в качестве кода будет по умолчанию выбрана первая последовательность от 4 до 6 цифр без пробелов, встречающаяся в тексте.
Если вам нужно настроить подбор кода по индивидуальным правилам, обратитесь к вашему менеджеру или в службу технической поддержки.
Передача конверсии для FlashCall-вызовов
Передача конверсии для FlashCall-вызовов позволяет повысить качество сервиса, осуществляющего звонки абонентам. Настройка передачи конверсии для FlashCall-вызовов обязательна для всех направлений.
После ввода абонентом кода подтверждения/авторизации, в сервис передается одно из следующих событий:
- Введенный код совпал с отправленным
- Введенный код не совпал с отправленным
- Абонент не ввел код
Преимущества передачи конверсии:
- Из сервиса исключаются номера с плохой доставкой, что позволяет повысить коэффициент конверсии
- Дополнительный анализ кейсов, когда код был успешно отправлен, но не введен абонентом или было введено неверное значение
Описание метода передачи конверсии
URI: https://external-api.i-dgtl.ru/conversion
{
"msid": "<msid сообщения>",
"result": "(NUMBER_VERIFIED|WRONG_CODE)",
"code": "<код, введенный абонентом>"
}
Параметры запроса
Параметр | Тип | Значение |
---|---|---|
msid | string | Уникальный идентификатор сообщения на платформе i-Digital. Передаётся клиенту при отправке сообщения. |
result | string |
Результат проверки введенного пользователем кода. Возможные значения:
|
code | string | Код, который ввел абонент. Необязательный параметр. Рекомендуется передавать для дополнительной аналитики случаев, когда абонент неверно ввел код. |
Пример успешного ответа
Пример не успешного ответа
{
"timestamp": <время отправки запроса>,
"path": "/conversion",
"status": <код ошибки>,
"error": "<Текст ошибки>",
"message": "<Описание ошибки>",
"requestId": "<id запроса к сервису>"
}
Параметры ответа
Параметр | Тип | Значение |
---|---|---|
timestamp | timestamp | Время отправки сообщения в формате Unix Timestamp |
path | string | Имя метода, на который осуществляется ответ |
status | intrger | Код ошибки |
error | string | Текст ошибки |
message | string | Описание ошибки |
requestId | string | Идентификатор запроса к сервису |
Особенности отправки WhatsApp-сообщений
-
поддерживается отправка сообщений в режиме чата:
- если чат инициируется клиентом, первое сообщение должно соответствовать зарегистрированному шаблону. После каждого ответа абонента открывается 24 часовое окно для отправки сообщений с произвольным содержанием. Если абонент не ответил, клиент может отправлять сообщения пользователю вне рамок 24 часового окна с использованием заранее зарегистрированных шаблонов сообщений;
- если чат инициируется абонентом, в течение 24 часового окна клиент может отправлять сообщения с произвольным содержанием.
-
шаблонные сообщения могут содержать следующие типы контента:
- текст;
- кнопки с ссылками (URL и/или номер телефона);
- кнопки с текстом (до 3 кнопок);
- заголовок с текстом;
- заголовок с изображением;
- заголовок с документом;
- подпись сообщения.
- сообщения, отправленные в период 24 часового окна, могут содержать любой тип контента;
- сообщения, содержащие заголовок, подпись, кнопки с ссылками или кнопки с текстом обязательно должны соответствовать зарегистрированному шаблону, независимо от момента отправки;
- весь медиаконтент, передаваемый в WhatsApp-сообщениях, является строкой: двойные кавычки необходимо экранировать при помощи обратной косой черты.
Отправка текстового сообщения
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "<текст сообщения>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
ВАЖНО:
- максимальная длина сообщения составляет 1000 символов;
Отправка сообщения с изображением
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{"content_type":"image","imageUrl":"http://example.com/my-image.png","imageName":"<подпись к изображению>"}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры WhatsApp-сообщения с изображением
- content_type — image;
- imageUrl — ссылка на изображение;
- imageName — подпись к изображению.
ВАЖНО:
- поддерживаемые форматы изображений — JPEG и PNG;
- оптимальный размер изображения — 400×400 пикселей;
- размер отправляемого изображения не должен превышать 100 МБ.
Отправка сообщения с текстовым документом
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{"content_type":"document","documentUrl":"http://bank.ru/docs/tarif123.pdf","documentName":"Новые тарифы на 2019 год"}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры WhatsApp-сообщения с документом
- content_type — document (можно добавлять файл любого формата);
- documentUrl — ссылка на отправляемый в сообщении документ.
ВАЖНО:
- в виде документа может быть отправлен файл любого формата;
- размер отправляемого файла не должен превышать 100 МБ.
Отправка сообщения с аудиофайлом
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{"content_type":"audio","audioUrl":"http://example.com/audios/hello.mp3"}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры WhatsApp-сообщения с аудиофайлом
- content_type — audio;
- audioUrl — ссылка на отправляемый в сообщении аудиофайл.
ВАЖНО:
- поддерживаемые аудиоформаты: mp3, ogg, AAC;
- поддерживаемые кодеки: AMR, MPEG, Opu;
- размер отправляемого аудиофайла не должен превышать 100 МБ.
Отправка сообщения с видеофайлом
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{"content_type":"video","videoUrl":"http://example.com/videos/hello.mp4","videoName":"Добро пожаловать"}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры WhatsApp-сообщения с видеофайлом
- content_type — video;
- videoUrl — ссылка на отправляемый в сообщении видеофайл.
ВАЖНО:
- поддерживаемые видеоформаты: mp4;
- поддерживаемые кодеки: H.264 и AAC;
- размер отправляемого видеофайла не должен превышать 100 МБ.
Отправка сообщения с кнопкой-ссылкой и номером телефона
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{"content_type":"text","buttons":[{" text ":"<текст кнопки>"," url ":"<ссылка на сайт>"},{"text":"<текст кнопки>","phone":"<номер телефона>"}],"text":"<текст сообщения>"}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры WhatsApp-сообщения с кнопкой-ссылкой и номером телефона
- content_type – text;
- buttons – массив параметров, передаваемых с кнопками;
- text – имя, отображаемое на кнопке;
- url – ссылка, на которую будет выполнен переход после нажатия;
- phone – номер телефона в формате +СХХХ ХХХ-ХХ-ХХ, где С – код страны, Х – номер телефона.
ВАЖНО:
- максимальное количество кнопок — 2;
- может быть только одна кнопка со ссылкой на сайт;
- может быть только одна кнопка с номером телефона: при нажатии на неё пользователю будет предложено позвонить по номеру телефона;
- текст кнопки задаётся на этапе регистрации шаблона, максимальная длина текста кнопки составляет 20 символов;
- номер телефона задаётся на этапе регистрации шаблона.
Отправка сообщения с кнопкой с текстом
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{ "content_type":"text", "buttons":[ {"text":"<текст кнопки_1>", "payload":"<скрытый текст_1>"}, {"text":"<текст кнопки_2>", "payload":"<скрытый текст_2>"}, {"text":"<текст кнопки_3>", "payload":"<скрытый текст_3>"}], "text": "<текст сообщения>" }"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры WhatsApp-сообщения с кнопкой с текстом
- content_type – text;
- buttons – массив параметров, передаваемых с кнопками;
- text — имя кнопки;
- payload – скрытый текст, который будет передан во входящем сообщении, если пользователь нажмет на кнопку.
ВАЖНО:
- комбинировать кнопку с текстом с кнопкой-ссылкой не допускается;
- максимальное количество кнопок в сообщении – 3;
- максимальная длина текста кнопки составляет 20 символов;
- параметр «payload» является обязательным;
- максимальное количество символов для параметра «payload» — 128;
- все варианты текстов кнопок необходимо регистрировать заранее.
Отправка сообщения с текстом в заголовке
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{"content_type":"text","text":"<текст сообщения> ","header":{"text":"<текст заголовка>"},"footer":{"text":"<текст подписи>"}}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Отправка сообщения с изображением в заголовке
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{"content_type":"text","text":"<текст сообщения>","header":{"imageUrl":"<ссылка на изображение>"},"footer":{"text":"<текст подписи>"}}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Отправка сообщения с документом в заголовке
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": "{"content_type":"text","text":"<текст сообщения>","header":{"documentUrl":"<ссылка на документ> ", "documentName":"<название документа>"},"footer":{"text":"<текст подписи>"}}"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
Параметры WhatsApp-сообщения с контентом в заголовке
- content_type – text;
- header – заголовок;
- footer – подпись;
- documentUrl – ссылка на отправляемый в сообщении документ;
- documentName – имя документа;
- imageUrl – ссылка на изображение.
ВАЖНО:
- header и footer являются необязательными параметрами;
- максимальная длина заголовка и подписи составляет 60 символов каждый;
- отправлять одновременно в заголовке текст, изображение и документ не допускается;
- рекомендовано использовать изображение размером не меньше 400x400px с расширением JPG или PNG;
- формат документа – pdf.
VoiceCall
VoiceCall — это тип сообщений, в которых выполняется преобразование текста в речь при вызове абонентов.
[
{
"@type": "outbound",
"addresses": {
"source": "<имя/номер отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "whatsapp",
"content": [
{
"contentType": "<tts>"
"text": "<Текст, который будет преобразован в текст>"
"sex": "<female|male>"
"speed": "<1.2>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
]
ВАЖНО:
- для отправки голосового вызова с использованием системы автоматической генерации речи параметр contentType должен быть tts;
- через параметр sex для сообщения можно настроить пол голосового помощника, который будет озвучивать текст: female — женский, male — мужской;
- скорость зачитывания сообщения задается параметром speed. Возможные значения скорости:
- медленно — 0.5, 0.8;
- нормально — 1.0;
- быстро — 1.2, 1.5.
Параметры ответа
В ответ на все приведённые выше примеры запросов API возвращает ответ вида:
{
"id": "<MSID сообщения>",
"timestamp": <время отправки сообщения>,
"code": <код ответа сервиса>
}
Ответ содержит следующие параметры:
Параметр | Тип | Значение |
---|---|---|
id | string | ID сообщения |
timestamp | timestamp | время отправки сообщения в формате Unix Timestamp |
code | integer | код ответа (в случае успешного выполнения запроса — 200 OK) |
ВАЖНО: * все временные метки в протоколе Comex передаются в формате Unixtime с учетом миллисекунд. Это отличается от наиболее распространенной реализации, где в основном используются секунды
Коды ошибок
Код ошибки | Описание |
---|---|
200 | Успешно |
400 | Неверный синтаксис запроса |
401 | Ошибка авторизации |
403 | Доступ запрещён |
405 | Метод запроса отключён и не может быть использован |
415 | Некорректное значение заголовка Content-Type |
451 | В запросе содержатся запрещённые к использованию слова |
Пакетная отправка сообщений
С помощью API можно отправлять не только одиночные сообщения, но и группы (пакеты) сообщений.
URI: https://external-api.i-dgtl.ru/pack
Пример запроса
[
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя #1>"
},
"body": {
"bodyType": "text",
"content": "<текст сообщения>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
},
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя #2>"
},
"body": {
"bodyType": "text",
"content": "<текст сообщения>"
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
]
Как видно из приведённого примера, тело запроса представляет собой массив из одиночных сообщений.
Максимальное количество сообщений в пакете составляет 100.
Пример ответа
В ответ на запрос API возвращает ID, время отправки и код ответа для каждого сообщения из пакета:
{
"timestamp": "<время отправки пакета сообщений>",
"code": 200,
"responses": [
{
"timestamp": "<время отправки сообщения>",
"code": 200,
"id": "<MSID сообщения>"
},
{
"timestamp": "<время отправки сообщения>",
"code": 200,
"id": "<MSID сообщения>"
}
]
}
Параметры ответа
Параметр | Тип | Значение |
---|---|---|
id | string | ID сообщения |
timestamp | timestamp | время отправки сообщения в формате Unix Timestamp |
code | integer | код ответа (в случае успешного выполнения запроса — 200 OK) |
Коды ошибок
Код ошибки | Описание |
---|---|
401 | Ошибка авторизации |
413 | Превышено количество сообщений в пакете |
452 | Сработала блокировка по стоп-словам |
Каскадная отправка
Каскадной отправкой называется технология переотправки сообщения по различным каналам. Последовательность каналов настраивается по согласованию с клиентом. При поступлении сообщение будет направлено в канал с наивысшим приоритетом; в случае недоставки оно будет переотправлено в следующий канал. Переотправка продолжится до тех пор, пока не будет получен статус “Доставлено” или пока не будут использованы все возможные каналы. Например, если push-сообщение по той или иной причине не поступает на мобильное устройство пользователя, его содержание может быть переотправлено в виде SMS.
По умолчанию функция каскадной отправки не активирована для клиентов. Для активации обратитесь к персональному менеджеру.
Отправка сообщений с одинаковым содержимым
Если при каскадной отправке не требуется отображение разного содержимого через разные каналы доставки, поле bodyType может содержать значение text и иметь такое же содержимое, как при отправке SMS.
Отправка сообщений с разным содержимым
{
"@type": "outbound",
"addresses": {
"source": "<имя отправителя>",
"destination": "<номер телефона получателя>"
},
"body": {
"bodyType": "generic",
"content": [
{
"bodyType": "viber",
"content": "<текст сообщения>"
},
{
"bodyType": "text",
"content": "<текст сообщения>"
}
]
},
"nodeId": <ID ноды>,
"requestDelivery": (true|false)
}
В запросах на каскадную отправку сообщений с разным содержимым параметр bodyType имеет значение generic. Такой синтаксис используется для отправки массива объекта body разного типа. Таким образом при каскадной отправке вы можете комбинировать любой из доступных способов отправки, описанных выше, указывая необходимое содержимое для каждого типа канала.
Получение статусов доставки
Получение статусов доставки возможно только в случае, если при отправке сообщения указано значение параметра requestDelivery: true. Время получения статуса зависит от доступности абонента и качества сигнала мобильной сети.
Получать статусы можно двумя способами: * с помощью запроса к API: вы выполняете запрос и получаете статусы, доступные на момент выполнения; * с помощью сервиса HTTP Callback: в этом случае запросы будут поступать на ваш сервер, и вы будете получать статусы по мере их поступления.
Получение массива статусов
URI: https://external-api.i-dgtl.ru/receive
Пример запроса
curl -H 'Content-Type: application/json'
-H 'Accept: application/json'
-H "Authorization: Basic Mzk5OTk6MTIzNjU0"
-d '10'
'https://external-api.i-dgtl.ru/receive'
-X POST
В теле запроса передаётся количество сообщений, статусы которых нужно включить в ответ. В приведённом примере в теле запроса передаётся число 10, и это значит, что в ответ будет включена информация о последних 10 отправленных сообщениях. Максимальное количество запрашиваемых статусов не должно превышать 1000.
Получение статуса по id сообщения
URI: https://external-api.i-dgtl.ru/receivebymsid
Пример запроса
curl -H 'Content-Type: application/json'
-H 'Accept: application/json'
-H "Authorization: Basic Mzk5OTk6MTIzNjU0"
-d '{"msids": ["10147aa1-5766-8324-2973-aa0000000010", "10147aa1-5766-8324-2973-aa0000000011"]}'
-X POST
В запросе возможно указать один или несколько msid сообщений, по которым необходимо получить статусы.
Максимальное количество возвращаемых статусов составляет 100.
Запрос по одному и тому же msid возможно выполнить несколько раз в течение времени хранения статуса.
ВАЖНО:
- срок хранения статусов сообщений составляет 48 часов.
Пример ответа
{
"timestamp": "<время генерации ответа>",
"code": 200,
"states": [
{
"@type": "state",
"msid": "<MSID сообщения>",
"status": "<статус сообщения>",
"creationDate": "<время генерации статуса>",
"errorCode": <код ошибки>,
"final": (true|false)
},
{
"@type": "state",
"msid": "<MSID сообщения>",
"status": "<статус сообщения>",
"creationDate": "<время генерации статуса>",
"errorCode": <код ошибки>,
"final": (true|false)
},
...
]
}
Параметры ответа
Параметр | Тип | Значение |
---|---|---|
timestamp | timestamp | Время отправки сообщения в формате Unix Timestamp |
code | integer | Код ответа |
responses | array | Массив со статусами сообщений. Последовательность сообщений в массиве соответствует их последовательности в запросе |
Параметры сообщения в массиве
Параметр | Тип | Значение |
---|---|---|
@type | string | Тип ответа (в запросах на получение статусов — state) |
msid | string | UUID сообщения |
status | string | Статус сообщения (cм. ниже) |
creationDate | timestamp | Дата формирования статуса |
errorCode | integer | Код ошибки (см. ниже) |
final | boolean | Указывает, является ли статус сообщения финальным |
Cтатусы сообщений
Статус | Описание |
---|---|
DELIVERED | Сообщение доставлено абоненту |
UNDELIVERED | Сообщение не доставлено |
EXPIRED | Время ожидания статуса истекло |
READ | Сообщение прочитано |
EXPIRED_READ | Сообщения было доставлено, но статус READ не был получен за необходимое время. |
ВАЖНО:
- время получения статуса зависит от доступности абонента, качества сигнала мобильной сети и некоторых других технических параметров;
- временем ожидания статуса считается промежуток времени от отправки до даты, указанной в параметре expirationDate; по истечении этого промежутка возвращается статус EXPIRED;
- если оператор связи по тем или иным причинам не предоставляет код доставки, сообщение будет финализировано как недоставленное с кодом 127.
- статус EXPIRED_READ по умолчанию не передаётся; если вам нужно получать этот статус, обратитесь в службу технической поддержки или к вашему менеджеру.
HTTP Callback
Чтобы воспользоваться сервисом HTTP Callback, вам потребуется сообщить нам адрес и порт вашего сервера, на который будут приходить статусы. Сервис HTTP Callback периодически проверяет доступность вашего сервера, отправляя GET-запрос на адрес <host>/ping. Если ваш сервер доступен и возвращает ответ с кодом 200 OK, вам будут отправлены доступные на текущий момент статусы.
Статусы будут передаваться на ваш сервер в запросе, который имеет следующую структуру:
- тип запроса — POST;
- URL:<host>:<port>/states;
- Authorization: Basic base64(login:pass)
- Content-Type — application/json
В качестве значений параметров <host> и <host> вам потребуется указать адрес и порт вашего сервера.
По умолчанию эндпоинт для получения статусов /states. Вы можете задать кастомное значение эндпоинта для получения статусов. Для этого необходимо вместе с адресом и портом вашего сервера укажите название эндпоинта.
В теле запроса передаётся точно такой же JSON-объект, как в ответе на запрос статусов (см. выше).
В ответ на запрос ваш сервер должен вернуть код 200 OK или 202 (Accepted). Если ваш сервер вернёт другой код, будет предпринята повторная попытка отправки согласно заданным правилам. Правила оговариваются с каждым пользователем индивидуально.
Коды ошибок
В этом разделе описаны коды ошибок, которые возвращаются при получении статусов сообщений.
Общие коды ошибок
Код ошибки | Текст сообщения об ошибке | Описание ошибки |
---|---|---|
11 | error-address-format | Номер получателя указан некорректно или не существует |
127 | Timeout of getting status | Истекло время ожидания статуса сообщения |
6969 | Error without additional information | Неизвестная ошибка |
SMS
Код ошибки | Текст сообщения об ошибке | Описание ошибки |
---|---|---|
501 | Unknown subscriner | Номер получателя указан некорректно или не существует |
502 | SMSC failure | Ошибка центра передачи сообщений (SMSC) на стороне конечного оператора. |
504 | The subscriber is absent or out of coverage | Устройство абонента выключено или находится вне зоны действия сети |
505 | Call bar service activated | У абонента включен запрет на прием сообщений или абонента заблокировал оператор (возможно, в связи с отрицательным балансом). |
508 | Teleservice not provisioned | Сервис коротких сообщений не предоставляется |
509 | Roaming restrictions | Абонент находится в роуминге |
510 | A2P messages blocked | SIM-карта абонента заменена менее суток назад |
511 | Message queue full | Очередь сообщений со стороны оператора переполнена |
515 | Equipment protocol error | Аппаратная ошибка телефона абонента |
517 | Memory capacity exceeded | Память телефона абонента переполнена |
518 | SS7 routing error | Ошибка центра передачи сообщений (SMSC) на стороне конечного оператора. |
523 | Subscriber is busy | Устройство абонента занято операцией, препятствующей получению короткого сообщения |
525 | IMSI error | Ошибка на стороне оператора при запросе IMSI |
557 | Internal system failure | Внутренняя ошибка системы на стороне конечного оператора |
647 | Illegal subscriber | Абонент не зарегистрирован или заблокирован оператором |
Viber
Код ошибки | Текст сообщения об ошибке | Описание ошибки |
---|---|---|
601 | not-viber-user | Абонент не является пользователем Viber |
605 | user-blocked | Абонент заблокировал рассылку |
607 | not-suitable-device | Устройство абонента не поддерживает сервис Viber |
614 | error-caption-too-long | Превышена длина имени кнопки |
618 | filtered | Сообщение содержит запрещенные к использованию слова |
Код ошибки | Текст сообщения об ошибке | Описание ошибки |
---|---|---|
605 | user-blocked | Абонент заблокировал рассылку |
617 | not-template-match | Не найден подходящий шаблон сообщения |
618 | filtered | Сообщение содержит запрещенные к использованию слова |
620 | error-whatsapp-template-quick-reply-button-payload-not-specified | Не передан параметр payload для кнопки |
VK Notify
Код ошибки | Текст сообщения об ошибке | Описание ошибки |
---|---|---|
250 | NOT ENOUGH DATA | Не хватает обязательных параметров |
251 | INCORRECT_SIGNATURE | Некорректная подпись сообщения |
252 | ERROR | Устройство абонента не поддерживает сервис Viber |
253 | UNSUPPORTED_NUMBER | Номер не поддерживается (неподдерживаемая страна или оператор) |
254 | INCORRECT_NUMBER | Некорректный формат номера |
255 | NUMBER_IN_BLACK_LIST | Номер абонента занесен в черный список |
256 | NUMBER_TYPE_NOT_ALLOWED | Номер абонента виртуальный или определен как «спамерский» |
258 | DAILY_RATELIMIT_FOR_RECEIVER | Превышен дневной лимит отправки сообщений от группы ВКонтакте для данного номера. |
259 | UNSUPPORT | Сообщение не может быть доставлено по одной из причин: — данного абонента (пользователя) не существует в системе; — абонент проявлял активность в системе более 7 дней назад. |
260 | UNSUPPORTED TEMPLATE | Параметр text не соответствует ни одному шаблону. |
261 | UNKNOWN | Неизвестный тип ошибки (возможен при получении неизвестного статуса от ВКонтакте) |
262 | BLOCKED_BY_USER | Абонент запретил прием сообщений от данного отправителя (группы) |
357 | RATELIMIT | Превышен лимит отправки сообщений ВКонтакте для данного номера |
Push
Код ошибки | Текст сообщения об ошибке | Описание ошибки |
---|---|---|
700 | recipient-is-locked | Абонент заблокирован на платформе вручную |
701 | recipient-not-found | Абонент не найден |
702 | recipient-has-no-active-device | Устройство абонента неактивно |
703 | device_not_found | Устройство абонента не найдено |
704 | client_application_removed | Приложение удалено с устройства абонента |
705 | subscription-disabled | Абонент отписался от push-сообщений |
707 | application-not-configured | Приложение не настроено на платформе или в настройках приложения не указаны обязательные параметры |
708 | device-unregistered | Устройство не зарегистрировано на платформе |
709 | certificate-expired | Истек срок действия сертификата iOS-устройства |
FlashCall
Код ошибки | Текст сообщения об ошибке | Описание ошибки |
---|---|---|
263 | unknown-error | Неизвестная ошибка |
265 | invalid-message | Невалидное сообщение |
266 | destination-denied | Направление или оператор не поддерживается |
267 | number-generation-failed | Не удалось подобрать номер для передачи кода |
268 | duplicate | Сообщение является дубликатом (дублированием считается отправка сообщения на один и тот же номер в течение минуты) |
269 | sending error | Запрос был получен, но не бы отправлен оператору из-за неожиданной системной ошибки |
270 | rejected | Звонок не может быть совершен (номер занят другим звонком, либо возникла другая SIP-ошибка) |
Приём сообщений от абонентов
Процесс получения входящих сообщений аналогичен получению статусов доставки. Максимальное количество единовременно запрашиваемых сообщений — 100. Как и статусы, cообщения можно получать как с помощью запросов к API, так и с помощью сервиса HTTP Callback.
Запрос к API
URI: https://external-api.i-dgtl.ru/receiveinbound
Пример запроса
curl -H 'Content-Type: application/json'
-H 'Accept: application/json'
-H'Authorization: Basic Mzk5OTk6MTIzNjU0'
-d '10'
https://external-api.i-dgtl.ru/receiveinbound
-X POST
В теле запроса передаётся количество сообщений, который будут включены в ответ. Приведённом примере в ответ на запрос API вернёт 10 сообщений (-d ‘10’). Число запрашиваемых сообщений не должно превышать 100.
Пример ответа
{
"timestamp": 1570530342388,
"code": "<код ответа>",
"messages": [
{
"@type": "inbound",
"properties": {},
"creationDate": 1570439178438,
"requestDelivery": false,
"addresses": {
"source": "<имя или адрес отправителя>",
"destination": "<адрес или номер телефона получателя>"
},
"body": {
"bodyType": "<тип сообщения>",
"content": "<текст сообщения>"
},
"expirationDate": "<timestamp>",
"msid": "<MSID сообщения>"
}
]
}
Как видно из приведённых примеров, структура ответа ничем не отличается от структуры ответа, возвращаемого при отправке, за исключением параметра @type (для входящих сообщений он имеет значение inbound).
Параметры ответа
Параметр | Тип | Значение |
---|---|---|
timestamp | timestamp | время отправки сообщения в формате Unix Timestamp |
code | integer | код ответа (в случае успешного выполнения запроса — 200 OK) |
messages | object | объект, cодержащий принятые сообщения |
Параметры сообщения в массиве
Параметр | Тип | Значение |
---|---|---|
@type | string | Тип сообщения (входящее или исходящее); в данном случае имеет значение inbound |
properties | string | Служебный параметр |
сreationDate | timestamp | время создания сообщения |
requestDelivery | boolean | Указывает, был ли запрошен для сообщения отчёт о доставке |
addresses | object | Объект, содержащий адреса отправителя и получателя |
source | string | Имя или адрес отправителя |
destination | string | Адрес или номер телефона получателя |
body | object | Объект, который содержит параметры bodyType и content |
bodyType | string | Тип сообщения (SMS, e-mail, ВКонтакте, Viber, push, WhatsApp) |
content | string | Содержимое сообщения (подробнее см. в примерах выше) |
expirationDate | timestamp | Срок (дата и время), до которого будут повторяться попытки доставить сообщение. Указывается в формате в формате unixtime или ISO-8601 (например, 2017-01-01T00:00:00Z) |
msid | string | UUID сообщения |
Коды ошибок
Код ошибки | Описание |
---|---|
401 | Ошибка авторизации |
413 | Превышено количество сообщений в пакете |
HTTP Callback
Получение входящих сообщений происходит точно так же, как и получение статусов. Вам потребуется сообщить нам адрес и порт вашего сервера, на который будут поступать входящие сообщения. Так же, как и при получении статусов, сервис HTTP Callback будет периодически проверять доступность вашего сервера, отправляет GET-запрос на <host>:<port>/ping. Если ваш сервер доступен, вы получите все доступные на текущий момент входящие сообщения.
Входящие сообщения будут передаваться на ваш сервер в запросе, который имеет следующую структуру:
- тип запроса — POST;
- URL: <host>:<port>/inbounds;
- Authorization: Basic base64(login:pass)
- Content-Type — application/json
В качестве значений параметров <host> и <host> вам потребуется указать адрес и порт вашего сервера.
По умолчанию эндпоинт для получения входящих сообщений /inbounds. Вы можете задать кастомное значение эндпоинта для получения входящих сообщений. Для этого необходимо вместе с адресом и портом вашего сервера укажите название эндпоинта.
В теле запроса передаётся точно такой же JSON-объект, как в ответе на запрос статусов (см. выше).
В ответ на запрос ваш сервер должен вернуть код 200 OK или 202 (Accepted). Если ваш сервер вернёт другой код, будет предпринята повторная попытка отправки согласно заданным правилам. Правила оговариваются с каждым пользователем индивидуально.
Hex | Dec | Description |
---|---|---|
000 | 0 | Successfully Delivered |
001 | 1 | Absent subscriber (network cannot contact subscriber) |
002 | 2 | Handset memory exceeded |
003 | 3 | Equipment protocol error |
004 | 4 | Equipment not equipped with short-message capability |
005 | 5 | Unknown service centre (destination MSC) |
006 | 6 | Service centre congestion (Too much inbound traffic at destination network) |
007 | 7 | Invalid SME address |
008 | 8 | Subscriber is not a SC subscriber (Number belongs to a different destination network but HLR is not updated) |
009 | 9 | Unknown subscriber (IMSI is unknown in the HLR) |
00A | 10 | Illegal subscriber (The mobile station failed authentication) |
00B | 11 | Teleservice not provisioned (Mobile subscription identified by the MSISDN number does not include the short message service) |
00C | 12 | Illegal equipment (IMEI check failed, blacklisted or not whitelisted) |
00D | 13 | Call barred (Operator barred the MSISDN number) |
00E | 14 | Facility not supported (VLR in the PLMN does not support MT short message service) |
00F | 15 | Subscriber busy for MT short message |
010 | 16 | System failure |
011 | 17 | Message waiting list at HLR is full |
012 | 18 | Data missing |
013 | 19 | Unexpected data value |
014 | 20 | Resource limitation at peer / destination network |
015 | 21 | TCAP error (Duplicate invoke ID) |
016 | 22 | TCAP error (Not supported service) |
017 | 23 | TCAP error (Mistyped parameter) |
018 | 24 | TCP error (Resource Limitation) |
019 | 25 | TCAP error (TCAP initiating release) |
01A | 26 | TCAP error (Unexpected response from peer) |
01B | 27 | TCAP error (Service completion failure) |
01C | 28 | TCAP error (No response from peer) |
01D | 29 | TCAP error (Invalid response received) |
01E | 30 | Unidentified subscriber |
01F | 31 | Service temporary not available |
020 | 32 | Illegal error code |
021 | 33 | Network timeout |
022 | 34 | Operation Barred (From the MNO) |
023 | 35 | Delivery fail |
024 | 36 | Error in MS |
025 | 37 | PLMN system failure |
026 | 38 | HLR system failure |
027 | 39 | VLR system failure |
028 | 40 | Controlling MSC failure (Error in the MSC where the user is located) |
029 | 41 | Visited MSC failure (Error in the visited MSC) |
02A | 42 | MNP other operator not allowed (MSISDN is ported, delivery via this SMSC not permitted) |
02B | 43 | Subscriber temporarily unreachable (While roaming) |
02C | 44 | Message store busy |
02D | 45 | SME Interface busy |
02E | 46 | Closed user group reject |
02F | 47 | Network failure |
030 | 48 | Deferred Delivery (Message has not been delivered and is part of a deferred delivery schedule) |
031 | 49 | Error getting route |
032 | 50 | Insufficient credit |
033 | 51 | Rejected Destination |
034 | 52 | Rejected Unknown Reason |
035 | 53 | Rejected due to routing issue |
036 | 54 | Rejected due to blocking issue |
037 | 55 | Rejected due to no price |
038 | 56 | Rejected due to not enough credits |
039 | 57 | Rejected due to spam filter |
03A | 58 | Rejected due to flooding |
03B | 59 | UNKNOWN TCType,SMS |
03C | 60 | UNKNOWN TCType,SRI |
03E | 62 | Failure due to submission towards AA19 destination |
03D | 61 | UNKNOWN |
03F | 63 | Sent to SME but unable to confirm |
040 | 64 | Replaced at the SMSC |
041 | 65 | Quality service not available |
042 | 66 | Error in SMSC |
043 | 67 | Rejected by operator due to validity period expiry |
044 | 68 | Intermediate state notification that the message has not yet been delivered due to a phone related problem but is being retried. |
045 | 69 | Cannot determine whether this message has been delivered or has failed due to lack of final delivery state information from the operator. |
046 | 70 | Specific content is not permitted on the network / shortcode |
047 | 71 | Subscriber cannot receive adult content because of a parental lock |
048 | 72 | Failure due to ported combinations being unreachable. |
049 | 73 | Roaming subscriber. |
04A | 74 | Failure due to ported combinations being blocked for client (Client has been blacklisted from the ported destination). |
04B | 75 | Abort from HLR |
04C | 76 | Source address is blacklisted or not supported |
04D | 77 | Operation barred |
04E | 78 | Facility not provided |
04F | 79 | Invalid absolute validity period |
050 | 80 | SMS center received |
051 | 81 | Invalid PDU format |
052 | 82 | Local Cancel (Temporary problem / Lost reach) |
053 | 83 | Rejected due to duplicate |
054 | 84 | Maximum Connection Reached |
055 | 85 | Information Not Available |
056 | 86 | Message waiting list full |
057 | 87 | Short Term Denial |
058 | 88 | Expired due to no response from supplier |
059 | 89 | message replaced by SMSC |
0EC | 236 | PSMS Unknown subscriber |
05A | 90 | congestion at subscriber |
05B | 91 | service rejected |
05C | 92 | Error in SME |
05D | 93 | Remote procedure error |
05E | 94 | Connection rejected by SME |
05F | 95 | SM deleted by the sender |
060 | 96 | SM deleted by SMSC Admin |