@semantq/sms
Advanced tools
+83
| # @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", |
+18
-7
| /** | ||
| * @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'; |
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
11148
35.85%8
14.29%235
4.91%0
-100%83
Infinity%