La documentation de l'API Twilio est disponible ici.
La documentation de la bibliothèque Python peut être trouvée ici.
twilio-python
utilise une version modifiée du versioning sémantique pour toutes les modifications. Voir ce document pour plus de détails.
Cette bibliothèque prend en charge les implémentations Python suivantes:
Installez à partir de PYPI à l'aide de PIP, un gestionnaire de packages pour Python.
pip3 install twilio
Si PIP Installation échoue sur Windows, vérifiez la longueur du chemin du chemin du répertoire. S'il est plus grand 260 caractères, activez les longs chemins ou choisissez un autre emplacement plus court.
Vous n'avez pas installé PIP? Essayez de l'installer en exécutant cela à partir de la ligne de commande:
curl https://bootstrap.pypa.io/get-pip.py | python
Ou, vous pouvez télécharger le code source (ZIP) pour twilio-python
, puis exécuter:
python3 setup.py install
Info Si la ligne de commande vous donne un message d'erreur qui indique l'autorisation refusée, essayez d'exécuter les commandes ci-dessus avec
sudo
(par exemple,sudo pip3 install twilio
).
Essayez de vous envoyer un message SMS. Enregistrez l'échantillon de code suivant sur votre ordinateur avec un éditeur de texte. Assurez-vous de mettre à jour le numéro de téléphone account_sid
, auth_token
et from_
avec des valeurs de votre compte Twilio. Le numéro to
téléphone sera votre propre téléphone mobile.
from twilio . rest import Client
# Your Account SID and Auth Token from console.twilio.com
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client ( account_sid , auth_token )
message = client . messages . create (
to = "+15558675309" ,
from_ = "+15017250604" ,
body = "Hello from Python!" )
print ( message . sid )
Enregistrez le fichier sous send_sms.py
. Dans le terminal, cd
dans le répertoire contenant le fichier que vous venez d'enregistrer puis exécutez:
python3 send_sms.py
Après un bref délai, vous recevrez le SMS sur votre téléphone.
AVERTISSEMENT, il est normal de coder vos informations d'identification lors du test localement, mais vous devez utiliser des variables d'environnement pour les garder secrètes avant de commettre un code ou de déployer en production. Découvrez comment définir des variables d'environnement pour plus d'informations.
Le client Twilio
a besoin de vos informations d'identification Twilio. Vous pouvez soit les transmettre directement au constructeur (voir le code ci-dessous) ou via des variables d'environnement.
Authentification avec le jeton SID et AUTH du compte:
from twilio . rest import Client
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client ( account_sid , auth_token )
Authentification avec la clé API et le secret de l'API:
from twilio . rest import Client
api_key = "XXXXXXXXXXXXXXXXX"
api_secret = "YYYYYYYYYYYYYYYYYY"
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
client = Client ( api_key , api_secret , account_sid )
Alternativement, un constructeur Client
sans ces paramètres recherchera les variables TWILIO_ACCOUNT_SID
et TWILIO_AUTH_TOKEN
dans l'environnement actuel.
Nous vous suggérons de stocker vos informations d'identification comme variables d'environnement. Pourquoi? Vous n'aurez jamais à vous soucier de commettre vos informations d'identification et de les publier accidentellement dans un endroit public.
from twilio . rest import Client
client = Client ()
Pour profiter de l'infrastructure mondiale de Twilio, spécifiez la région cible et / ou le bord pour le client:
from twilio . rest import Client
client = Client ( region = 'au1' , edge = 'sydney' )
Un constructeur Client
sans ces paramètres recherchera également des variables TWILIO_REGION
et TWILIO_EDGE
dans l'environnement actuel.
Alternativement, vous pouvez spécifier le bord et / ou la région après la construction du client Twilio:
from twilio . rest import Client
client = Client ()
client . region = 'au1'
client . edge = 'sydney'
Cela entraînera la transformation hostname
d' api.twilio.com
à api.sydney.au1.twilio.com
.
from twilio . rest import Client
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client ( account_sid , auth_token )
call = client . calls . create ( to = "9991231234" ,
from_ = "9991231234" ,
url = "http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient" )
print ( call . sid )
from twilio . rest import Client
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client ( account_sid , auth_token )
call = client . calls . get ( "CA42ed11f93dc08b952027ffbc406d0868" )
print ( call . to )
La bibliothèque gère automatiquement la pagination pour vous. Les collections, telles que calls
et messages
, ont des méthodes list
et stream
qui paginent sous le capot. Avec 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épandue ( page_size
). La bibliothèque gérera ensuite la tâche pour vous.
list
récupère avec impatience tous les enregistrements et les renvoie comme une liste, tandis que stream
renvoie un itérateur et récupère paresseusement des pages d'enregistrements lorsque vous itérez sur la collection. Vous pouvez également page manuellement à l'aide de la méthode page
.
list
from twilio . rest import Client
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client ( account_sid , auth_token )
for sms in client . messages . list ():
print ( sms . to )
Par défaut, le client Twilio fera des demandes synchrones à l'API Twilio. Pour permettre des demandes asynchrones non bloquantes, nous avons inclus un client HTTP asynchrone facultatif. Lorsqu'elles sont utilisées avec le client et les méthodes d'accompagnement *_async
, les demandes faites à l'API Twilio seront effectuées de manière asynchrone.
from twilio . http . async_http_client import AsyncTwilioHttpClient
from twilio . rest import Client
async def main ():
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
http_client = AsyncTwilioHttpClient ()
client = Client ( account_sid , auth_token , http_client = http_client )
message = await client . messages . create_async ( to = "+12316851234" , from_ = "+15555555555" ,
body = "Hello there!" )
asyncio . run ( main ())
Enregistrez les données de demande et de réponse de l'API à la console:
import logging
client = Client ( account_sid , auth_token )
logging . basicConfig ()
client . http_client . logger . setLevel ( logging . INFO )
Enregistrez les données de demande et de réponse de l'API à un fichier:
import logging
client = Client ( account_sid , auth_token )
logging . basicConfig ( filename = './log.txt' )
client . http_client . logger . setLevel ( logging . INFO )
La version 8.x de twilio-python
exporte une classe d'exception pour vous aider à gérer les exceptions spécifiques aux méthodes Twilio. Pour l'utiliser, importez TwilioRestException
et capture des exceptions comme suit:
from twilio . rest import Client
from twilio . base . exceptions import TwilioRestException
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client ( account_sid , auth_token )
try :
message = client . messages . create ( to = "+12316851234" , from_ = "+15555555555" ,
body = "Hello there!" )
except TwilioRestException as e :
print ( e )
Pour contrôler les appels téléphoniques, votre application doit sortir Twiml.
Utilisez twilio.twiml.Response
pour créer facilement de telles réponses.
from twilio . twiml . voice_response import VoiceResponse
r = VoiceResponse ()
r . say ( "Welcome to twilio!" )
print ( str ( r ))
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< Response >< Say >Welcome to twilio!</ Say ></ Response >
Le Dockerfile
présent dans ce référentiel et son image Docker twilio/twilio-python
respective sont actuellement utilisées par Twilio à des fins de test uniquement.
Si vous avez besoin d'aide pour installer ou utiliser la bibliothèque, veuillez d'abord vérifier le centre d'aide de support Twilio et déposer un billet 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 de nouvelles fonctionnalités ajoutées, allez-y et ouvrez des problèmes ou rédigez des demandes contre ce dépôt!