
Partager:
Benjamin Aronov est un défenseur des développeurs chez Vonage. C'est un bâtisseur de communauté qui a fait ses preuves, avec une formation en Ruby on Rails. Benjamin apprécie les plages de Tel Aviv, où il vit. Sa base à Tel Aviv lui permet de rencontrer et d'apprendre de certains des meilleurs fondateurs de startups du monde. En dehors de la technologie, Benjamin aime voyager à travers le monde à la recherche du parfait pain au chocolat.
Comment recevoir une réponse suggérée RCS dans Ruby on Rails
Temps de lecture : 4 minutes
Services de communication riches (RCS) permettent d'améliorer votre expérience utilisateur grâce à des boutons de réponse interactifs et conviviaux. Précédemment, nous avons appris à envoyer des messages RCS Reply et suivre leur statut en utilisant Ruby on Rails. Mais nous avons également besoin d'accepter les réponses, pour lire les options choisies par nos utilisateurs. Dans cet article, nous allons vous montrer exactement comment mettre cela en place.
Dans ce tutoriel, vous apprendrez comment recevoir un message RCS Suggested Reply entrant en implémentant un point de terminaison webhook dans Ruby on Rails.
TL;DR Passez à l'étape suivante et trouvez tout le code de code de démarrage rapide sur GitHub.
RCS chat interaction with Vonage RoR bot demonstrating conversational capabilities by asking about ice cream flavor preferences
Conditions préalables
Vous devez avoir complété la section Comment envoyer des réponses suggérées RCS avec Ruby on Rails qui nécessite :
Ruby on Rails installé sur votre machine
Un Account ngrok et installé sur votre machine
Un numéro virtuel Vonage
Un agent RBM enregistré
Un numéro de téléphone avec des capacités RCS pour les tests
Comment fonctionne le RCS entrant ?
Vous vous demandez peut-être comment une réponse RCS passe du téléphone d'un utilisateur à votre application Rails. Comme pour les SMS, Vonage gère l'interaction avec le réseau mobile. Ensuite, il transmettra cette information dans un webhook entrant que vous définissez dans votre application Vonage. Dans ce tutoriel, nous utiliserons ngrok pour gérer le webhook entrant dans notre application Rails.
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.
Comment exposer une application Ruby on Rails avec ngrok
Vous pouvez utiliser ngrok pour exposer publiquement et en toute sécurité votre serveur local via HTTP. Ainsi, dans un onglet séparé de votre serveur rails, ouvrez un tunnel ngrok sur le port 3000.
ngrok http 3000Veillez à ajouter l'URL de votre ngrok en tant qu'élément de config.host dans votre fichier development.rb dans votre fichier development.rb. Nous utiliserons la variable d'environnement dynamique VONAGE_SERVER_HOSTNAMEpour que vous n'ayez pas à la mettre à jour à chaque exécution.Pour plus d'aide, voir Comment démarrer et utiliser ngrok dans Rails.
# config/environments/development.rb
Rails.application.configure do
config.hosts << ENV['VONAGE_SERVER_HOSTNAME']Si vous n'avez pas créé de fichier .env auparavant, assurez-vous de le faire à la racine de votre application et ajoutez vos informations d'identification Vonage et l'URL ngrok :
VONAGE_APPLICATION_ID='XXXX'
VONAGE_PRIVATE_KEY='./private.key'
VONAGE_SERVER_HOSTNAME='XXXXXX.ngrok.app>> Sécurisez vos données d'identification
>> Ne livrez jamais les fichiers .env à votre dépôt ! Assurez-vous que .env est dans votre .gitignore.
Pour plus d'aide, voir Travailler avec des variables d'environnement en Ruby.
Comment connecter votre agent RCS à votre application Vonage
Une fois que ngrok est lancé, nous allons éditer notre application Vonage (de l'article précédent). article précédent) dans le tableau de bord pour ajouter l'URL de ngrok dans nos webhooks et la lier à notre agent RCS.
Tout d'abord, reliez votre agent RCS en cliquant sur le bouton "Lier des comptes externes". l'onglet "Lier des comptes externes" :
Dashboard view showing the Vonage-Rails-Quickstart application linked to the Vonage RoR RCS external account, with voice and message capabilities enabled.
Maintenant, mettez à jour l'URL entrante sous les capacités de messages. Ajoutez votre URL ngrok suivie de /inbound_rcs.
Screenshot of the Messages settings in the Vonage dashboard showing configuration for inbound and status webhook URLs used for RCS communication.
Une fois que vous avez appuyé sur save, ngrok va maintenant tunneliser les requêtes faites vers le répertoire /inbound_rcs vers votre application Rails ! Mais il y a un petit problème : notre application Rails n'a pas encore ce point d'accès.
Comment gérer un RCS WebHooks entrant dans Rails
Maintenant que Vonage transmet une charge utile RCS à /inbound_rcs, mettons à jour notre application en créant une route pour la gérer.
Rails.application.routes.draw do
post '/inbound_rcs', to: 'inbound_rcs#create', as: :inbound_rcs
....remaining routes...Lorsqu'une réponse RCS a été envoyée à votre numéro virtuel Vonage, Vonage en informe votre application en envoyant un webhook. Une charge utile typique pour un message de réponse RCS entrant JSON ressemblera à ceci :
{
"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"
}
} Comment stocker un message de réponse RCS à partir de Rails
Maintenant que nous avons toutes les informations nécessaires basées sur notre modèle RCS tel que défini précédemment, nous pouvons créer une logique pour stocker nos réponses RCS entrantes. Nous allons également envoyer une réponse à notre utilisateur pour lui faire savoir que nous avons reçu sa réponse. Générons un nouveau contrôleur pour gérer cela.
rails g controller InboundRcs createÀ l'intérieur de notre contrôleur, nous aurons une simple fonction create qui analyse le webhook et entre un RCS dans notre base de données. Vous remarquerez que nous récupérons le l'horodatage, le type de message (qui sera réponse), et le message réponse JSON.
# 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
Pour prouver que nous avons reçu la réponse RCS, nous enverrons un texte de confirmation à l'expéditeur.
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
)
endLa méthode de réponse repose sur le client Vonage, nous devons donc l'initialiser comme nous l'avons fait dans l'article précédent. article précédent.
def vonage
Vonage::Client.new(
application_id: ENV["VONAGE_APPLICATION_ID"],
private_key: ENV["VONAGE_PRIVATE_KEY"]
)
endVous pouvez voir comment tout le code s'articule dans le fichier complet inbound_rcs_controller.rb complet.
Conclusion
Nous vous félicitons ! Vous avez construit avec succès une application RCS Ruby on Rails qui peut recevoir des messages de réponse RCS entrants à l'aide d'un webhook Vonage. Ainsi, vous avez terminé la partie sur les suggestions de réponses RCS du tutoriel Ruby on Rails Quickstart. Nous continuerons à ajouter d'autres fonctionnalités RCS puis des fonctionnalités WhatsApp dans les prochains tutoriels.
Si vous avez des questions ou souhaitez demander une fonctionnalité pour l'application Quickstart, rejoignez la conversation sur le site Vonage. Communauté Vonage ou contactez-nous sur X (anciennement Twitter). Nous serions ravis d'entendre ce que vous allez construire !
Partager:
Benjamin Aronov est un défenseur des développeurs chez Vonage. C'est un bâtisseur de communauté qui a fait ses preuves, avec une formation en Ruby on Rails. Benjamin apprécie les plages de Tel Aviv, où il vit. Sa base à Tel Aviv lui permet de rencontrer et d'apprendre de certains des meilleurs fondateurs de startups du monde. En dehors de la technologie, Benjamin aime voyager à travers le monde à la recherche du parfait pain au chocolat.