
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 des appels téléphoniques avec Ruby on Rails
Temps de lecture : 4 minutes
Maintenant que votre application Ruby on Rails peut passer des appels téléphoniques et suivre l'état des appels grâce aux événements d'appel, l'étape suivante consiste à gérer les appels téléphoniques entrants. Après tout, à quel point vos clients seront-ils satisfaits s'ils ne peuvent pas vous rappeler ? Dans cet article, nous allons vous montrer exactement comment mettre cela en place.
Dans ce tutoriel, vous apprendrez à recevoir un appel téléphonique 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 démarrage rapide sur GitHub. code de démarrage rapide sur GitHub.
Conditions préalables
Ruby on Rails installé sur votre machine
Numéro virtuel Vonage
Pour acheter un numéro de téléphone virtuel, rendez-vous sur votre tableau de bord API et suivez les étapes ci-dessous.
Purchase a phone number
Accédez à votre tableau de bord API
Naviguez vers CONSTRUIRE & GERER > Numbers > Acheter des Numbers.
Choisissez les attributs nécessaires et cliquez sur Rechercher
Cliquez sur le bouton Acheter à côté du numéro désiré et validez votre achat
Pour confirmer que vous avez acheté le numéro virtuel, allez dans le menu de navigation de gauche, sous CONSTRUIRE & GÉRER, cliquez sur Numéros, puis sur Vos Numéros
Comment fonctionne un appel entrant ?
Lorsque quelqu'un appelle votre numéro virtuel Vonage, l'API Voice doit savoir ce qu'il faut faire ensuite : doit-il diffuser un message d'accueil, connecter l'appel à un autre numéro, commencer l'enregistrement, ou autre chose ?
C'est là qu'intervient le Webhook de réponse.
Dès qu'un appel entrant est pris, Vonage envoie une requête HTTP à l'adresse answer_url que vous avez configuré dans les paramètres de votre application. Ce webhook indique à votre serveur : "Hé, vous avez un appel, que doit-il se passer ensuite ?" Votre serveur répond avec un NCCO (un objet d'appel Vonage) qui définit les actions que l'API Voice doit entreprendre pour l'appel.
En savoir plus sur Configurations des webhooks de réponse.
Comment exposer publiquement notre application Ruby on Rails avec Ngrok
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. Cependant, cela ne fonctionne que sur notre ordinateur !
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 3000Assurez-vous d'ajouter votre URL ngrok en tant que config.host dans votre fichier development.rb. Nous utiliserons la variable d'environnement VONAGE_SERVER_HOSTNAMEpour rendre notre application plus dynamique.
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']Maintenant, dans notre fichier .env, mettez votre 'VONAGE_SERVER_HOSTNAME' à votre URL ngrok.
# .env
# ngrok URL, don't include the protocol (https://)
VONAGE_SERVER_HOSTNAME=''Nous devrons également modifier notre application Vonage (des articles précédents) dans le tableau de bord pour ajouter l'URL ngrok dans nos webhooks. Dans le champ Answer URL, ajoutez votre URL ngrok suivie de /inbound_calls. Assurez-vous que la requête est envoyée en tant que POST.
Vonage Voice API configuration showing Answer, Event, and Fallback URLs, including an ngrok URL for answer and event callbacks.
Comment gérer les Webhooks d'événements de réponse dans Rails
Maintenant que Vonage transmet une charge utile d'appel téléphonique au répertoire /inbound_calls mettons à jour notre application et créons une route pour le gérer.
# config/routes.rb
Rails.application.routes.draw do
resources :inbound_calls, only: [:create]
...previous routes...Lorsqu'un appel a été passé vers votre numéro virtuel Vonage, Vonage en informe votre application en envoyant un webhook. Une charge utile typique pour un appel entrant ressemble à ceci.
{
"from": "442079460000",
"to": "447700900000",
"uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"conversation_uuid": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab"
}
Comment stocker un appel téléphonique dans Rails
Maintenant que nous disposons de toutes les informations requises sur la base du modèle d'appel défini précédemment, nous pouvons créer une certaine logique pour stocker notre appel téléphonique entrant. Nous allons également renvoyer un simple NCCO avec un robot pour répondre à notre appelant, afin qu'il sache que l'appel fonctionne. Générons un nouveau contrôleur pour gérer cela.
rails g controller InboundCalls createÀ l'intérieur de notre contrôleur, nous aurons une simple fonction create qui analyse le webhook et entre un appel dans notre base de données.
# app/controllers/inbound_calls_controller.rb
class InboundCallsController < ApplicationController
# We disable CSRF for this webhook call
skip_before_action :verify_authenticity_token
def create
Call.where(conversation_uuid: params[:conversation_uuid])
.first_or_create
.update(
to: params[:to],
from: params[:from],
uuid: params[:uuid],
is_inbound: true
)
render json: [
{
action: 'talk',
voiceName: 'Jennifer',
text: 'Hello, thank you for calling. This is Jennifer from Vonage. Ciao.'
}
]
end
endBien qu'il ne soit pas vraiment nécessaire de stocker et de mettre à jour les détails de l'appel, il est utile de garder une trace des statuts actuels de l'appel, des durées et de toute autre information qui pourrait être utile à votre application. Cette action renvoie un nouvel objet de contrôle d'appel Vonage (NCCO) qui diffusera un simple message vocal au destinataire comme spécifié. Découvrez d'autres actions NCCO telles que enregistrer, connecterou entrée pour créer des flux d'appels avancés.
OK, démarrez maintenant votre serveur, assurez-vous que ngrok fonctionne, et passez un appel vocal à votre numéro Vonage pour tester le message d'accueil !
>> Voir comment tout le code s'imbrique dans le fichier complet inbound_calls_controller.rb complet.
Conclusion
Félicitations ! Vous avez réussi à créer une application Ruby on Rails Voice capable de recevoir des appels téléphoniques entrants à l'aide d'un webhook Vonage. Vous avez ainsi terminé la partie Voice du cours Ruby on Rails Quickstart. Nous allons ajouter Rich Communication Services (RCS) avec l'API Messages de Vonage 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.