
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.
Recevoir un statut de message RCS avec Ruby on Rails
Temps de lecture : 3 minutes
Précédemment, nous avons appris comment envoyer des messages de réponse suggérée de Rich Communication Services (RCS) en utilisant Ruby on Rails. Cependant, le simple fait d'envoyer un message n'est pas très utile si vous ne savez pas ce qui s'est passé à l'autre bout du fil. Heureusement, avec l'API Messages et RCS Statut des messagesnous permettent d'obtenir cela et bien plus encore.
Ce tutoriel va prolonger l'article précédent et vous montrer comment intégrer les statuts des messages RCS dans une application Ruby on Rails en utilisant les webhooks de Vonage.
TL;DR Passez à l'étape suivante et trouvez tout le code de code de démarrage rapide sur GitHub.
Qu'est-ce qu'un statut de message RCS ?
L'API Messages de Vonage fournit le Webhook de l'état du message, qui vous permet d'accéder directement à l'état actuel du message que vous avez envoyé. l'état actuel d'un message que vous avez envoyé. Chaque fois que l'état du message est mis à jour, le crochet Web est déclenché.
Vous pouvez ainsi savoir si votre message a été soumis, délivré, rejeté, non livrableou lues.
Diagram explaining RCS Message Status, showing how messages travel from an application through Vonage and carriers to the user, with delivery status callbacks.
Comment exposer publiquement notre application Ruby on Rails avec ngrok
Vonage devra envoyer les statuts de nos messages à un point de terminaison. Notre application Ruby on Rails s'exécute en développement sur le port 3000, nous pouvons donc y accéder localement à l'adresse localhost:3000. 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 dans le champ VONAGE_SERVER_HOSTNAME dans votre fichier .env .
# .env
# ngrok URL, don't include the protocol (https://)
VONAGE_SERVER_HOSTNAME=''Puis (re)démarrez votre serveur Rails. Pour plus d'aide, voir Comment démarrer et utiliser ngrok dans Rails.
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) dans 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.
Ensuite, modifiez l'application et dans le champ Status URL, ajoutez votre URL ngrok suivie de /rcs_message_status.
Vonage Messages API webhook settings showing an invalid Inbound URL error.
Une fois que vous aurez cliqué sur "save", ngrok transmettra les requêtes faites à l'adresse /rcs_message_status à votre application Rails ! Mais il y a un petit problème : notre application Rails n'a pas ce point de terminaison.
Comment gérer les Webhooks d'état des messages dans Rails
Maintenant que Vonage transmet les statuts au répertoire /rcs_message_statusmettons à jour notre application et créons une route pour le gérer.
# 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_statusMais que va-t-il se passer ici ? Notre application va accepter l'état du message et l'analyser pour en extraire les informations pertinentes. Vous pouvez voir à quoi ressemble un état de message typique :
{
"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"
}
}Le champ le plus important est le champ état car il vous indique si votre message a été délivré et, si ce n'est pas le cas, ce qui s'est passé. Voir plus d'informations sur Statut du message les webhooks.
Nous allons créer une logique pour mettre à jour notre statut RCS en fonction des statuts des messages reçus. Générons un nouveau contrôleur dans la ligne de commande pour gérer cela.
rails g controller RcsMessageStatus createNotre contrôleur comporte une seule et simple fonction créer simple. Tout d'abord, la méthode analyse le statut de notre message et extrait le message_uuid ; elle utilise cet identifiant étranger pour trouver le RCS dans notre base de données locale. Elle met ensuite à jour le statut de ce RCS avec le statut actuel que nous avons reçu dans le statut du message.
# 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
Vous pouvez maintenant envoyer un RCS (selon l'article précédent) et observer votre serveur Rails pour voir que le webhook est appelé, transmis, et qu'ActiveRecord met à jour la base de données ! Remarquez que le champ /rcs_message_status est sollicité 3 fois. Le statut de notre message est mis à jour à soumispuis délivréet enfin lu.
Console log output showing RCS message status updates (submitted, delivered, read) handled by a Ruby on Rails application using the Vonage Messages API.
Conclusion
Vous avez réussi ! Vous avez appris à exposer votre application Ruby on Rails à l'écoute d'un webhook de statut de message via ngrok, en mettant à jour votre base de données au passage ! Nous bouclerons la boucle de notre parcours utilisateur dans le prochain article en permettant à notre utilisateur de sélectionner l'une des réponses suggérées que nous avons envoyées, puis de la gérer dans notre application Rails.
Si vous avez des questions ou des suggestions pour plus de contenu Ruby, envoyez-nous un message sur le Communauté Slack. Vous pouvez également rester au courant de notre contenu et de nos événements pour les développeurs sur X, anciennement connu sous le nom de Twitter.
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.