Envio de SMS em TypeScript: visão geral de APIs e bibliotecas
Aplicações web e serviços modernos frequentemente exigem integração com gateways de SMS para enviar notificações, confirmações ou mensagens de marketing. TypeScript, como uma extensão do JavaScript, oferece tipagem estática, o que é especialmente útil ao trabalhar com APIs externas. Neste artigo, veremos como organizar o envio de SMS a partir de uma aplicação TypeScript, utilizando bibliotecas e serviços populares.
Por que usar TypeScript para trabalhar com API de SMS?
TypeScript adiciona tipagem estática, o que reduz o número de erros em tempo de execução. Ao trabalhar com provedores de SMS, isso é crítico, pois as requisições à API frequentemente contêm estruturas de dados complexas (números de telefone, texto, parâmetros de envio). Os tipos ajudam a evitar erros de digitação nos nomes dos campos e garantem a transmissão correta dos dados.
Principais bibliotecas para envio de SMS
Existem vários serviços populares no mercado que fornecem API HTTP para envio de SMS. Vamos considerar duas opções mais comuns para TypeScript.
1. Twilio (SDK oficial)
Twilio é um dos líderes do mercado de comunicações em nuvem. O SDK oficial para Node.js é totalmente compatível com TypeScript e vem com tipos prontos.
Instalação:
npm install twilionpm install @types/twilio --save-dev // tipos já incluídos, mas para versões antigasExemplo de envio de SMS:
import { Twilio } from 'twilio';
const accountSid = 'SEU_ACCOUNT_SID';const authToken = 'SEU_AUTH_TOKEN';const client = new Twilio(accountSid, authToken);
interface SmsParams { to: string; // número do destinatário no formato +5511999999999 from: string; // número do remetente (comprado no Twilio) body: string; // texto da mensagem}
async function sendSms(params: SmsParams): Promise<void> { try { const message = await client.messages.create({ body: params.body, from: params.from, to: params.to, }); console.log(`SMS enviado. SID: ${message.sid}`); } catch (error) { console.error('Erro ao enviar:', error); }}
// UsosendSms({ to: '+5511999999999', from: '+15005550006', body: 'Olá! Esta é uma mensagem de teste do TypeScript.',});2. SMS Aero (REST API via fetch/axios)
SMS Aero é um serviço russo, popular para projetos locais. Não há SDK oficial para TypeScript, mas é possível usar wrappers tipados sobre fetch ou axios.
Instalação:
npm install axiosExemplo com requisição tipada:
import axios, { AxiosResponse } from 'axios';
interface SmsAeroResponse { status: 'success' | 'error'; id?: number; message?: string;}
interface SmsAeroParams { to: string; from?: string; text: string; sign?: string; // assinatura do remetente}
const API_URL = 'https://gate.smsaero.ru/v2/sms/send';const EMAIL = 'seu_email@exemplo.com';const API_KEY = 'sua_chave';
async function sendSmsAero(params: SmsAeroParams): Promise<SmsAeroResponse> { const auth = Buffer.from(`${EMAIL}:${API_KEY}`).toString('base64'); const response: AxiosResponse<SmsAeroResponse> = await axios.post( API_URL, { number: params.to, text: params.text, sign: params.sign || 'SMS Aero', }, { headers: { 'Authorization': `Basic ${auth}`, 'Content-Type': 'application/json', }, } ); return response.data;}
// UsosendSmsAero({ to: '5511999999999', text: 'Seu código de confirmação: 1234', sign: 'MyApp',}).then(res => console.log(res));Criando um wrapper TypeScript universal
Para projetos onde pode ser necessário trocar de provedor, é conveniente criar uma interface abstrata
Também na biblioteca
Internacionalização (i18n) em PHP: Guia Completo com Exemplos
Trabalhando com XML em TypeScript: bibliotecas, parsing e criação de documentos XML
Event Bus e padrão Observer em PHP: implementação e exemplos
ORM para Java: comparação de Hibernate, MyBatis e JPA com exemplos