
Teilen Sie:
Liz Acosta ist Developer Advocate bei Vonage. Ihr Karriereweg von der Filmstudentin über die Marketingspezialistin und die Ingenieurin zur Developer Advocate mag zwar unkonventionell erscheinen, ist aber ziemlich typisch für Developer Relations! Liz liebt Pizza, Pflanzen, Möpse und Python.
Aufbau eines Telefonkonferenzsystems mit Python
Lesedauer: 14 Minuten
In diesem Tutorial lernen Sie, wie Sie ein Telefonkonferenzsystem mit Python unter Verwendung der Vonage Voice API. Ein Konferenzgespräch ist ein einzelnes Telefongespräch, bei dem drei oder mehr Personen miteinander verbunden sind. Konferenzanrufe sind hilfreich, wenn mehr als zwei Personen synchron und unmittelbarer als bei einem Gruppen-Text-Chat kommunizieren müssen. Eine Telefonkonferenz ist nützlich, wenn mehrere Personen in letzter Minute Änderungen an Plänen vornehmen oder eine dringende Gruppenentscheidung treffen müssen.
Am Ende dieses Tutorials werden Sie in der Lage sein, erfolgreich eine Telefonkonferenz mit Vonage, einer Python FastAPI Anwendung und ngrok eine Verbindung von einem lokal gehosteten Server zum öffentlichen Internet zu tunneln.
Dieser Lehrgang ist so aufgebaut, dass er sich an unterschiedliche Lese- und Lernstile anpasst. Jeder Abschnitt ist atomar aufgebaut, Sie können ihn also in der Reihenfolge lesen, die für Sie am besten geeignet ist:
Wie Konferenzgespräche mit der Vonage Voice API funktionieren
Ein kurzer Überblick: Webhooks, Webanwendungen und Tunneling
Wie Konferenzgespräche mit der Vonage Voice API funktionieren
Eine Telefonkonferenz über die Voice API wird ähnlich implementiert wie rempfang eingehender Anrufe. Zusätzlich zur talk Aktion zum Abspielen von Text-to-Speech für den Anrufer verwenden Sie eine conversation Aktion im Vonage-Anrufsteuerungsobjekt (NCCO), um eine Telefonkonferenz zu erstellen. Ein NCCO ist ein JSON-Array, das von der Voice API verwendet wird, um den Ablauf von Sprachanrufen zu steuern. Mit anderen Worten, es handelt sich um Bausteine, mit denen Sie flexible und anspruchsvolle Voice Applications erstellen können. In diesem Tutorial erstellen wir ein NCCO mit dem Talk und Conversation Aktionen, um ein Konferenzgesprächssystem zu erstellen, das einen Anrufer begrüßt und informiert und ihn dann zu einer Konferenzschaltung hinzufügt. Bei diesem Ablauf leitet die erste Person, die die Nummer anruft, die Conversation und die nachfolgenden Anrufer werden hinzugefügt. Weitere Informationen finden Sie in der Voice API Dokumentation.
Ein kurzer Überblick: Webhooks, Webanwendungen und Tunneling
Um dieses Tutorial abzuschließen, werden wir uns auf technische Konzepte und Werkzeuge außerhalb von Vonage stützen, die in anderen Bereichen der Softwareentwicklung hilfreich sein können.
Was ist ein Webhook?
Ein Webhook ist eine Methode, mit der eine webbasierte Anwendung Daten oder Ereignisbenachrichtigungen an eine andere Anwendung weiterleitet und so eine automatische Kommunikation ermöglicht, ohne dass eine Anwendung die andere ständig nach Aktualisierungen fragen muss. Im Allgemeinen bedeutet dies, dass die Interaktion über eine API mit Hilfe einer HTTP-Anfrage über das Web erfolgt. In diesem speziellen Tutorial werden wir einen Webhook verwenden, um Ihre Webanwendung zu benachrichtigen, dass jemand Ihre virtuelle Nummer angerufen hat, und um ein NCCO mit einem talk und conversation Aktion.
Was ist eine Python FastAPI Web Application?
FastAPI ist ein hochleistungsfähiges Web-Framework für die Erstellung HTTP-basierter Service-APIs in Python. Was FastAPI von anderen Python-Web-Frameworks unterscheidet, ist die enge Abstimmung mit Pydanticeiner Datenvalidierungsbibliothek für Python. Diese Kopplung ermöglicht es FastAPI, Daten zu validieren, zu serialisieren und zu deserialisieren. Dies ermöglicht eine deklarative Methode zur Festlegung der Struktur und der Datentypen für eingehende Anfragen wie HTTP-Bodies und ausgehende Antworten. FastAPI generiert außerdem automatisch OpenAPI Spezifikationen. Durch die Kombination all dieser Funktionen eignet sich FastAPI besonders für moderne REST-APIs, die Entwicklung von Microservices und Anwendungen, die Echtzeitfunktionen erfordern.
Was ist Tunnelbau?
In diesem Tutorial werden wir eine Webanwendung erstellen und diese lokal auf Ihrem Rechner ausführen. Da sie lokal ausgeführt wird, kann das öffentliche Internet nicht darauf zugreifen, und wenn auf Ihre Webanwendung nicht zugegriffen werden kann, kann Vonage keine Anfrage an den Webhook stellen. An dieser Stelle kommt das Tunneling ins Spiel. Durch Tunneling werden lokale Server über temporäre oder statische öffentliche URLs dem öffentlichen Internet zugänglich gemacht. ngrok ist eine Softwareplattform, die diesen Dienst anbietet.
Zusammenfassend werden wir eine Python FastAPI-Webanwendung mit einem Webhook erstellen und ngrok verwenden, um Ihre lokale Anwendung über einen Tunnel zu einer öffentlichen URL zugänglich zu machen, damit Vonage tatsächlich an den Webhook senden und eine Telefonkonferenz durchführen kann.
Vonage API-Konto
Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.
In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Rufnummern > Rufnummern kaufen und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht.
Tutorial: Aufbau eines Konferenzgesprächssystems
In diesem Tutorial werden wir FastAPI verwenden, um einen Webhook zu definieren, an den die Voice API eine Anfrage stellen kann, wenn jemand Ihre virtuelle Nummer anruft. Wir werden ngrok verwenden, um den Webhook dem öffentlichen Internet auszusetzen. Und wir werden Vonage verwenden, um eine virtuelle Nummer zu erwerben, sowie die Voice API, um die Telefonkonferenz durchzuführen.
Voraussetzungen
Für die Durchführung dieses Tutorials benötigen Sie Folgendes:
Python 3.8+
Ein ngrok Account und Installation
Zusätzliche Telefonnummern oder Freunde, die an einer Telefonkonferenz teilnehmen können
Tutorial-Einrichtung
Bevor wir mit dem Bau beginnen, sollten wir alles in Ordnung bringen.
Erstellen Sie ein Vonage-Konto und erwerben Sie eine Nummer
Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto und eine virtuelle Rufnummer. Sie können eine Nummer über das Entwickler-Dashboard. Achten Sie darauf, dass Sie eine Nummer mit Ihrer Landesvorwahl und Voice-Funktionen kaufen.
Erstellen Sie einen Account bei ngrok und installieren Sie es
Die Voice API muss in der Lage sein, auf Ihren Webhook zuzugreifen, damit sie Anfragen an ihn stellen kann. Daher muss die Endpunkt-URL über das öffentliche Internet zugänglich sein.
Um das in diesem Tutorial zu tun, werden wir Folgendes verwenden ngrok. Sehen Sie sich unser ngrok-Anleitung um zu erfahren, wie man es installiert und benutzt.
Ein Projektverzeichnis erstellen
Führen Sie in einem Terminalfenster den folgenden Befehl aus, um ein neues Projektverzeichnis zu erstellen, und navigieren Sie dorthin:
Fangen wir an zu bauen!
Nun, da Sie alles vorbereitet haben, können Sie mit dem Bau beginnen.
Im Folgenden finden Sie einen Überblick über die Schritte, die wir zur Durchführung dieses Tutorials unternehmen werden:
Definieren Sie einen Webhook-Endpunkt für eingehende Anrufe und führen Sie Ihre Anwendung aus
Erstellen Sie eine Voice API-Anwendung und verknüpfen Sie Ihre Nummer mit ihr
1. Erstellen und Aktivieren einer virtuellen Python-Umgebung
Virtuelle Python-Umgebungen ermöglichen es Ihnen, Pakete an einem Ort zu installieren, der vom Rest Ihres Systems isoliert ist. Dies hilft, systemweite Unordnung und Konflikte mit verschiedenen Python-Versionen und -Paketen zu vermeiden. Sie können mehr über virtuelle Umgebungen erfahren hier.
Führen Sie in Ihrem Projektverzeichnis die folgenden Befehle aus, um eine virtuelle Umgebung zu erstellen und eine virtuelle Umgebung zu aktivieren:
In der Terminal-Eingabeaufforderung sollte nun folgender Text erscheinen (venv). Um Ihre virtuelle Umgebung zu deaktivieren, führen Sie den deactivate Befehl aus.
2. Abhängigkeiten installieren
Um die Abhängigkeiten, die wir für dieses Tutorial benötigen, zu installieren, führen Sie Folgendes aus:
3. Definieren Sie einen Webhook-Endpunkt für eingehende Anrufe und starten Sie Ihre Anwendung
Erstellen Sie eine Datei namens confcall.py die den folgenden Code enthält:
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]Dieser Code erstellt den /webhooks/answer Endpunkt. Wenn dieser Endpunkt eine Anfrage von der Voice API empfängt, erstellt er eine Iteration durch eine NCCO Liste mit einer Talk und Conversation Aktion. Diese ist verantwortlich für die Text-to-Speech-Sprache, die ein Anrufer hört, wenn er die Nummer wählt, und für das Hinzufügen des Anrufers zur Konferenz (identifiziert durch die VOICE_CONFERENCE_NAME Variable). Weitere Informationen über Konferenzanrufe mit der Voice API finden Sie hier.
Führen Sie in Ihrem Terminalfenster aus:
Dadurch wird ein lokaler Server mit Ihrem Webhook-Endpunkt auf Port 3000 eingerichtet.
4. Machen Sie Ihren Webhook zugänglich
Die Voice API muss in der Lage sein, auf Ihren Webhook zuzugreifen, damit sie Anfragen an ihn stellen kann. Die Endpunkt-URL muss also dem öffentlichen Internet zugänglich gemacht werden. Dafür ist ngrok da.
Führen Sie in einem separaten Terminalfenster aus:
Mit diesem Befehl werden die öffentlichen URLs generiert, zu denen Ihr lokaler Server an Port 3000 tunneln wird. Achten Sie auf die öffentliche Weiterleitungs-URL - sie sollte etwa so aussehen:
Bitte beachten Sie, dass die generierten öffentlichen URLs nicht dauerhaft sind, es sei denn, Sie nutzen eines der kostenpflichtigen Angebote von ngrok. Mit anderen Worten, jedes Mal wenn Sie den ngrok aufrufen, ändern sich die resultierenden URLs und Sie müssen die Konfiguration Ihrer Vonage-Applikation aktualisieren. Um dies zu verhindern, lassen Sie ngrok für die Dauer dieses Tutorials laufen.
5. Erstellen Sie eine Voice API-Anwendung und verknüpfen Sie Ihre Nummer mit ihr
Sie müssen nun eine Voice API-Anwendung erstellen. Die "Anwendung", auf die wir uns hier beziehen, ist nicht dasselbe wie die FastAPI-Webanwendung, für die Sie den Code weiter oben in diesem Lernprogramm geschrieben haben. In diesem speziellen Kontext ist eine Anwendung ein Container für die Konfigurations- und Sicherheitsinformationen, die Sie für die Voice API benötigen.
Erstellen Sie eine Anwendung im Entwickler-Dashboard indem Sie im linken Menü zum Fenster Applications navigieren und auf die Schaltfläche "Neue Anwendung erstellen" klicken. Daraufhin wird das Menü zur Erstellung einer Anwendung geöffnet. Geben Sie Ihrer Anwendung den Namen "confcall", da dies der Name ist, den wir in unserer FastAPI-App angegeben haben.
Schalten Sie im Abschnitt "Fähigkeiten" die Option "Voice" ein, wodurch eine Liste von Textfeldern angezeigt wird. Geben Sie in das Textfeld "Antwort-URL" die öffentliche ngrok-URL ein, die mit dem Webhook geändert wurde, den Sie in Ihrer FastAPI-App definiert haben. Dies sieht dann etwa so aus: https://0a6ec0a950eb.ngrok-free.app/webhooks/answer
Klicken Sie auf die Schaltfläche "Neuen Antrag generieren".
Nachdem Sie Ihren Antrag erstellt haben, können Sie Ihre Nummer mit dem Antrag verknüpfen, indem Sie in der Tabelle der verfügbaren Nummern auf die Schaltfläche "Verknüpfung" klicken.
6. Jetzt probieren Sie es aus!
Rufen Sie die virtuelle Nummer von Vonage an, um eine Telefonkonferenz mit ein paar Freunden oder verschiedenen Telefonnummern zu starten. Sie werden mit dem Text begrüßt, den Sie im Python-Code angegeben haben. Sobald die Telefonkonferenz eingeleitet ist, können andere Personen dieselbe virtuelle Vonage-Nummer anrufen und Sie sollten alle gleichzeitig miteinander telefonieren können.
Und das ist erst der Anfang! Die Voice API bietet viele weitere Optionen für die Verwaltung von Anrufen mit mehreren Teilnehmern, wie z. B. die Möglichkeit, eine moderierte Konferenz zu erstellen, vor Beginn des Anrufs Wartemusik abzuspielen oder bestimmte Teilnehmer stumm zu schalten. Weitere Details finden Sie unter den Links zu unseren Dokumenten und viel Spaß beim Programmieren!
Weitere Lektüre
Haben Sie eine Frage oder möchten Sie etwas mitteilen? Beteiligen Sie sich am Gespräch auf dem Vonage Community Slackund bleiben Sie auf dem Laufenden mit dem Entwickler-Newsletter, folgen Sie uns auf X (früher Twitter), abonnieren Sie unseren YouTube-Kanal für Video-Tutorials, und folgen Sie der Vonage Entwickler-Seite auf LinkedInein Raum für Entwickler, um zu lernen und sich mit der Community zu vernetzen. Bleiben Sie in Verbindung, teilen Sie Ihre Fortschritte und halten Sie sich über die neuesten Nachrichten, Tipps und Veranstaltungen für Entwickler auf dem Laufenden!
Teilen Sie:
Liz Acosta ist Developer Advocate bei Vonage. Ihr Karriereweg von der Filmstudentin über die Marketingspezialistin und die Ingenieurin zur Developer Advocate mag zwar unkonventionell erscheinen, ist aber ziemlich typisch für Developer Relations! Liz liebt Pizza, Pflanzen, Möpse und Python.
