La documentation de l'API Twilio peut être trouvée ici.
L'individu libère ici.
twilio-ruby
utilise une version modifiée de Semantic Versioning pour toutes les modifications. Consultez ce document pour plus de détails.
Cette bibliothèque prend en charge les implémentations Ruby suivantes :
Rubis 2.4
Rubis 2.5
Rubis 2.6
Rubis 2.7
Rubis 3.0
Rubis 3.1
Rubis 3.2
JRuby 9.2
JRuby 9.3
JRuby 9.4
Guide de mise à niveau
Pour installer à l'aide de Bundler, récupérez la dernière version stable :
gem 'twilio-ruby' , '~> 7.3.6'
Pour installer manuellement twilio-ruby
via Rubygems, gem installez simplement :
gem install twilio-ruby -v 7.3.6
Pour créer et installer vous-même la branche de développement à partir de la dernière source :
git clone [email protected]:twilio/twilio-ruby.git
cd twilio-ruby
make install
Info Si la ligne de commande vous affiche un message d'erreur indiquant Autorisation refusée, essayez d'exécuter les commandes ci-dessus avec sudo.
Par exemple :
sudo gem install twilio-ruby
Pour vous assurer que l'installation a réussi, essayez de vous envoyer un message SMS, comme celui-ci :
require "twilio-ruby"
# Your Account SID and Auth Token from console.twilio.com
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
@client = Twilio :: REST :: Client . new account_sid , auth_token
message = @client . messages . create (
body : "Hello from Ruby" ,
to : "+12345678901" , # Text this number
from : "+15005550006" , # From a valid Twilio number
)
puts message . sid
Avertissement Vous pouvez coder en dur vos informations d'identification lors de tests locaux, mais vous devez utiliser des variables d'environnement pour les garder secrètes avant de valider du code ou de le déployer en production. Consultez Comment définir les variables d'environnement pour plus d'informations.
require 'twilio-ruby'
# Your Account SID and Auth Token from console.twilio.com
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
# Initialize the Twilio Client with your credentials
@client = Twilio :: REST :: Client . new account_sid , auth_token
require 'twilio-ruby'
# Your Account SID from console.twilio.com
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# API Key from twilio.com/console/project/api-keys
api_key_sid = 'zzzzzzzzzzzzzzzzzzzzzz'
api_key_secret = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
# set up a client to talk to the Twilio REST API using an API Key
@client = Twilio :: REST :: Client . new api_key_sid , api_key_secret , account_sid
Pour profiter de l'infrastructure globale de Twilio, spécifiez la région et/ou le périmètre cible pour le client :
# set up a client to talk to the Twilio REST API over a specific region and edge
@client = Twilio :: REST :: Client . new account_sid , auth_token , nil , 'au1'
@client . edge = 'sydney'
# you may also specify the region and/or edge after client creation
@client = Twilio :: REST :: Client . new account_sid , auth_token
@client . region = 'au1'
@client . edge = 'sydney'
Cela entraînera la transformation du hostname
de api.twilio.com
en api.sydney.au1.twilio.com
.
@client . calls . create (
from : '+14159341234' ,
to : '+16105557069' ,
url : 'http://example.com'
)
@client . messages . create (
from : '+14159341234' ,
to : '+16105557069' ,
body : 'Hey there!'
)
@client . messages . list ( limit : 20 )
# put the message sid you want to retrieve here:
message_sid = 'SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
@client . messages ( message_sid ) . fetch
La bibliothèque gère automatiquement la pagination pour vous. Les collections, telles que calls
et messages
, ont des méthodes list
et de flux qui pagent sous le capot. Avec à la fois list
et stream
, vous pouvez spécifier le nombre d'enregistrements que vous souhaitez recevoir ( limit
) et la taille maximale que vous souhaitez que chaque page soit récupérée ( page_size
). La bibliothèque se chargera alors de la tâche à votre place.
list
récupère avec impatience tous les enregistrements et les renvoie sous forme de liste, tandis que stream
renvoie un énumérateur et récupère paresseusement des pages d'enregistrements lorsque vous parcourez la collection. Vous pouvez également paginer manuellement à l'aide de la méthode page
.
Pour plus d’informations sur ces méthodes, consultez la documentation de la bibliothèque générée automatiquement.
require 'twilio-ruby'
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio :: REST :: Client . new ( account_sid , auth_token )
@client . calls . list
. each do | call |
puts call . direction
end
Afin d'activer la journalisation du débogage, transmettez une instance « logger » au client avec le niveau défini sur au moins « DEBUG ».
@client = Twilio :: REST :: Client . new account_sid , auth_token
myLogger = Logger . new ( STDOUT )
myLogger . level = Logger :: DEBUG
@client . logger = myLogger
@client = Twilio :: REST :: Client . new account_sid , auth_token
myLogger = Logger . new ( 'my_log.log' )
myLogger . level = Logger :: DEBUG
@client . logger = myLogger
Si l'API Twilio renvoie une réponse HTTP de niveau 400 ou 500, la bibliothèque twilio-ruby
lancera un Twilio::REST::RestError
. Les erreurs de niveau 400 sont normales lors du fonctionnement de l'API ( “Invalid number”
, “Cannot deliver SMS to that number”
, par exemple) et doivent être traitées de manière appropriée.
require 'twilio-ruby'
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio :: REST :: Client . new account_sid , auth_token
begin
messages = @client . messages . list ( limit : 20 )
rescue Twilio :: REST :: RestError => e
puts e . message
end
Pour faciliter le débogage, la bibliothèque vous permet d'accéder aux objets de requête et de réponse sous-jacents. Cette fonctionnalité est intégrée au client HTTP par défaut fourni avec la bibliothèque.
Par exemple, vous pouvez récupérer le code d'état de la dernière réponse comme ceci :
require 'rubygems' # Not necessary with ruby 1.9 but included for completeness
require 'twilio-ruby'
# Your Account SID and Auth Token from console.twilio.com
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio :: REST :: Client . new ( account_sid , auth_token )
@message = @client . messages . create (
to : '+14158675309' ,
from : '+14258675310' ,
body : 'Ahoy!'
)
# Retrieve the status code of the last response from the HTTP client
puts @client . http_client . last_response . status_code
twilio-ruby
utilise Faraday pour effectuer des requêtes HTTP. Vous pouvez demander à Twilio::REST::Client
d'utiliser l'un des adaptateurs Faraday comme ceci :
@client . http_client . adapter = :typhoeus
Pour utiliser un client HTTP personnalisé avec cette bibliothèque d'assistance, veuillez consulter l'exemple avancé expliquant comment procéder.
Pour appliquer des personnalisations telles que le middleware, vous pouvez utiliser la méthode configure_connection
comme ceci :
@client . http_client . configure_connection do | faraday |
faraday . use SomeMiddleware
end
Si vous avez simplement besoin de générer un jeton de capacité à utiliser avec le client Twilio, vous pouvez le faire :
require 'twilio-ruby'
# put your own account credentials here:
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
# set up
capability = Twilio :: JWT :: ClientCapability . new account_sid , auth_token
# allow outgoing calls to an application
outgoing_scope = Twilio :: JWT :: ClientCapability :: OutgoingClientScope . new 'AP11111111111111111111111111111111'
capability . add_scope ( outgoing_scope )
# allow incoming calls to 'andrew'
incoming_scope = Twilio :: JWT :: ClientCapability :: IncomingClientScope . new 'andrew'
capability . add_scope ( incoming_scope )
# generate the token string
@token = capability . to_s
Il existe un document légèrement plus détaillé dans la section Capacité du wiki.
Pour contrôler les appels téléphoniques, votre application doit générer TwiML.
Vous pouvez construire une réponse TwiML comme celle-ci :
require 'twilio-ruby'
response = Twilio :: TwiML :: VoiceResponse . new do | r |
r . say ( message : 'hello there' , voice : 'alice' )
r . dial ( caller_id : '+14159992222' ) do | d |
d . client 'jenny'
end
end
# print the result
puts response . to_s
Cela imprimera ce qui suit (à l'exception des espaces) :
xml version = " 1.0 " encoding = " UTF-8 " ?>
< Response >
< Say voice = " alice " >hello there Say >
< Dial callerId = " +14159992222 " >
< Client >jenny Client >
Dial >
Response >
Le Dockerfile
présent dans ce référentiel et son image Docker twilio/twilio-ruby
respective sont actuellement utilisés par Twilio à des fins de test uniquement.
Si vous avez besoin d'aide pour installer ou utiliser la bibliothèque, veuillez d'abord consulter le centre d'aide du support Twilio et déposer un ticket d'assistance si vous ne trouvez pas de réponse à votre question.
Si vous avez plutôt trouvé un bogue dans la bibliothèque ou si vous souhaitez ajouter de nouvelles fonctionnalités, allez-y et ouvrez des tickets ou des pull request sur ce dépôt !