Envio de SMS em Go (Golang): Biblioteca de API

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 Go (Golang): visão geral das bibliotecas de API e exemplos de implementação



O envio de mensagens SMS é uma das funções-chave dos aplicativos web modernos: desde a autenticação de dois fatores até notificações de status de pedidos. No ecossistema Go (Golang), existem várias bibliotecas maduras que permitem integrar o envio de SMS através de gateways populares (Twilio, Vonage, Clickatell, provedores russos). Neste artigo, vamos detalhar como configurar o envio de SMS em Go, usando as melhores práticas e APIs oficiais.



Por que Go para envio de SMS?

Go é uma linguagem compilada com excelente suporte para concorrência, ideal para o envio assíncrono de um grande número de mensagens. Graças às goroutines e canais integrados, você pode processar milhares de solicitações SMS sem bloquear o fluxo principal. Além disso, a biblioteca padrão net/http permite trabalhar facilmente com APIs REST de qualquer provedor de SMS.



Principais bibliotecas para trabalhar com SMS em Go

  • twilio-go — cliente oficial para Twilio (o serviço internacional mais popular). Suporta SMS, MMS, chamadas de voz.
  • vonage-go (antigo Nexmo) — cliente para a API Vonage.
  • go-sms — biblioteca universal com suporte para vários provedores (SMS.ru, Twilio, Clickatell).
  • gosms — wrapper simples para requisições HTTP a qualquer gateway SMS.


Instalação da biblioteca

Como exemplo, usaremos o cliente oficial do Twilio. Instale o pacote via go get:

go get github.com/twilio/twilio-go

Para o provedor russo SMS.ru, também existe uma biblioteca conveniente:

go get github.com/smsru/smsru-go


Exemplo básico: envio de SMS via Twilio

Antes de começar, obtenha o Account SID e o Auth Token no console do Twilio. Abaixo está o código mínimo funcional:

package main

import ( "fmt" "os"

"github.com/twilio/twilio-go" openapi "github.com/twilio/twilio-go/rest/api/v2010")

func main() { // Inicialização do cliente client := twilio.NewRestClientWithParams(twilio.ClientParams{ Username: os.Getenv("TWILIO_ACCOUNT_SID"), Password: os.Getenv("TWILIO_AUTH_TOKEN"), })

// Parâmetros da mensagem params := &openapi.CreateMessageParams{} params.SetTo("+1234567890") // número do destinatário params.SetFrom("+0987654321") // seu número Twilio params.SetBody("Olá! Este é um SMS de teste do Go!")

// Envio resp, err := client.Api.CreateMessage(params) if err != nil { fmt.Println("Erro ao enviar:", err) return }

fmt.Println("SMS enviado! SID:", *resp.Sid)}


Envio de SMS via gateway russo (SMS.ru)

Para integração com SMS.ru, use a biblioteca smsru-go. O código será assim:

package main

import ( "fmt" "os"

"github.com/smsru/smsru-go")

func main() { // Criação do cliente com a chave da API client := smsru.NewClient(os.Getenv("SMSRU_API_KEY"))

// Envio de uma única mensagem result, err := client.SendSMS("+79991234567", "Olá! Este é um teste do Go!") if err != nil { fmt.Println("Erro:", err) return }

if result.Status == "OK" { fmt.Println("SMS enviado! ID:", result.SmsID) } else { fmt.Println("Erro:", result.StatusText) }}


Envio assíncrono usando goroutines

Uma das principais vantagens do Go é a facilidade de enviar SMS em paralelo. Exemplo de envio em massa:

package main

import ( "fmt" "sync")

func sendSMSAsync(client *smsru.Client, phone, message string, wg *sync.WaitGroup) { defer wg.Done() resul

Recommendations