https://a.storyblok.com/f/270183/1368x665/9af4c311b6/25sep_dev-blog_ruby-inbound-call.jpg

Comment recevoir des appels téléphoniques avec Ruby on Rails

Publié le September 11, 2025

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

Pour acheter un numéro de téléphone virtuel, rendez-vous sur votre tableau de bord API et suivez les étapes ci-dessous.

Steps on how to purchase a phone number from the dashboard, from selecting the number and confirming the selection.Purchase a phone number

  1. Accédez à votre tableau de bord API

  2. Naviguez vers CONSTRUIRE & GERER > Numbers > Acheter des Numbers.

  3. Choisissez les attributs nécessaires et cliquez sur Rechercher

  4. Cliquez sur le bouton Acheter à côté du numéro désiré et validez votre achat

  5. 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 3000

Assurez-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.

Screenshot of Vonage Voice API settings panel with configured webhooks for Answer URL, Event URL using HTTP POST, and Fallback URL, along with region selection options.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
end

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

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.