🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@semantq/sms

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@semantq/sms - npm Package Compare versions

Comparing version
1.0.0
to
1.0.1
+83
README.md
# @semantq/sms
A high-performance, driver-based SMS gateway for the **Semantq** ecosystem. Designed to integrate seamlessly with `server.config.js` to provide unified messaging across Eventique and other Semantq-powered platforms.
## Installation
Install via npm:
```bash
npm install @semantq/sms
```
*Note: This module requires Node.js v18+ and an ESM-based project (`"type": "module"` in package.json).*
## Configuration
The module automatically looks for a `server.config.js` file in your project root using the Semantq Config Loader.
### Setup `server.config.js`
Add the `sms` block to your existing configuration:
```javascript
export default {
// ... other configs
sms: {
driver: 'smsportal', // Options: 'smsportal' | 'twilio' | 'mock'
smsportal: {
apiId: 'your-api-id',
apiSecret: 'your-api-secret',
baseUrl: 'https://rest.smsportal.com/v1/bulkmessages',
},
twilio: {
accountSid: process.env.TWILIO_SID,
authToken: process.env.TWILIO_TOKEN,
from: '+1234567890',
},
},
};
```
## Usage
The module exports a singleton `sms` object. It handles lazy-loading of the driver and configuration automatically upon the first request.
### Basic Send
```javascript
import { sms } from '@semantq/sms';
const result = await sms.send('+27820000000', 'Hello from your company!');
if (result.success) {
console.log(`Dispatched via ${result.provider}. ID: ${result.messageId}`);
} else {
console.error(`Failed: ${result.error}`);
}
```
### Response Object
Every `send()` call returns a standardized object regardless of the provider:
| Property | Type | Description |
| :--- | :--- | :--- |
| `success` | Boolean | Whether the API accepted the message. |
| `provider` | String | The driver used (`smsportal`, `twilio`, or `mock`). |
| `messageId`| String | The unique reference ID from the provider. |
| `error` | String | Error message (only present if success is false). |
## Drivers
### 1. SMSPortal (Primary)
Optimized for South African routing. Uses the REST v1 API with Base64 Basic Authentication.
### 2. Twilio (Global)
Uses the Twilio Messages API. Requires E.164 formatted numbers (e.g., `+27...`).
### 3. Mock (Development)
The default driver for `development` environments. It bypasses network calls and logs the SMS content directly to your terminal to save credits and prevent accidental spam.
## License
© 2026 Semantq ICT Innovation. Proprietary / Internal Use.
+1
-1
{
"name": "@semantq/sms",
"version": "1.0.0",
"version": "1.0.1",
"description": "Configurable SMS gateway for the Semantq ecosystem",

@@ -5,0 +5,0 @@ "type": "module",

/**
* @semantq/sms - Public API
* Professional Service Wrapper for the Semantq Ecosystem
*/

@@ -7,12 +8,22 @@ import smsManager from './sms_manager.js';

/**
* Standard send function for the Semantq ecosystem.
* SmsService
* * Provides a unified interface for sending SMS messages via
* configurable providers (SmsPortal, Twilio, or Mock).
* * @example
* import { sms } from '@semantq/sms';
* await sms.send('+27123456789', 'Your Eventique ticket is confirmed!');
* import { SmsService } from '@semantq/sms';
* await SmsService.send('+27820000000', 'Eventique: Your OTP is 1234');
*/
export const sms = {
send: (to, message) => smsManager.send(to, message)
export const SmsService = {
/**
* Dispatches an SMS using the driver defined in server.config.js
* @param {string} to - Recipient phone number
* @param {string} message - Message body
* @returns {Promise<Object>} Result containing success status and provider info
*/
send: async (to, message) => {
return await smsManager.send(to, message);
}
};
// Default export for flexibility
export default sms;
// Default export as SmsService for flexibility in imports
export default SmsService;

@@ -5,3 +5,3 @@ /**

*/
import getSemantqConfig from './config_loader.js';
import getSemantqConfig from '../../../../config_loader.js';
import SmsPortalDriver from './drivers/smsportal.js';

@@ -8,0 +8,0 @@ import TwilioDriver from './drivers/twilio.js';