Skip to content

Tratamento de erros completo

Capturando todos os tipos de erro possíveis ao enviar SMS.

Exemplo completo

typescript
import { createSender } from "@jcsolutions/sender";
import {
  AuthenticationError,
  RateLimitError,
  ValidationError,
  ProviderError,
  TimeoutError,
  ConfigurationError,
} from "@jcsolutions/sender";

const sms = await createSender("ombala", {
  token: process.env.OMBALA_TOKEN,
  baseUrl: "https://api.useombala.ao/v1",
  from: "LEVAJA",
});

async function sendSmsWithErrorHandling(phone: string, message: string) {
  try {
    const result = await sms.send({
      to: phone,
      message,
    });

    console.log("✅ Enviado com sucesso!");
    return { success: true, data: result };
  } catch (error) {
    // Erro de configuração
    if (error instanceof ConfigurationError) {
      console.error("❌ Erro de configuração:", error.message);
      console.error("   Verifique se token e baseUrl estão corretos.");
      return { success: false, error: "CONFIG_ERROR", message: error.message };
    }

    // Erro de autenticação
    if (error instanceof AuthenticationError) {
      console.error("❌ Erro de autenticação:", error.message);
      console.error("   Sua API key pode estar inválida ou expirada.");
      return { success: false, error: "AUTH_ERROR", message: error.message };
    }

    // Número inválido
    if (error instanceof ValidationError) {
      console.error("❌ Número inválido:", error.message);
      console.error("   Use 9 dígitos (ex: 923000000)");
      return { success: false, error: "INVALID_PHONE", message: error.message };
    }

    // Limite excedido
    if (error instanceof RateLimitError) {
      console.error("❌ Limite excedido:", error.message);
      console.error("   Aguarde alguns minutos e tente novamente.");
      return { success: false, error: "RATE_LIMIT", message: error.message };
    }

    // Timeout
    if (error instanceof TimeoutError) {
      console.error("❌ Timeout:", error.message);
      console.error("   O servidor demorou muito para responder.");
      return { success: false, error: "TIMEOUT", message: error.message };
    }

    // Erro do provider
    if (error instanceof ProviderError) {
      console.error("❌ Erro no provider:", error.message);
      return { success: false, error: "PROVIDER_ERROR", message: error.message };
    }

    // Erro desconhecido
    console.error("❌ Erro desconhecido:", error);
    return { success: false, error: "UNKNOWN", message: String(error) };
  }
}

Uso

typescript
const result = await sendSmsWithErrorHandling("923000000", "Teste");

if (result.success) {
  console.log("Mensagem enviada com sucesso!");
} else {
  console.error(`Falha: ${result.error} - ${result.message}`);
}

Tipos de erro

ErroDescriçãoQuando ocorre
ConfigurationErrorErro de configuraçãoToken ou baseUrl faltando
AuthenticationErrorErro de autenticaçãoToken inválido ou expirado
ValidationErrorDados inválidosNúmero ou remetente inválido
RateLimitErrorLimite excedidoMuitas requisições
TimeoutErrorTempo excedidoAPI demorou para responder
ProviderErrorErro do providerErro interno da API

Próximo exemplo

MIT License