sms-pdu
v1.0.0
Published
Codificación de mensajes SMS a PDU para envío vía AT commands.
Readme
sms-pdu
sms-pdu es una librería ligera para Node.js que permite convertir texto plano en SMS-SUBMIT PDU, lista para enviar a dispositivos GSM mediante comandos AT (AT+CMGS).
Soporta codificación en GSM 7-bit, 8-bit y UCS2 (16-bit), manejo de caracteres extendidos, selección de clase de mensaje, tipos de número (TOA) y período de validez.
Características
- Conversión de texto a PDU listo para
AT+CMGS. - Soporta codificación GSM 7-bit, 8-bit y UCS2.
- Manejo de caracteres extendidos en GSM 7-bit.
- Soporte para SMS Flash y clases específicas (ME, SIM, TE).
- Control de tipo de número internacional/nacional y centro de servicios (SMSC).
- Opcional: solicitud de acuse de recibo y periodo de validez del mensaje.
- Calcula automáticamente la longitud de PDU para enviar por AT commands.
Instalación
npm install sms-pduUso Básico
const { stringToPDU } = require('sms-pdu');
const pduData = stringToPDU("Hola mundo", "+34123456789");
console.log(pduData.PDU);
// PDU codificado en hexadecimal
console.log(pduData.cmgsLen);
// Longitud del mensaje para AT+CMGS
console.log(pduData.command);
// Comando AT completo listo para enviar:
// AT+CMGS=<longitud>
// <PDU en hexadecimal>Opciones de Configuración
const pduData = stringToPDU("Mensaje", "+123456789", {
smscNumber: "0", // Centro de servicios SMS, 0 = usar SMSC de la SIM
alphabetSize: 7, // 7 = GSM7, 8 = 8-bit, 16 = UCS2
messageClass: -1, // -1 = automático, 0=Flash, 1=ME, 2=SIM, 3=TE
toa: -1, // Tipo de número receptor, -1 = automático
validity: 255, // Periodo de validez
useValidity: true, // Aplicar periodo de validez
receipt: false // Solicitar acuse de recibo
});Enumeraciones disponibles
const { ALPHABET_SIZE, MESSAGE_CLASS, TOA } = require('sms-pdu');
// Tamaños de alfabeto para SMS
ALPHABET_SIZE.GSM7 // 7 bits, alfabeto GSM por defecto
ALPHABET_SIZE.BIT8 // 8 bits, para datos binarios
ALPHABET_SIZE.UCS2_16 // 16 bits, Unicode UCS2
// Clases de mensaje SMS
MESSAGE_CLASS.FLASH // Mensaje Flash (aparece directamente en pantalla)
MESSAGE_CLASS.ME_SPECIFIC // Mensaje dirigido al dispositivo (ME)
MESSAGE_CLASS.SIM_SPECIFIC // Mensaje dirigido a la SIM
MESSAGE_CLASS.TE_SPECIFIC // Mensaje dirigido al terminal (TE)
MESSAGE_CLASS.AUTOMATIC // Detecta automáticamente la clase
// Tipos de número (TOA) para el receptor
TOA.INTERNATIONAL // Número internacional (p.ej. +34123456789)
TOA.NATIONAL // Número nacional
TOA.UNKNOWN // Tipo de número desconocido
TOA.AUTOMATIC // Detecta automáticamente si es internacional o nacionalCasos de uso
- Envío de SMS desde aplicaciones Node.js a módems GSM.
- Automatización de mensajes SMS en servidores locales.
- Integración con dispositivos IoT que soporten comandos AT.
Licencia
MIT © Jorge Pacora
