Utiliser les services SMS et vocaux via Twilio

Twilio se positionne en précurseur dans le domaine des communications professionnelles en offrant aux développeurs la possibilité d'intégrer la voix, la VoIP et la messagerie à leurs applications. Ils peuvent ainsi virtualiser toutes les infrastructures nécessaires au sein d'un environnement cloud mondial et proposer l'accès à ces services aux utilisateurs via la plate-forme d'API de communication Twilio. Les applications sont simples à développer et évolutives. Profitez de la flexibilité offerte par le paiement à l'usage et bénéficiez de la fiabilité exemplaire du cloud.

Twilio Voice permet à votre application de passer et de recevoir des appels téléphoniques. Twilio SMS permet à votre application d'envoyer et de recevoir des SMS. Twilio Client vous permet de passer des appels VoIP depuis un téléphone, un navigateur ou une tablette, et est compatible avec WebRTC.

Prix

En adoptant Twilio, les clients utilisant Google App Engine reçoivent un crédit gratuit pour les messages SMS ou les minutes entrantes.

Twilio est un service facturé à l'usage. La mise en service est gratuite, et vous pouvez clôturer votre compte à tout moment. Pour en savoir plus, consultez les tarifs de Twilio.

Plate-forme

La plate-forme Twilio comprend le TwiML (langage de balisage de Twilio), une API RESTful et des SDK VoIP pour les navigateurs Web, Android et iOS. Les bibliothèques d'aide sont disponibles dans plusieurs langages. Vous trouverez la liste complète sur la page Bibliothèques d'aide Twilio.

TwiML

TwiML est un ensemble d'instructions que vous pouvez utiliser pour indiquer à Twilio ce qu'il doit faire lorsque vous recevez un appel ou un SMS. Lorsque quelqu'un passe un appel ou envoie un SMS à l'un de vos numéros Twilio, la plate-forme Twilio recherche l'URL associée à ce numéro de téléphone et envoie une requête à cette adresse. Twilio lit les instructions TwiML définies au niveau de cette URL pour déterminer les actions à effectuer :

  • <Say> – Synthèse vocale
  • <Record> – Enregistrement de l'appel
  • <Play> – Lecture d'un message à l'attention de l'appelant
  • <Gather> – Invite l'appelant à appuyer sur certaines touches de son clavier
  • <Message> – Envoi d'un message

Pour en savoir plus sur les autres verbes et fonctionnalités disponibles, consultez la documentation relative au langage de balisage de Twilio.

API REST

L'API REST Twilio vous permet d'interroger les métadonnées associées à votre compte, vos numéros de téléphone, vos appels, vos SMS et vos enregistrements. Vous pouvez également effectuer des actions plus complexes, comme initier des appels sortants ou envoyer des SMS.

L'API étant basée sur les principes REST, il est très facile de créer et de tester des applications. Vous pouvez vous servir de votre navigateur pour accéder aux URL. En outre, vous avez la possibilité d'utiliser pratiquement tous les clients HTTP dans n'importe quel langage de programmation pour interagir avec l'API. Pour en savoir plus, consultez la page API Rest Twilio.

Copier l'exemple de code

Un exemple de code complet illustrant l'intégration à Twilio est disponible sur GitHub. Si vous souhaitez utiliser cet exemple de code, copiez-le sur votre ordinateur local :

git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples
cd ruby-docs-samples/appengine/twilio

Configurer

Si vous souhaitez utiliser Twilio pour recevoir un appel, envoyer un SMS ou en recevoir un, procédez comme suit :

  1. Créez un projet. Pour obtenir davantage d'instructions, consultez la page "Hello, World!" pour Ruby sur App Engine.

  2. Créez un compte Twilio.

  3. Dans Twilio, créez un numéro. Configurez les URL associées au numéro Twilio selon les besoins de votre application. Dans le cas de notre exemple de code, effectuez ces étapes :

    • Configurez l'URL de requête vocale sur https://[your-app-id].appspot.com/call/receive.
    • Configurez l'URL de requête SMS sur https://[your-app-id].appspot.com/sms/receive.
  4. Configurez les paramètres Twilio dans la section des variables d'environnement du fichier app.yaml. Par exemple :

    env_variables:
      TWILIO_ACCOUNT_SID: <your-account-sid>
      TWILIO_AUTH_TOKEN: <your-auth-token>
      TWILIO_NUMBER: <your-twilio-number>

  5. Ajoutez Twilio aux dépendances de la bibliothèque du fichier Gemfile de votre application, par exemple :

    source "https://rubygems.org"
    
    gem "sinatra"
    gem "twilio-ruby"

    App Engine s'assurera que toutes les dépendances déclarées dans le fichier Gemfile seront bien installées lors du déploiement de votre application.

  6. Pour préparer les tests en local de votre application, définissez les variables d'environnement sur votre ordinateur local à l'aide de la ligne de commande. Dans le cas de notre exemple de code :

    export TWILIO_ACCOUNT_SID=[your-twilio-account-sid]
    export TWILIO_AUTH_TOKEN=[your-twilio-auth-token]
    export TWILIO_NUMBER=[your-twilio-number]
    
  7. Vous pouvez exécuter l'application localement pour tester les rappels et l'envoi de SMS. Par exemple :

    bundle exec ruby app.rb
    

Recevoir un appel

Une fois la configuration terminée, vous pouvez créer votre première application.

Dans le fichier app.rb, le gestionnaire /call/receive indique comment l'outil répond aux appels entrants et renvoie des instructions TwiML :

# Answers a call and replies with a simple greeting.
post "/call/receive" do
  content_type :xml

  response = Twilio::TwiML::VoiceResponse.new do |r|
    r.say message: "Hello from Twilio!"
  end

  response.to_s
end
  1. Déployez votre projet sur App Engine. Une fois le projet déployé, vous pouvez envoyer une requête HTTP POST à l'URL http://your-app-id.appspot.com/call/receive, qui renvoie le texte suivant :

    <?xml version="1.0" encoding="UTF-8"?>
      <Response>
        <Say>Hello from Twilio!</Say>
      </Response>
    
  2. Copiez et collez l'URL http://your-app-id.appspot.com/call/receive dans la zone "Voice URL" (URL vocale) de la page "Numbers" (Numéros) de votre compte Twilio.

  3. Appelez votre numéro Twilio. Vous devriez entendre une voix dire "Hello from Twilio!" (Bonjour de Twilio) en guise de réponse. Lorsque vous appelez ce numéro, Twilio récupère votre URL et exécute les instructions XML répertoriées ci-dessus. Ensuite, Twilio raccroche, car il n'y a plus d'instructions à exécuter.

Envoyer un SMS

Pour envoyer des SMS via Twilio, vous pouvez utiliser la bibliothèque d'aide twilio-ruby.

Dans le fichier app.rb, le gestionnaire /sms/send indique comment envoyer un SMS :

# Sends a simple SMS message.
get "/sms/send" do
  client = Twilio::REST::Client.new

  client.messages.create(
    from: TWILIO_NUMBER,
    to:   params[:to],
    body: "Hello from Google App Engine"
  )
end
  1. Modifiez le paramètre to afin d'utiliser un numéro de téléphone réel. Vous pouvez spécifier n'importe quel numéro sortant pour le paramètre to, par exemple votre propre numéro de téléphone portable.

  2. Déployez le code mis à jour, puis indiquez l'URL suivante dans votre navigateur Web pour envoyer le SMS : http://your-app-id.appspot.com/sms/send.

Recevoir un SMS

Pour recevoir des SMS via Twilio, vous pouvez utiliser la bibliothèque d'aide twilio-ruby.

La vue /sms/receive du fichier app.rb indique comment répondre aux SMS entrants et renvoyer des instructions TwiML :

post "/sms/receive" do
  content_type :xml

  sender  = params[:From]
  message = params[:Body]

  response = Twilio::TwiML::MessagingResponse.new do |r|
    r.message body: "Hello #{sender}, you said #{message}"
  end

  response.to_s
end

Déployez le code mis à jour sur App Engine, puis envoyez un SMS à votre numéro Twilio. Vous devriez recevoir un message d'accueil en réponse.

En savoir plus sur Twilio

Maintenant que vous avez utilisé certaines fonctionnalités de base, consultez les liens suivants pour découvrir d'autres fonctionnalités, et en apprendre davantage sur les bonnes pratiques à mettre en œuvre pour concevoir des applications sécurisées et évolutives :

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement flexible App Engine pour les documents Ruby