https://a.storyblok.com/f/270183/1368x665/9af4c311b6/25sep_dev-blog_ruby-inbound-call.jpg

Wie man mit Ruby on Rails Telefonanrufe empfängt

Zuletzt aktualisiert am September 11, 2025

Lesedauer: 4 Minuten

Nun, da Ihre Ruby on Rails-Anwendung Telefonanrufe tätigen und den Anrufstatus mit Anrufereignissen verfolgen kann, ist der nächste Schritt die Bearbeitung eingehender Anrufe. Denn wie zufrieden werden Ihre Kunden sein, wenn sie nicht zurückrufen können? In diesem Artikel zeigen wir Ihnen genau, wie Sie das einrichten können.

In diesem Tutorial lernen Sie, wie Sie einen eingehenden Telefonanruf durch die Implementierung eines Webhook-Endpunkts in Ruby on Rails empfangen können.

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

Voraussetzungen

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 funktioniert ein Inbound-Anruf?

Wenn jemand Ihre virtuelle Vonage-Nummer anruft, muss die Voice API wissen, was als Nächstes zu tun ist: Soll sie eine Begrüßung abspielen, den Anruf mit einer anderen Nummer verbinden, die Aufnahme starten oder etwas anderes?

Hier kommt der Antwort-Webhook ins Spiel.

Sobald ein eingehender Anruf angenommen wird, stellt Vonage eine HTTP-Anfrage an die answer_url die Sie in Ihren Anwendungseinstellungen konfiguriert haben. Dieser Webhook teilt Ihrem Server mit: "Hey, du hast einen Anruf, was soll als nächstes passieren?" Ihr Server antwortet mit einem NCCO (ein Vonage Call-Objekt) das die Aktionen definiert, die die Voice API für den Anruf ausführen soll.

Erfahren Sie mehr über Antwort-Webhook-Konfigurationen.

Wie wir unsere Ruby on Rails App mit Ngrok öffentlich zugänglich machen

Unsere Ruby on Rails-Anwendung läuft in der Entwicklung auf Port 3000, so dass wir lokal unter localhost:3000 darauf zugreifen können. Das funktioniert allerdings nur auf unserem Computer!

Sie können ngrok verwenden, um Ihren lokalen Server sicher über HTTP öffentlich zu machen. So, jetzt in einem separaten Registerkarte Ihres Rails-Servers einen ngrok-Tunnel auf Port 3000 öffnen.

ngrok http 3000

Stellen Sie sicher, dass Sie Ihre ngrok-URL als config.host in Ihrer development.rb-Datei hinzufügen. Wir verwenden die Umgebungsvariable VONAGE_SERVER_HOSTNAMEverwenden, um unsere Anwendung dynamischer zu machen.

Für weitere Hilfe, siehe wie man anfängt und ngrok in Rails benutzt.

# config/environments/development.rb

Rails.application.configure do
   config.hosts << ENV['VONAGE_SERVER_HOSTNAME']

Setzen Sie nun in unserer .env Datei den 'VONAGE_SERVER_HOSTNAME' auf Ihre ngrok URL.

# .env

# ngrok URL, don't include the protocol (https://)
VONAGE_SERVER_HOSTNAME=''

Außerdem müssen wir unsere Vonage-Anwendung (aus den vorherigen Artikeln) im dem Dashboard um die ngrok-URL in unsere Webhooks einzufügen. Fügen Sie in das Feld Antwort-URL Ihre ngrok-URL ein, gefolgt von /eingehende_Anrufe. Stellen Sie sicher, dass die Anfrage als POST gesendet wird.

Screenshot of Vonage Voice API settings panel with configured webhooks for Answer URL, Event URL using HTTP POST, and Fallback URL, along with region selection options.Vonage Voice API configuration showing Answer, Event, and Fallback URLs, including an ngrok URL for answer and event callbacks.

Wie man Antwort-Ereignis-Webhooks in Rails handhabt

Nun, da Vonage die Nutzdaten eines Telefonanrufs an die Datei /eingehende_anrufe Route weiterleitet, müssen wir unsere Anwendung aktualisieren und eine Route erstellen, die diesen Anruf verarbeitet.

# config/routes.rb


Rails.application.routes.draw do
 resources :inbound_calls, only: [:create]


	...previous routes...

Wenn ein Anruf an Ihre virtuelle Vonage-Nummer getätigt wurde, benachrichtigt Vonage Ihre Anwendung durch Senden eines Webhooks. Ein typischer Payload für einen eingehenden Anruf sieht etwa so aus.

{
  "from": "442079460000",
  "to": "447700900000",
  "uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "conversation_uuid": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab"
}

Wie man einen Telefonanruf in Rails speichert

Da wir nun alle erforderlichen Informationen auf der Grundlage unseres zuvor definierten Anrufmodells haben, können wir eine Logik erstellen, um unseren eingehenden Anruf zu speichern. Wir werden auch einen einfachen NCCO mit einem Roboter zurücksenden, um unserem Anrufer zu antworten, damit er weiß, dass der Anruf funktioniert. Lassen Sie uns einen neuen Controller erstellen, der dies übernimmt.

rails g controller InboundCalls create

Innerhalb unseres Controllers werden wir eine einfache erstellen Methode, die den Webhook analysiert und einen Aufruf in unsere Datenbank eingibt.

# app/controllers/inbound_calls_controller.rb
class InboundCallsController < ApplicationController
  # We disable CSRF for this webhook call
  skip_before_action :verify_authenticity_token

  def create
    Call.where(conversation_uuid: params[:conversation_uuid])
        .first_or_create
        .update(
          to: params[:to],
          from: params[:from],
          uuid: params[:uuid],
          is_inbound: true

        )

    render json: [
      {
        action: 'talk',
        voiceName: 'Jennifer',
        text: 'Hello, thank you for calling. This is Jennifer from Vonage. Ciao.'
      }
    ]
  end
end

Obwohl das Speichern und Aktualisieren der Anrufdetails nicht wirklich notwendig ist, ist es nützlich, den Überblick über den aktuellen Anrufstatus, die Dauer und alle anderen Informationen zu behalten, die für Ihre Anwendung von Nutzen sein könnten. Diese Aktion gibt ein neues Vonage Call Control Object (NCCO) zurück, das eine einfache Sprachnachricht an den angegebenen Empfänger wiedergibt. Entdecken Sie andere NCCO-Aktionen wie aufzeichnen, Verbindenoder Eingabe um erweiterte Anrufabläufe zu erstellen.

Starten Sie nun Ihren Server, stellen Sie sicher, dass ngrok läuft, und tätigen Sie einen Voice-Anruf an Ihre Vonage-Nummer, um die Ansage zu testen!

>> Sehen Sie, wie der gesamte Code in der vollständigen inbound_calls_controller.rb Datei.

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben erfolgreich eine Ruby on Rails Voice-Anwendung erstellt, die über einen Vonage-Webhook eingehende Telefonanrufe empfangen kann. Damit haben Sie den Voice-Teil des Ruby on Rails Quickstart abgeschlossen. Wir werden Folgendes hinzufügen Rich Communication Services (RCS)-Funktionen mit der Vonage Messages API in zukünftigen Tutorials hinzufügen.

Wenn Sie Fragen haben oder eine Funktion für die Quickstart-Anwendung beantragen möchten, beteiligen Sie sich an der Diskussion in der Vonage Gemeinschaft Slack oder kontaktieren Sie uns auf X (früher Twitter). Wir würden uns freuen zu hören, was Sie als nächstes bauen!

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.