Python >> Tutoriel Python >  >> Python

Comment passer des appels téléphoniques en Python

Les bons appels téléphoniques à l'ancienne restent l'une des meilleures formes de communication malgré la multitude de nouvelles applications pour smartphones qui ont fait leur apparition au cours des dernières années. Avec seulement quelques lignes de code Python et une interface de programmation d'applications Web, nous pouvons passer et recevoir des appels téléphoniques depuis n'importe quelle application.

Nos exemples d'appels diront un extrait de texte et mettront tous les appelants entrants dans une conférence téléphonique enregistrée. Vous pouvez modifier les instructions à l'aide des verbes TwiML de Twilio lorsque vous effectuez différentes actions dans les appels téléphoniques de votre propre application.

Nos outils

Vous devez avoir installé Python 2 ou 3 pour créer cette application. Tout au long de l'article, nous utiliserons également :

  • pip et virtualenv pour gérer les dépendances des applications
  • Un compte Twilio gratuit pour utiliser leur API Web d'appel téléphonique
  • Bibliothèque d'assistance Python de Twilio, version 5.7.0, disponible sur PyPI

Vous pouvez récupérer tout le code open source de ce didacticiel dans le référentiel python-twilio-example-appsGitHub sous le répertoire no-framework/phone-calls. Utilisez et copiez le code pour vos propres applications. Tout ce qui se trouve dans ce référentiel et dans ce billet de blog est open source sous licence MIT.

Installer les dépendances d'application

Notre application utilisera la bibliothèque d'assistance TwilioPython pour créer une requête HTTP POST à ​​l'API de Twilio. La bibliothèque d'assistance Twilio peut être installée à partir de PyPI dans un environnement virtuel. Ouvrez votre terminal et utilisez le virtualenv commande pour créer un nouvel environnement virtuel :

virtualenv phoneapp

Appelez le activate script dans le virtualenv bin/ répertoire pour faire de cet environnement virtuel l'exécutable Python actif. Notez que vous devrez effectuer cette étape dans chaque fenêtre de terminal où vous souhaitez que l'environnement virtuel soit actif.

source phoneapp/bin/activate

L'invite de commande changera après l'activation du virtualenvto quelque chose comme (phoneapp) $ .

Utilisez ensuite le pip commande pour installer le package Twilio Python dans l'environnement virtuel.

pip install twilio==5.7.0

Nous aurons la dépendance requise prête pour le projet dès que le script d'installation sera terminé. Nous pouvons maintenant écrire et exécuter du code Python pour composer des numéros de téléphone.

Notre script Python

Créez un nouveau fichier nommé phone_calls.py et copiez ou saisissez les lignes de code suivantes.

from twilio.rest import TwilioRestClient


# Twilio phone number goes here. Grab one at https://twilio.com/try-twilio
# and use the E.164 format, for example: "+12025551234"
TWILIO_PHONE_NUMBER = ""

# list of one or more phone numbers to dial, in "+19732644210" format
DIAL_NUMBERS = ["",]

# URL location of TwiML instructions for how to handle the phone call
TWIML_INSTRUCTIONS_URL = \
  "http://static.fullstackpython.com/phone-calls-python.xml"

# replace the placeholder values with your Account SID and Auth Token
# found on the Twilio Console: https://www.twilio.com/console
client = TwilioRestClient("ACxxxxxxxxxx", "yyyyyyyyyy")


def dial_numbers(numbers_list):
    """Dials one or more phone numbers from a Twilio phone number."""
    for number in numbers_list:
        print("Dialing " + number)
        # set the method to "GET" from default POST because Amazon S3 only
        # serves GET requests on files. Typically POST would be used for apps
        client.calls.create(to=number, from_=TWILIO_PHONE_NUMBER,
                            url=TWIML_INSTRUCTIONS_URL, method="GET")


if __name__ == "__main__":
    dial_numbers(DIAL_NUMBERS)

Il y a quelques lignes que vous devez modifier dans cette application avant qu'elle ne s'exécute. Tout d'abord, insérez un ou plusieurs numéros de téléphone que vous souhaitez composer dans la liste DIAL_NUMBERS. Chacun doit être une chaîne, séparée par une virgule. Par exemple, DIAL_NUMBERS = ["+12025551234", "+14155559876", "+19735551234"] .

Ensuite, TWILIO_PHONE_NUMBER et le SID du compte et le jeton d'authentification, trouvés sur le client = TwilioRestClient("ACxxxxxxxxxx", "yyyyyyyyyy") ligne, doit être défini. Nous pouvons obtenir ces valeurs à partir de la console Twilio.

Dans votre navigateur Web, accédez au site Web Twilio et créez un compte gratuit ou connectez-vous à votre compte Twilio existant.

Copiez le SID du compte et le jeton d'authentification depuis la console Twilio et collez-les dans le code de votre application :

Le compte d'essai Twilio vous permet de composer et de recevoir des appels téléphoniques vers votre propre numéro de téléphone validé. Pour gérer les appels de n'importe quel numéro de téléphone, vous devez mettre à niveau votre compte (appuyez sur le bouton de mise à niveau dans la barre de navigation supérieure).

Une fois connecté à votre compte Twilio, accédez à l'écran de gestion des numéros de téléphone. Sur cet écran, vous pouvez acheter un ou plusieurs numéros de téléphone ou cliquer sur un numéro de téléphone existant dans votre compte pour le configurer.

Après avoir cliqué sur un numéro, vous arriverez à l'écran de configuration du numéro de téléphone. Collez l'URL avec les instructions TwiML et modifiez la liste déroulante de "HTTP POST" à "HTTP GET". Dans cet article, nous utiliserons http://static.fullstackpython.com/phone-calls-python.xml , mais cette URL peut être plus qu'un simple fichier XML statique.

La puissance de Twilio apparaît vraiment lorsque cette URL est gérée par votre application Web afin qu'elle puisse répondre dynamiquement avec des instructions TwiML basées sur le numéro de l'appelant entrant ou d'autres propriétés stockées dans votre base de données.

Sous le webhook Voice, collez http://static.fullstackpython.com/phone-calls-python.xml et changez le menu déroulant vers la droite de "HTTP POST" à "HTTP GET". Cliquez sur le bouton "Enregistrer" en bas de l'écran.

Essayez maintenant d'appeler votre numéro de téléphone. Vous devriez entendre l'extrait de texte lu par la voix d'Alice, puis vous serez placé dans une conférence téléphonique. Si personne d'autre n'appelle le numéro, la musique d'attente devrait jouer.

Passer des appels téléphoniques

Nous venons de gérer les appels téléphoniques entrants vers notre numéro de téléphone. Il est maintenant temps de composer les appels téléphoniques sortants. Assurez-vous que votre phone_calls.py le fichier est enregistré et que votre virtualenv est toujours activé puis exécutez le script :

python phone_calls.py

En un instant tous les numéros de téléphone que vous écrivez dans le DIAL_NUMBERS la liste devrait s'allumer avec les appels. Toute personne qui répond entendra notre message lu par la voix "Alice", puis ils seront placés ensemble dans une conférence téléphonique enregistrée, tout comme lorsque quelqu'un compose le numéro.

Voici mon appel téléphonique entrant :

Pas mal pour quelques lignes de code Python !

Étapes suivantes

Maintenant que nous savons comment passer et recevoir des appels téléphoniques à partir d'un numéro Twilio qui suit les instructions de programmation, nous pouvons faire beaucoup plus dans nos applications. Ensuite, vous pouvez utiliser l'un de ces tutoriels pour en faire plus avec votre numéro de téléphone :

  • Créer un bot Slack pour les appels téléphoniques
  • Masquer les numéros de téléphone pour les communications anonymes
  • Ajouter le suivi des appels pour afficher les statistiques des appels téléphoniques

Des questions? Contactez-moi via Twitter@fullstackpythonor @mattmakai. Je suis aussi sur GitHub asmattmakai.

Vous voyez quelque chose qui ne va pas dans ce message ? La source de cette page sur GitHuband soumet une pull request.