sms-client-ts लाइब्रेरी: TypeScript के ज़रिए SMS भेजना
आधुनिक वेब डेवलपमेंट में SMS भेजना एक ज़रूरी फीचर है—चाहे वह टू-फ़ैक्टर ऑथेंटिकेशन हो या ऑर्डर स्टेटस की सूचना। TypeScript इकोसिस्टम के लिए sms-client-ts नाम की एक बेहतरीन लाइब्रेरी है, जो लोकप्रिय SMS प्रोवाइडर्स के साथ काम करने के लिए टाइप-सेफ इंटरफ़ेस देती है। इस आर्टिकल में हम इसके API, सेटअप और सामान्य उपयोग के तरीकों को समझेंगे।
इंस्टॉलेशन और इम्पोर्ट
यह लाइब्रेरी npm के ज़रिए उपलब्ध है। इसे अपने प्रोजेक्ट में इस कमांड से इंस्टॉल करें:
npm install sms-client-ts
इंस्टॉल करने के बाद, मुख्य क्लास SmsClient को इम्पोर्ट करें:
import { SmsClient } from 'sms-client-ts';
क्लाइंट कॉन्फ़िगरेशन
किसी भी प्रोवाइडर के साथ काम करने के लिए आपको एक कॉन्फ़िगरेशन ऑब्जेक्ट देना होगा। यह लाइब्रेरी Twilio, Vonage (Nexmo), SMSC.ru और अन्य सर्विसेज़ को सपोर्ट करती है। Twilio के लिए सेटअप का उदाहरण:
const client = new SmsClient({
provider: 'twilio',
credentials: {
accountSid: process.env.TWILIO_ACCOUNT_SID,
authToken: process.env.TWILIO_AUTH_TOKEN,
from: '+1234567890' // भेजने वाले का नंबर
}
});
भारतीय प्रोवाइडर के लिए (जैसे MSG91) कॉन्फ़िगरेशन कुछ इस तरह होगा:
const clientIndia = new SmsClient({
provider: 'msg91',
credentials: {
authKey: 'your_auth_key',
senderId: 'MYBRAND', // भेजने वाले का नाम
route: '4' // ट्रांज़ैक्शनल रूट
}
});
मुख्य API मेथड
लाइब्रेरी SMS के साथ काम करने के लिए तीन मुख्य मेथड प्रदान करती है। आइए हर एक को समझते हैं।
1. एकल संदेश भेजना
sendSingle मेथड प्राप्तकर्ता का नंबर और संदेश का टेक्स्ट लेता है। यह एक Promise रिटर्न करता है जिसमें रिज़ल्ट ऑब्जेक्ट होता है।
async function sendWelcomeSms(phone: string, name: string) {
try {
const result = await client.sendSingle({
to: phone,
text: `नमस्ते ${name}! हमारी सेवा में आपका स्वागत है।`
});
console.log('SMS भेजा गया:', result.messageId);
} catch (error) {
console.error('भेजने में त्रुटि:', error);
}
}
sendWelcomeSms('+919876543210', 'राहुल');
2. बल्क मैसेजिंग (एक साथ कई लोगों को)
एक ही संदेश कई प्राप्तकर्ताओं को भेजने के लिए sendBulk मेथड का उपयोग करें। यह नंबरों की एक ऐरे लेता है।
async function sendPromoSms(phones: string[]) {
const result = await client.sendBulk({
to: phones,
text: 'आज का ऑफर! सभी प्रोडक्ट पर 20% की छूट। जल्दी करें!'
});
console.log(`सफलतापूर्वक भेजे गए: ${result.successCount}`);
console.log(`त्रुटियाँ: ${result.failCount}`);
if (result.errors.length > 0) {
result.errors.forEach(err => {
console.error(`${err.phone} के लिए त्रुटि: ${err.message}`);
});
}
}
sendPromoSms(['+919876543210', '+919812345678']);
3. डिलीवरी स्टेटस जाँचना
संदेश भेजने के बाद आप उसकी स्थिति उसके ID से जाँच सकते हैं। getStatus मेथड वर्तमान स्थिति रिटर्न करता है।
async function checkDelivery(messageId: string) {
const status = await client.getStatus(messageId);
console.log(`संदेश ${messageId} की स्थिति: ${status.state}`);
// संभावित मान: 'pending', 'delivered', 'failed', 'unknown'
if (status.state === 'failed') {
console.log('त्रुटि का कारण:', status.errorMessage);
}
}
checkDelivery('SM123456789');
एरर हैंडलिंग और टाइपिंग
लाइब्रेरी अपने स्वयं के एरर टाइप प्रदान करती है, जो TypeScript डेवलपर्स के लिए बहुत सुविधाजनक है। सभी अपवाद बेस क्लास SmsError से इनहेरिट करते हैं।
import { SmsError, ValidationError, AuthError, ProviderError } from 'sms-client-ts';
async function safeSend(phone: string, text: string) {
try {
return await client.sendSingle({ to: phone, text });
} catch (error) {
if (error instanceof ValidationError) {
console.error('गलत इनपुट:', error.message);
} else if (error instanceof AuthError) {
console.error('प्रमाणीकरण विफल:', error.message);
} else if (error instanceof ProviderError) {
console.error('प्रोवाइडर त्रुटि:', error.message);
} else {
console.error('अज्ञात त्रुटि:', error);
}
}
}