Envio de SMS em TypeScript: Bibliotecas de API e Integração

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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 antigas

Exemplo 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 axios

Exemplo 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

Recommendations