
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.
Den Status einer RCS-Nachricht mit Ruby on Rails empfangen
Lesedauer: 3 Minuten
Zuvor haben wir gelernt wie man Rich Communication Services (RCS) Suggested Reply Nachrichten mit Ruby on Rails zu versenden. Das Versenden einer Nachricht ist jedoch nicht so toll, wenn man nicht weiß, was am anderen Ende passiert ist. Zum Glück gibt es mit der Messages API und RCS Nachrichten-Statusbekommen wir das und noch viel mehr.
Dieses Tutorial erweitert den vorherigen Artikel und zeigt Ihnen, wie Sie RCS-Nachrichtenstatus in eine Ruby on Rails-Anwendung mit Vonage Webhooks integrieren können.
TL;DR Überspringen Sie den Anfang und finden Sie den gesamten Schnellstart-Code auf GitHub.
Was ist ein RCS-Meldungsstatus?
Die Vonage Messages API bietet den Message Status Webhook, mit dem Sie direkt den aktuellen Status einer gesendeten Nachricht abfragen können. aktuellen Status einer von Ihnen gesendeten Nachricht einhaken können. Jedes Mal, wenn der Status der Nachricht aktualisiert wird, wird der Webhook ausgelöst.
So können Sie feststellen, ob Ihre Nachricht eingegangen ist übermittelt wurde, zugestellt, abgelehnt, unzustellbar, oder lesen.
Diagram explaining RCS Message Status, showing how messages travel from an application through Vonage and carriers to the user, with delivery status callbacks.
Wie wir unsere Ruby on Rails App mit ngrok öffentlich zugänglich machen
Vonage muss den Status unserer Nachrichten an einen Endpunkt senden. Unsere Ruby on Rails-Anwendung läuft in der Entwicklung auf Port 3000, so dass wir lokal unter localhost:3000 darauf zugreifen können. Sie können ngrok verwenden, um Ihren lokalen Server sicher über HTTP öffentlich zugänglich zu machen. Also jetzt, in einem separaten Tab von Ihrem Rails-Server aus einen ngrok-Tunnel auf Port 3000 öffnen.
ngrok http 3000Fügen Sie unbedingt Ihre ngrok-URL als VONAGE_SERVER_HOSTNAME in Ihrer .env Datei hinzufügen.
# .env
# ngrok URL, don't include the protocol (https://)
VONAGE_SERVER_HOSTNAME=''Und starten Sie dann Ihren Rails-Server (erneut). Für weitere Hilfe, siehe wie man anfängt und ngrok in Rails benutzt.
So verbinden Sie Ihren RCS-Agenten mit Ihrer Vonage-Anwendung
Sobald ngrok läuft, bearbeiten wir unsere Vonage-Anwendung (aus dem vorherigen Artikel) in 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:
Dashboard view showing the Vonage-Rails-Quickstart application linked to the Vonage RoR RCS external account, with voice and message capabilities enabled.
Bearbeiten Sie dann die Anwendung und fügen Sie in das Feld Status URL Ihre ngrok URL gefolgt von /rcs_nachricht_status.
Vonage Messages API webhook settings showing an invalid Inbound URL error.
Sobald Sie auf Speichern klicken, leitet ngrok nun Anfragen an die Datei /rcs_message_status Endpunkt gestellten Anfragen an Ihre Rails-Anwendung weiter! Aber es gibt ein kleines Problem: Unsere Rails-Anwendung hat diesen Endpunkt nicht.
Wie man Nachrichtenstatus-Webhooks in Rails handhabt
Jetzt, da Vonage Statusmeldungen an die Datei /rcs_message_statusweiterleitet, sollten wir unsere Anwendung aktualisieren und eine Route erstellen, die dies verarbeitet.
# config/routes.rb
Rails.application.routes.draw do
...previous routes...
# For RcsMessageStatus controller, create
post '/rcs_message_status', to: 'rcs_message_status#create', as: :rcs_message_statusAber was wird dort passieren? Unsere Anwendung akzeptiert den Meldungsstatus und analysiert ihn nach den relevanten Informationen. Sie können sehen, wie ein typischer Nachrichtenstatus aussieht:
{
"message_uuid": "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab",
"to": "447700900000",
"from": "Vonage",
"timestamp": "2025-02-03T12:14:25Z",
"status": "read",
"client_ref": "abc123",
"channel": "rcs",
"destination": {
"network_code": "12345"
}
}Das wichtigste Feld ist der Status denn es gibt Auskunft darüber, ob Ihre Nachricht zugestellt wurde und, falls nicht, was schief gelaufen ist. Weitere Informationen über Nachrichtenstatus Webhaken.
Wir werden eine Logik erstellen, um unseren RCS-Status auf der Grundlage der empfangenen Nachrichtenstatus zu aktualisieren. Lassen Sie uns einen neuen Controller in der Kommandozeile erstellen, um dies zu handhaben.
rails g controller RcsMessageStatus createUnser Controller hat eine einzige, einfache erstellen Methode. Zunächst analysiert die Methode unseren Nachrichtenstatus und extrahiert die message_uuid; sie verwendet diese fremde ID, um das RCS in unserer lokalen Datenbank zu finden. Anschließend aktualisiert sie den Status für diesen RCS auf den aktuellen Status, den wir im Nachrichtenstatus erhalten haben.
# app/controllers/rcs_message_status_controller.rb
class RcsMessageStatusController < ApplicationController
skip_before_action :verify_authenticity_token
def create
RcsMessage.where(message_uuid: params[:rcs_message_status][:message_uuid])
.update_all(status: params[:rcs_message_status][:status]) if params[:rcs_message_status][:message_uuid]
# Return an empty HTTP 200 status
head :ok
end
end
Sie können nun einen RCS senden (wie im vorherigen Artikel beschrieben) senden und Ihren Rails-Server beobachten, um zu sehen, dass der Webhook aufgerufen und weitergeleitet wird und ActiveRecord die Datenbank aktualisiert! Beachten Sie, dass der /rcs_nachricht_status Endpunkt 3 mal aufgerufen wird. Unser Nachrichtenstatus wird aktualisiert auf übermitteltund dann zugestelltund schließlich gelesen.
Console log output showing RCS message status updates (submitted, delivered, read) handled by a Ruby on Rails application using the Vonage Messages API.
Schlussfolgerung
Sie haben es geschafft! Sie haben gelernt, wie Sie Ihre Ruby on Rails-Anwendung dazu bringen, über ngrok auf einen Webhook für den Nachrichtenstatus zu warten und dabei Ihre Datenbank zu aktualisieren! Im nächsten Artikel schließen wir die Schleife auf unserer User Journey ab, indem wir unserem Benutzer erlauben, eine der vorgeschlagenen Antworten auszuwählen, die wir gesendet haben, und diese dann in unserer Rails-Anwendung zu bearbeiten.
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:
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.