Sending SMS in TypeScript: Overview of API Libraries for Integration with SMS Providers
Modern web applications often require SMS messaging functionality: for two-factor authentication, notifications, or marketing campaigns. TypeScript, thanks to its strict typing and convenient integration with Node.js, is an excellent choice for building reliable SMS services. In this article, we will review key libraries and approaches for sending SMS in TypeScript using popular SMS provider APIs.
Why TypeScript for Sending SMS?
TypeScript adds static typing to JavaScript, which is especially useful when working with external APIs. You get:
- Autocompletion and hints in the IDE for request methods and parameters.
- Typed responses from the SMS gateway, reducing the number of runtime errors.
- Safe asynchronous work via
async/awaitand Promises.
Main Libraries for Sending SMS in TypeScript
There are several popular libraries that provide TypeScript types and convenient interfaces for integration with SMS providers. Let's look at the two most common ones: Twilio and Vonage (formerly Nexmo).
1. Library for Twilio
Twilio is one of the market leaders in cloud communications. The official SDK twilio fully supports TypeScript and provides ready-made types.
Installation:
npm install twilionpm install @types/twilio --save-dev // if not installed automaticallyExample of sending SMS in TypeScript with Twilio:
import { Twilio } from 'twilio';
// Initialize clientconst accountSid = process.env.TWILIO_ACCOUNT_SID!;const authToken = process.env.TWILIO_AUTH_TOKEN!;const client = new Twilio(accountSid, authToken);
// Async send functionasync function sendSms(to: string, body: string): Promise<string> { try { const message = await client.messages.create({ body: body, from: process.env.TWILIO_PHONE_NUMBER, // your number in format +1234567890 to: to }); console.log(`SMS sent, SID: ${message.sid}`); return message.sid; } catch (error) { console.error('Error sending SMS:', error); throw error; }}
// UsagesendSms('+71234567890', 'Your confirmation code: 1234') .then(sid => console.log('Success:', sid)) .catch(err => console.error('Error:', err));2. Library for Vonage (formerly Nexmo)
Vonage also offers a powerful SDK with TypeScript support. Installation and basic configuration:
npm install @vonage/server-sdkExample of sending SMS via Vonage in TypeScript:
import { Vonage } from '@vonage/server-sdk';import { Auth } from '@vonage/auth';
// Authentication setupconst vonage = new Vonage(new Auth({ apiKey: process.env.VONAGE_API_KEY!, apiSecret: process.env.VONAGE_API_SECRET!}));
async function sendSmsVonage(to: string, text: string): Promise<void> { try { const response = await vonage.sms.send({ to: to, from: 'YourApp', text: text }); console.log('Message sent:', response); } catch (error) { console.error('Error:', error); }}
// Function callsendSmsVonage('71234567890', 'Hello from TypeScript!');Creating a Universal SMS Service in TypeScript
For flexibility, you can create an abstract class or interface that allows you to easily switch between providers:
// sms.interface.tsexport interface SmsProvider { sendSms(to: string, message: string): Promise<