Como configurar o campo Replace if Present no SMPP
O que é o campo Replace If Present?
O campo Replace If Present no SMPP é um sinalizador de 1 byte em PDUs como submit_sm
que instrui o SMSC a substituir
uma mensagem existente armazenada no dispositivo do destinatário ou na fila do SMSC. As principais aplicações incluem:
- Atualizar conteúdo sensível ao tempo (ex: OTPs, alertas de status)
- Evitar mensagens duplicadas
- Gerenciar restrições de armazenamento no dispositivo
Valores do campo e interpretação
O campo usa uma estrutura simples semelhante a um booleano:
Valor (Hex) | Descrição |
---|---|
0x00 | NÃO substituir mensagens existentes (padrão) |
0x01 | Substituir mensagens existentes, se presentes |
- Endereços de origem/destino
- ID da mensagem (se fornecido)
- ID do protocolo (PID=0x41 frequentemente aciona a substituição)
Casos de uso
1. Atualização de mensagem OTP
replace_if_present: 0x01 // Substituir mensagem OTP anterior PID: 0x41 // ID do protocolo para substituição payload: "Seu novo OTP: 5678"
2. Atualização de mensagem de campanha
replace_if_present: 0x01 // Atualizar conteúdo promocional PID: 0x00 // Protocolo padrão payload: "Promoção Relâmpago: Novos preços!"
3. Gerenciamento de fila
replace_if_present: 0x01 // Sobrescrever mensagem na fila scheduled_delivery_time: (timestamp futuro)
Exemplos de PDUs SMPP
Exemplo 1: Substituição desativada (0x00)
0000001D // Comprimento do comando (29 bytes) 00000004 // ID do comando (SubmitSM) 00000001 // Número de sequência ... 00 // Replace If Present (0x00: Desativado) ... 07 // Comprimento SM (7 septets) C8329BFD06DDDF72 // Payload ("Olá!")
Exemplo 2: Substituição ativada (0x01)
0000001D // Comprimento do comando (29 bytes) 00000004 // ID do comando (SubmitSM) 00000002 // Número de sequência ... 01 // Replace If Present (0x01: Ativado) ... 07 // Comprimento SM (7 septets) E8329BFD0E... // Payload ("Atualizado: 15h")
Exemplo 3: Combinado com PID=0x41
0000001D // Comprimento do comando (29 bytes) 00000004 // ID do comando (SubmitSM) 00000003 // Número de sequência ... 41 // ID do protocolo (PID=0x41: Substituir) 01 // Replace If Present (0x01) ... 07 // Comprimento SM (7 septets) C8329BFD06... // Payload ("OTP: 9876")
Interações com outros campos
- ID do protocolo (PID): PID=0x41 explicitamente aciona a substituição em muitos SMSCs
- message_id: Alguns SMSCs usam isso para identificar mensagens para substituição
- registered_delivery: Recebimentos indicam se a substituição foi bem-sucedida
Armadilhas comuns
- Ativar substituição sem suporte do SMSC
- Não definir
message_id
para substituição direcionada - Assumir que todos os SMSCs usam a mesma lógica de substituição
- Valores de PID e replace_if_present incompatíveis
As políticas de substituição variam muito. Alguns SMSCs:
- Substituem apenas mensagens com origem/destino correspondentes
- Ignoram replace_if_present se PID≠0x41
- Limitam a substituição a mensagens na fila do SMSC (não entregues)
Conclusão
O campo Replace If Present fornece controle crítico sobre o gerenciamento do ciclo de vida da mensagem, mas requer coordenação cuidadosa com as capacidades do SMSC. Sempre verifique o comportamento de substituição com seu provedor e use PID=0x41 para solicitações explícitas de substituição. Para implementações detalhadas, consulte a Seção 5.2.20 do SMPP v3.4 e a documentação GSM 03.40 sobre manipulação de mensagens.
More information
- Como configurar o campo Tipo de serviço SMPP
- Como configurar os campos de número de telefone SMPP
- Como configurar o campo Classe ESM do SMPP
- Como configurar o campo PID do SMPP
- Como configurar o campo de prioridade do SMPP
- Como configurar o campo de tempo agendado do SMPP
- Como configurar o campo de período de validade do SMPP
- Como configurar o campo de entrega registrada do SMPP
- Como configurar o campo Substituir se presente do SMPP
- Como configurar o campo sm_default_msg_id
- Como configurar o campo DCS do SMPP
- Como calcular o campo de comprimento SM do SMPP
- Como inserir dados no campo SM SMPP