WirelessBR |
WirelessBr é um site brasileiro, independente, sem vínculos com empresas ou organizações, sem finalidade comercial, feito por voluntários, para divulgação de tecnologia em telecomunicações |
|
SMPP
- SHORT MESSAGE PEER TO PEER |
||
Autor: João Bosco Silvino Júnior |
5 - Definição dos parâmetros SMPP
Esta seção descreve os parâmetros SMPP que podem ser utilizados em um comando SMPP.
5.1 - Parâmetros do cabeçalho SMPP (Command Header)
O parâmetro command_length indica o tamanho total em octetos de uma mensagem SMPP. São considerados o cabeçalho SMPP (incluindo o próprio campo command_length), os parâmetros mandatórios e os parâmetros opcionais.
O campo command_id indica o tipo de mensagem que o PDU SMPP representa, por exemplo, submit_sm, deliver_sm etc.
Um identificador de comando é destinado para cada primitiva de solicitação SMPP.
Um identificador de comando de resposta é destinado para cada primitiva de resposta SMPP.
Verifique na tabela a seguir a faixa de valores reservados.
5.1.2.1
- Conjunto de comandos SMPP
Command
ID |
Value |
generic_nack |
0x80000000 |
bind_receiver |
0x00000001 |
bind_receiver_resp |
0x80000001 |
bind_transmitter |
0x00000002 |
bind_transmitter_resp |
0x80000002 |
query_sm |
0x00000003 |
query_sm_resp |
0x80000003 |
submit_sm |
0x00000004 |
submit_sm_resp |
0x80000004 |
deliver_sm |
0x00000005 |
deliver_sm_resp |
0x80000005 |
unbind |
0x00000006 |
unbind_resp |
0x80000006 |
replace_sm |
0x00000007 |
replace_sm_resp |
0x80000007 |
Command
ID |
Value |
cancel_sm |
0x00000008 |
cancel_sm_resp |
0x80000008 |
bind_transceiver |
0x00000009 |
bind_transceiver_resp |
0x80000009 |
Reserved |
0x0000000A 0x8000000A |
outbind |
0x0000000B |
Reserved |
0x0000000C
- 0x00000014 0x8000000B
- 0x80000014 |
enquire_link |
0x00000015 |
enquire_link_resp |
0x80000015 |
Reserved |
0x00000016-0x00000020 0x80000016-0x80000020 |
submit_multi |
0x00000021 |
submit_multi_resp |
0x80000021 |
Reserved |
0x00000022-0x000000FF 0x80000022-0x800000FF |
Reserved |
0x00000100 |
Reserved |
0x80000100 |
Reserved |
0x00000101 0x80000101 |
alert_notification |
0x00000102 |
Reserved |
0x80000102 |
data_sm |
0x00000103 |
data_sm_resp |
0x80000103 |
Reserved
for SMPP extension |
0x00000104-0x0000FFFF 0x80000104-0x8000FFFF |
Reserved |
0x00010000-0x000101FF 0x80010000-0x800101FF |
Reserved
for SMSC Vendor |
0x00010200-0x000102FF 0x80010200-0x800102FF |
Reserved |
0x00010300-0xFFFFFFFF |
Tabela
20 - Valores para o campo command_id
do PDU SMPP
O campo command_staus indica o sucesso ou falha de uma solicitação SMPP. Somente é relevante em mensagens de resposta SMPP. Nas mensagens de solicitação SMPP, deve ser preenchido com o valor valor nulo. O código de erro retornado no comando de resposta SMPP é informando neste campo. O conjunto completo de códigos de erro e seus valores associados estão apresentados na tabela 21.
Error
Code |
Value
|
Description |
ESME_ROK
|
0x00000000
|
No
Error |
ESME_RINVMSGLEN |
0x00000001
|
Message
Length is invalid |
ESME_RINVCMDLEN
|
0x00000002 |
Command
Length is invalid |
ESME_RINVCMDID
|
0x00000003
|
Invalid
Command ID |
ESME_RINVBNDSTS |
0x00000004
|
Incorrect
BIND Status for given command |
ESME_RALYBND
|
0x00000005
|
ESME
Already in Bound State |
ESME_RINVPRTFLG
|
0x00000006
|
Invalid
Priority Flag |
ESME_RINVREGDLVFLG
|
0x00000007
|
Invalid
Registered Delivery Flag |
ESME_RSYSERR
|
0x00000008
|
System
Error |
Reserved |
0x00000009
|
Reserved |
ESME_RINVSRCADR
|
0x0000000A
|
Invalid
Source Address |
ESME_RINVDSTADR
|
0x0000000B
|
Invalid
Dest Addr |
ESME_RINVMSGID |
0x0000000C
|
Message
ID is invalid |
ESME_RBINDFAIL
|
0x0000000D
|
Bind
Failed |
ESME_RINVPASWD
|
0x0000000E
|
Invalid
Password |
ESME_RINVSYSID
|
0x0000000F
|
Invalid
System ID |
Reserved |
0x00000010
|
Reserved |
ESME_RCANCELFAIL
|
0x00000011 |
Cancel
SM Failed |
Reserved |
0x00000012
|
Reserved |
ESME_RREPLACEFAIL |
0x00000013
|
Replace
SM Failed |
ESME_RMSGQFUL |
0x00000014
|
Message
Queue Full |
ESME_RINVSERTYP
|
0x00000015
|
Invalid
Service Type |
Reserved |
0x00000016-0x00000032 |
Reserved |
ESME_RINVNUMDESTS
|
0x00000033
|
Invalid
number of destinations |
ESME_RINVDLNAME
|
0x00000034
|
Invalid
Distribution List name |
Reserved
|
0x00000035-0x0000003F |
Reserved |
ESME_RINVDESTFLAG
|
0x00000040 |
Dest.
flag is invalid (submit_multi) |
Error
Code |
Value
|
Description |
Reserved
|
0x00000041
|
Reserved |
ESME_RINVSUBREP
|
0x00000042
|
Invalid
‘submit with replace’ request(i.e. submit_sm
with
replace_if_present_flag
set) |
ESME_RINVESMCLASS
|
0x00000043 |
Invalid
esm_class
field
data |
ESME_RCNTSUBDL |
0x00000044 |
Cannot
Submit to Distribution List |
ESME_RSUBMITFAIL
|
0x00000045
|
submit_sm
or
submit_multi
failed |
Reserved |
0x00000046-0x00000047
|
Reserved |
ESME_RINVSRCTON |
0x00000048
|
Invalid
Source address TON |
ESME_RINVSRCNPI |
0x00000049
|
Invalid
Source address NPI |
ESME_RINVDSTTON |
0x00000050
|
Invalid
Destination address TON |
ESME_RINVDSTNPI |
0x00000051 |
Invalid
Destination address NPI |
Reserved
|
0x00000052
|
Reserved |
ESME_RINVSYSTYP
|
0x00000053 |
Invalid
system_type
field |
ESME_RINVREPFLAG
|
0x00000054
|
Invalid
replace_if_present
flag |
ESME_RINVNUMMSGS |
0x00000055
|
Invalid
number of messages |
Reserved
|
0x00000056-0x00000057
|
Reserved |
ESME_RTHROTTLED |
0x00000058 |
Throttling
error (ESME has exceededallowed message limits) |
Reserved |
0x00000059-0x00000060 |
Reserved |
ESME_RINVSCHED
|
0x00000061 |
Invalid
Scheduled Delivery Time |
ESME_RINVEXPIRY
|
0x00000062 |
Invalid
message validity period(Expiry time) |
ESME_RINVDFTMSGID |
0x00000063
|
Predefined
Message Invalid or Not Found |
ESME_RX_T_APPN
|
0x00000064
|
ESME
Receiver Temporary App Error Code |
ESME_RX_P_APPN
|
0x00000065
|
ESME
Receiver Permanent App Error Code |
ESME_RX_R_APPN
|
0x00000066
|
ESME
Receiver Reject Message ErrorCode |
ESME_RQUERYFAIL |
0x00000067
|
query_sm
request
failed |
Reserved
|
0x00000068-0x000000BF |
Reserved |
ESME_RINVOPTPARSTREAM
|
0x000000C0
|
Error
in the optional part of the PDU Body. |
Error
Code |
Value
|
Description |
ESME_ROPTPARNOTALLWD |
0x000000C1
|
Optional
Parameter not allowed |
ESME_RINVPARLEN |
0x000000C2 |
Invalid
Parameter Length. |
ESME_RMISSINGOPTPARAM
|
0x000000C3
|
Expected
Optional Parameter missing |
ESME_RINVOPTPARAMVAL
|
0x000000C4
|
Invalid
Optional Parameter Value |
Reserved
|
0x000000C5-0x000000FD
|
Reserved |
ESME_RDELIVERYFAILURE
|
0x000000FE |
Delivery
Failure (used for data_sm_resp) |
ESME_RUNKNOWNERR
|
0x000000FF
|
Unknown
Error |
Reserved
for SMPP extension |
0x00000100-0x000003FF |
Reserved
for SMPP extension |
Reserved
for SMSC vendor specific errors |
0x00000400-0x000004FF |
Reserved
for SMSC vendor specific errors |
Reserved
|
0x00000500-0xFFFFFFFF |
Reserved |
Tabela
21 - Códigos
de erro do SMPP
Um número de sequência permite que um PDU de resposta seja relacionado a um PDU de solicitação. O PDU de resposta SMPP deve preservar este campo. A faixa de valores possíveis deste campo vai de 0x00000001 a 0x7FFFFFFF.
5.2 - Parâmetros mandatórios do SMPP
O parãmetro system_id é utilizado para identificar uma ESME ou um SMSC no momento do BIND.
O parâmetro password é utilizado pelo SMSC para autenticar uma ESME que está solicitanto o BIND. Também é utilizado pela ESME para autenticar um SMSC, no caso da operação de outbind.
O parâmetro system_type é utilizado para categorizar o tipo da ESME que está solicitando o BIND ao SMSC. Por exemplo, "VMS", no caso de um Sistema de Voice Mail, ou "OTA", para um sistema de Over-The-Air activation.
A especificação do system_type é opcional. Alguns SMSC podem não solicitar que a ESME informe este detalhe. Neste caso a ESME pode preencher este campo com o valor nulo.
Este parâmetro é utilizado para indicar a versão do protocolo SMPP utilizado pela entidade. As seguintes versões de interface são definidas:
Interface
Version |
Value |
Indicates
that the EMSE supports version 3.3 or earlier of the SMPP protocol.
|
0x00-0x33 |
Indicates
that the ESME is supporting SMPP version 3.4 |
0x34 |
All
other values reserved |
|
Tabela
22 - Valores disponíveis para o campo interface_version
5.2.5
- addr_ton, source_addr_ton, dest_addr_ton, esme_addr_ton
Estes campos definem o tipo de número ou TON (Type Of Number) para ser utilizado nos parâmetros da SME. Os valores possíveis são apresentados na tabela 23.
TON |
Value |
Decimal |
Unknown |
00000000 |
0 |
International |
00000001 |
1 |
National |
00000010 |
2 |
Network
Specific |
00000011 |
3 |
Subscriber
Number |
00000100 |
4 |
Alphanumeric |
00000101 |
5 |
Abbreviated |
00000110 |
6 |
All
other values reserved |
Tabela 23 - Valores possíveis para TON (Type Of Number)
5.2.6
- addr_npi, source_addr_npi, dest_addr_npi, esme_addr_npi
Estes campos definem o indicador de plano numérico, ou NPI (Numeric Plan Indicator) que será utilizado nos parâmetros da SME. Os valores possíveis são apresentados na tabela 24.
NPI
|
Value |
Decimal |
Unknown
|
00000000 |
0 |
ISDN
(E163/E164) |
00000001 |
1 |
Data
(X.121) |
00000011 |
3 |
Telex
(F.69) |
00000100 |
4 |
Land
Mobile (E.212)
|
00000110 |
6 |
National
|
00001000 |
8 |
Private
|
00001001 |
9 |
ERMES
|
00001010 |
10 |
Internet
(IP)
|
00001110 |
14 |
WAP
Client Id (to be defined by WAP Forum) |
00010010 |
18 |
All
other values reserved |
Tabela
24 - Valores
possíveis para NPI (Numeric Plan
Indicator)
O parâmetro address_range é utilizado nas operações de bind_receiver e bind_tranceiver para especificar um conjunto de endereços das SME's servidas pelo cliente ESME. Um endereço único pode ser especificado no parâmetro address_range. A notação de expressão regular do UNIX deve ser utilizada para especificar a faixa de endereços.
Este campo especifica o endereço da SME que originou a mensagem. Uma ESME que é implementada com um único endereço SME, i.e. Voice Mail, pode preencher este campo com o valor nulo, para permitir que o SMSC preencha este campo com o valor padrão.
Este campo especifica o endereço da SME de destino da mensagem. Para mensagens terminadas, este endereço especifica o DN do terminal.
Especifica o endereço da ESME para onde as
mensagens de alert_notification
deverão ser enviadas.
O parâmetro service_type pode ser usado para indicar o serviço de aplicação SMS associado à mensagem, permitindo à ESME:
- Disponibilizar serviços avançados de mensagens, tais como aqueles descritos no item 4.4.1.2;
- Controlar o teleserviço utilizado na interface aérea (i.e. IS-136/TDMA, IS-95/CDMA)
O SMSC pode associar implicitamente a função "replace if present" do service_type indicado em uma submissão de mensagem. Por exemplo, o SMSC pode sempre repor uma mensagem pendente de entrega que tenha o mesmo originador e destinatário da mensagem submetida. Desta forma, um SMSC pode garantir que um sistema de Voice Mail, utilizando o service_type "VMA" tem no máximo uma notificação por destinatário, invocando automaticamente a função "replace if present".
Os tipos genéricos de service_type estão apresentados abaixo:
““
(NULL) Default
“CMT”
Cellular Messaging
“CPT”
Cellular Paging
“VMN”
Voice Mail Notification
“VMA”
Voice Mail Alerting
“WAP”
Wireless Application Protocol
“USSD”
Unstructured Supplementary Services Data
Outros valores podem ser definidos, bastado apenas um acordo mútuo entre os administradores da ESME e do SMSC.