Como configurar o campo ESM Class do SMPP
Configurações de classe ESM no Ozeki SMS Gateway
O Ozeki SMS Gateway permite configurar manualmente o campo ESM class (Figura 1)
O que é o campo ESM Class?
O Extended Service Message (ESM) Class no SMPP é um campo de 1 byte nos PDUs do SMPP que controla recursos avançados de manipulação de mensagens.
Ele é usado nas operações submit_sm
, deliver_sm
e data_sm
para especificar:
- Tipos de mensagem (ex.: SMS, recibo de entrega)
- Comportamento do recibo de entrega
- Presença de UDH (User Data Header)
- Sinalizadores de prioridade e roteamento da mensagem
Estrutura e Bitmask do ESM Class
O ESM class é uma bitmask onde cada bit ou grupo de bits ativa recursos específicos:
Bits | Descrição |
---|---|
7 | Modo de Mensagem: 0 = Padrão, 1 = Datagrama |
6 | Tipo de Mensagem: 0 = Normal, 1 = Recibo de Entrega |
5 | Indicador UDHI: 1 = UDH presente no payload |
4 | Caminho de Resposta: 1 = Caminho de resposta solicitado |
3-2 | Prioridade da Mensagem (00 = Normal, 01 = Interativa, 10 = Urgente, 11 = Emergência) |
1-0 | Reservado |
Valores Comuns de ESM Class
ESM (Hex) | Binário | Descrição |
---|---|---|
0x00 | 00000000 | Padrão (sem tratamento especial) |
0x04 | 00000100 | Flag UDHI ativada (UDH presente) |
0x08 | 00001000 | Caminho de resposta solicitado |
0x20 | 00100000 | Recibo de entrega (bit 6 = 1) |
0x30 | 00110000 | Prioridade urgente + recibo de entrega |
0x60 | 01100000 | Modo datagrama + recibo de entrega |
Casos de Uso Principais
1. SMS Concatenado (Flag UDHI)
Ao enviar mensagens multiparte, defina o bit 5 (UDHI=1) e inclua um User Data Header (UDH) no payload. Exemplo para uma mensagem de 3 partes:
ESM Class: 0x40 (binário 01000000: UDHI ativado) Payload: 05 00 03 02 01 // UDH (5 bytes: IEI=00, IEDL=03, parte 1 de 2) C8329BFD06 // Payload GSM-7 ("Olá")
2. Solicitações de Recibo de Entrega
Defina o bit 6 (0x20) para solicitar um recibo de entrega. Frequentemente combinado com o campo registered_delivery
:
ESM Class: 0x20 (binário 00100000) registered_delivery: 0x01 (solicitar recibo)
3. Mensagens Prioritárias
Use os bits 3-2 para priorizar mensagens. Exemplo para prioridade urgente:
ESM Class: 0x10 (binário 00010000: Prioridade urgente)
Exemplos de PDUs SMPP
Exemplo 1: SMS Básico (ESM=0x00)
0000001D // Comprimento do Comando (29 bytes) 00000004 // ID do Comando (SubmitSM) 00000001 // Número de Sequência 00 // TON da Origem 00 // NPI da Origem 736F7572636500 // Endereço de Origem ("source") 00 // TON do Destino 00 // NPI do Destino 36353433323100 // Endereço de Destino ("654321") 00 // ESM Class (0x00: Padrão) 00 // Protocol ID (PID) 00 // Prioridade 00 // Horário de Entrega Agendada 00 // Período de Validade 00 // Entrega Registrada 00 // Substituir-se-Presente 00 // Codificação de Dados (DCS=0x00) 00 // ID Padrão de Mensagem SM 07 // Comprimento SM (7 septets) C8329BFD06DDDF72 // Payload ("Olá!")
Exemplo 2: SMS Concatenado (ESM=0x40)
00000025 // Comprimento do Comando (37 bytes) 00000004 // ID do Comando (SubmitSM) 00000002 // Número de Sequência 00 // TON da Origem 00 // NPI da Origem 736F7572636500 // Endereço de Origem ("source") 00 // TON do Destino 00 // NPI do Destino 36353433323100 // Endereço de Destino ("654321") 40 // ESM Class (0x40: UDHI ativado) 00 // Protocol ID (PID) 00 // Prioridade 00 // Horário de Entrega Agendada 00 // Período de Validade 00 // Entrega Registrada 00 // Substituir-se-Presente 00 // Codificação de Dados (DCS=0x00) 00 // ID Padrão de Mensagem SM 0C // Comprimento SM (12 bytes) 0500030201C8329BFD06DDDF72 // UDH + "Olá" (Parte 1/2)
Exemplo 3: Recibo de Entrega (ESM=0x20)
0000001D // Comprimento do Comando (29 bytes) 00000004 // ID do Comando (SubmitSM) 00000003 // Número de Sequência 00 // TON da Origem 00 // NPI da Origem 736F7572636500 // Endereço de Origem ("source") 00 // TON do Destino 00 // NPI do Destino 36353433323100 // Endereço de Destino ("654321") 20 // ESM Class (0x20: Recibo de entrega) 00 // Protocol ID (PID) 00 // Prioridade 00 // Horário de Entrega Agendada 00 // Período de Validade 01 // Entrega Registrada (recibo solicitado) 00 // Substituir-se-Presente 00 // Codificação de Dados (DCS=0x00) 00 // ID Padrão de Mensagem SM 07 // Comprimento SM (7 septets) C8329BFD06DDDF72 // Payload ("Olá!")
Interações com Outros Campos
- UDHI (ESM) + DCS: Se UDHI estiver definido, certifique-se de que o DCS suporte UDH (ex.: GSM-7 ou 8-bit).
- ESM Class + registered_delivery: Use ambos para solicitar recibos de entrega explicitamente.
- Bits de Prioridade + Flag de Prioridade: Alguns SMSCs priorizam mensagens com base nos bits ESM em vez do campo de prioridade separado.
Armadilhas Comuns
- Definir UDHI sem incluir um User Data Header válido.
- Usar flags de recibo de entrega (ESM=0x20) sem definir
registered_delivery
. - Incompatibilidade entre os bits de prioridade do ESM e o campo
priority_flag
separado.
Conclusão
A classe ESM é uma ferramenta poderosa para controlar o comportamento das mensagens em SMPP. Seu design de bitmask permite recursos como concatenação, recibos e priorização. Sempre verifique o suporte do SMSC para flags avançadas e teste as configurações minuciosamente. Para detalhes autorizados, consulte a especificação SMPP v3.4 ou v5.0.
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