NO 785545
reviso
1.2
Documento
Short message peer to peer protocol specification v3.4
Reviso
Data
04/12/2002
reviso
1.0
Documento
SMPP Aplicaes Protocolo e
Registro
Data
04/12/2002
No de Registro
785545
Cartrio
CARTRIO DO 2 OFCIO DO REGISTRO DE TTULOS E DOCUMENTOS - Cartrio Cecivaldo Bentes
Observaes
A cpia e utilizao total ou parcial deste documento esto autorizadas, desde que a fonte seja citada integralmente, constando nome completo do autor e data de registro. O descumprimento desta observao est sujeito s penalidades previstas por lei.
Pgina 1 de 53
NO 785545
11.1 2-
INTRODUO .............................................................................................................................4 OVERVIEW SMPP........................................................................................................................4 OVERVIEW DO PROTOCOLO SMPP.....................................................................................6 2.1 DEFINIES DO PROTOCOLO SMPP .............................................................................................6 2.2 DESCRIO DE UMA SESSO SMPP .............................................................................................7 2.2.1. O OUTBIND.......................................................................................................................8 2.3 O PDU SMPP..............................................................................................................................8 2.4 A CAMADA DE CONEXES DE REDE SMPP.................................................................................10 2.5 MENSAGENS ENVIADAS DA ESME PARA O SMSC.....................................................................10 2.5.1. Respostas de mensagens SMPP do SMSC para a ESME .................................................10 2.5.2. Exemplo de uma sesso tpica SMPP ESME Transmitter.............................................11 2.6 MENSAGENS ENVIADAS PELO SMSC PARA A ESME .................................................................12 2.6.1. Respostas de mensagens SMPP da ESME para o SMSC .................................................12 2.6.2. Exemplo de uma sesso tpica SMPP ESME Receiver..................................................12 2.7 ENVIO DE MENSAGENS BIDIRECIONAL ENTRE UMA ESME E UM SMSC.....................................13 2.7.1. Exemplo de uma sesso tpica SMPP ESME Transceiver.............................................13 2.7.2. Gerenciamento de erros no SMPP...................................................................................14 2.8 TEMPORIZADORES SMPP ..........................................................................................................14 2.9 TIPOS DE MENSAGENS ................................................................................................................14 2.9.1. SMSC Delivery Receipt ....................................................................................................14 2.9.2. Notificao Intermediria ................................................................................................15 2.9.3. SME Deliver Acknowledgement .......................................................................................15
3-
TIPOS DE PDUS SMPP E DEFINIES DE FORMATO ..................................................16 3.1 DEFINIES DOS TIPOS DE DADOS DO PDU SMPP.....................................................................16 3.1.1. Notao do tamanho dos campos dos parmetros SMPP................................................16 3.2 OVERVIEW DO FORMATO DO PDU SMPP ..................................................................................17 3.2.1. Layout do PDU SMPP .....................................................................................................18 3.2.2. Tamanho do PDU SMPP .................................................................................................19 3.2.3. Parmetros Opcionais......................................................................................................19 3.2.4. Formato dos parmetros opcionais .................................................................................20 3.2.5. Premissas para a compatibilidade do SMPP com verses mais avanadas ....................20 3.2.6. Premissas para a compatibilidade do SMPP com verses mais atrasadas .....................21
4-
DEFINIO DO PDU SMPP ....................................................................................................22 4.1 OPERAO DE BIND .................................................................................................................22 4.1.1. ESME Transmitter............................................................................................................22
4.1.1.1. 4.1.1.2. Sintaxe do BIND_TRANSMITTER .......................................................................................... 22 Sintaxe do BIND_TRANSMITTER_RESP ............................................................................... 23
4.1.2.
4.1.2.1. 4.1.2.2.
ESME Receiver.................................................................................................................24
Sintaxe do BIND_RECEIVER................................................................................................... 24 Sintaxe do BIND_RECEIVER_RESP ....................................................................................... 25
4.1.3.
4.1.3.1. 4.1.3.2.
4.1.4.
4.1.4.1.
Operao de OUTBIND...................................................................................................27
Sintaxe do OUTBIND ................................................................................................................ 27
4.2 OPERAO DE UNBIND ...........................................................................................................28 4.2.1. Sintaxe do UNBIND .........................................................................................................28 4.2.2. Sintaxe do UNBIND_RESP..............................................................................................28 4.3 GENERIC_NACK PDU ...........................................................................................................28 4.3.1. Sintaxe do PDU GENERIC_NACK..................................................................................29 4.4 OPERAO DE SUBMIT_SM ....................................................................................................29 4.4.1. Sintaxe do SUBMIT_SM...................................................................................................30
4.4.1.1. 4.4.1.2. Source and Destination Addressing............................................................................................ 31 Operao de reposio de mensagens com SUBMIT_SM ......................................................... 32
Pgina 2 de 53
NO 785545
4.4.1.3.
Sintaxe do SUBMIT_SM_RESP................................................................................................ 32
4.5 OPERAO DE DELIVER_SM ..................................................................................................33 4.5.1. Sintaxe do DELIVER_SM.................................................................................................33 4.5.2. Sintaxe do DELIVER_SM_RESP .....................................................................................35 4.6 OUTRAS OPERAES DO SMPP .................................................................................................35 4.6.1. DATA_SM ........................................................................................................................35 4.6.2. QUERY_SM......................................................................................................................35 4.6.3. CANCEL_SM ...................................................................................................................36 4.6.4. REPLACE_SM .................................................................................................................36 4.6.5. ENQUIRE_LINK..............................................................................................................36 4.6.6. ALERT_NOTIFICATION .................................................................................................36 5DEFINIO DOS PARMETROS SMPP..............................................................................37 5.1 PARMETROS DO CABEALHO SMPP (COMMAND HEADER).....................................................37 5.1.1. Command_length .............................................................................................................37 5.1.2. Command_id ....................................................................................................................37
5.1.2.1. Conjunto de comandos SMPP .................................................................................................... 37
5.1.3. Command_status ..............................................................................................................39 5.1.4. Sequence_number ............................................................................................................41 5.2 PARMETROS MANDATRIOS DO SMPP ....................................................................................41 5.2.1. System_id .........................................................................................................................41 5.2.2. Password..........................................................................................................................41 5.2.3. System_type ......................................................................................................................41 5.2.4. Interface_version..............................................................................................................41 5.2.5. addr_ton, source_addr_ton, dest_addr_ton, esme_addr_ton...........................................42 5.2.6. addr_npi, source_addr_npi, dest_addr_npi, esme_addr_npi...........................................42 5.2.7. Address_range..................................................................................................................43 5.2.8. Source_addr .....................................................................................................................43 5.2.9. Destination_addr..............................................................................................................43 5.2.10. Esme_addr .......................................................................................................................43 5.2.11. Service_type .....................................................................................................................44 5.2.12. Esm_class.........................................................................................................................44 5.2.13. Protocol_id.......................................................................................................................46 5.2.14. Priority_flag.....................................................................................................................46 5.2.15. schedule_delivery_time ....................................................................................................46 5.2.16. Validity_period.................................................................................................................47 5.2.17. Registery_delivery............................................................................................................47 5.2.18. replace_if_present_flag....................................................................................................48 5.2.19. data_coding......................................................................................................................48 5.2.20. sm_default_msg_id...........................................................................................................49 5.2.21. Sm_length.........................................................................................................................49 5.2.22. Short_message..................................................................................................................49 5.2.23. Message_id.......................................................................................................................49 5.2.24. Number_of_dests..............................................................................................................49 5.2.25. Dest_flag ..........................................................................................................................49 5.2.26. No_unsuccess ...................................................................................................................49 5.2.27. Dl_name ...........................................................................................................................49 5.2.28. Message_state ..................................................................................................................49 6DEFINIES GERAIS..............................................................................................................50 6.1 DEFINIES DE HORA ................................................................................................................50 6.1.1. Formato de tempo absoluto..............................................................................................50 6.1.2. Formato de tempo relativo...............................................................................................50 6.2 DEFINIES DE TEMPORIZADORES .............................................................................................51 7TPICO ESPECIAL O RECIBO DE ENTREGA DO SMPP.............................................52
Pgina 3 de 53
NO 785545
1-
Introduo
Overview SMPP
1.1 -
O protocolo SMPP (Short Message Peer to Peer) um protocolo aberto, desenvolvido para proporcionar uma interface para a comunicao de dados flexvel, para a transferncia de short messages entre um Short Message Center (SMSC), GSM USSD (Unstructured Supplementary Services Data) ou outro tipo qualquer de message center, e uma aplicao SMS, como por exemplo, uma plataforma de Voice Mail, servidor de E-mail, Servidor Proxy WAP ou outra gateway de mensagens qualquer. Nota: O protocolo SMPP utiliza o termo SMSC (Short Message Service Center) quando se refere entidade servidora da conexo SMPP. No caso da entidade cliente da conexo SMPP, o nome adotado pelo protocolo ESME (External Short Message Entity) A verso V3.4 do protocolo SMPP contempla, dentre outras, as seguintes tecnologias: ! ANSI-136 (TDMA) ! IS-95 (CDMA) ! iDEN O protocolo SMPP permite: ! Transmitir mensagens de uma ESME para um nico ou mltiplos destinos via SMSC; ! Que uma ESME possa receber mensagens de um terminal mvel via o SMSC; ! Enviar mensagens com confirmao de recebimento; ! Cancelar ou repor mensagens; ! Consultar o status de entrega de uma determinada mensagem; ! Agendar a entrega de mensagens, selecionando a data e a hora de entrega; ! Selecionar o modo de transmisso da mensagem, i.e. datagrama ou store and forward ! Definir prioridade de entrega para as mensagens; ! Definir o tipo de codificao dos dados da mensagem; ! Definir um perodo de validade para a mensagem; ! Associar um tipo de servio para cada mensagem.
Pgina 4 de 53
NO 785545
fig 1.
O protocolo SMPP est sendo utilizado recentemente para permitir a troca de SMS entre operadoras. Para este intuito foram desenvolvidas gateways para trabalhar com este protocolo, convertendo-o de uma tecnologia para outra (e.g. de TDMA para GSM). Este tipo de converso se faz bastante necessrio no cenrio brasileiro dada a diversidade de tecnologias adotadas pelas operadoras. Tm-se como exemplo destas novas aplicaes os contratos de interconexo de SMS entre as operadoras TIM e Telemig Celular, TIM e Telebahia Celular, TIM e Global Telecom, TIM e BCP, Telemig Celular e TCO, Telesp Celular e BCP, Telesp Celular e TESS, dentre outras.
Pgina 5 de 53
NO 785545
2-
2.1 -
O protocolo SMPP pode trafegar sobre a pilha TCP/IP ou X.25. Em linhas gerais, a filosofia do protocolo SMPP consiste em abrir sesses especficas, permanentes, semi-permanentes ou dinmicas, entre cada entidade. Por estas sesses so enviados os pacotes ou PDU (Protocol Data Unit), contendo as informaes daquela operao SMPP especfica. Fazendo uma analogia, a seo seria como uma rodovia por onde trafegam os caminhes, neste caso PDUs com as suas respectivas cargas, ou operaes. Da mesma forma que uma rodovia, as sesses SMPP podem ser unidirecionais ou bidirecionais. O SMPP utiliza um sistema de troca de mensagens e confirmaes de recebimento para garantir a confiabilidade das transaes. O protocolo SMPP define: ! Um conjunto de operaes para a troca de mensagens entre a ESME e o SMSC; ! Os dados que uma entidade pode trocar com a outra, durante uma operao SMPP. Todas as operaes de envio de mensagens SMPP devem ser seguidas de uma mensagem de resposta. A nica exceo esta regra no caso da mensagem de ALERT_NOTIFICATION, que no requer resposta. Os trs grupos distintos de transaes de mensagens SMPP so os seguintes: i) mensagens enviadas a partir da ESME para o SMSC; ii) mensagens enviadas a partir do SMSC para a ESME; iii) Mensagens trocadas entre a ESME e o SMSC simultaneamente; A figura 2 mostra os trs tipos de seo possveis dentro do protocolo SMPP. Note o sentido de envio das mensagens. (1) Conexo Transmitter (2) Conexo Receiver (3) Conexo Transceiver
Pgina 6 de 53
NO 785545
ESME
ESME
TCP/IP ou X.25
SMSC
ESME
fig 2.
2.2 -
Uma sesso SMPP entre uma ESME e um SMSC iniciada pelo estabelecimento de um link TCP/IP ou X.25 entre estas duas entidades. Em seguida a ESME, que segundo a nossa definio a entidade cliente da sesso SMPP, faz a solicitao da conexo, chamada BIND. Se esta entidade deseja enviar mensagens, deve fazer um BIND TRANSMITTER, se deseja receber mensagens, deve fazer um BIND RECEIVER e se deseja tanto enviar quanto receber, deve fazer ou um BIND TRANSMITTER e um BIND RECEIVER ou simplesmente um BIND TRANSCEIVER. Os passos para esta conexo esto descritos abaixo: ! OPEN (Conectado via TCP/IP ou X.25, aguardando o BIND) A ESME j possui um caminho lgico via TCP/IP ou X.25, entretanto ainda no solicitou a abertura da conexo SMPP; ! BOUND_TX A ESME solicitou a abertura da conexo SMPP transmitter, enviando um PDU (Protocol Data unit) bind_transmitter. Ao receber este PDU, o SMSC devolve um bind_transmitter_resp, informando se aceitou ou no a conexo. Caso a conexo seja estabelecida, a ESME j estar apta a enviar mensagens para o SMSC; ! BOUND_RX A ESME solicitou a abertura da conexo SMPP receiver, enviando um PDU bind_receiver. Ao receber este PDU, o SMSC devolve um bind_receiver_resp, informando se aceitou ou no a conexo. Caso a conexo seja estabelecida, a ESME j estar apta a receber mensagens do SMSC; ! CLOSED A ESME solicitou a desconexo ao SMSC.
Pgina 7 de 53
NO 785545
2.2.1.
O OUTBIND
Uma outra operao do SMPP o OUTBIND, que a mensagem SMPP enviada pelo SMSC para a ESME, solicitando que a ESME envie um BIND_RECEIVER. Observe que a regra da ESME solicitar a conexo no foi quebrada, uma vez que o SMSC no estabeleceu a conexo e sim a ESME. O diagrama abaixo ilustra esta situao:
fig 3.
A operao de OUTBIND
2.3 -
O PDU SMPP
Required SMPP Session State OPEN OPEN OPEN OPEN OPEN OPEN OPEN BOUND_TX Issued by ESME Yes No Yes No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes No No Issued by SMSC No Yes No Yes No Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes
A tabela abaixo mostra em quais situaes so aceitos cada tipo de PDU SMPP.
SMPP PDU Name Bind_transmitter bind_transmitter_resp bind_receiver bind_receiver_resp Bind_transceiver bind_transceiver_resp outbind
Unbind
unbind_resp
BOUND_RX BOUND_TRX
submit_sm
submit_sm_resp
Pgina 8 de 53
NO 785545
Issued by ESME
Yes Yes No No Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes No No Yes Yes No No Yes No Yes Yes Yes Yes Yes Yes No No Yes Yes Yes
Issued by SMSC
No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes Yes No No Yes Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
submit_sm_multi_resp
Data_sm
Data _sm_resp
BOUND_RX BOUND_TRX
deliver_sm
BOUND_RX BOUND_TRX BOUND_RX BOUND_TRX BOUND_TX BOUND_TRX BOUND_TX BOUND_TRX BOUND_TX BOUND_TRX BOUND_TX BOUND_TRX BOUND_TX BOUND_TX BOUND_TX
deliver_sm_resp
query_sm
query_sm_resp
cancel_sm
enquire_link
enquire_link_resp
BOUND_RX BOUND_TRX
alert_notification
generic_nack
NO 785545
2.4 -
A camada inferior ao nvel SMPP a camada de transporte, que pode ser TCP/IP ou X.25. No caso das interconexes realizadas com o ISR at a presente data, utilizamos o protocolo TCP/IP. Por ser um protocolo do nvel de aplicao, o SMPP no se preocupa com o transporte da mensagem, deixando esta tarefa a cargo da camada inferior. Esta camada dever prover a confiabilidade necessria para a troca de mensagens. Se necessrio, possvel solicitar a segmentao do pacote SMPP entidade de nvel inferior(TCP/IP ou X.25) que ir envi-la. Ao receb-la, a entidade de nvel inferior do outro lado dever reorganizar o pacote e entreg-lo para o nvel superior.
2.5 -
Uma ESME que envia short messages para um SMSC deve estar conectada a este SMSC como ESME Transmitter ou ESME Transceiver (vide tabela 1). Exemplos de PDUs que podem ser enviados para a entrega de mensagens ou dados so os PDUs submit_sm e data_sm. Os PDUS query_sm, cancel_sm e replace_sm so utilizados para controlar as mensagens enviadas para o SMSC, permitindo que a ESME possa questionar qual o status de uma determinada mensagem, cancelar uma mensagem ou substituir uma mensagem, respectivamente. Deve-se observar que sempre que uma mensagem destas enviada, o SMSC deve responder com a mensagem de resposta correspondente, contendo o status da operao. A nica exceo a operao alert_notification. Estas mensagens sero detalhadas mais adiante.
Pgina 10 de 53
NO 785545
fig 4.
A troca de mensagens e respostas entre a ESME e o SMSC pode ocorrer de forma sncrona (mensagens 1 e 2) ou assncrona (mensagens 3, 4 e 5). A primeira chamada Stop and Wait e a segunda chamada Sliding Window, Janela Deslizante, ou simplesmente Janelamento. Uma srie de mensagens enviadas de forma assncrona deve ser seguida de uma srie de respostas em seqncia, respeitando a ordem de recebimento das mensagens, entretanto o funcionamento desta forma no mandatrio na especificao do protocolo. A entidade recebedora deve ser capaz de gerenciar estas mensagens. A quantidade de mensagens enviadas chamada de janela ou window. No caso da figura 4, a janela utilizada foi de trs mensagens. O protocolo no estabelece um tamanho mximo para a janela a ser utilizada, entretanto, recomenda-se que no sejam utilizadas janelas maiores do que 10(dez) mensagens. A ESME deve retornar as respostas na mesma ordem em que recebeu as mensagens. O nico PDU de resposta relevante que a ESME passa para o SMSC o enquire_link_response.
Pgina 11 de 53
NO 785545
2.6 -
Uma ESME que recebe short messages para um SMSC deve estar conectada a este SMSC como ESME Receiver ou ESME Transceiver (vide tabela 1). Exemplos de PDUs que podem ser enviados para a entrega de mensagens ou dados so os PDUs deliver_sm e data_sm. Deve-se observar que sempre que uma mensagem destas enviada, o SMSC deve responder com a mensagem de resposta correspondente, contendo o status da operao. Estas mensagens sero detalhadas mais adiante.
fig 5.
Da mesma forma como mostrado anteriormente, no caso da ESME Transmitter, a ESME receiver tambm pode trabalhar com o controle de fluxo utilizando o Stop and Wait ou Windowing.
Pgina 12 de 53
NO 785545
fig 6.
Da mesma forma como foi visto anteriormente, possvel trabalhar com controle de fluxo por Stop and Wait e janelamento, tambm em sesses ESME Transceiver. Elaborao: Engenheiro Joo Bosco Silvino Jnior e-mail: joao_silvino@yahoo.com.br Pgina 13 de 53
NO 785545
2.7.2.
Todas as operaes SMPP so seguidas do respectivo PDU de resposta, exceto a operao alert_notification. A funo do PDU de resposta informar entidade remetente que o PDU foi recebido, assim como qual foi o resultado da operao solicitada. Caso a operao solicitada seja concluda com sucesso, o campo command_status do PDU de resposta vir preenchido com um OK. Caso seja encontrada alguma no conformidade no campo de dados do pacote, i.e. a configurao errnea de um parmetro, este campo vir preenchido com o cdigo de erro correspondente. Caso seja encontrado algum erro no cabealho do PDU, a entidade de destino ir responder com um GENERIC_NACK PDU, significando que no foi possvel a identificao do tipo de PDU recebido.
2.8 -
Temporizadores SMPP
Para garantir a eficincia nas transaes SMPP, recomendvel que cada sesso SMPP seja gerenciada utilizando temporizadores configurveis, tanto na ESME, quanto no SMSC, de acordo com as seguintes consideraes: ! Um temporizador inicial para garantir que quando uma ESME inicia uma sesso SMPP, isto ocorra dentro de um determinado perodo, aps a abertura da conexo de rede entre as plataformas; ! Um temporizador para permitir que tanto a ESME quanto o SMSC verifiquem o status da conexo via o comando enquire_link; ! Uma inatividade da conexo SMPP deve especificar um perodo mximo para a espera por novas mensagens, aps o qual a conexo poder ser finalizada; ! Um temporizador SMPP que ir especificar qual o maior tempo permitido entre a chegada de uma mensagem e o envio de uma resposta. Trataremos dos temporizadores SMPP mais adiante.
2.9 -
Tipos de mensagens
Complementando os tipos normais de short messages, mensagens especiais podem ser transferidas entre ESME e SMSC em uma operao submit_sm, deliver_sm ou data_sm. O tipo destas mensagens definido no parmetro esm_class destas operaes SMPP. Os tipos suportados so os seguintes:
2.9.1.
Esta mensagem usada para transportar um recibo de entrega da mensagem por uma SMSC. A SMSC, detectando que o destino final da mensagem foi alcanado, deve gerar um recibo de entrega para a entidade originadora da mensagem. O recibo de entrega codificado como um pacote de dados do usurio, na operao deliver_sm ou data_sm. Os campos abaixo so relevantes nas operaes deliver_sm ou data_sm, quanto utilizadas para transportar recibos de entrega de mesangens: ! source address (i.e. source_addr_ton, source_addr_npi, source_addr) O endereo fonte obtido a partir do endereo de destino na mensagem original; ! destination address (i.e. dest_addr_ton, dest_addr_npi, destination_addr) Elaborao: Engenheiro Joo Bosco Silvino Jnior e-mail: joao_silvino@yahoo.com.br Pgina 14 de 53
NO 785545
O endereo fonte obtido a partir do endereo fonte na mensagem original; ! esm_class ! message_state ! network_error_code ! receipted_message_id
2.9.2.
Notificao Intermediria
Uma notificao intermediria uma forma especial de mensagem que o SMSC utiliza para enviar para a ESME mensagens que devero ser entregues em um destinatrio especfico. Isto proporciona um status intermedirio da entrega da mensagem. As aplicaes tpicas so: ! Proporcionar uma notificao de capacidade de memria excedida para uma plataforma Voice Mail; ! Informar a primeira tentativa de entrega de uma mensagem que, por no ter sido entregue, foi armazenada para tentativas futuras.
2.9.3.
Apesar do nome, a mensagem com o tipo SME Deliver Acknowledgement no uma confirmao de que a mensagem foi entregue e sim uma confirmao de que a mensagem foi lida pelo destinatrio. Esta facilidade encontrada principalmente nos aparelhos Nokia, onde pode-se definir no menu de configurao de mensagem se necessria uma confirmao de leitura para a mesma. Este tipo de mensagem no suportado em todos os tipos de rede.
Pgina 15 de 53
NO 785545
3-
3.1 Integer
C-Octet String Uma srie de caracteres ASCII, terminados com o caractere NULO C-Octet String (decimal) C-Octet String (HEXA) Octet String Uma srie de caracteres ASCII, onde cada caractere representa um dgito decimal (de 0 a 9) e termina com o caractere NULO Uma srie de caracteres ASCII, onde cada caractere representa um dgito hexadecimal (de 0 a F) e termina com o caractere NULO Uma srie de octetos, no necessariamente terminada com o caractere NULO
Fixed 1 or 17
C-Octet String
Var 0 - 254
Octet String
tabela 2 -
Pgina 16 de 53
NO 785545
3.2 -
O formato geral do PDU SMPP consiste de um cabealho PDU, seguido de um pacote de dados, tal como a maioria dos PDUs dos sistemas de comunicao digital. Este formato est descrito abaixo: PDU SMPP Cabealho do PDU SMPP (Mandatrio) Command length 4 Octetos Command Id Command status Sequence number Corpo do PDU (Opcional) Campo de dados
O cabealho SMPP mandatrio em qualquer PDU e deve sempre estar presente. O campo de dados do PDU opcional e pode no estar presente na mensagem. O formato de cada PDU SMPP ser mais detalhado adiante.
Pgina 17 de 53
NO 785545
3.2.1.
command_length 4 command_id 4
command_status header
Integer The command_status field indicates the success or failure of an SMPP request. It is relevant only in the SMPP response PDU and it must contain a NULL value in an SMPP request PDU. The complete list of SMPP Error codes is defined in Chapter 5.
sequence_number 4
Integer This field contains a sequence number which allows SMPP requests and responses to be associated for correlation purposes. The use of sequence numbers for message correlation allows SMPP PDUs to be exchanged asynchronously. Assignment of the sequence_number is the responsibility of the SMPP PDU originator. The sequence_number should be increased monotonically for each submitted SMPP request PDU and must be preserved in the associated SMPP response PDU. The sequence_number may range from: 0x00000001 to 0x7FFFFFFF.
Mandatory Parameters
var.
mixed A list of mandatory parameters corresponding to that SMPP PDU defined in the command_id field. The complete list of mandatory parameters is detailed in section 4. "SMPP PDU Definition" with the description of each SMPP PDU. A list of Optional Parameters corresponding to that SMPP PDU defined in the command_id field and included as required. The complete list of optional parameters is detailed in section 4. "SMPP PDU Definition" with the description of each SMPP PDU.
body
Optional Parameters
tabela 4 -
Pgina 18 de 53
NO 785545
3.2.2.
O campo command_length no comeo do cabealho do PDU SMPP indica o tamanho total do PDU SMPP em nmero de octetos. O campo command_length contem um inteiro de 4 octetos, transmitido no formato Big Endian. Para decodificar um PDU SMPP, a ESME ou o SMSC deve primeiro ler o command_length para determinar o tamanho deste PDU. O valor indicado neste campo subtrado de quatro octetos, sendo que o valor resultante corresponde ao tamanho restante da mensagem. Exemplo: Suponhamos que uma mensagem tenha a seguinte seqncia de dados no cabealho: 00 00 00 2F 00 00 00 02 00 00 00 00 00 00 00 01 53 4D 50 50 33 54 45 53 54 00 73 65 63 72 65 74 30 38 00 53 55 42 4D 49 54 31 00 00 01 01 00 Os valores esto representados em formato hexadecimal. Desta forma, decodificando a seqncia acima obtemos: 00 00 00 2F Command Length 0x0000002F 00 00 00 02 Command ID 0x00000002 (bind_transmitter) 00 00 00 00 Command Status 0x00000000 00 00 00 01 Sequence Number 0x00000001 Os dados restantes representam o campo de dados do PDU SMPP, cujo exemplo corresponde um PDU da operao BIND_TRANSMITTER.
3.2.3.
Parmetros Opcionais
Parmetros Opcionais so campos que podem estar presentes nas mensagens SMPP. Estes parmetros fornecem mecanismos para a introduo futura de novos parmetros, medida que forem definidos em futuras verses do protocolo SMPP. Os parmetros opcionais devem sempre aparecer no final do PDU SMPP. Entretanto eles podem ser includos em qualquer ordem conveniente, dentro da seo de parmetros opcionais do PDU SMPP. Para um PDU SMPP em particular, a ESME ou o SMSC devem incluir todos ou nenhum dos parmetros opcionais definidos como o necessrio no contexto da aplicao em particular. Por exemplo, sistemas de paging podem precisar somente de incluir o campo relacionado ao callback number em uma operao de submit_sm.
Pgina 19 de 53
NO 785545
3.2.4.
Todos os parmetros opcionais devem seguir o seguinte formato TLV (Tag Length Value) ou ICV (Identificador Comprimento Valor). Parameter Name Tag Size 2 Type Integer Description The Tag field is used to uniquely identify the particular optional parameter in question. The optional parameter Tag field is always 2 octets in length. Length 2 Integer The Length field indicates the length of the Val u e field in octets. Note that this length does not include the length of the Tag and Length fields. The optional parameter Length field is always 2 octets in length. Value variable variable
tabela 5 -
The Val u e field contains the actual data for the optional parameter in question.
Pgina 20 de 53
NO 785545
! Uma entidade SMPP que recebe um parmetro com o valor reservado, deve utilizar o valor padro, se uma configurao padro definida, caso contrrio o parmetro dever ignorado; ! Se um valor de um parmetro desconhecido ou invlido, a entidade SMPP deve retornar um erro, indicando que o valor daquele parmetro invlido; ! Uma entidade SMPP que detecta que um parmetro opcional, necessrio naquela operao especfica, no estava presente no PDU SMPP, deve retornar uma mensagem com um erro dizendo Expected Optional Parameter missing. ! Um campo com tamanho varivel pode ter seu comprimento mximo estendido em verses futuras do protocolo SMPP. Uma entidade SMPP que recebe um parmetro cujo comprimento maior do que o suportado por aquela entidade deve rejeitar aquele parmetro com o cdigo de erro indicando invalid parameter length.
Pgina 21 de 53
NO 785545
4-
4.1 -
A operao de BIND a operao de tentativa de abertura do canal SMPP entre uma ESME e um SMSC. Conforme dito anteriormente, uma ESME pode fazer um bind_transmitter, bind_receiver ou bind_transceiver. Caso a ESME tente conectar-se com um bind_transceiver em um SMSC no suporte esta operao, este deve retornar uma mensagem de resposta contendo o erro Invalid Command ID e a ESME dever tentar conectar-se novamente, desta vez com um bind_transmitter ou bind_receiver ou um par bind_transmitter, bind_receiver. Caso a ESME tente conectar-se com um bind_transmitter ou bind_receiver em um SMSC no suporte esta operao, este deve retornar uma mensagem de resposta contendo o erro Invalid Command ID e a ESME dever tentar conectar-se novamente, desta vez com um bind_transceiver.
4.1.1.
ESME Transmitter
Uma ESME conectada como uma transmitter est autorizada a enviar mensagens a um SMSC e receber as respostas SMPP correspondentes. Uma ESME indica que no deseja receber mensagens originadas de outra SME (i.e. terminais mveis), conectando-se como transmitter. Verifique na tabela 1 quais so as operaes permitidas a uma ESME conectada como transmitter.
length
of
the
bind_transmitter
Sequence_number
Set to a unique sequence number. The associated Integer bind_transmitter_resp PDU will echo the same sequence number.
C-Octet Identifies the ESME system requesting to bind as String a transmitter with the SMSC. C-Octet The password may be used by the SMSC to String authenticate the ESME requesting to bind. C-Octet Identifies the type of ESME system requesting to String bind as a transmitter with the SMSC.
body
interface_version 1
Integer
Pgina 22 de 53
NO 785545
Size Octets
Type
Description
Ref.
Integer Indicates Type of Number of the ESME address. If not known set to NULL 1 Integer Numbering Plan Indicator for ESME address. If addr_npi not known set to NULL. Var. Caddress_range max Octet The ESME address. If not known set to NULL. 41 String tabela 6 - PDU do BIND_TRANSMITTER
body
a. There is no specific requirement on how the sequence_number should be set. However, it is recommended that the sequence number be a monotonically increasing number. b. The recommended use of system_id is to identify the binding entity, e.g., InternetGW in the case of an Internet Gateway or VMS for a Voice Mail System. c. The password is used for authentication to secure SMSC access. The ESME may set the password to NULL to gain insecure access (if allowed by SMSC administration). d. The system_type (optional) may be used to categorise the system, e.g., EMAIL, WWW, etc.
4.1.1.2.
Field Name
command_length command_id command_status sequence_number body
Sintaxe do BIND_TRANSMITTER_RESP
Size Octets 4 4 4 4 var. max 16 Type Integer Integer Integer Integer Description Ref.
of
the
header
Value corresponding to bind_transmitter_resp request. Indicates status (success or error code) of original bind_transmitter request. Set to sequence number bind_transmitter request. of original
system_id b
TLV
PDU do BIND_TRANSMITTER_RESP
Note:
The body portion of the SMPP bind_transmitter_resp PDU is not returned if the command_status field contains a non-zero value; i.e., if there is an error in the original bind_transmitter request, the SMSC system_id is not returned.
Pgina 23 de 53
NO 785545
4.1.2.
ESME Receiver
Uma ESME conectada como uma receiver est autorizada a receber mensagens de um SMSC e retornar as respostas SMPP correspondentes. Verifique na tabela 1 quais so as operaes permitidas a uma ESME conectada como receiver.
sequence_number
Set to a unique sequence number. The associated Integer bind_receiver_resp PDU will echo the same sequence number.
C-Octet Identifies the ESME system requesting to bind as String a receiver with the SMSC. C-Octet The password may be used by the SMSC to String authenticate the ESME requesting to bind. C-Octet Identifies the type of ESME system requesting to String bind as a receiver with the SMSC.
Integer
Integer Indicates Type of Number of the ESME address. If not known set to NULL 1 Integer Numbering Plan Indicator for ESME address. If not known set to NULL. Var. Cmax Octet The ESME address. If not known set to NULL. 41 String tabela 8 - PDU do BIND_RECEIVER
a. There is no specific requirement on how the sequence_number should be set. However, it is recommended that the sequence number be a monotonically increasing number. b. The recommended use of system_id is to identify the binding entity, e.g., InternetGW in the case of an Internet Gateway or VMS for a Voice Mail System. c. The password is used for authentication to secure SMSC access. The ESME may set the password to NULL to gain insecure access (if allowed by SMSC administration). d. The system_type (optional) may be used to categorise the system, e.g., EMAIL, WWW, etc.
Pgina 24 de 53
NO 785545
4.1.2.2.
Field Name
command_length command_id command_status sequence_number body
Sintaxe do BIND_RECEIVER_RESP
Size Octets 4 4 4 4 var. max 16 Type Integer Integer Integer Integer Description Ref.
length
of
the
header
Value corresponding to bind_receiver_resp request. Indicates status (success or error code) of original bind_receiver request. Set to sequence number bind_receiver request. of original
system_id b
Type
Description
Ref.
TLV
PDU do BIND_RECEIVER_RESP
Note:
The body portion of the SMPP bind_receiver_resp PDU is not returned if the command_status field contains a non-zero value; i.e., if there is an error in the original bind_receiver request, the SMSC system_id is not returned.
4.1.3.
ESME Transceiver
Uma ESME conectada como uma transceiver est autorizada receber/enviar mensagens de/para o SMSC e retornar as respostas SMPP correspondentes, em uma nica sesso SMPP. Verifique na tabela 1 quais so as operaes permitidas a uma ESME conectada como transceiver.
Pgina 25 de 53
NO 785545
length
of
the
bind_transceiver
sequence_number
Set to a unique sequence number. The associated Integer bind_transceiver_resp PDU will echo the same sequence number.
C-Octet Identifies the ESME system requesting to bind as String a transceiver with the SMSC. C-Octet The password may be used by the SMSC to String authenticate the ESME requesting to bind. C-Octet Identifies the type of ESME system requesting to String bind as a transceiver with the SMSC.
interface_version 1 addr_ton 1
Integer
Integer Indicates Type of Number of the ESME address. If not known set to NULL 1 Integer Numbering Plan Indicator for ESME address. If addr_npi not known set to NULL. Var. Caddress_range max Octet The ESME address. If not known set to NULL. 41 String tabela 10 - PDU do BIND_TRANSCEIVER
a. There is no specific requirement on how the sequence_number should be set. However, it is recommended that the sequence number be a monotonically increasing number. b. The recommended use of system_id is to identify the binding entity, e.g., InternetGW in the case of an Internet Gateway or VMS for a Voice Mail System. c. The password is used for authentication to secure SMSC access. The ESME may set the password to NULL to gain insecure access (if allowed by SMSC administration). d. The system_type (optional) may be used to categorise the system, e.g., EMAIL, WWW, etc.
Pgina 26 de 53
NO 785545
4.1.3.2.
Field Name
command_length command_id command_status sequence_number body
Sintaxe do BIND_TRANSCEIVER_RESP
Size Octets 4 4 4 4 var. max 16 Type Integer Integer Integer Integer Description Ref.
of
the
header
Value corresponding to bind_transceiver_resp request. Indicates status (success or error code) of original bind_transceiver request. Set to sequence number bind_transceiver request. of original
system_id b
Type
Description
Ref.
TLV
PDU do BIND_TRANSCEIVER_RESP
The body portion of the SMPP bind_transceiver_resp PDU is not returned if the command_status field contains a non-zero value; i.e., if there is an error in the original bind_transceiver request, the SMSC system_id is not returned.
4.1.4.
Operao de OUTBIND
Esta operao utilizada pelo SMSC para sinalizar ESME para que esta origine um bind_receiver ao SMSC.
4.1.4.1.
Field Name
command_length Header command_id command_status sequence_number
Sintaxe do OUTBIND
Size Octets 4 4 4 4 var. max 16 var. 16 Type Description Ref.
Integer Defines the overall length of the outbind PDU. Integer Value corresponding to outbind request. Integer Not used in outbind PDU. Must be set to NULL. Integer Set to a unique sequence number. C-Octet SMSC identifier. Identifies the SMSC to the String ESME
system_id
Body
password
The password may be used by the ESME for C-Octet security reasons to authenticate the SMSC String originating the outbind. PDU do OUTBIND
tabela 12 -
Pgina 27 de 53
NO 785545
4.2 -
Operao de UNBIND
O propsito da operao de unbind de acordo com o protocolo SMPP cancelar o registro de uma instncia ESME a partir do SMSC e informar ao SMSC que a ESME no deseja mais utilizar esta conexo de rede para o envio ou recebimento de mensagens. Desta forma, a operao de unbind pode ser vista como uma forma do SMSC requisitar um fechamento da sesso SMPP corrente.
4.2.1.
Field Name
Sintaxe do UNBIND
Size Octets 4 4 4 4 Type Description Ref.
Integer Defines the overall length of the unbind PDU. Integer Value corresponding to unbind request. Integer Not used in unbind PDU. Must be set to NULL.
Set to a unique sequence number. The associated Integer unbind_resp PDU will echo the same sequence number.
tabela 13 -
PDU do UNBIND
4.2.2.
Field Name
Sintaxe do UNBIND_RESP
Size Octets 4 4 4 4 Type Description Ref.
Integer Defines the overall length of the unbind PDU. Integer Value corresponding to unbind request. Integer Not used in unbind PDU. Must be set to NULL. Integer
tabela 14 -
PDU do UNBIND_RESP
4.3 -
GENERIC_NACK PDU
Este PDU de resposta um reconhecimento negativo de um PDU SMPP enviado com um cabealho invlido. A resposta generic_nack retornada nos seguintes casos: ! Invalid command_length Se a entidade recebedora, ao decodificar o PDU SMPP, detecta um command_length invlido (tanto curto quando longo), ela deve assumir que o dado est corrompido. Neste caso uma resposta com o generic_nack retornada ao originador da mensagem; ! command_id desconhecido Se um command_id desconhecido ou invlido recebido, uma resposta com o generic_nack retornada ao originador da mensagem.
Pgina 28 de 53
NO 785545
4.3.1.
Field Name
tabela 15 -
PDU do GENERIC_NACK
4.4 -
Operao de SUBMIT_SM
A operao de submit_sm utilizada pela ESME para enviar mensagens para o SMSC. A sesso utilizada para enviar estas mensagens a sesso ESME Transmitter. Assim que o SMSC recebe o pacote submit_sm, e este verificado como correto, esta entidade envia um PDU de resposta submit_sm_resp contendo um cdigo que ser utilizado para identificar aquela mensagem. Este cdigo o message_id, que ser utilizado posteriormente para associar a mensagem submit_sm ao recibo de confirmao de entrega correspondente. Conforme dito anteriormente, as mensagens de resposta submit_sm_resp no precisam necessriamente serem precedidas do submit_sm correspondente, mas devem estar OBRIGATORIAMENTE em ordem, de forma que o message_id se uma mensagem no seja atribudo outra. Caso ocorra algum erro no envio desta mensagem submit_sm, o SMSC ir retornar o cdigo de erro da operao para o ESME e a mensagem no ser aceita. Depender das regras de tratamento de erro de cada plataforma ESME, qual ser a deciso a ser tomada com relao a este pacote submit_sm rejeitado. Esta deciso pode ser descartar o pacote, armazenar o pacote em buffer, esperando uma interveno no sistema para corrigir o problema, ou uma tentativa de reenvio, de acordo com o estabelecido na mquina. A mesma deciso depende do cdigo de erro devolvido, ou seja, no necessariamente a ESME ir descartar, armazenar ou retransmitir todos os pacotes com algum cdigo de erro.
Pgina 29 de 53
NO 785545
4.4.1.
Sintaxe do SUBMIT_SM
Size Octets
4 4 4 4
Set to a Unique sequence number. The associated Integer submit_sm_resp PDU will echo this sequence number. The service_type parameter can be used to indicate the SMS Application service associated with the message. Specifying the service_type allows the ESME to
Var.
service_type
Max 6
C-Octet Avail of enhanced messaging services such as replace by service type String To control the teleservice used on the air interface.
Integer Integer
Type of Number for source address. If not known, set to NULL (Unknown). Numbering Plan Indicator for source address. If not known, set to NULL (Unknown).
Integer Type of Number for destination Integer Numbering Plan Indicator for Destination.
C-Octet Destination address of this short message. For mobile terminated messages, this is the directory String number of the recipient MS.
Integer Indicates Message Mode & Message Type. Integer Protocol Identifier. Network specific field. Integer Designates the priority level of the message.
priority_flag
Pgina 30 de 53
NO 785545
Size Octets
Type
Description
Ref.
C-Octet The short message is to be scheduled by the 1 or 17 SMSC for delivery. Set to NULL for immediate String message delivery. 1 or 17 1 1 1 C-Octet The validity period of this message. Set to NULL String to request the SMSC default validity period.
Indicator to signify if an SMSC delivery receipt or an SME acknowledgement is required. Flag indicating if submitted message should replace an existing message. Defines the encoding scheme of the short message user data.
sm_default_msg_i d sm_length
Indicates the short message to send from a list of pre-defined (canned) short messages stored on Integer the SMSC. If not using an SMSC canned message, set to NULL. Integer Length in octets of the short_message user data. Up to 254 octets of short message user data. The exact physical limit for short_message size may vary according to the underlying network.
Var.
short_message
Max 0 - 254
Octet String
Applications which need to send messages longer than 254 octets should use the message_payload parameter. In this case the sm_length field should be set to zero. Note: The short message data should be inserted in either the short_message or message_payload fields. Both fields must not be used simultaneously.
tabela 16 -
PDU do SUBMIT_SM
Nota: Os parmetros opcionais do PDU submit_sm podero ser encontrados na documentao entregue em anexo (SMPP Protocol Specification v3.4), e no faro parte do escopo deste curso.
4.4.1.1.
O PDU submit_sm inclui formas de provisionar tanto o "endereo fonte" ou source address, quanto o "endereo de destino" ou destination address. O endereo fonte composto dos campos source_addr_ton, source_addr_npi e source_addr e o endereo de destino composto dos campos dest_addr_ton, dest_addr_npi e destination_addr.
Pgina 31 de 53
NO 785545
Uma ESME Transmitter pode inserir valores nulos nos campos do endereo fonte. Neste caso, o SMSC deve inserir neste campo o valor padro para aquela ESME em particular. Este comportamento foi projetado para interfaces que normalmente no so familiares ao conceito de endereo fonte para short messages, como por exemplo, sistemas de Voice Mail.
de
reposio
de
mensagens
com
O protocolo SMPP oferece uma operao dedicada reposio de mensagens, chamada replace_sm, mas a operao submit_sm tambm pode ser utilizada para este fim. A funo de reposio utilizando submit_sm pode ser ativada preenchendo o campo replace_if_present_flag com 1 (um). Alternativamente o administrador do SMSC pode implementar um tipo de servio especfico para a funcionalidade de reposio. Neste caso, a funo de reposio de mensagem ser ativada no PDU submit_sm atravs do campo service_type, preenchendo-o com o valor definido. Em todos os casos, o campo contendo a mensagem, na mensagem que ser reposta, ser substitudo pelo texto contido no campo short_message da ltima mensagem enviada. A diferena em utilizar o mtodo de reposio por submit_sm e replace_sm que no primeiro caso, se a mensagem no encontrada no buffer do SMSC (i.e. se j tiver sido entregue), uma nova mensagem ser enviada para o destinatrio. J no segundo caso a mensagem no ser entregue e o SMSC ir retornar um erro no PDU replace_sm_resp.
4.4.1.3.
Sintaxe do SUBMIT_SM_RESP
Size Octets 4 4 4 4 var. max 65
message_id
This field contains the SMSC message ID of the C-Octet submitted message. It may be used at a later String stage to query the status of a message, cancel or replace the message. PDU do SUBMIT_SM_RESP
Body
tabela 17 -
Nota: The submit_sm_resp PDU Body is not returned if the command_status field contains a non-zero value.
Pgina 32 de 53
NO 785545
4.5 -
Operao de DELIVER_SM
A operao de deliver_sm utilizada pelo SMSC para submeter mensagens para uma ESME. Utilizando este comando, o SMSC pode rotear uma mensagem para entrega. Adicionalmente, o SMSC utiliza a operao de deliver_sm para transferir tipos especficos de short messages para o ESME, dentre eles o SMSC Delivery Receipt, que nada mais do que o recibo de confirmao de entrega da mensagem, que informa ESME que aquela mensagem descrita neste pacote foi devidamente entregue no aparelho de destino. Desta forma possvel implementar um sistema de tarifao baseado na entrega de mensagens.
4.5.1.
Field Name
command_length Header command_id command_status sequence_number
Sintaxe do DELIVER_SM
Size Octets
4 4 4 4 Var. Type Integer Description Ref.
Set to a unique sequence number. The associated Integer deliver_sm_resp PDU should echo the same sequence number.
C-Octet The service_type parameter can be used to indicate the SMS Application service associated String with the message.
service_type
Max 6
source_addr_ton
MANDATORY PARAMETERS
1 1 Var.
Integer Integer
Type of Number for source address. If not known, set to NULL (Unknown). Numbering Plan Indicator for source address. If not known, set to NULL (Unknown).
source_addr_npi
Integer Type of Number for destination Integer Numbering Plan Indicator for Destination.
C-Octet Destination address of this short message. For mobile terminated messages, this is the directory String number of the recipient MS.
esm_class
Integer
Pgina 33 de 53
NO 785545
Field Name
Protocol_id
Size Octets
1 1 1 or 17
Type
Description
Ref.
Integer Protocol Identifier. Network specific field. Integer Designates the priority level of the message.
C-Octet This field is unused for deliver_sm. It must be set String to NULL. C-Octet This field is unused for deliver_sm. It must be set String to NULL.
1 or 17 1 1 1 1 1
registered_deliver y
MANDATORY PARAMETERS
Integer
replace_if_present _flag
Data_coding
Integer Not used in deliver_sm. It must be set to NULL. Integer Indicates the encoding scheme of the short message.
sm_default_msg_i d sm_length
Integer Unused for deliver_sm. It must be set to NULL. Integer Length in octets of the short_message user data in octets. Up to 254 octets of short message user data. When sending messages longer than 254 octets the message_payload parameter should be used and the sm_length parameter should be set to zero. Note: The short message data should be inserted in either the short_message or message_payload fields. Both fields must not be used simultaneously.
Var.
short_message
Max 0 - 254
Octet String
tabela 18 -
PDU do DELIVER_SM
Nota: Os parmetros opcionais do PDU deliver_sm podero ser encontrados na documentao entregue em anexo (SMPP Protocol Specification v3.4), e no faro parte do escopo deste curso.
Pgina 34 de 53
NO 785545
4.5.2.
Field Name
Sintaxe do DELIVER_SM_RESP
Size Octets 4 4 4 4 Type Integer Description Ref.
message_id
tabela 19 -
PDU do DELIVER_SM_RESP
O recibo de confirmao de entrega, que utiliza o PDU deliver_sm ser detalhado em um tpico especial mais adiante.
4.6 -
Existem outras operaes suportadas pelo protocolo SMPP. Estas operaes no sero detalhadas neste curso. Posteriormente ser desenvolvido um mdulo avanado, destinado ao detalhamento das operaes SMPP no descritas neste curso.
4.6.1.
DATA_SM
Esta operao utilizada para transmitir dados entre a ESME e o SMSC. Pode ser utilizado por ambas as entidades. Este comando uma alternativa aos comando submit_sm e deliver_sm. Foi introduzido como um novo comando para ser utilizado por aplicaes interativas, como por exemplo, operaes via WAP. A ESME pode utilizar este comando para requisitar que o SMSC transfira uma mensagem para um mvel. Desta forma, o SMSC pode utilizar este comando para transferir mensagens originadas por terminais para uma ESME. Da mesma forma que a operao deliver_sm, esta operao pode ser utilizada para transferir o recibo de confirmao de entrega para uma ESME.
4.6.2.
QUERY_SM
Este comando utilizado pelo ESME para questionar o SMSC sobre o status de uma determinada mensagem submetida previamente. Este mecanismo baseado no message_id associado, repassado pelo SMSC, e pelo endereo fonte.
Pgina 35 de 53
NO 785545
4.6.3.
CANCEL_SM
Este comando utilizado pela ESME para cancelar uma mensagem previamente enviada para o SMSC, que ainda esto com a entrega pendente. Este comando pode especificar uma nica mensagem, cancelando-a, ou pode tambm cancelar mensagens especficas de acordo com o endereo fonte ou endereo de destino.
4.6.4.
REPLACE_SM
Conforme descrito anteriormente, esta operao permite que uma determinada mensagem seja substituda por outra mensagem. Novamente o mecanismo de message_id utilizado para detectar a mensagem que se deseja repor.
4.6.5.
ENQUIRE_LINK
Esta mensagem pode ser utilizada tanto pelo ESME quanto pelo SMSC, para proporcionar uma checagem confivel do caminho de comunicao entre a ESME e o SMSC. Uma das endidades, ao receber esta mensagem, deve respond-la com uma mensagem enquire_link_resp, indicando que est "viva", ou seja, o nvel de aplicao entre as entidades est funcionando.
4.6.6.
ALERT_NOTIFICATION
Este comando enviado pelo SMSC para a ESME quando o SMSC detecta que um assinante em particular se tornou disponvel para receber mensagens e um sinalizador de entrega foi enviado para aquele assinante por uma operao data_sm anterior. Esta mensagem pode ser utilizada por exemplo como um gatilho para uma operao "Push" para dados de um Servidor WAP Proxy. Nota: Esta operao a nica que no contem uma mensagem de reposta associada, ou seja, no existe um PDU alert_notification_resp.
Pgina 36 de 53
NO 785545
5-
Esta seo descreve os parmetros SMPP que podem ser utilizados em um comando SMPP.
5.1 5.1.1.
O parmetro command_length indica o tamanho total em octetos de uma mensagem SMPP. So considerados o cabealho SMPP (incluindo o prprio campo command_length), os parmetros mandatrios e os parmetros opcionais.
5.1.2.
Command_id
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 solicitao 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.
Command ID generic_nack bind_receiver bind_receiver_resp bind_transmitter bind_transmitter_resp query_sm query_sm_resp submit_sm submit_sm_resp deliver_sm deliver_sm_resp unbind unbind_resp replace_sm replace_sm_resp
Pgina 37 de 53
NO 785545
outbind Reserved
for
Pgina 38 de 53
NO 785545
5.1.3.
Command_status
O campo command_staus indica o sucesso ou falha de uma solicitao SMPP. Somente relevante em mensagens de resposta SMPP. Nas mensagens de solicitao SMPP, deve ser preenchido com o valor valor nulo. O cdigo de erro retornado no comando de resposta SMPP informando neste campo. O conjunto completo de cdigos de erro e seus valores associados esto apresentados na tabela 21. Error Code ESME_ROK ESME_RINVMSGLEN ESME_RINVCMDLEN ESME_RINVCMDID ESME_RINVBNDSTS ESME_RALYBND ESME_RINVPRTFLG ESME_RINVREGDLVFLG ESME_RSYSERR Reserved ESME_RINVSRCADR ESME_RINVDSTADR ESME_RINVMSGID ESME_RBINDFAIL ESME_RINVPASWD ESME_RINVSYSID Reserved ESME_RCANCELFAIL Reserved ESME_RREPLACEFAIL ESME_RMSGQFUL ESME_RINVSERTYP Reserved ESME_RINVNUMDESTS ESME_RINVDLNAME Reserved ESME_RINVDESTFLAG Error Code Value 0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000A 0x0000000B 0x0000000C 0x0000000D 0x0000000E 0x0000000F 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015 0x00000016-0x00000032 0x00000033 0x00000034 0x00000035-0x0000003F 0x00000040 Value Description No Error Message Length is invalid Command Length is invalid Invalid Command ID Incorrect BIND Status for given command ESME Already in Bound State Invalid Priority Flag Invalid Registered Delivery Flag System Error Reserved Invalid Source Address Invalid Dest Addr Message ID is invalid Bind Failed Invalid Password Invalid System ID Reserved Cancel SM Failed Reserved Replace SM Failed Message Queue Full Invalid Service Type Reserved Invalid number of destinations Invalid Distribution List name Reserved Dest. flag is invalid (submit_multi) Description
Pgina 39 de 53
NO 785545
Reserved ESME_RINVSUBREP
0x00000041 0x00000042
Reserved Invalid submit with replace request(i.e. submit_sm with replace_if_present_flag set) Invalid esm_class field data Cannot Submit to Distribution List submit_sm or submit_multi failed Reserved Invalid Source address TON Invalid Source address NPI Invalid Destination address TON Invalid Destination address NPI Reserved Invalid system_type field Invalid replace_if_present flag Invalid number of messages Reserved Throttling error (ESME has exceededallowed message limits) Reserved Invalid Scheduled Delivery Time Invalid message period(Expiry time) validity
ESME_RINVESMCLASS ESME_RCNTSUBDL ESME_RSUBMITFAIL Reserved ESME_RINVSRCTON ESME_RINVSRCNPI ESME_RINVDSTTON ESME_RINVDSTNPI Reserved ESME_RINVSYSTYP ESME_RINVREPFLAG ESME_RINVNUMMSGS Reserved ESME_RTHROTTLED Reserved ESME_RINVSCHED ESME_RINVEXPIRY ESME_RINVDFTMSGID ESME_RX_T_APPN ESME_RX_P_APPN ESME_RX_R_APPN ESME_RQUERYFAIL Reserved
0x00000043 0x00000044 0x00000045 0x00000046-0x00000047 0x00000048 0x00000049 0x00000050 0x00000051 0x00000052 0x00000053 0x00000054 0x00000055 0x00000056-0x00000057 0x00000058 0x00000059-0x00000060 0x00000061 0x00000062 0x00000063 0x00000064 0x00000065 0x00000066 0x00000067
Predefined Message Invalid or Not Found ESME Receiver Temporary App Error Code ESME Receiver Permanent App Error Code ESME Receiver Reject Message ErrorCode query_sm request failed
0x00000068-0x000000BF Reserved Error in the optional part of the PDU Body. Description Optional Parameter not allowed Invalid Parameter Length.
Pgina 40 de 53
NO 785545
ESME_RMISSINGOPTPARAM 0x000000C3 ESME_RINVOPTPARAMVAL Reserved ESME_RDELIVERYFAILURE ESME_RUNKNOWNERR Reserved for SMPP extension Reserved for specific errors Reserved
tabela 21 -
Expected missing
Optional
Parameter
0x000000C4
0x000000C5-0x000000FD Reserved 0x000000FE 0x000000FF 0x00000100-0x000003FF Delivery Failure data_sm_resp) Unknown Error Reserved for SMPP extension Reserved for SMSC vendor specific errors (used for
SMSC
vendor 0x00000400-0x000004FF
5.1.4.
Sequence_number
Um nmero de sequncia permite que um PDU de resposta seja relacionado a um PDU de solicitao. O PDU de resposta SMPP deve preservar este campo. A faixa de valores possveis deste campo vai de 0x00000001 a 0x7FFFFFFF.
5.2 5.2.1.
O parmetro system_id utilizado para identificar uma ESME ou um SMSC no momento do BIND.
5.2.2.
Password
O parmetro password utilizado pelo SMSC para autenticar uma ESME que est solicitanto o BIND. Tambm utilizado pela ESME para autenticar um SMSC, no caso da operao de outbind.
5.2.3.
System_type
O parmetro 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 especificao do system_type opcional. Alguns SMSC podem no solicitar que a ESME informe este detalhe. Neste caso a ESME pode preencher este campo com o valor nulo.
5.2.4.
Interface_version
Este parmetro utilizado para indicar a verso do protocolo SMPP utilizado pela entidade. As seguintes verses de interface so definidas: Interface Version Value
Indicates that the EMSE supports 0x00-0x33 Elaborao: Engenheiro Joo Bosco Silvino Jnior e-mail: joao_silvino@yahoo.com.br Pgina 41 de 53
NO 785545
version 3.3 or earlier of the SMPP protocol. Indicates that the ESME is 0x34 supporting SMPP version 3.4 All other values reserved
tabela 22 -
source_addr_ton,
dest_addr_ton,
Estes campos definem o tipo de nmero ou TON (Type Of Number) para ser utilizado nos parmetros da SME. Os valores possveis so apresentados na tabela 23. TON Unknown International National Network Specific Subscriber Number Alphanumeric Abbreviated Value 00000000 00000001 00000010 00000011 00000100 00000101 00000110 Decimal 0 1 2 3 4 5 6
source_addr_npi,
dest_addr_npi,
Estes campos definem o indicador de plano numrico, ou NPI (Numeric Plan Indicator) que ser utilizado nos parmetros da SME. Os valores possveis so apresentados na tabela 24.
Pgina 42 de 53
NO 785545
NPI Unknown ISDN (E163/E164) Data (X.121) Telex (F.69) Land Mobile (E.212) National Private ERMES Internet (IP)
Value 00000000 00000001 00000011 00000100 00000110 00001000 00001001 00001010 00001110
Decimal 0 1 3 4 6 8 9 10 14 18
WAP Client Id (to be 00010010 defined by WAP Forum) All other values reserved
tabela 24 -
5.2.7.
Address_range
O parmetro address_range utilizado nas operaes de bind_receiver e bind_tranceiver para especificar um conjunto de endereos das SME's servidas pelo cliente ESME. Um endereo nico pode ser especificado no parmetro address_range. A notao de expresso regular do UNIX deve ser utilizada para especificar a faixa de endereos.
5.2.8.
Source_addr
Este campo especifica o endereo da SME que originou a mensagem. Uma ESME que implementada com um nico endereo SME, i.e. Voice Mail, pode preencher este campo com o valor nulo, para permitir que o SMSC preencha este campo com o valor padro.
5.2.9.
Destination_addr
Este campo especifica o endereo da SME de destino da mensagem. Para mensagens terminadas, este endereo especifica o DN do terminal.
5.2.10.
Esme_addr
Especifica o endereo da ESME para onde as mensagens de alert_notification devero ser enviadas.
Pgina 43 de 53
NO 785545
5.2.11.
Service_type
O parmetro service_type pode ser usado para indicar o servio de aplicao SMS associado mensagem, permitindo ESME: ! Disponibilizar servios avanados de mensagens, tais como aqueles descritos no item 4.4.1.2; ! Controlar o teleservio utilizado na interface area (i.e. IS-136/TDMA, IS95/CDMA) O SMSC pode associar implicitamente a funo "replace if present" do service_type indicado em uma submisso de mensagem. Por exemplo, o SMSC pode sempre repor uma mensagem pendente de entrega que tenha o mesmo originador e destinatrio da mensagem submetida. Desta forma, um SMSC pode garantir que um sistema de Voice Mail, utilizando o service_type "VMA" tem no mximo uma notificao por destinatrio, invocando automaticamente a funo "replace if present". Os tipos genricos de service_type esto 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 mtuo entre os administradores da ESME e do SMSC.
5.2.12.
Esm_class
O parmetro esm_class utilizado para indicar atributos especiais associados s mensagens. Em mensagens enviadas da ESME para o SMSC, este parmetro codificado da seguinte forma: Bits 76543210 Meaning Messaging Mode (bits 1-0) xxxxxx00 xxxxxx01 xxxxxx10 xxxxxx11 Default SMSC Mode (e.g. Store and Forward) Datagram mode Forward (i.e. Transaction) mode Store and Forward mode (use to select Store and Forward mode if Default SMSC Mode is non Store and Forward)
Pgina 44 de 53
NO 785545
Bits
76543210
Default message Type (i.e. normal message) Short Message contains ESME Delivery Acknowledgement Short Message contains ESME Manual/User Acknowledgement GSM Network Specific Features (bits 7-6)
No specific features selected UDHI Indicator (only relevant for MT short messages) Set Reply Path (only relevant for GSM network) Set UDHI and Reply Path (only relevant for GSM network)
Em mensagens enviadas do SMSC para a ESME, este parmetro codificado da seguinte forma: Bits 76543210 Meaning Message Mode (bits 1-0) xxxxxxxx not applicable - ignore bits 0 and 1 Message Type (bits 5-2) xx0000xx xx0001xx xx0010xx xx0011xx xx0100xx xx0101xx xx0110xx xx0111xx xx1000xx Default message Type (i.e. normal message) Short Message contains SMSC Delivery Receipt Short Message contains SME Delivery Acknowledgement reserved Short Message contains SME Manual/User Acknowledgment reserved Short Message contains Conversation Abort (Korean CDMA) reserved Short Message contains Intermediate Delivery Notification
all other values reserved GSM Network Specific Features (bits 7-6) 00xxxxxx 01xxxxxx 10xxxxxx 11xxxxxx No specific features selected UDHI Indicator set Reply Path UDHI and Reply Path
Pgina 45 de 53
NO 785545
5.2.13.
GSM
Protocol_id
Configurado de acordo com a norma GSM 03.40 [GSM 03.40] ANSI-136 (TDMA) Para mensagens terminadas, este campo no utilizado, portanto deve ser ignorado pelo SMSC. Para mensagens originadas, o SMSC deve configurar este valor para nulo. IS-95-(CDMA) Para mensagens terminadas, este campo no utilizado, portanto deve ser ignorado pelo SMSC. Para mensagens originadas, o SMSC deve configurar este valor para nulo.
5.2.14.
Priority_flag
O parmetro priority_flag permite que mensagens originadas pela SME associem nveis de prioridade s mensagens. So suportados quatro nveis de prioridade: 0= Nvel 0 menor prioridade 1= Nvel 1 de prioridade 2= Nvel 2 de prioridade 3= Nvel 3 maior prioridade >3=Reservado Estes valores so aplicados nas diferentes redes conforme descrito na tabela 25: Priority Level 0 1 2 3 GSMa ANSI-136 IS-95 Normal Interactive Urgent Emergency
5.2.15.
schedule_delivery_time
Este parmetro especifica a hora da primeira tentativa de entrega da mensagem. Pode definir tanto uma hora absoluta quanto uma hora relativa, tomando como base a hora do SMSC. O tipo de codificao da hora ser definido adiante.
Pgina 46 de 53
NO 785545
5.2.16.
Validity_period
O parmetro validity_period indica o tempo de expirao da mensagem no SMSC, aps o qual a mensagem dever ser descartada, se no entregue ao destino. O tipo de codificao da hora ser definido adiante.
5.2.17.
Registery_delivery
O parmetro registery_delivery utilizado para solicitar um recibo de entrega ao SMSC, assim que a mensagem for entregue ao destino ou assim que a mensagem for apagada do buffer desta entidade. Os valores possveis so definidos a seguir: Bits 76543210 Meaning SMSC Delivery Receipt (bits 1 and 0) xxxxxx00 xxxxxx01 outcome is xxxxxx10 outcome xxxxxx11 No SMSC Delivery Receipt requested (default) SMSC Delivery Receipt requested where final delivery delivery success or failure SMSC Delivery Receipt requested where the final delivery is delivery failure reserved SME originated Acknowledgement (bits 3 and 2) xxxx00xx xxxx01xx xxxx10xx xxxx11xx xxx0xxxx xxx1xxxx No recipient SME acknowledgment requested (default) SME Delivery Acknowledgement requested SME Manual/User Acknowledgment requested Both Delivery and Manual/User Acknowledgment requested Intermediate Notification (bit 5) No Intermediate notification requested (default) Intermediate notification requested **
all other values reserved O valor padrao para o parmetro registered_delivery 0x00. Note: * A delivery receipt is returned only when the message has reached a non-delivered final state such as cancelled or undeliverable, etc. ** Support for Intermediate Notification Functionality is specific to the SMSC implementation and is beyond the scope of the SMPP Protocol Specification.
Pgina 47 de 53
NO 785545
5.2.18.
replace_if_present_flag
Conforme descrito anteriormente, o campo replace_if_present_flag utilizado para solicitar ao SMSC a reposio de uma mensagem previamente enviada pelo ESME. O SMSC ir repor uma mensagem existente que tenha um determinado endereo fonte, endereo de destino e service_type. Os valores possveis para o campo replace_if_present_flag so apresentados abaixo: 0 No repor (padro) 1 Repor 2 - 255 reservado
5.2.19.
Bits
data_coding
Meaning Notes SMSC Default Alphabet IA5 (CCITT T.50)/ASCII (ANSI X3.4) b Octet unspecified (8-bit binary) b Latin 1 (ISO-8859-1) b Octet unspecified (8-bit binary) a JIS (X 0208-1990) b Cyrllic (ISO-8859-5) b Latin/Hebrew (ISO-8859-8) b UCS2 (ISO/IEC-10646) a Pictogram Encoding b ISO-2022-JP (Music Codes) b reserved reserved Extended Kanji JIS(X 0212-1990) b KS C 5601 b reserved reserved GSM MWI control - see [GSM 03.38] d GSM MWI control - see [GSM 03.38] d reserved GSM message class control - see [GSM 03.38] e
Indica o tipo de codifio da mensagem. representado da seguinte forma: 76543210 00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100 00001101 00001110 00001111 : 10111111 1100xxxx 1101xxxx 1110xxxx 1111xxxx
Pgina 48 de 53
NO 785545
5.2.20.
sm_default_msg_id
O parmetro sm_default_msg_id especifica o ndice de uma mensagem pr definida. 0 1 - 254 255 reserved Allowed values Reserved
5.2.21. Sm_length
O parmetro sm_length especifica o tamanho da mensagem contida no campo short_message em octetos. Caso o campo message_payload seja utilizado para transportar a mensagem, este campo dever ser configurado com o valor zero.
5.2.22. Short_message
Neste campo est contida a mensagem, no caso das operaes submit_sm, deliver_sm e data_sm, e, no caso das mensagens de confirmao de entrega utilizando, deliver_sm e data_sm, o recibo de entrega da mensagem.
5.2.23. Message_id
Este campo preenchido com a nica identificao que pode referenciar exatamente uma nica mensagem dentre as vrias mensagens submetidas. preenchido de acordo com a implementao do SMSC. um valor retornado pelo SMSC na mensagem de resposta das operaes submit_sm, submit_multi_sm, e data_sm, que ser relacionado ao nmero retornado no recibo de entrega.
5.2.24.
Number_of_dests
5.2.25.
Dest_flag
5.2.26.
No_unsuccess
Indica o nmero de mensagens que no tiveram sucesso na entrega, no caso das mensagens submit_multi_sm.
5.2.27.
Dl_name
5.2.28.
Message_state
Pgina 49 de 53
NO 785545
6-
Definies Gerais
6.1.1.
Este o formato de tempo padro utilizado pelo SMPP. Entregas agendadas e tempo de expirao so especificados no seu formato global UTC, incluindo a variao de um quarto de hora e smbolo de direo + ou -.
6.1.2.
O tempo relativo pode ser indicado configurando o sinalizador de orientao do UTC para R ao invs de + ou -. Desta forma ser tomado como base a hora e data do SMSC.
Pgina 50 de 53
NO 785545
Pgina 51 de 53
NO 785545
Field
id
Description
The message ID allocated to the message by the SMSC when originally submitted.
sub
dlvrd
submit date
10
done date
10
stat
err
text
20
tabela 27 -
Number of short messages originallysubmitted. This is only relevant when the original message was submitted to a distribution list.The value is padded with leading zeros if necessary. C-Octet Number of short messages delivered. This is only Fixed Length relevant where the original message was submitted to a String distribution list.The value is padded with leading zeros (Decimal) if necessary. C-Octet The time and date at which the short message was Fixed Length submitted. In the case of a message which has been String replaced, this is the date that the original message was replaced.The format is as follows: YYMMDDhhmm where: YY = last two digits of the year (00-99) MM = month (01-12) DD = day (01-31) hh = hour (00-23) mm = minute (00-59) C-Octet Fixed The time and date at which the short message reached Length String its final state. The format is the same as for the submit date. C-Octet The final status of the message. For settings for this Fixed Length field see Table B-2. String C-Octet Where appropriate this may hold a Network specific Fixed Length error code or an SMSC error code for the attempted String delivery of the message. These errors are Network or SMSC specific and are not included here. Octet String The first 20 characters of the short message. Formato do recibo de entrega das mensagens SMPP
Pgina 52 de 53
NO 785545
Os estados de entrega da mensagem podem ser os seguintes: Message State DELIVERED EXPIRED DELETED UNDELIVERABLE ACCEPTED UNKNOWN REJECTED
tabela 28 -
Final Message States DELIVRD EXPIRED DELETED UNDELIV ACCEPTD UNKNOWN REJECTD
Description Message is delivered to destination Message validity period has expired. Message has been deleted. Message is undeliverable Message is in accepted state (i.e. has been manually read on behalf of the subscriber by customer service) Message is in invalid state Message is in a rejected state
Pgina 53 de 53