.NET Server SDK
Das Vonage-Video .NET SDK bietet Methoden für:
- Erzeugen von Sitzungen und Token für Vonage Video Anwendungen, die auf der .NET-Plattform laufen. Das SDK bietet auch Unterstützung für die Arbeit mit Vonage Video-Archiv.
- Vonage Video Applications, die auf der .NET-Plattform laufen
- Arbeiten mit Vonage Video-Archiv
- Arbeiten mit Vonage Video Live-Streaming-Übertragungen
- Arbeiten mit Vonage Video-SIP-Zusammenschaltung
- Senden von Signalen an Clients, die mit einer Sitzung verbunden sind
- Trennen von Kunden von Sitzungen
- Erzwingen, dass Clients in einer Sitzung die Verbindung unterbrechen oder das veröffentlichte Audio stummschalten
Einrichtung
NuGet (empfohlen):
Suchen Sie entweder in Ihrem Paketmanager nach "Vonage", oder führen Sie den folgenden Befehl mit der Option Paketmanager-Konsole:
PM> Install-Package Vonage
Oder ein Terminal:
dotnet add package Vonage
Verwendung
Initialisierung
Die Vonage-Pakete verwenden ein JWT für die Autorisierung. Das SDK übernimmt die JWT-Generierung im Hintergrund für Sie, benötigt aber eine ApplicationId und PrivateKey als Anmeldeinformationen, um das Token zu erzeugen.
Diese Anmeldedaten sollten in den Projekteinstellungen gespeichert werden. Werfen Sie einen Blick auf die Konfiguration Abschnitt erfahren Sie, wie Sie das einrichten können.
Dann können Sie alle Abhängigkeiten für das .NET SDK mit der folgenden Erweiterung registrieren:
// For 'Scoped' lifecycle
builder.Services.AddVonageClientScoped(builder.Configuration);
// Foor 'Transient' lifecycle
builder.Services.AddVonageClientTransient(builder.Configuration);
Dies ermöglicht es Ihnen, einen beliebigen Client in Ihre Komponenten zu injizieren, wie z.B.:
public CustomerController(IVideoClient client) {}
// or
public CustomerController(VonageClient client) {}
Andernfalls ist es immer noch möglich, den gesamten Client manuell zu instanziieren. Dazu müssen Sie sowohl ApplicationId und PrivateKey in Variablen, und erstellen Sie eine Credentials Artikel.
using Vonage;
using Vonage.Request;
...
var credentials = Credentials.FromAppIdAndPrivateKeyPath(applicationId, privateKeyPath);
var client = new VonageClient(credentials).VideoClient;
Der Video-Client stellt verschiedene Funktionalitäten unserer Video APIs zur Verfügung.
Umgang mit Videoergebnissen
Jede Methode gibt die Antwort in Form einer Result<T> Monade, wobei T ist der Typ der Antwort.
Er enthält entweder einen Erfolgsstatus (T), wenn der Vorgang erfolgreich war, oder einen Fehlerstatus (IResultFailure), wenn etwas schief gelaufen ist.
Der Fehler enthält eine Fehlermeldung und kann in die entsprechende Ausnahme umgewandelt werden. Er kann jede Art von Problem darstellen:
- ungültige Anfrage
- fehlgeschlagene Authentifizierung
- gescheiterte Anfrage
- fehlgeschlagene Daten-Deserialisierung
- usw.
Sie können verwenden .Match() um Methoden für beide Zustände bereitzustellen, oder Sie können die .GetSuccessUnsafe um die Antwort zu erhalten und eine Ausnahme abzufangen, wenn der Prozess fehlgeschlagen ist.
Sie enthält auch andere Methoden zur Manipulation, Umwandlung und Extraktion des zugrunde liegenden Ergebnisses.
Details und Erklärungen zum Modus auf der Repository.
Sitzungen erstellen
Um eine Vonage-Videositzung zu erstellen, rufen Sie die Nummer des Kunden an. VideoClient.SessionClient.CreateSessionAsync(CreateSessionRequest)Methode.
Sie können eine default Anfrage mit allen Standardwerten, oder erstellen Sie eine benutzerdefinierte Anfrage mit der .Build() Methode.
locationIPv4-Adresse: Eine IPv4-Adresse, die als Hinweis auf den Standort verwendet wird. (Standard:string.empty)MediaMode: Gibt an, ob die Sitzung die Vonage Video-Media-Router) (MediaMode.ROUTED) oder versuchen, Streams direkt zwischen Clients zu übertragen (MediaMode.RELAYED, die Standardeinstellung). Eine geroutete Sitzung ist erforderlich für einige Vonage Video-Funktionen (z. B. Archivierung) erforderlich.ArchiveModeArchiveMode.ALWAYS: Gibt an, ob die Sitzung automatisch archiviert wird (ArchiveMode.ALWAYS) oder nicht (ArchiveMode.MANUAL, Voreinstellung)
Der Rückgabewert ist ein Result<CreateSessionResponse> Objekt.
// Create a session that will attempt to transmit streams directly between clients
Result<CreateSessionRequest> request = CreateSessionRequest.Default;
// Or create a custom request
Result<CreateSessionRequest> request = CreateSessionRequest.Build()
.WithLocation("192.168.1.1")
.WithMediaMode(MediaMode.Routed)
.WithArchiveMode(ArchiveMode.Always)
.Create();
// Send the request to the API
Result<CreateSessionResponse> response = await client.SessionClient.CreateSessionAsync(request);
Token generieren
Sobald eine Sitzung erstellt ist, können Sie damit beginnen, Token zu erzeugen, die die Clients bei der Verbindung mit der Sitzung verwenden können. Sie können ein Token erzeugen, indem Sie die Funktion GenerateToken Methode.
var generator = services.GetRequiredService<IVideoTokenGenerator>();
var credentials = ...
var claims = TokenAdditionalClaims.Parse(sessionId);
var token = generator.GenerateToken(credentials, claims)
Arbeiten mit Archiven
Sie können nur Sitzungen archivieren, die den Vonage Video Media Router verwenden (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist).
Erstellen eines Archivs
Sie können die Aufzeichnung einer Vonage-Videositzung starten
über VideoClient.ArchiveClient.CreateArchiveAsync(CreateSessionRequest) Methode.
Der Rückgabewert ist ein Result<CreateArchiveRequest> Objekt.
Beachten Sie, dass Sie ein Archiv nur in einer Sitzung starten können, mit der Clients verbunden sind.
// Creates an archive with default values.
Result<CreateArchiveRequest> request = CreateArchiveRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.Create();
// Or use any optional value on the builder.
Result<CreateArchiveRequest> request = CreateArchiveRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithName("Archive Name")
.WithRenderResolution(RenderResolution.FullHighDefinitionLandscape)
.WithArchiveLayout(new Layout(LayoutType.BestFit, string.Empty, LayoutType.Pip))
.WithOutputMode(OutputMode.Composed)
.WithStreamMode(StreamMode.Auto)
.DisableAudio()
.DisableVideo()
.Create();
// Send the request to the API
Result<Archive> response = await client.ArchiveClient.CreateArchiveAsync(request);
Hier finden Sie alle Methoden, die Sie für den Builder verwenden können:
WithNameermöglicht es Ihnen, einen Namen für das Archiv hinzuzufügen (zur Identifizierung).DisableVideokönnen Sie die Videoaufzeichnung deaktivieren.DisableAudiokönnen Sie die Audioaufnahme deaktivieren.WithResolutionkönnen Sie die Auflösung der Aufnahme einstellen. Bitte beachten Sie, dass Sie nicht festlegen können dieresolutionwenn Sie dieoutputModeParameter zuOutputMode.INDIVIDUAL.WithOutputModekönnen Sie den Ausgabemodus für den Stream festlegen. Standardmäßig werden alle Streams in einer einzigen ( zusammengesetzte) Datei aufgezeichnet. Sie können die verschiedenen Streams in der Sitzung in einzelnen Dateien aufzeichnen (anstelle einer einzigen zusammengesetzten Datei) aufzeichnen, indem SieOutputMode.INDIVIDUAL.WithStreamModekönnen Sie angeben, ob Streams automatisch oder manuell ausgewählt werden sollen.
Anhalten eines Archivs
Sie können die Aufzeichnung eines gestarteten Archivs stoppen, indem Sie
den Link VideoClient.ArchiveClient.StopArchiveAsync(StopArchiveRequest) Methode.
Result<StopArchiveRequest> request = StopArchiveRequest.Build()
.WithApplicationId(applicationId)
.WithArchiveId(archiveId)
.Create();
Result<Archive> response = await client.ArchiveClient.StopArchiveAsync(request);
Abrufen eines Archivs
Sie können eine Archivemit all seinen Informationen, unter Verwendung
die VideoClient.ArchiveClient.GetArchiveAsync(GetArchiveRequest) Methode.
var request = GetArchiveRequest.Build()
.WithApplicationId(applicationId)
.WithArchiveId(archiveId)
.Create();
Result<Archive> response = await client.ArchiveClient.GetArchiveAsync(request);
Löschen eines Archivs
Sie können ein Archiv löschen, indem Sie die VideoClient.ArchiveClient.DeleteArchiveAsync(DeleteArchiveRequest) Methode.
var request = DeleteArchiveRequest.Build()
.WithApplicationId(applicationId)
.WithArchiveId(archiveId)
.Create();
Result<Unit> response = await client.ArchiveClient.DeleteArchiveAsync(request);
Abrufen aller Archive
Sie können eine Liste aller von Ihnen erstellten Archive (bis zu 1000 Archive) abrufen, indem Sie
die Seite VideoClient.ArchiveClient.GetArchivesAsync(GetArchivesRequest) Methode.
Diese Anfrage unterstützt die Paginierung mit WithCount und WithOffset über den Erbauer.
// Get a list with the first 1000 archives
var request = GetArchivesRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.Create();
// Get the first 50 archives
var request = GetArchivesRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithCount(50)
.Create();
// Get the next 50 archives
var request = GetArchivesRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithCount(50)
.WithOffset(50)
.Create();
Result<GetArchivesResponse> response = await client.ArchiveClient.GetArchivesAsync(request);
Arbeiten mit Strömen
Abrufen eines Streams
Sie können eine Streammit all seinen Informationen, unter Verwendung
die VideoClient.SessionClient.GetStreamAsync(GetStreamRequest) Methode.
var request = GetStreamRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithStreamId(streamId)
.Create();
Result<GetStreamResponse> response = await client.SessionClient.GetStreamAsync(request);
Abrufen aller Streams
Sie können alle Streams in einer Sitzung abrufen, indem Sie die VideoClient.SessionClient.GetStreamsAsync(GetStreamsRequest)
Methode.
var request = GetStreamsRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.Create();
Result<GetStreamsResponse> response = await client.SessionClient.GetStreamsAsync(request);
Trennen der Verbindung erzwingen
Ihr Anwendungsserver kann die Verbindung eines Clients zu einer Vonage Video-Sitzung mithilfe von
die VideoClient.ModerationClient.DisconnectConnectionAsync(DisconnectConnectionRequest) Methode.
var request = DisconnectConnectionRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithConnectionId(connectionId)
.Create();
Result<Unit> response = await client.ModerationClient.DisconnectConnectionAsync(request);
Senden von Signalen
Sobald eine Sitzung erstellt ist, können Sie Signale an alle Teilnehmer der Sitzung oder an eine bestimmte Verbindung senden.
Die Content Parameter ist eine Instanz von SignalContent, wo Sie Folgendes einstellen können type und data.
type(Zeichenfolge): Die Zeichenkette für das Signal. Sie können maximal 128 Zeichen senden, wobei nur die folgenden Zeichen sind erlaubt: A-Z, a-z, Numbers (0-9), '-', '_', und '~'.data(Zeichenkette): Der Datenstring für das Signal. Sie können maximal 8kB senden.
// Send a signal to a specific connection
var request = SendSignalRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithConnectionId(connectionId)
.WithContent(new SignalContent("type", "data"))
.Create();
Result<Unit> response = await client.SignalingClient.SendSignalAsync(request);
// Send a signal to all connections in a session
var request = SendSignalsRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithContent(new SignalContent("type", "data"))
.Create();
Result<Unit> response = await client.SignalingClient.SendSignalsAsync(request);
Arbeiten mit Live-Streaming-Übertragungen
Starten einer Sendung
Sie können eine Live-Streaming-Übertragung einer Vonage-Videositzung starten, indem Sie
die Seite VonageClient.BroadcastClient.StartBroadcastsAsync(StartBroadcastRequest) Methode.
var request = StartBroadcastRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithLayout(new Layout(LayoutType.BestFit, string.Empty, LayoutType.HorizontalPresentation))
.WithOutputs(new StartBroadcastRequest.BroadcastOutput())
.Create();
Result<Broadcast> response = await client.BroadcastClient.StartBroadcastsAsync(request);
Anhalten einer Sendung
Sie können eine Sendung mit dem Befehl VonageClient.BroadcastClient.StopBroadcastsAsync(StopBroadcastRequest) Methode.
var request = StopBroadcastRequest.Build()
.WithApplicationId(applicationId)
.WithBroadcastId(broadcastId)
.Create();
Result<Broadcast> response = await client.BroadcastClient.StopBroadcastAsync(request);
Siehe auch die Dokumentation für das VonageClient.BroadcastClient.StopBroadcastsAsync(StopBroadcastRequest)
und VonageClient.BroadcastClient.GetBroadcastsAsync(GetBroadcastRequest) Methoden.
Abrufen einer Sendung
Sie können eine Sendung mit dem Befehl VonageClient.BroadcastClient.StopBroadcastsAsync(StopBroadcastRequest) Methode.
var request = GetBroadcastRequest.Build()
.WithApplicationId(applicationId)
.WithBroadcastId(broadcastId)
.Create();
Result<Broadcast> response = await client.BroadcastClient.GetBroadcastAsync(request);
Abrufen von Sendungen
Sie können alle Sendungen mit der Funktion VonageClient.BroadcastClient.StopBroadcastsAsync(StopBroadcastRequest)
Methode.
Diese Methode unterstützt auch die Paginierung.
var request = GetBroadcastsRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithCount(50)
.WithOffset(50)
.Create();
Result<GetBroadcastsResponse> response = await client.BroadcastClient.GetBroadcastsAsync(request);
SIP
Einleiten eines SIP-Anrufs
Sie können eine SIP-Plattform mit einer Vonage Video-Sitzung verbinden, indem Sie
die VonageClient.SipClient.InitiateCallAsync(InitiateCallRequest) Methode.
var request = InitiateCallRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithToken(token)
.WithSipUri(sipUri)
.Create();
Result<InitiateCallResponse> response = await client.SipClient.InitiateCallAsync(request);
Einen Ton abspielen
Sie können DTMF-Ziffern an alle Teilnehmer einer aktiven Vonage Video-Sitzung oder an einen bestimmten, mit dieser Sitzung verbundenen Client senden. Sitzung verbunden ist.
// Send digits to all participants in the session
var request = PlayToneIntoCallRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithDigits(digits)
.Create();
Result<Unit> response = await client.SipClient.PlayToneIntoCallAsync(request);
// Send digits to a specific connection
var request = PlayToneIntoConnectionRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithConnectionId(connectionId)
.WithDigits(digits)
.Create();
Result<Unit> response = await client.SipClient.PlayToneIntoConnectionAsync(request);
Erzwingen, dass Clients in einer Sitzung das veröffentlichte Audio stummschalten
Sie können den Herausgeber zwingen, die Veröffentlichung von Audiodaten für einen bestimmten Stream oder für alle Streams in einer Sitzung zu beenden.
// Mute all streams in a session, and mark the session as "muted"
var request = MuteStreamsRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithConfiguration(new MuteStreamsRequest.MuteStreamsConfiguration(true, Array.Empty<string>()))
.Create();
Result<MuteStreamsResponse> response = await client.ModerationClient.MuteStreamsAsync(request);
// Mute a specific stream
var request = MuteStreamRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithStreamId(streamId)
.Create();
Result<MuteStreamResponse> response = await client.ModerationClient.MuteStreamAsync(request);
Anforderungen
Sie benötigen eine Anwendung mit Video Fähigkeiten aktiviert.
Die Website ApplicationId und die PrivateKey wird für die Authentifizierung benötigt.
Sie benötigen einen Vonage Video API-Schlüssel und ein API-Geheimnis, die Sie erhalten, wenn Sie sich bei Ihrem Vonage Video API-Konto.
Das Vonage .NET SDK zielt auf netstandard2.0die kompatibel ist
mit alle unterstützten Frameworks.
Anmerkungen zur Veröffentlichung
Siehe die .NET SDK Änderungsprotokoll Seite für Details zu jeder Version.