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

Comment recevoir une réponse suggérée RCS dans Ruby on Rails

Publié le July 8, 2025

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.

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

Conditions préalables

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.

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.

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 3000

Veillez à 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" :

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.

Maintenant, mettez à jour l'URL entrante sous les capacités de messages. Ajoutez votre URL ngrok suivie de /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.

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
    )

end

La 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"]
    )
end

Vous 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:

https://a.storyblok.com/f/270183/384x384/e4e7d1452e/benjamin-aronov.png
Benjamin AronovDéfenseur des développeurs

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.