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 |
4.4.1.2
- Operação
de reposição de mensagens com SUBMIT_SM
O protocolo SMPP
oferece uma operação dedicada à reposição de mensagens, chamada replace_sm,
mas a operação submit_sm
também pode ser utilizada para este fim. A função de reposição 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
serviço específico para a funcionalidade de reposição. Neste caso, a função
de reposição de mensagem será ativada no PDU submit_sm
através 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á substituído pelo texto contido
no campo short_message da última
mensagem enviada.
A diferença em utilizar o método de reposição por submit_sm e replace_sm é que no primeiro caso, se a mensagem não é encontrada no buffer do SMSC (i.e. se já tiver sido entregue), uma nova mensagem será enviada para o destinatário. Já no segundo caso a mensagem não será entregue e o SMSC irá retornar um erro no PDU replace_sm_resp.
4.4.1.3 - Sintaxe do SUBMIT_SM_RESP
O PDU submit_sm_resp possui o seguinte formato:
|
Field
Name |
Size
Octets |
Type |
Description |
Ref. |
Header |
command_length |
4 |
Integer |
Defines
the overall length of the submit_sm_resp
PDU. |
|
command_id |
4 |
Integer |
submit_sm_resp |
|
|
command_status |
4 |
Integer |
Indicates
outcome of submit_sm
request. |
|
|
sequence_number |
4 |
Integer |
Set
to sequence number of original submit_sm
PDU |
|
|
Body |
message_id |
var.
max 65 |
C-Octet
String |
This
field contains the SMSC message ID of the submitted message. It may
be used at a later stage to query the status of a message, cancel or
replace the message.
|
|
Tabela
17 - PDU
do SUBMIT_SM_RESP
Nota:
The
submit_sm_resp
PDU Body is not returned if the command_status
field contains a non-zero value.
A operação 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 operação de deliver_sm
para transferir tipos específicos de short messages para o ESME, dentre eles
o SMSC Delivery Receipt, que nada mais é do que o recibo de confirmação de
entrega da mensagem, que informa à ESME que aquela mensagem descrita neste
pacote foi devidamente entregue no aparelho de destino. Desta forma é possível
implementar um sistema de tarifação baseado na entrega de mensagens.
4.5.1 - Sintaxe do DELIVER_SM
|
Field
Name |
Size
Octets |
Type |
Description |
Ref. |
Header |
command_length |
4 |
Integer |
Defines
the overall length of the deliver_sm
PDU. |
|
command_id |
4 |
Integer |
deliver_sm |
|
|
command_status |
4 |
Integer |
Unused.
Set to NULL |
|
|
sequence_number |
4 |
Integer |
Set
to a unique sequence number. The associated deliver_sm_resp
PDU
should echo the same sequence number. |
|
|
MANDATORY
PARAMETERS |
service_type |
Var. Max 6 |
C-Octet String |
The
service_type
parameter
can be used to indicate the SMS Application service associated with
the message. |
|
source_addr_ton |
1 |
Integer |
Type
of Number for source address. If not known, set to NULL (Unknown). |
|
|
source_addr_npi |
1 |
Integer |
Numbering
Plan Indicator for source address. If
not known, set to NULL (Unknown). |
|
|
source_addr |
Var. Max 21 |
C-Octet String |
Address
of SME which originated this message. If
not known, set to NULL (Unknown). |
|
|
dest_addr_ton |
1 |
Integer |
Type
of Number for destination |
|
|
dest_addr_npi |
1 |
Integer |
Numbering
Plan Indicator for Destination. |
|
|
destination_addr |
Var. Max 21 |
C-Octet String |
Destination
address of this short message. For mobile terminated messages, this
is the directory number of the recipient MS. |
|
|
esm_class |
1 |
Integer |
Indicates
Message Type and enhanced network services |
|
|
|
Field
Name |
Size
Octets |
Type |
Description |
Ref. |
MANDATORY
PARAMETERS |
Protocol_id |
1 |
Integer |
Protocol
Identifier. Network specific field. |
|
priority_flag |
1 |
Integer |
Designates
the priority level of the message. |
|
|
Schedule_delivery_time |
1
or 17 |
C-Octet String |
This
field is unused for deliver_sm.
It
must be set to NULL. |
|
|
Validity_period |
1
or 17 |
C-Octet String |
This
field is unused for deliver_sm.
It
must be set to NULL. |
|
|
registered_delivery |
1 |
Integer |
Indicates
if an ESME acknowledgement is required. |
|
|
replace_if_present_flag |
1 |
Integer |
Not
used in deliver_sm.
It
must be set to NULL. |
|
|
Data_coding |
1 |
Integer |
Indicates
the encoding scheme of the short message. |
|
|
sm_default_msg_id |
1 |
Integer |
Unused
for deliver_sm.
It
must be set to NULL. |
|
|
sm_length |
1 |
Integer |
Length
in octets of the short_message
user
data in octets. |
|
|
short_message |
Var. Max 0
- 254 |
Octet String |
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. |
|
Tabela
18 - PDU
do DELIVER_SM
Nota:
Os parâmetros opcionais do PDU deliver_sm
poderão ser encontrados na documentação entregue em anexo (SMPP
Protocol Specification v3.4), e não farão parte do escopo deste curso.[j1]
4.5.2 - Sintaxe do DELIVER_SM_RESP
|
Field
Name |
Size
Octets |
Type |
Description |
Ref. |
Header |
command_length |
4 |
Integer |
Defines
the overall length of the deliver_sm_resp
PDU. |
|
command_id |
4 |
Integer |
deliver_sm_resp |
|
|
command_status |
4 |
Integer |
Indicates
outcome of deliver_sm
request. |
|
|
sequence_number |
4 |
Integer |
Set
to sequence number of original deliver_sm
PDU |
|
|
Body |
message_id |
1 |
C-Octet
String |
This
field is unused and is set to NULL. |
|
Tabela 19 - PDU do DELIVER_SM_RESP
O recibo de confirmação de entrega, que utiliza o PDU deliver_sm será detalhado em um tópico especial mais adiante.
4.6 - Outras operações do SMPP
Existem outras operações suportadas pelo protocolo SMPP. Estas operações não serão detalhadas neste curso. Posteriormente será desenvolvido um módulo avançado, destinado ao detalhamento das operações SMPP não descritas neste curso.
Esta operação é 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 aplicações interativas, como por exemplo, operações via WAP. A ESME pode utilizar este comando para requisitar que o SMSC transfira uma mensagem para um móvel. Desta forma, o SMSC pode utilizar este comando para transferir mensagens originadas por terminais para uma ESME. Da mesma forma que a operação deliver_sm, esta operação pode ser utilizada para transferir o recibo de confirmação de entrega para uma ESME.
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 endereço fonte.
Este comando é utilizado pela ESME para cancelar uma mensagem previamente enviada para o SMSC, que ainda estão com a entrega pendente. Este comando pode especificar uma única mensagem, cancelando-a, ou pode também cancelar mensagens específicas de acordo com o endereço fonte ou endereço de destino.
Conforme descrito anteriormente, esta operação permite que uma determinada mensagem seja substituída por outra mensagem. Novamente o mecanismo de message_id é utilizado para detectar a mensagem que se deseja repor.
Esta mensagem pode ser utilizada tanto pelo ESME quanto pelo SMSC, para proporcionar uma checagem confiável do caminho de comunicação 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 nível de aplicação entre as entidades está funcionando.
Este comando é enviado pelo SMSC para a ESME quando o SMSC detecta que um assinante em particular se tornou disponível para receber mensagens e um sinalizador de entrega foi enviado para aquele assinante por uma operação data_sm anterior.
Esta mensagem pode ser utilizada por exemplo
como um gatilho para uma operação "Push" para dados de um Servidor
WAP Proxy.
Nota: Esta operação é a única que não contem uma mensagem de reposta associada, ou seja, não existe um PDU alert_notification_resp.