Como inserir dados no campo SM do SMPP
No SMPP (Short Message Peer-to-Peer), o payload da Mensagem Curta (SM) é o texto real (ou dados binários) da mensagem SMS sendo transmitida. Para garantir a interpretação correta desse conteúdo, o campo data_coding no PDU desempenha um papel crítico, indicando o formato de codificação da mensagem.
Codificações comuns no SMPP
O campo data_coding
tem 1 byte e informa ao SMSC como interpretar o payload da mensagem.
Hex | Decimal | Codificação | Descrição |
---|---|---|---|
0x00 | 0 | GSM 7-bit padrão | Conjunto de caracteres padrão do SMS |
0x01 | 1 | ASCII | ASCII 8-bit (subconjunto Latin-1) |
0x03 | 3 | Latin-1 (ISO 8859-1) | Conjunto de caracteres da Europa Ocidental |
0x08 | 8 | UCS2 | Unicode (16-bit, big-endian) |
0x04 | 4 | Binário | Dados binários brutos de 8-bit |
Exemplos de mensagens codificadas
1. GSM 7-bit (data_coding = 0x00)
Codificação padrão de SMS. Eficiente (até 160 caracteres em uma única mensagem).
Texto: "Hello" GSM 7-bit Empacotado: C8 32 9B FD 06
2. UCS2 (data_coding = 0x08)
Usado para scripts não latinos (ex.: árabe, chinês, emojis). Suporta 70 caracteres por mensagem.
Texto: "مرحبا" UCS2 Hex: 0645 0631 062D 0628 0627 Bytes (hex): 06 45 06 31 06 2D 06 28 06 27
3. ASCII (data_coding = 0x01)
Apenas caracteres latinos básicos, menos eficiente em espaço que GSM 7-bit.
Texto: "Hello" ASCII Hex: 48 65 6C 6C 6F
Exemplo de PDU SMPP com codificação UCS2
Aqui está um PDU submit_sm
do SMPP carregando uma mensagem Unicode:
0000004B // Comprimento do comando (75 bytes) 00000004 // ID do comando (submit_sm) 00000000 // Status do comando 00000001 // Número de sequência 74657374 // service_type: "test" 01 // source_addr_ton: Internacional 01 // source_addr_npi: ISDN 31323334 // source_addr: "1234" (ASCII) 00 01 // dest_addr_ton 01 // dest_addr_npi 35363738 // destination_addr: "5678" 00 00 // esm_class 00 // protocol_id 00 // priority_flag 00 // schedule_delivery_time 00 // validity_period 00 // registered_delivery 00 // replace_if_present_flag 08 // data_coding: UCS2 00 // sm_default_msg_id 0A // sm_length: 10 bytes 06450631 // Mensagem em UCS2 (ex. "مر") 062D0628
Codificação e concatenação
Mensagens longas são divididas em partes usando UDH (User Data Header). Isso reduz o tamanho máximo do payload:
- GSM 7-bit: 160 → 153 caracteres por parte
- UCS2: 70 → 67 caracteres por parte
Exemplo de UDH para parte da mensagem:
05 00 03 CC 02 01 // 05: comprimento do cabeçalho // 00 03: IEI de concatenação // CC: Referência da mensagem // 02: total de partes // 01: parte atual
Resumo
O SMPP fornece opções flexíveis de codificação através do campo data_coding
. A codificação adequada garante compatibilidade entre redes globais, especialmente ao lidar com texto multilíngue ou dados binários. Os desenvolvedores devem corresponder os tipos de codificação com o conteúdo e os destinatários esperados para evitar corrupção da mensagem.
Referências
- Especificação SMPP 3.4
- Conjunto de caracteres GSM 03.38
- Padrão Unicode
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