https://a.storyblok.com/f/270183/1368x665/ce3c4db0b0/25may_dev-blog_ruby-rcs-suggestions.jpg

Wie man in Ruby on Rails eine RCS-Vorschlagsantwort erhält

Zuletzt aktualisiert am July 8, 2025

Lesedauer: 3 Minuten

Reichhaltige Kommunikationsdienste (RCS-Antwortvorschläge verbessern die Benutzererfahrung mit interaktiven, freundlichen Antwortschaltflächen. Zuvor haben wir gelernt, wie man RCS-Antwortnachrichten senden und deren Status mit Ruby on Rails. Aber wir müssen auch irgendwie Antworten annehmen, um zu lesen, welche Option unsere Benutzer wählen. In diesem Artikel zeigen wir Ihnen genau, wie Sie das einrichten können.

In diesem Tutorial lernen Sie, wie Sie eine eingehende RCS Suggested Reply-Nachricht 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.

Screenshot of an RCS message conversation where the Vonage RoR chatbot asks the user to choose an ice cream flavor, and responds positively to the user selecting 'Vanilla.RCS chat interaction with Vonage RoR bot demonstrating conversational capabilities by asking about ice cream flavor preferences

Voraussetzungen

Wie funktioniert Inbound RCS?

Sie fragen sich vielleicht, wie eine RCS-Antwort vom Telefon eines Benutzers zu Ihrer Rails-Anwendung gelangt. Ähnlich wie bei SMS übernimmt Vonage die Interaktion mit dem Mobilfunknetz. Dann leitet es diese Informationen in einem eingehenden Webhook weiter, den Sie in Ihrer Vonage-Anwendung definieren. In diesem Tutorial werden wir ngrok verwenden, um den eingehenden Webhook in unserer Rails-Anwendung zu verarbeiten.

Infographic titled Inbound RCS Reply' showing how an RCS reply message is sent from a user, processed through the Vonage platform, and delivered to an application via an API and webhook callback.Diagram illustrating the inbound RCS process, where a user sends a message through the Vonage platform, which then forwards the message to an application via a webhook.

Wie man eine Ruby on Rails-Anwendung mit ngrok freischaltet

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.

ngrok http 3000

Fügen Sie unbedingt Ihre ngrok-URL als config.host in Ihrer entwicklung.rb Datei hinzufügen. Wir verwenden die dynamische Umgebungsvariable VONAGE_SERVER_HOSTNAMEso dass Sie diese nicht bei jedem Lauf aktualisieren müssen. wie man anfängt und ngrok in Rails benutzt.

# config/environments/development.rb

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

Wenn Sie noch keine .env-Datei erstellt haben, müssen Sie dies im Stammverzeichnis Ihrer Anwendung tun und Ihre Vonage-Anmeldedaten und die ngrok-URL hinzufügen:

VONAGE_APPLICATION_ID='XXXX'
VONAGE_PRIVATE_KEY='./private.key'
VONAGE_SERVER_HOSTNAME='XXXXXX.ngrok.app

>> Halten Sie Ihre Anmeldedaten sicher

>> Übertragen Sie niemals .env-Dateien in Ihr Repository! Stellen Sie sicher, dass .env in Ihrem .gitignore steht.

Für weitere Hilfe, siehe Arbeiten mit Umgebungsvariablen in Ruby.

So verbinden Sie Ihren RCS-Agenten mit Ihrer Vonage-Anwendung

Sobald ngrok läuft, bearbeiten wir unsere Vonage-Anwendung (aus dem vorherigen Artikel) im dem Dashboard um die ngrok-URL in unsere Webhooks einzufügen und sie mit unserem RCS-Agent zu verknüpfen.

Verknüpfen Sie zunächst Ihren RCS-Agenten, indem Sie auf die Schaltfläche "Externe Konten verknüpfen" Registerkarte:

Screenshot of the Vonage dashboard where the Vonage-Rails-Quickstart application is linked to an RCS external account named 'Vonage RoR,' displaying application ID, API key, and status controls.Dashboard view showing the Vonage-Rails-Quickstart application linked to the Vonage RoR RCS external account, with voice and message capabilities enabled.

Aktualisieren Sie nun die eingehende URL unter den Nachrichtenfunktionen. Fügen Sie Ihre ngrok URL gefolgt von /inbound_rcs.

Messages settings section in the Vonage dashboard with fields for Inbound URL configured for HTTP POST, version set to v1, and Enhanced Inbound Media Security toggle set to off.Screenshot of the Messages settings in the Vonage dashboard showing configuration for inbound and status webhook URLs used for RCS communication.

Nach dem Speichern tunnelt ngrok nun Anfragen, die an das Verzeichnis /inbound_rcs Endpunkt gestellten Anfragen an Ihre Rails-Anwendung weiterleiten! Aber es gibt ein kleines Problem: Unsere Rails-Anwendung hat diesen Endpunkt noch nicht.

Wie man einen eingehenden RCS WebHooks in Rails handhabt

Da Vonage nun eine RCS-Nutzlast an /inbound_rcs, lassen Sie uns unsere Anwendung aktualisieren, indem wir eine Route erstellen, die dies verarbeitet.

Rails.application.routes.draw do
 post '/inbound_rcs', to: 'inbound_rcs#create', as: :inbound_rcs
  ....remaining routes...

Wenn eine RCS-Antwort an Ihre virtuelle Vonage-Nummer gesendet wurde, benachrichtigt Vonage Ihre Anwendung durch Senden eines Webhooks. Eine typische Nutzlast für eine eingehende RCS-Antwortnachricht JSON sieht etwa so aus:

{
   "channel": "rcs",
   "message_uuid": "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab",
   "to": "Vonage",
   "from": "447700900001",
   "timestamp": "2025-02-03T12:14:25Z",
   "context_status": "none",
   "message_type": "reply",
   "reply": {
      "id": "reply_option_1",
      "title": "9am"
   }
}

Wie man eine RCS-Antwortnachricht aus Rails speichert

Da wir nun alle erforderlichen Informationen auf der Grundlage unseres zuvor definierten RCS-Modells haben, können wir eine Logik zum Speichern unserer eingehenden RCS-Antworten erstellen. Wir werden auch eine Antwort an unseren Benutzer senden, um ihn wissen zu lassen, dass wir seine Antwort erhalten haben. Lassen Sie uns einen neuen Controller erstellen, der dies erledigt.

rails g controller InboundRcs create

Innerhalb unseres Controllers werden wir eine einfache erstellen Methode, die den Webhook analysiert und einen RCS in unsere Datenbank eingibt. Sie werden feststellen, dass wir den Zeitstempel, nachrichten_typ (der sein wird Antwort), und die Antwort JSON-Objekt.

# app/controllers/inbound_rcs_controller.rb

class InboundRcsController < ApplicationController
  skip_before_action :verify_authenticity_token

  def create
    rcs = RcsMessage.create(
      message_uuid: params[:message_uuid],
      from: params[:from],
      to: params[:to],
      timestamp: params[:timestamp],
      message_type: params[:message_type],
      reply: params[:reply]
    )

  # send reply to user
    reply(rcs)
    head :ok
   end

Um zu beweisen, dass wir die RCS-Antwort erhalten haben, senden wir einen Bestätigungstext an den Absender zurück.

def reply(rcs)
    selection = rcs.reply["title"]
    message = vonage.messaging.rcs(
      type: "text",
      message: "#{selection} is a great choice!"
    )

    vonage.messaging.send(
      from: ENV["RCS_SENDER_ID"],
      to: rcs.from,
      **message
    )

end

Die Antwortmethode stützt sich auf den Vonage-Client, daher müssen wir ihn wie im vorherigen Artikel initialisieren vorherigen Artikel.

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

Wie der gesamte Code zusammenpasst, können Sie in der vollständigen inbound_rcs_controller.rb Datei.

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben erfolgreich eine Ruby on Rails RCS-Anwendung erstellt, die eingehende RCS-Antwortnachrichten über einen Vonage Webhook empfangen kann. Damit haben Sie den Teil "RCS Suggest Replies" des Ruby on Rails Quickstarts abgeschlossen. Wir werden in zukünftigen Tutorials weitere RCS-Funktionen und dann WhatsApp-Funktionen 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.