
Partager:
Liz Acosta est conseillère en développement chez Vonage. Si son parcours professionnel, d'étudiante en cinéma à spécialiste du marketing, puis ingénieur et enfin défenseur des développeurs, peut sembler peu conventionnel, il est tout à fait typique des relations avec les développeurs ! Liz aime les pizzas, les plantes, les carlins et Python.
Construire un système de conférence téléphonique avec Python
Temps de lecture : 15 minutes
Dans ce tutoriel, vous apprendrez à construire un système de conférence téléphonique avec Python en utilisant l Voice API de Vonage. Une conférence téléphonique est un appel téléphonique unique au cours duquel trois personnes ou plus sont connectées. Les conférences téléphoniques sont utiles lorsque plus de deux personnes ont besoin de communiquer de manière synchrone et plus immédiate qu'un chat textuel de groupe. Une conférence téléphonique est utile lorsque plusieurs personnes doivent modifier des plans à la dernière minute ou prendre une décision urgente en groupe.
À la fin de ce tutoriel, vous serez en mesure de mettre en œuvre avec succès une conférence téléphonique à l'aide de Vonage, une interface Python FastAPI de Python et ngrok pour tunneliser une connexion depuis un serveur hébergé localement vers l'internet public.
Ce tutoriel est structuré de manière à s'adapter à différents styles de lecture et d'apprentissage. Chaque section étant atomique, n'hésitez pas à la lire dans l'ordre qui vous convient le mieux :
Comment les conférences téléphoniques fonctionnent avec l'API Voice de Vonage
Une conférence téléphonique utilisant l'API Voice est mise en œuvre de manière similaire à réception des appels entrants. En plus de l'action talk pour diffuser la synthèse vocale à l'appelant, vous utiliserez une action conversation dans l'objet de contrôle des appels de Objet de contrôle des appels de Vonage (NCCO) pour créer une conférence téléphonique. Un NCCO est un tableau JSON utilisé par la Voice API pour dicter le flux des appels vocaux. En d'autres termes, il s'agit de blocs de construction que vous pouvez utiliser pour construire des applications vocales flexibles et sophistiquées. Dans ce tutoriel, nous créons un NCCO à l'aide des commandes Talk et Conversation pour produire un système de conférence téléphonique qui accueille et informe un appelant, puis l'ajoute à une conférence téléphonique. Avec ce flux, la première personne à appeler le numéro initie l'action Conversation et les appelants suivants sont ajoutés à la conférence. Pour en savoir plus, consultez la section Voice API Voice API.
Un bref aperçu : Webhooks, Web Apps et Tunneling
Pour mener à bien ce tutoriel, nous nous appuierons sur des concepts techniques et des outils extérieurs à Vonage qui peuvent être utiles dans d'autres domaines du développement logiciel.
Qu'est-ce qu'un Webhook ?
Un webhook est la manière dont une application web transmet des données ou des notifications d'événements à une autre application de ce type, ce qui permet une communication automatique au lieu qu'une application doive constamment interroger l'autre pour obtenir des mises à jour. En général, il s'agit d'interagir sur le web via une API à l'aide d'une requête HTTP. Dans ce tutoriel particulier, nous utiliserons un webhook pour notifier à votre application web que quelqu'un a appelé votre numéro virtuel et pour renvoyer un NCCO avec une balise talk et conversation l'action.
Qu'est-ce qu'une application Web Python FastAPI ?
FastAPI est un framework web de haute performance pour la construction d'API de services basés sur HTTP en Python. Ce qui différencie FastAPI des autres frameworks web Python, c'est son alignement étroit avec Pydanticune bibliothèque de validation de données pour Python. Ce couplage permet à FastAPI de valider, sérialiser et désérialiser les données. Cela fournit une méthode plus déclarative pour spécifier la structure et les types de données pour les requêtes entrantes telles que les corps HTTP et les réponses sortantes. FastAPI génère également automatiquement des fichiers OpenAPI automatiquement. Toutes ces caractéristiques combinées le rendent particulièrement adapté aux API REST modernes, au développement de microservices et aux applications qui nécessitent des fonctionnalités en temps réel.
Qu'est-ce qu'un tunnel ?
Dans ce tutoriel, nous allons créer une application web et l'exécuter localement sur votre machine. Comme elle sera exécutée localement, elle ne pourra pas être accédée par l'Internet public, et si votre application Web ne peut pas être accédée, alors Vonage ne pourra pas faire de demande au webhook. C'est là que le tunneling entre en jeu. Le tunneling expose les serveurs locaux à l'internet public par le biais d'URL publiques temporaires ou statiques. ngrok est une plateforme logicielle qui fournit ce service.
En résumé, nous allons créer une application web FastAPI Python avec un webhook et utiliser ngrok pour rendre votre application locale accessible via un tunnel vers une URL publique afin que Vonage puisse réellement envoyer un message au webhook et organiser une conférence téléphonique.
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Tutoriel : Construire un système de conférence téléphonique
Dans ce tutoriel, nous utiliserons FastAPI pour définir un webhook auquel l'API Voice peut adresser une requête lorsque quelqu'un appelle votre numéro virtuel. Nous utiliserons ngrok pour exposer le webhook à l'internet public. Et nous utiliserons Vonage pour acheter un numéro virtuel ainsi que l'API Voice pour terminer la conférence téléphonique.
Conditions préalables
Pour réaliser ce tutoriel, vous aurez besoin des éléments suivants :
Python 3.8+
Un Un Account ngrok et l'installation
Numéros de téléphone supplémentaires ou amis pour participer à une conférence téléphonique
Mise en place du tutoriel
Avant de commencer à construire, mettons tout en ordre.
Créez un compte Vonage et achetez un numéro.
Pour compléter ce tutoriel, vous aurez besoin d'un Compte API Vonage et d'un numéro de téléphone virtuel. Vous pouvez acheter un numéro à partir du tableau de bord du développeur. Assurez-vous d'acheter un numéro dans votre code de pays et avec des fonctionnalités Voice.
Créer un Account avec ngrok et l'installer
L'API Voice doit pouvoir accéder à votre webhook afin de pouvoir lui adresser des requêtes. L'URL du point de terminaison doit donc être accessible sur l'internet public.
Pour ce faire, nous utiliserons dans ce tutoriel le logiciel ngrok. Consultez notre tutoriel ngrok pour apprendre à l'installer et à l'utiliser.
Créer un répertoire de projet
Dans une fenêtre de terminal, exécutez la commande suivante pour créer un nouveau répertoire de projet et y naviguer :
Commençons à construire !
Maintenant que tout est prêt, il est temps de commencer à construire.
Voici un aperçu des étapes que nous suivrons pour réaliser ce tutoriel :
1. Créer et activer un environnement virtuel Python
Les environnements virtuels Python vous permettent d'installer des paquets dans un endroit isolé du reste de votre système. Cela permet d'éviter l'encombrement du système et les conflits avec les différentes versions de Python et les différents paquets. Pour en savoir plus sur les environnements virtuels ici.
Dans le répertoire de votre projet, exécutez les commandes suivantes pour créer et activer un environnement virtuel :
Vous devriez maintenant voir l'invite de votre terminal préfacée par (venv). Pour désactiver votre environnement virtuel, exécutez la commande deactivate pour désactiver votre environnement virtuel.
2. Installer les dépendances
Afin d'installer les dépendances dont nous avons besoin pour ce tutoriel, exécutez ce qui suit :
3. Définissez un point de terminaison webhook pour les appels entrants et exécutez votre application.
Créez un fichier appelé confcall.py qui contient le code suivant :
import os
from fastapi import FastAPI
from vonage_voice import Conversation, NccoAction, Talk
VOICE_CONFERENCE_NAME = “confcall”
app = FastAPI()
@app.get('/webhooks/answer')
async def answer_call():
ncco: list[NccoAction] = [Talk(text="Please wait while we connect you to the conference"), Conversation(name=VOICE_CONFERENCE_NAME),]
return [action.model_dump(by_alias=True, exclude_none=True) for action in ncco]Ce code crée le /webhooks/answer . Lorsque ce point d'accès reçoit une requête de l'API Voice, il crée et itère à travers un fichier NCCO à l'aide d'un Talk et Conversation action. C'est ce qui est responsable de la synthèse vocale que l'appelant entend lorsqu'il compose le numéro, puis de l'ajout de l'appelant à la conférence (identifiée par la variable VOICE_CONFERENCE_NAME ). Pour en savoir plus sur l'organisation de conférences téléphoniques avec la Voice API ici.
Dans votre fenêtre de terminal, exécutez :
Cette opération permet d'établir un serveur local avec votre point de terminaison webhook sur le port 3000.
4. Rendre votre webhook accessible
L'API Voice doit pouvoir accéder à votre webhook afin de pouvoir lui adresser des requêtes. L'URL du point de terminaison doit donc être exposée à l'internet public. C'est à cela que sert ngrok.
Dans une fenêtre de terminal séparée, exécutez :
Cette commande génère les URLs publiques vers lesquelles votre serveur local se connectera sur le port 3000. Prenez note de l'URL de redirection publique - elle devrait ressembler à ceci :
Veuillez noter qu'à moins que vous n'utilisiez l'un des plans payants de ngrok, les URL publiques générées ne sont pas persistantes. En d'autres termes, chaque fois que vous exécutez la commande ngrok les URLs résultantes changeront et vous devrez mettre à jour la configuration de votre application Vonage. Pour éviter cela, laissez ngrok en marche pendant toute la durée de ce tutoriel.
5. Créez une application Voice API et associez-y votre numéro.
Vous devez maintenant créer une application Voice API. L'"application" à laquelle nous faisons référence ici n'est pas la même que l'application web FastAPI pour laquelle vous avez écrit le code plus tôt dans ce tutoriel. Dans ce contexte particulier, une application est un conteneur pour les informations de configuration et de sécurité dont vous avez besoin pour l'API Voice.
Créer une dans le tableau de bord du développeur en accédant à la fenêtre Applications dans le menu de gauche et en cliquant sur le bouton "Créer une nouvelle application". Le menu de création de l'application s'ouvre alors. Donnez à votre application le nom "confcall" puisque c'est le nom que nous avons fourni dans notre application FastAPI.
Dans la section Capacités, cochez l'option Voice, ce qui fait apparaître une liste de champs de texte. Dans le champ de texte intitulé "Answer URL", indiquez l'URL publique ngrok modifiée avec le webhook que vous avez défini dans votre application FastAPI. Cela ressemblera à quelque chose comme ceci : https://0a6ec0a950eb.ngrok-free.app/webhooks/answer
Cliquez sur le bouton "Générer une nouvelle application".
Maintenant que votre application a été créée, vous pouvez y associer votre numéro en cliquant sur le bouton "Associer" dans le tableau des numéros disponibles.
6. Essayez maintenant !
Avec quelques amis ou quelques numéros de téléphone différents, lancez la conférence téléphonique en appelant le numéro virtuel de Vonage. Vous serez accueilli par le texte que vous avez fourni dans le code Python. Une fois la conférence téléphonique lancée, d'autres personnes peuvent appeler le même numéro virtuel Vonage et vous devriez tous pouvoir vous parler en même temps sur le même appel.
Et ce n'est que le début ! L'API Voice offre de nombreuses autres options pour gérer un appel à plusieurs participants, comme la possibilité de créer une conférence avec modérateur, de diffuser une musique d'attente avant le début de l'appel ou de mettre certains participants en sourdine. Consultez les liens vers nos documents ci-dessous pour plus de détails et bon codage !
Pour en savoir plus
Vous avez une question ou souhaitez partager ce que vous construisez ?
Rejoignez la conversation sur le Communauté Vonage Slack
S'abonner à la Bulletin d'information du développeur
Suivez-nous sur X (anciennement Twitter) pour les mises à jour
Regardez les tutoriels sur notre chaîne YouTube
Connectez-vous avec nous sur la page Vonage Developer sur LinkedIn
Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.
Partager:
Liz Acosta est conseillère en développement chez Vonage. Si son parcours professionnel, d'étudiante en cinéma à spécialiste du marketing, puis ingénieur et enfin défenseur des développeurs, peut sembler peu conventionnel, il est tout à fait typique des relations avec les développeurs ! Liz aime les pizzas, les plantes, les carlins et Python.
