Anforderungen und Überlegungen für anwendungsgehostete Medienbots
Ein von einer Anwendung gehosteter Medienbot benötigt die Microsoft.Graph.Communications.Calls.Media
.NET-Bibliothek, um auf die Audio- und Videomedienströme zuzugreifen. Der Bot muss auf einem lokalen Windows Server-Computer oder einem Windows Server-Gastbetriebssystem (OS) in Azure bereitgestellt werden.
Hinweis
- Die Anleitung zum Entwickeln von Bots für Nachrichten und interaktive Sprachantworten (Interactive Voice Response, IVR) gilt nicht vollumfänglich für das Erstellen von durch Anwendungen gehosteten Medienbots.
- Da sich die Microsoft Real-time Media Platform für Bots in der Entwicklervorschau befindet, können sich die Anleitungen in diesem Dokument ändern.
C# oder .NET und Windows Server für die Entwicklung
Für einen anwendungsgehosteten Medienbot gelten die folgenden Anforderungen:
Der Bot muss mit C# und dem .NET Framework-Standard entwickelt und in Microsoft Azure bereitgestellt werden. Sie können keine C++- oder Node.js-APIs für den Zugriff auf Echtzeitmedien verwenden. .NET Core wird jedoch für einen von der Anwendung gehosteten Medienbot unterstützt, und das SDK bietet Unterstützung für .NET 6.0.
Der Bot kann in einer der folgenden Azure-Dienstumgebungen gehostet werden:
- Cloud-Dienst.
- Service Fabric mit Virtual Machine Scale Sets (VMSS).
- Infrastructure as a Service (IaaS) Virtuelle Maschine (VM).
- Azure Kubernetes Service (AKS).
Der Bot kann nicht als Azure-Webapp bereitgestellt werden.
Der Bot muss auf einer aktuellen Version der
Microsoft.Graph.Communications.Calls.Media
.NET-Bibliothek ausgeführt werden. Der Bot muss entweder die neueste verfügbare Version des NuGet-Pakets verwenden, oder eine Version, die nicht älter als drei Monate ist. Ältere Versionen der Bibliothek sind veraltet und funktionieren nach einigen Monaten nicht mehr. Die Aktualisierung derMicrosoft.Graph.Communications.Calls.Media
Bibliothek stellt die beste Interoperabilität zwischen dem Bot und Microsoft Teams sicher.
Der nächste Abschnitt enthält Einzelheiten darüber, wo sich Echtzeit-Medienaufrufe befinden.
Echtzeit-Medienanrufe bleiben dort, wo sie erstellt werden
Echtzeit-Medienanrufe bleiben auf dem Computer, auf dem sie erstellt wurden. Ein Echtzeit-Medienanruf wird an die Instanz der virtuellen Maschine (VM) angeheftet, die den Anruf angenommen oder gestartet hat. Medien aus einem Teams-Anruf oder einer Besprechung fließen an diese VM-Instanz, und Medien, die der Bot an Teams zurücksendet, müssen ebenfalls von dieser VM stammen. Wenn beim Stoppen der VM Echtzeit-Medienaufrufe ausgeführt werden, werden diese Aufrufe abrupt beendet. Wenn der Bot Vorkenntnisse über das bevorstehende Herunterfahren der VM hat, kann er die Anrufe beenden.
Der nächste Abschnitt enthält Details zur Zugänglichkeit von anwendungsgehosteten Medien-Bots.
Anwendungsgehostete Medien-Bots, auf die über das Internet zugegriffen werden kann
Von der Anwendung gehostete Medien-Bots müssen direkt im Internet zugänglich sein. Diese Bots müssen die folgenden Funktionen enthalten:
Auf jede VM-Instanz, die einen von der Anwendung gehosteten Medienbot in Azure hostet, muss direkt über das Internet mit einer öffentlichen IP-Adresse (ILPIP) auf Instanzebene zugegriffen werden können.
- Informationen zum Abrufen und Konfigurieren eines ILPIP für einen Azure Cloud-Dienst finden Sie unter Klassische Übersicht über öffentliche IP-Adressen auf Instanzebene.
- Informationen zum Konfigurieren eines ILPIP für eine VM-Skalierungsgruppe finden Sie unter öffentliches IPv4 pro virtuellem Computer.
Der Dienst, der einen von einer Anwendung gehosteten Medienbot hostet, muss außerdem jede VM-Instanz mit einem öffentlich zugänglichen Port konfigurieren, welcher der jeweiligen Instanz zugeordnet ist.
- Für einen Azure Cloud Service erfordert dies einen Instanzeingabeendpunkt. Weitere Informationen finden Sie unter Aktivieren der Kommunikation für Rolleninstanzen in Azure.
- Für eine VM-Skalierungsgruppe muss eine NAT-Regel auf dem Load Balancer konfiguriert werden. Weitere Informationen finden Sie unter virtuelle Netzwerke und virtuelle Computer in Azure.
Der Bot Framework-Emulator unterstützt keine anwendungsgehosteten Medienbots.
Der nächste Abschnitt enthält Details zu Skalierbarkeits- und Leistungsüberlegungen von anwendungsgehosteten Medien-Bots.
Überlegungen zu Skalierbarkeit und Leistung
Die von der Anwendung gehosteten Medien-Bots erfordern die folgenden Skalierbarkeits- und Leistungsüberlegungen:
- Anwendungsgehostete Medienbots erfordern mehr Compute- und Netzwerkkapazität (Bandbreite) als Messaging-Bots und können höhere Betriebskosten verursachen. Ein Echtzeit-Media-Bot-Entwickler muss die Skalierbarkeit des Bots sorgfältig messen und sicherstellen, dass der Bot nicht mehr gleichzeitige Anrufe akzeptiert, als er bewältigen kann. Ein videofähiger Bot kann möglicherweise nur eine oder zwei gleichzeitige Mediensitzungen pro CPU-Kern aufrechterhalten (bei Verwendung der „rohen“ RGB24- oder NV12-Videoformate).
- Die Echtzeitmedienplattform nutzt keine auf dem virtuellen Computer verfügbaren Gpus (Graphics Processing Units), um die H.264-Videocodierung/-decodierung auszuschalten. Stattdessen werden Videocodierung und -decodierung in Software auf der CPU durchgeführt. Wenn eine GPU verfügbar ist, kann der Bot diese zum Beispiel für sein eigenes Grafik-Rendering nutzen, wenn der Bot eine 3D-Grafik-Engine verwendet.
- Die VM-Instanz, die den Echtzeit-Medienbot hostet, muss über mindestens zwei CPU-Kerne verfügen. Für Azure wird ein virtueller Computer der Dv2-Serie empfohlen. Für andere Azure-VM-Typen ist ein System mit vier virtuellen CPUs (vCPU) die erforderliche Mindestgröße. Ausführliche Informationen zu Azure-VM-Typen finden Sie in der Azure-Dokumentation.
Codebeispiel
Beispiele für von der Anwendung gehostete Medien-Bots lauten wie folgt:
Beispielname | Beschreibung | Graph |
---|---|---|
Lokale Medienprobe | Beispiel, das verschiedene lokale Medienszenarien veranschaulicht. | Anzeigen |
Remote-Medienbeispiel | Beispiel, das verschiedene Remotemedienszenarien veranschaulicht. | View |
Nächster Schritt
Siehe auch
Platform Docs