SDK serveur .NET
La vidéo Vonage SDK .NET fournit des méthodes pour :
- Générer sessions et jetons pour Vidéo Vonage qui s'exécutent sur la plate-forme .NET. Le SDK comprend également un support pour travailler avec Archives vidéo de Vonage.
- Vidéo Vonage les applications qui s'exécutent sur la plate-forme .NET
- Travailler avec Archives vidéo de Vonage
- Travailler avec Vonage Video live streaming broadcasts
- Travailler avec Interconnexion vidéo SIP de Vonage
- Envoi de signaux aux clients connectés à une session
- Déconnexion des clients des sessions
- Forcer les clients d'une session à se déconnecter ou à mettre en sourdine l'audio publié
Installation
NuGet (recommandé) :
Recherchez "Vonage" dans votre gestionnaire de paquets, ou exécutez la commande suivante à l'aide de la commande Console du gestionnaire de paquets:
PM> Install-Package Vonage
Ou un terminal :
dotnet add package Vonage
Utilisation
Initialisation
Les paquets Vonage utilisent un JWT pour l'autorisation. Le SDK gère la génération de JWT en arrière-plan pour vous, mais vous aurez besoin d'un fichier ApplicationId et PrivateKey en tant qu'informations d'identification afin de générer le jeton.
Ces informations d'identification doivent être stockées dans les paramètres de votre projet. N'hésitez pas à jeter un coup d'œil à la section Configuration pour savoir comment procéder.
Ensuite, vous pouvez enregistrer toutes les dépendances pour le SDK .NET en utilisant l'extension suivante :
// For 'Scoped' lifecycle
builder.Services.AddVonageClientScoped(builder.Configuration);
// Foor 'Transient' lifecycle
builder.Services.AddVonageClientTransient(builder.Configuration);
Cela vous permet d'injecter n'importe quel client dans vos composants, comme :
public CustomerController(IVideoClient client) {}
// or
public CustomerController(VonageClient client) {}
Sinon, il est toujours possible d'instancier l'ensemble du client manuellement. Vous devrez disposer des deux éléments suivants ApplicationId et PrivateKey dans les variables, et créer un Credentials article.
using Vonage;
using Vonage.Request;
...
var credentials = Credentials.FromAppIdAndPrivateKeyPath(applicationId, privateKeyPath);
var client = new VonageClient(credentials).VideoClient;
Le client Video expose diverses fonctionnalités de nos API Video.
Comment traiter les résultats des vidéos
Chaque méthode renvoie la réponse sous la forme d'un fichier Result<T> Monade, où T est le type de réponse.
Il contient soit un état de réussite (T) si l'opération a réussi ou un état d'échec (IResultFailure) si quelque chose s'est mal passé.
L'échec contient un message d'erreur et peut être converti en l'exception correspondante. Il peut représenter n'importe quel type de problème :
- demande non valide
- échec de l'authentification
- échec de la demande
- échec de la désérialisation des données
- etc.
Vous pouvez utiliser .Match() pour fournir des méthodes pour les deux états, ou vous pouvez appeler .GetSuccessUnsafe pour obtenir la réponse et lever une exception si le processus a échoué.
Il contient également d'autres méthodes pour manipuler, transformer et extraire le résultat sous-jacent.
Détails et explications sur le mode dépôt.
Création de sessions
Pour créer une session vidéo Vonage, appelez le numéro de téléphone du client. VideoClient.SessionClient.CreateSessionAsync(CreateSessionRequest)méthode.
Vous pouvez utiliser un default avec toutes les valeurs par défaut, ou créez-en une personnalisée en utilisant la commande .Build() méthode.
location: Une adresse IPv4 utilisée comme indice de localisation. (par défaut :string.empty)MediaMode: Spécifie si la session utilisera la fonction Routeur vidéo multimédia de Vonage) (MediaMode.ROUTED) ou tenter de transmettre les flux directement entre les clients (MediaMode.RELAYED, par défaut). Une session routée est nécessaire pour certaines fonctions de Vonage Video (comme l'archivage).ArchiveMode: Spécifie si la session sera automatiquement archivée (ArchiveMode.ALWAYS) ou non (ArchiveMode.MANUAL, par défaut). (ArchiveMode.ALWAYS) ou non (ArchiveMode.MANUAL, par défaut)
La valeur de retour est un Result<CreateSessionResponse> objet.
// 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);
Générer des jetons
Une fois qu'une session est créée, vous pouvez commencer à générer des jetons que les clients utiliseront pour se connecter à la session. Vous pouvez générer un jeton en appelant la fonction GenerateToken méthode.
var generator = services.GetRequiredService<IVideoTokenGenerator>();
var credentials = ...
var claims = TokenAdditionalClaims.Parse(sessionId);
var token = generator.GenerateToken(credentials, claims)
Travailler avec les archives
Vous ne pouvez archiver que les sessions qui utilisent le routeur vidéo de Vonage (sessions dont le mode média est réglé sur routé).
Création d'une archive
Vous pouvez démarrer l'enregistrement d'une session vidéo Vonage
en utilisant VideoClient.ArchiveClient.CreateArchiveAsync(CreateSessionRequest) méthode.
La valeur de retour est un Result<CreateArchiveRequest> objet.
Notez que vous ne pouvez lancer une archive que sur une session à laquelle des clients sont connectés.
// 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);
Voici toutes les méthodes que vous pouvez utiliser sur le constructeur :
WithNamepermet d'ajouter un nom à l'archive (à utiliser pour l'identification).DisableVideopermet de désactiver l'enregistrement vidéo.DisableAudiopermet de désactiver l'enregistrement audio.WithResolutionpermet de définir la résolution de l'enregistrement. Veuillez noter que vous ne pouvez pas spécifier laresolutionlorsque vous réglez leoutputModeau paramètreOutputMode.INDIVIDUAL.WithOutputModepermet de définir le mode de sortie du flux. Par défaut, tous les flux sont enregistrés dans un seul fichier ( composé). Vous pouvez enregistrer les différents flux de la session dans des fichiers individuels (au lieu d'un seul fichier composé). ) en indiquantOutputMode.INDIVIDUAL.WithStreamModepermet d'indiquer si les flux sont sélectionnés automatiquement ou manuellement.
Arrêt d'une archive
Vous pouvez arrêter l'enregistrement d'une archive commencée à l'aide de la fonction
l'outil VideoClient.ArchiveClient.StopArchiveAsync(StopArchiveRequest) méthode.
Result<StopArchiveRequest> request = StopArchiveRequest.Build()
.WithApplicationId(applicationId)
.WithArchiveId(archiveId)
.Create();
Result<Archive> response = await client.ArchiveClient.StopArchiveAsync(request);
Récupération d'une archive
Vous pouvez récupérer un Archiveavec toutes ses informations, en utilisant
le VideoClient.ArchiveClient.GetArchiveAsync(GetArchiveRequest) méthode.
var request = GetArchiveRequest.Build()
.WithApplicationId(applicationId)
.WithArchiveId(archiveId)
.Create();
Result<Archive> response = await client.ArchiveClient.GetArchiveAsync(request);
Suppression d'une archive
Vous pouvez supprimer une archive à l'aide de la fonction VideoClient.ArchiveClient.DeleteArchiveAsync(DeleteArchiveRequest) méthode.
var request = DeleteArchiveRequest.Build()
.WithApplicationId(applicationId)
.WithArchiveId(archiveId)
.Create();
Result<Unit> response = await client.ArchiveClient.DeleteArchiveAsync(request);
Récupération de toutes les archives
Vous pouvez obtenir une liste de toutes les archives que vous avez créées, jusqu'à 1000 archives, à l'aide de la fonction
l'outil VideoClient.ArchiveClient.GetArchivesAsync(GetArchivesRequest) méthode.
Cette demande prend en charge la pagination à l'aide de WithCount et WithOffset sur le constructeur.
// 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);
Travailler avec des flux
Récupération d'un flux
Vous pouvez récupérer un Streamavec toutes ses informations, en utilisant
le VideoClient.SessionClient.GetStreamAsync(GetStreamRequest) méthode.
var request = GetStreamRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithStreamId(streamId)
.Create();
Result<GetStreamResponse> response = await client.SessionClient.GetStreamAsync(request);
Récupération de tous les flux
Vous pouvez récupérer tous les flux d'une session à l'aide de la fonction VideoClient.SessionClient.GetStreamsAsync(GetStreamsRequest)
méthode.
var request = GetStreamsRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.Create();
Result<GetStreamsResponse> response = await client.SessionClient.GetStreamsAsync(request);
Forcer la déconnexion
Votre serveur d'application peut déconnecter un client d'une session Vonage Video à l'aide de
l'aide de l'option VideoClient.ModerationClient.DisconnectConnectionAsync(DisconnectConnectionRequest) méthode.
var request = DisconnectConnectionRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithConnectionId(connectionId)
.Create();
Result<Unit> response = await client.ModerationClient.DisconnectConnectionAsync(request);
Envoi de signaux
Une fois qu'une session est créée, vous pouvez envoyer des signaux à tous les participants à la session ou à une connexion spécifique.
Les Content est une instance de SignalContentoù vous pouvez définir type et data.
type(chaîne) : La chaîne de caractères du signal. Vous pouvez envoyer un maximum de 128 caractères. suivants sont autorisés : A-Z, a-z, Numbers (0-9), '-', '_' et '~'.data(chaîne) : Chaîne de données pour le signal. Vous pouvez envoyer un maximum de 8 ko.
// 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);
Travailler avec des émissions en direct
Lancer une émission
Vous pouvez lancer une diffusion en direct d'une session vidéo Vonage à l'aide des éléments suivants
le VonageClient.BroadcastClient.StartBroadcastsAsync(StartBroadcastRequest) méthode.
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);
Arrêt d'une diffusion
Vous pouvez arrêter une diffusion à l'aide de la touche VonageClient.BroadcastClient.StopBroadcastsAsync(StopBroadcastRequest) méthode.
var request = StopBroadcastRequest.Build()
.WithApplicationId(applicationId)
.WithBroadcastId(broadcastId)
.Create();
Result<Broadcast> response = await client.BroadcastClient.StopBroadcastAsync(request);
Voir également la documentation relative à l'option VonageClient.BroadcastClient.StopBroadcastsAsync(StopBroadcastRequest)
et VonageClient.BroadcastClient.GetBroadcastsAsync(GetBroadcastRequest) des méthodes.
Récupération d'une émission
Vous pouvez récupérer une diffusion à l'aide de la fonction VonageClient.BroadcastClient.StopBroadcastsAsync(StopBroadcastRequest) méthode.
var request = GetBroadcastRequest.Build()
.WithApplicationId(applicationId)
.WithBroadcastId(broadcastId)
.Create();
Result<Broadcast> response = await client.BroadcastClient.GetBroadcastAsync(request);
Récupération des émissions
Vous pouvez récupérer toutes les diffusions à l'aide de la fonction VonageClient.BroadcastClient.StopBroadcastsAsync(StopBroadcastRequest)
méthode.
Cette méthode prend également en charge la pagination.
var request = GetBroadcastsRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithCount(50)
.WithOffset(50)
.Create();
Result<GetBroadcastsResponse> response = await client.BroadcastClient.GetBroadcastsAsync(request);
SIP
Lancer un appel SIP
Vous pouvez connecter une plateforme SIP à une session Vonage Video en utilisant
le VonageClient.SipClient.InitiateCallAsync(InitiateCallRequest) méthode.
var request = InitiateCallRequest.Build()
.WithApplicationId(applicationId)
.WithSessionId(sessionId)
.WithToken(token)
.WithSipUri(sipUri)
.Create();
Result<InitiateCallResponse> response = await client.SipClient.InitiateCallAsync(request);
Jouer un son
Vous pouvez envoyer des chiffres DTMF à tous les participants d'une session vidéo Vonage active ou à un client spécifique connecté à cette session. session.
// 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);
Forcer les clients d'une session à couper le son publié
Vous pouvez forcer l'éditeur à cesser de publier de l'audio, pour un flux spécifique ou pour tous les flux d'une session.
// 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);
Exigences
Vous avez besoin d'une application avec Video activées.
Les ApplicationId et le PrivateKey sera nécessaire pour l'authentification.
Vous avez besoin d'une clé et d'un secret d'API Video de Vonage, que vous pouvez obtenir en vous connectant à votre Compte Video API de Vonage.
Le SDK .NET de Vonage cible netstandard2.0qui est compatible avec
avec tous les cadres pris en charge.
Notes de mise à jour
Voir le .NET SDK changelog pour plus de détails sur chaque version.