Réactions

Cet article décrit comment mettre en œuvre des réactions pour les SDK d'appel d’Azure Communication Services. Cette fonctionnalité permet aux participants d'un appel ou d'une réunion de groupe d'envoyer et de recevoir des réactions avec les participants d'Azure Communication Services et de Microsoft Teams.

Les paramètres de configuration et de stratégie de Microsoft Teams contrôlent les réactions des utilisateurs dans les réunions Teams. Pour plus d'informations, voir Gérer les réactions dans les réunions et webinaires Teams et Options de réunion dans Microsoft Teams.

Prérequis

Limites des réactions

Le système extrait les réactions par lots à intervalles réguliers. La limitation actuelle des lots est de 20 000 réactions extraites toutes les 3 secondes.

Si le nombre de réactions dépasse la limite, les réactions restantes sont envoyées dans le lot suivant.

Support

Les tableaux suivants définissent la prise en charge des réactions dans Azure Communication Services.

Réunion Teams, le support est basé sur la stratégie de Teams.

Identités et types d’appels

Le tableau suivant présente la prise en charge des réactions dans les différents types d'appels et d'identités.

Identités Réunion interop des équipes Salle Appel 1:1 Appel de groupe Appel de groupe interop des équipes
Utilisateur de Communication Services ✔️ ✔️ ✔️ ✔️
Utilisateur Microsoft 365 ✔️ ✔️ ✔️

Opérations

Le tableau suivant montre la prise en charge des réactions dans l’appel SDK pour les différents types d'identité.

Opérations Utilisateur de Communication Services Utilisateur Microsoft 365
Envoyer des réactions spécifiques (comme, amour, rire, applaudissements, surpris) ✔️ ✔️
Recevoir des réactions spécifiques (comme, amour, rire, applaudissements, surpris) ✔️ ✔️

SDK

Le tableau suivant indique la prise en charge du mode Ensemble dans les différents kits SDK Azure Communication Services.

Platforms web Interface utilisateur web iOS Interface utilisateur iOS Android Interface utilisateur Android Windows
Est pris en charge ✔️ ✔️

Installer le SDK

Utilisez la commande npm install pour installer le SDK Azure Communication Services Common et le SDK Azure Communication Services Calling pour JavaScript :

npm install @azure/communication-common --save
npm install @azure/communication-calling --save

Initialiser les objets nécessaires

Une instance CallClient est requise pour la plupart des opérations d’appel. Lorsque vous créez une instance CallClient, vous pouvez la configurer avec des options personnalisées comme une instance Logger.

Avec l’instance CallClient, vous pouvez créer une instance CallAgent en appelant createCallAgent. Cette méthode renvoie un objet d’instance CallAgent de manière asynchrone.

La méthode createCallAgent utilise CommunicationTokenCredential comme argument. Elle accepte un jeton d’accès utilisateur.

Vous pouvez utiliser la méthode getDeviceManager sur l’instance CallClient pour accéder à deviceManager.

const { CallClient } = require('@azure/communication-calling');
const { AzureCommunicationTokenCredential} = require('@azure/communication-common');
const { AzureLogger, setLogLevel } = require("@azure/logger");

// Set the logger's log level
setLogLevel('verbose');

// Redirect log output to console, file, buffer, REST API, or whatever location you want
AzureLogger.log = (...args) => {
    console.log(...args); // Redirect log output to console
};

const userToken = '<USER_TOKEN>';
callClient = new CallClient(options);
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const callAgent = await callClient.createCallAgent(tokenCredential, {displayName: 'optional Azure Communication Services user name'});
const deviceManager = await callClient.getDeviceManager()

Comment gérer au mieux la connectivité du SDK à l’infrastructure Microsoft

L’instance Call Agent vous aide à gérer les appels (pour rejoindre ou démarrer des appels). Pour fonctionner, votre SDK d’appel doit se connecter à l’infrastructure Microsoft pour recevoir des notifications d’appels entrants et coordonner d’autres détails de l’appel. Votre Call Agent a deux états possibles :

Connecté : un Call Agent dont la valeur connectionStatue est égale à Connected signifie que le SDK client est connecté et capable de recevoir des notifications de l’infrastructure Microsoft.

Déconnecté : un Call Agent dont la valeur connectionStatue est égale à Disconnected indique qu’un problème empêche le SDK de se connecter correctement. Call Agent doit être recréé.

  • invalidToken : si un jeton a expiré ou n’est pas valide, l’instance Call Agent se déconnecte avec cette erreur.
  • connectionIssue : en cas de problème de connexion du client à l’infrastructure Microsoft, après plusieurs tentatives, Call Agent lève l’erreur connectionIssue.

Vous pouvez vérifier si votre Call Agent local est connecté à l’infrastructure Microsoft en inspectant la valeur actuelle de la propriété connectionState. Pendant un appel actif, vous pouvez écouter l’événement connectionStateChanged pour déterminer si Call Agent passe de l’état Connecté à l’état Déconnecté.

const connectionState = callAgentInstance.connectionState;
console.log(connectionState); // it may return either of 'Connected' | 'Disconnected'

const connectionStateCallback = (args) => {
    console.log(args); // it will return an object with oldState and newState, each of having a value of either of 'Connected' | 'Disconnected'
    // it will also return reason, either of 'invalidToken' | 'connectionIssue'
}
callAgentInstance.on('connectionStateChanged', connectionStateCallback);

Implémenter des réactions pour les participants à la réunion

Dans Azure Communication Services, les participants peuvent envoyer et recevoir des réactions pendant un appel de groupe :

  • J'aime
  • Love
  • Applaudissements
  • Rire
  • Surprise

Pour envoyer une réaction, utilisez l’API sendReaction(reactionMessage). Pour recevoir une réaction, le message est construit avec un type ReactionMessage utilisant les Reaction enums comme attribut.

Vous devez vous abonner aux événements qui fournissent les données d’événement de l’abonné(e) :

export interface ReactionEventPayload {
    /**
     * identifier for a participant
     */
    identifier: CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier;
    /**
     * reaction type received
     */
    reactionMessage: ReactionMessage;
}

Vous pouvez déterminer quelle réaction provient de quel(le) participant(e) en utilisant l’attribut identifier et obtient le type de réaction de ReactionMessage.

Échantillon montrant l’envoi d’une réaction dans une réunion

const reaction = call.feature(SDK.Features.Reaction);
const reactionMessage: SDK.ReactionMessage = {
       reactionType: 'like'
};
await reaction.sendReaction(reactionMessage);

Échantillon montrant la façon de recevoir une réaction lors d’une réunion

const reaction = call.feature(SDK.Features.Reaction);
reaction.on('reaction', event => {
    // user identifier
    console.log("User Mri - " + event.identifier);
    // received reaction
    console.log("User Mri - " + event.reactionMessage.reactionType);
    // reaction message
    console.log("reaction message - " + JSON.stringify(event.reactionMessage));
}

Points clés lors de l’utilisation de réactions

  • Les réactions sont prises en charge pour les scénarios d’interopérabilité Microsoft Teams. Le support est basé sur la stratégie de Teams
  • Les réactions sont prises en charge dans le Kit de développement logiciel (SDK) Web Calling.
  • Les réactions ne sont actuellement pas prises en charge dans les kits SDK natifs.

Étapes suivantes