Envio de SMS em TypeScript: Visão Geral das Bibliotecas de API para Integração com Provedores de SMS
Aplicativos web modernos frequentemente exigem funcionalidade de envio de mensagens SMS: para autenticação de dois fatores, notificações ou campanhas de marketing. TypeScript, graças à sua tipagem rigorosa e integração conveniente com Node.js, é uma excelente escolha para criar serviços de SMS confiáveis. Neste artigo, exploraremos as principais bibliotecas e abordagens para envio de SMS em TypeScript, usando APIs populares de provedores de SMS.
Por que usar TypeScript para envio de SMS?
TypeScript adiciona tipagem estática ao JavaScript, o que é especialmente útil ao trabalhar com APIs externas. Você obtém:
- Autocompletar e sugestões na IDE para métodos e parâmetros de requisições.
- Tipagem de respostas do gateway de SMS, reduzindo erros em tempo de execução.
- Trabalho seguro com assincronia através de
async/awaite Promises.
Principais bibliotecas para envio de SMS em TypeScript
Existem várias bibliotecas populares que fornecem tipos TypeScript e interfaces convenientes para integração com provedores de SMS. Vamos considerar duas das mais comuns: Twilio e Vonage (antigo Nexmo).
1. Biblioteca para Twilio
Twilio é um dos líderes do mercado de comunicações em nuvem. O SDK oficial twilio suporta totalmente TypeScript e fornece tipos prontos.
Instalação:
npm install twilionpm install @types/twilio --save-dev // se não instalados automaticamenteExemplo de envio de SMS em TypeScript com Twilio:
import { Twilio } from 'twilio';
// Inicialização do clienteconst accountSid = process.env.TWILIO_ACCOUNT_SID!;const authToken = process.env.TWILIO_AUTH_TOKEN!;const client = new Twilio(accountSid, authToken);
// Função assíncrona de envioasync function sendSms(to: string, body: string): Promise<string> { try { const message = await client.messages.create({ body: body, from: process.env.TWILIO_PHONE_NUMBER, // seu número no formato +1234567890 to: to }); console.log(`SMS enviado, SID: ${message.sid}`); return message.sid; } catch (error) { console.error('Erro ao enviar SMS:', error); throw error; }}
// UsosendSms('+71234567890', 'Seu código de confirmação: 1234') .then(sid => console.log('Sucesso:', sid)) .catch(err => console.error('Erro:', err));2. Biblioteca para Vonage (antigo Nexmo)
Vonage também oferece um SDK poderoso com suporte a TypeScript. Instalação e configuração básica:
npm install @vonage/server-sdkExemplo de envio de SMS via Vonage em TypeScript:
import { Vonage } from '@vonage/server-sdk';import { Auth } from '@vonage/auth';
// Configuração de autenticaçãoconst 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('Mensagem enviada:', response); } catch (error) { console.error('Erro:', error); }}
// Chamada da funçãosendSmsVonage('71234567890', 'Olá do TypeScript!');Criando um serviço de SMS universal em TypeScript
Para flexibilidade, você pode criar uma classe abstrata ou interface que permita alternar facilmente entre provedores:
// sms.interface.tsexport interface SmsProvider { sendSms(to: string, message: string): Promise<