https://a.storyblok.com/f/270183/1368x665/786fc6d717/25mar_dev-blog_ruby-sms.png

Wie man SMS-Nachrichten mit Ruby on Rails versendet

Zuletzt aktualisiert am April 15, 2025

Lesedauer: 6 Minuten

Trotz des Aufstiegs von Messaging-Apps wie WhatsApp und Facebook Messenger bleibt die SMS unverzichtbar. Sie funktioniert auf jedem mobilen Gerät ohne zusätzliche Software, bietet ein höheres Engagement für zeitkritische Nachrichten und ist die zuverlässigste Option, da sie keine Internetverbindung erfordert.

Dieses Tutorial zeigt, wie man SMS-Nachrichten in einer Ruby on Rails-Anwendung mit Vonage versendet. Dies ist der erste Beitrag im Rahmen der Vonage Ruby on Rails Quick Start Serie, die Ihnen den Einstieg in die Kernfunktionalität der Vonage API Suite in Ihrer Ruby on Rails Anwendung ermöglicht.

TL;DR Überspringen Sie den Anfang und finden Sie den gesamten Schnellstart-Code auf GitHub

Beachten Sie, dass diese Tutorial-Serie die Nachrichten-API verwendet, die eine einfache Integration von Omnichannel-Support ermöglicht. Vonage bietet auch die SMS-API AN.

A screen recording of a Ruby on Rails application labeled “Send an SMS,” showing a user entering a sender’s number, a recipient’s number, and a text message. The message “Ruby on Rails Rocks!” appears in the recipient’s messaging app.A demonstration of the Vonage Rails Quickstart application sending an SMS message in real time.

Voraussetzungen

  • Ruby und Rails installiert auf Ihrem Rechner. Für alle Fragen zu den Rails-Konventionen ist die Dokumentation sehr ausführlich.

  • Eine virtuelle Nummer von Vonage.

Um eine virtuelle Rufnummer zu kaufen, gehen Sie zu Ihrem API-Dashboard und befolgen Sie die unten aufgeführten Schritte.

Steps on how to purchase a phone number from the dashboard, from selecting the number and confirming the selection.Purchase a phone number

  1. Gehen Sie zu Ihrem API-Dashboard

  2. Navigieren Sie zu BUILD & MANAGE > Numbers > Buy Numbers.

  3. Wählen Sie die gewünschten Attribute und klicken Sie dann auf Suchen

  4. Klicken Sie auf die Schaltfläche Kaufen neben der gewünschten Nummer und bestätigen Sie Ihren Kauf.

  5. Um zu bestätigen, dass Sie die virtuelle Nummer erworben haben, gehen Sie im linken Navigationsmenü unter BUILD & MANAGE auf Numbers und dann auf Your Numbers

Wie man eine Ruby on Rails-Anwendung erstellt

In diesem Tutorial wird davon ausgegangen, dass Sie über ein grundlegendes Verständnis von Ruby und Rails verfügen, wobei wir uns auf die erforderlichen Befehle beschränken, ohne zu viel zu erklären.

Zunächst erstellen wir unser neues Projekt.

rails new vonage-rails-quickstart

Als Nächstes gehen Sie in das Projekt und fügen das Vonage-Gem zu Ihrem Gemfile hinzu, damit wir auf das Vonage-SDK zugreifen können. Wir fügen auch dotenv-rails hinzu, damit wir Umgebungsvariablen sicher verwenden können.

#Gemfile
gem 'vonage'
gem 'dotenv-rails', groups: [:development, :test]

Führen Sie dann den Bundler aus, um unsere Gems zu installieren.

bundle install

Nun müssen wir unser SmsMessage-Modell erstellen, das die Attribute und deren Speicherung in der Datenbank definiert. Wir werden 6 Felder benötigen:

  • an: den Empfänger der SMS.

  • von: der Absender der SMS.

  • Text: der Inhalt der Nachricht.

  • StatusStatus: ob eine SMS erfolgreich zugestellt wurde oder nicht. Weitere Informationen finden Sie in der API-Referenz.

  • nachricht_uuidmessage_uuid: die der Nachricht zugeordnete Vonage-ID, die für die Verfolgung des Status von Nachrichten wichtig ist.

  • ist_eingehendis_inbound: ob die Nachricht von unserer Anwendung gesendet oder empfangen wird; dies wird im folgenden Blogbeitrag von Bedeutung sein.

rails g model SmsMessage to:string from:string text:text status:string message_uuid:string is_inbound:boolean  

Außerdem müssen wir unsere Datenbank mit dem neuen Modell aktualisieren.

rails db:migrate

Erstellen wir unseren Controller, der unsere Logik verarbeitet.

rails g controller OutboundSms new create

Schließlich müssen wir noch unsere Routen für ausgehende SMS festlegen.

# config/routes.rb

Rails.application.routes.draw do
 # For OutboundSms controller, new & create
  get  '/outbound_sms/new', to: 'outbound_sms#new',    as: :new_outbound_sms
  post '/outbound_sms',     to: 'outbound_sms#create', as: :outbound_sms
end

So erstellen Sie eine Vonage-Anwendung

Jetzt, wo unsere Rails-App fertig ist, müssen wir auch unsere Vonage-Anwendung erstellen und einrichten. Zuerst müssen wir unsere App im Dashboard von Vonage. Geben Sie der App einen Namen und schalten Sie die Nachrichtenfunktion ein. Sie können vorerst Platzhalter-URLs für die Webhooks hinzufügen. Wir werden diese in weiteren Blogbeiträgen aktualisieren.

A user interface for creating a new application in the Vonage Developer dashboard. Fields include the application name, API key, authentication options, privacy settings, and messaging capabilities with inbound and status URLs. A toggle for AI data usage is set to off, and the "Generate new application" button is visible.The Vonage Developer dashboard showing the creation of a new application with authentication, privacy, and messaging capabilities settings.

Stellen Sie sicher, dass Sie einen privaten Schlüssel erzeugen, indem Sie auf "Öffentlichen und privaten Schlüssel erzeugen" klicken. Dadurch wird eine private.key-Datei auf Ihren Computer heruntergeladen. Verschieben Sie die Datei "private.key" dann in das Stammverzeichnis Ihrer Rails-Anwendung.

Notieren Sie sich die Anwendungs-ID, wenn Ihre Anwendung erstellt wurde. Sie benötigen die Anwendungs-ID, Ihren API-Schlüssel und Ihr API-Geheimnis im nächsten Schritt.

Öffnen Sie Ihr API-Dashboard um auf Ihren Vonage API-Schlüssel und Ihr Geheimnis zuzugreifen. Beide finden Sie auf der Startseite, wie im Screenshot unten gezeigt.

Screenshot of the Vonage API Dashboard. The main section welcomes the user, 'Welcome back, Diana,' and features the header 'Vonage API Dashboard.' Two fields are displayed: 'API Key,' showing 'Master (3e6287d2)' with a copy icon, and 'API Secret,' showing a masked value with eye and copy icons.API Key and API Secret

Erstellen Sie eine .env Datei im Stammverzeichnis Ihrer Rails-Anwendung:

touch .env

Fügen Sie abschließend die folgenden Schlüssel mit Ihren Anmeldeinformationen hinzu.

#.env

VONAGE_APPLICATION_ID=''
VONAGE_PRIVATE_KEY='./private.key'

Initialisierung des Vonage Ruby-Clients

Der REST-API-Client ermöglicht uns einen einfachen Zugriff auf 15 Vonage-APIs, nicht nur auf die Nachrichten-API. Sie können mehr über die unterstützten APIs.

Bevor wir den Ruby-Client in einer vollständigen Rails-Anwendung aktivieren, wollen wir sehen, wie wir ihn allgemeiner in Ruby-Code verwenden können. Um den Client zu verwenden, müssen wir lediglich eine Instanz mit den in unserer Umgebungsdatei gespeicherten Anwendungsinformationen initialisieren.

 vonage = Vonage::Client.new(
 	application_id: ENV["VONAGE_APPLICATION_ID"],
private_key: ENV["VONAGE_PRIVATE_KEY"]
)

Wie man eine SMS-Nachricht in Ruby sendet

Jetzt, da unser Client initialisiert ist, wird das Senden einer SMS ganz einfach. Wir rufen die Nachrichtenübermittlung Methode auf, um dem Client mitzuteilen, dass er die Nachrichten-API verwenden soll, und rufen dann send mit den erforderlichen Feldern auf.

# app/controllers/outbound_sms_controller.rb
response = vonage.messaging.send(
   "message_type": "text",
   "text": "Hello from Vonage!",
   "to": "447700900000",
   "from": "447700900001",
   "channel": "sms"
)

Sie können alle Optionen für verschiedene Kanäle und Felder in der API-Referenz.

SMS-Versand in einer Ruby on Rails-Anwendung

Nachdem wir uns nun damit beschäftigt haben, wie man den Vonage Ruby-Client zum Versenden von SMS verwendet, wollen wir nun eine Ruby on Rails-Funktionalität zum Versenden von SMS in unsere App mit einem einfachen Formular und Controller integrieren. Wir brauchen eine schöne UI, um die an, vonund Text Felder. Sie können das Formular kopieren und in Ihre /app/views/outbound_sms/new.html.erb Ansicht und zugehöriges CSS.

A user interface labeled "Send an SMS" with fields for the sender's phone number or name, the recipient's phone number or name, and a text message input box. A purple "Send" button is displayed at the bottom.A Vonage-powered SMS form where users can input a sender's phone number or name, the recipient's phone number, and a message before sending an SMS.

Anmerkung: Nicht jedes Land akzeptiert einen Namen als gültiges "an"-Feld

Nun wollen wir die Logik implementieren, damit unser Formular funktioniert. Zunächst müssen wir eine leere SMS-Instanz erstellen, um das Formular zu laden. Dann rufen wir die create-Methode auf, die die SMS in unserer Datenbank speichert und sie dann über die liefern Methode.

#app/controllers/outbound_sms_controller.rb 

 def new
    @sms_message = SmsMessage.new
 end

  def create
    # Create a SMS record to be stored in the database
    @sms_message = SmsMessage.new(safe_params)

    if @sms_message.save
      deliver @sms_message
      redirect_to :new_outbound_sms, notice: 'SMS Sent'
    else
      flash[:alert] = 'Something went wrong'
      render :new
    end
  end

  private

 def safe_params
    params.require(:sms_message).permit(:to, :from, :text)
 end

Die liefern Methode ist weitgehend identisch mit der im vorigen Abschnitt verwendeten Methode, nur dass sie jetzt die Messages Nachricht Objekt verwendet und die API-Antwort verarbeitet.

Wenn die Nachricht erfolgreich gesendet wurde, wird der Statuscode 202 zusammen mit einer UUID der Nachricht zurückgegeben. Diese UUID hilft bei der Verfolgung des Zustellungsstatus mit Hilfe des Nachrichtenstatuszu verfolgen, den wir im nächsten Beitrag behandeln.

 def deliver(sms_message)
    message = vonage.messaging.sms(message: sms_message.text)

    response = vonage.messaging.send(
      from: sms_message.from,
      to: sms_message.to,
      **message
    )

    if response.http_response.code == '202'
      sms_message.update(
        message_uuid: response.entity.attributes[:message_uuid]
      )
    end
end

> Siehe die vollständige outbound_sms_controller.rb Datei.

Starten Sie nun Ihren Rails-Server:

rails s


Und öffnen http://localhost:3000/outbound_sms/new in Ihrem Browser. Sie können nun SMS über Ihre Ruby on Rails-App versenden!

Schlussfolgerung

Sie haben es geschafft! Sie haben gelernt, wie man eine Vonage-Anwendung erstellt, den Vonage Ruby-Client initialisiert und verwendet und erfolgreich SMS aus einer Ruby on Rails-Anwendung versendet. In zukünftigen Beiträgen werden wir dieser Anwendung weitere SMS- und Sprachfunktionen hinzufügen.

Wenn Sie Fragen oder Vorschläge für weitere Ruby-Inhalte haben, schicken Sie uns eine Nachricht auf dem Gemeinschaft Slack. Sie können sich auch über unsere Inhalte und Veranstaltungen für Entwickler auf dem Laufenden halten X, früher bekannt als Twitter.

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/e4e7d1452e/benjamin-aronov.png
Benjamin AronovAdvokat für Entwickler

Benjamin Aronov ist ein Entwickler-Befürworter bei Vonage. Er ist ein bewährter Community Builder mit einem Hintergrund in Ruby on Rails. Benjamin genießt die Strände von Tel Aviv, das er sein Zuhause nennt. Von Tel Aviv aus kann er einige der besten Startup-Gründer der Welt treffen und von ihnen lernen. Außerhalb der Tech-Branche reist Benjamin gerne um die Welt auf der Suche nach dem perfekten Pain au Chocolat.