JSPM

sms-pdu

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q56928F
  • License ISC

Codificación de mensajes SMS a PDU para envío vía AT commands.

Package Exports

  • sms-pdu
  • sms-pdu/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sms-pdu) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

sms-pdu

npm version License

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-pdu

Uso 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 nacional

Casos 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