
Teilen Sie:
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.
Wie man mit Ruby on Rails Telefonanrufe empfängt
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
Ruby on Rails installiert auf Ihrem Rechner
Virtuelle Nummer von Vonage
Um eine virtuelle Rufnummer zu kaufen, gehen Sie zu Ihrem API-Dashboard und befolgen Sie die unten aufgeführten Schritte.
Purchase a phone number
Gehen Sie zu Ihrem API-Dashboard
Navigieren Sie zu BUILD & MANAGE > Numbers > Buy Numbers.
Wählen Sie die gewünschten Attribute und klicken Sie dann auf Suchen
Klicken Sie auf die Schaltfläche Kaufen neben der gewünschten Nummer und bestätigen Sie Ihren Kauf.
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 3000Stellen 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.
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 createInnerhalb 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
endObwohl 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:
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.