SMS-Versand mit Go (Golang): API-Bibliothek

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

SMS-Versand mit Go (Golang): Überblick über API-Bibliotheken und Implementierungsbeispiele



Das Versenden von SMS-Nachrichten ist eine der Schlüsselfunktionen moderner Webanwendungen: von der Zwei-Faktor-Authentifizierung bis hin zu Benachrichtigungen über den Bestellstatus. Im Go (Golang)-Ökosystem gibt es mehrere ausgereifte Bibliotheken, die die Integration des SMS-Versands über beliebte Gateways (Twilio, Vonage, Clickatell, russische Anbieter) ermöglichen. In diesem Artikel werden wir im Detail besprechen, wie man den SMS-Versand mit Go unter Verwendung bewährter Methoden und offizieller APIs einrichtet.



Warum Go für den SMS-Versand?

Go ist eine kompilierte Sprache mit hervorragender Unterstützung für Nebenläufigkeit, was sich ideal für das asynchrone Versenden großer Nachrichtenmengen eignet. Dank der integrierten goroutines und Kanäle können Sie Tausende von SMS-Anfragen verarbeiten, ohne den Hauptthread zu blockieren. Darüber hinaus ermöglicht die Standardbibliothek net/http eine einfache Arbeit mit den REST-APIs aller SMS-Anbieter.



Wichtige Bibliotheken für die Arbeit mit SMS in Go

  • twilio-go — offizieller Client für Twilio (der beliebteste internationale Dienst). Unterstützt SMS, MMS, Sprachanrufe.
  • vonage-go (ehemals Nexmo) — Client für die Vonage-API.
  • go-sms — universelle Bibliothek mit Unterstützung mehrerer Anbieter (SMS.ru, Twilio, Clickatell).
  • gosms — einfacher Wrapper für HTTP-Anfragen an jedes SMS-Gateway.


Installation der Bibliothek

Als Beispiel verwenden wir den offiziellen Client Twilio. Installieren Sie das Paket mit go get:

go get github.com/twilio/twilio-go

Für den russischen Anbieter SMS.ru gibt es ebenfalls eine praktische Bibliothek:

go get github.com/smsru/smsru-go


Basisbeispiel: SMS-Versand über Twilio

Holen Sie sich vor Beginn der Arbeit die Account SID und den Auth Token aus der Twilio-Konsole. Nachfolgend der minimale funktionsfähige Code:

package main

import ( "fmt" "os"

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

func main() { // Client-Initialisierung client := twilio.NewRestClientWithParams(twilio.ClientParams{ Username: os.Getenv("TWILIO_ACCOUNT_SID"), Password: os.Getenv("TWILIO_AUTH_TOKEN"), })

// Nachrichtenparameter params := &openapi.CreateMessageParams{} params.SetTo("+1234567890") // Empfängernummer params.SetFrom("+0987654321") // Ihre Twilio-Nummer params.SetBody("Hallo! Dies ist eine Test-SMS aus Go!")

// Versand resp, err := client.Api.CreateMessage(params) if err != nil { fmt.Println("Fehler beim Senden:", err) return }

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


SMS-Versand über ein russisches Gateway (SMS.ru)

Für die Integration mit SMS.ru verwenden Sie die Bibliothek smsru-go. Der Code sieht wie folgt aus:

package main

import ( "fmt" "os"

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

func main() { // Client mit API-Schlüssel erstellen client := smsru.NewClient(os.Getenv("SMSRU_API_KEY"))

// Eine einzelne Nachricht senden result, err := client.SendSMS("+79991234567", "Hallo! Dies ist ein Test aus Go!") if err != nil { fmt.Println("Fehler:", err) return }

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


Asynchroner Versand mit goroutines

Einer der Hauptvorteile von Go ist die Möglichkeit, SMS einfach parallel zu versenden. Beispiel für einen Massenversand:

package main

import ( "fmt" "sync")

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

Empfehlungen