Références API des applications de réunion

L’extensibilité de la réunion fournit des API pour améliorer l’expérience de réunion. Vous pouvez effectuer les opérations suivantes à l’aide des API répertoriées :

  • Créez des applications ou intégrez des applications existantes dans le cycle de vie des réunions.
  • Utilisez des API pour informer votre application de la réunion.
  • Sélectionnez les API requises pour améliorer l’expérience de réunion.

Notes

Utilisez Teams JavaScript SDK (Version 1.10 et ultérieure) pour que le SSO fonctionne dans le panneau latéral de la réunion.

Le tableau suivant fournit la liste des API disponibles sur les kits SDK Microsoft Teams Client (MSTC) et Microsoft Bot Framework (MSBF) :

Méthode Description Source
Obtenir l’accès avec le contexte utilisateur Obtenez des informations contextuelles pour afficher du contenu pertinent dans un onglet Microsoft Teams. MSTC SDK
Obtenir des Participants Récupérez les informations du participant par ID de réunion et ID de participant. MSBF SDK
Envoyer une notification en réunion Fournissez des signaux de réunion à l’aide de l’API de notification de conversation existante pour la conversation utilisateur-bot et permet de notifier l’action de l’utilisateur qui affiche une notification en réunion. MSBF SDK
Obtenir les détails de la réunion Obtenez les métadonnées statiques d’une réunion. MSBF SDK
Envoyer des légendes en temps réel Envoyez des sous-titres en temps réel à une réunion en cours. MSTC SDK
Partager le contenu de l’application à l’étape Partagez des parties spécifiques de l’application à la phase de réunion à partir du panneau côté application dans une réunion. MSTC SDK
Obtenir l’état de partage de la phase de contenu de l’application Récupérez des informations sur l’état de partage de l’application lors de la phase de réunion. MSTC SDK
Obtenir les fonctionnalités de partage de phase de contenu d’application Récupérez les fonctionnalités de l’application pour le partage dans la phase de réunion. MSTC SDK
Obtenir des événements de réunion Teams en temps réel Récupérez les événements de réunion en temps réel, tels que l’heure de début et de fin réelle. MSBF SDK
Obtenir le haut-parleur audio entrant Permet à une application d’obtenir le paramètre de haut-parleur audio entrant pour l’utilisateur de la réunion. MSTC SDK
Activer/désactiver l’audio entrant Permet à une application de désactiver le paramètre de haut-parleur audio entrant pour l’utilisateur de la réunion de désactiver le son ou inversement. MSTC SDK

Obtenir l’API de contexte utilisateur

Pour identifier et récupérer des informations contextuelles pour le contenu de votre onglet, consultez obtenir le contexte de votre onglet Teams. meetingId Est utilisé par un onglet en cours d’exécution dans le contexte de la réunion et ajouté pour la charge utile de réponse.

Obtenir l’API du participant

L’API GetParticipant doit disposer d’une inscription et d’un ID de bot pour générer des jetons d’authentification. Pour plus d’informations, consultez l’inscription et l’ID du bot.

Notes

  • Ne mettez pas en cache les rôles de participant, car l’organisateur de la réunion peut modifier les rôles à tout moment.
  • Actuellement, l’API GetParticipant est uniquement prise en charge pour les listes de distribution ou les listes de moins de 350 participants.

Paramètres de requête

Conseil

Obtenez les ID de participant et les ID de locataire à partir de l’authentification SSO de l’onglet.

L’API Meeting doit avoir meetingId, participantIdet tenantId en tant que paramètres d’URL. Les paramètres sont disponibles dans le cadre du kit de développement logiciel (SDK) client Teams et de l’activité du bot.

Le tableau ci-dessous décrit chaque paramètre de chaîne de requête.

Valeur Type Requis Description
meetingId Chaîne Oui L’identificateur de réunion est disponible via Bot Invoke et Teams SDK client.
participantId Chaîne Oui L’ID du participant est l’ID d’utilisateur. Il est disponible dans Tab SSO, Bot Invoke et Teams Client SDK. Il est recommandé d’obtenir un ID de participant à partir de l’authentification unique Tab.
tenantId String Oui L’ID de locataire est requis pour les utilisateurs du locataire. Il est disponible dans Tab SSO, Bot Invoke et Teams Client SDK. Il est recommandé d’obtenir un ID de locataire à partir de l’authentification unique Tab.

Exemple

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
  TeamsMeetingParticipant participant = await TeamsInfo.GetMeetingParticipantAsync(turnContext, "yourMeetingId", "yourParticipantId", "yourParticipantTenantId").ConfigureAwait(false);
  TeamsChannelAccount member = participant.User;
  MeetingParticipantInfo meetingInfo = participant.Meeting;
  ConversationAccount conversation = participant.Conversation;

  await turnContext.SendActivityAsync(MessageFactory.Text($"The participant role is: {meetingInfo.Role}"), cancellationToken);
}
Nom de la propriété Description
user.id ID de l’utilisateur.
user.aadObjectId ID d’objet Azure Active Directory de l’utilisateur.
user.name Nom de l'utilisateur.
user.givenName Prénom de l’utilisateur.
user.surname Nom de l’utilisateur.
user.email ID de messagerie de l’utilisateur.
user.userPrincipalName UPN de l’utilisateur.
user.tenantId ID du client Azure Active Directory.
user.userRole Rôle de l’utilisateur. Par exemple, « admin » ou « user ».
meeting.role Rôle du participant dans la réunion. Par exemple, « Organisateur » ou « Présentateur » ou « Participant ».
meeting.inMeeting Valeur indiquant si le participant est dans la réunion.
conversation.id ID de conversation de réunion.
conversation.isGroup Valeur booléenne indiquant si la conversation a plus de deux participants.

Codes de réponse

Le tableau suivant présente les codes de réponse :

Code de réponse Description
403 Les informations sur les participants ne sont pas partagées avec l'application. Si l’application n’est pas installée dans la réunion, elle déclenche la réponse d’erreur 403. Si l’administrateur locataire désactive ou bloque l’application pendant la migration de site en direct, il déclenche la réponse d’erreur 403.
200 Les informations du participant sont récupérées avec succès.
401 L’application répond avec un jeton non valide.
404 La réunion a expiré ou les participants ne sont pas disponibles.

Envoyer une notification en réunion

Tous les utilisateurs d’une réunion reçoivent les notifications envoyées par le biais de la charge utile de notification en réunion. La charge utile de notification en réunion déclenche une notification en réunion et vous permet de fournir des signaux de réunion fournis à l’aide de l’API de notification de conversation existante pour la conversation utilisateur-bot. Vous pouvez envoyer une notification en réunion en fonction de l’action de l’utilisateur. La charge utile est disponible via Bot Services.

Notes

  • Lorsqu’une notification en réunion est appelée, le contenu est présenté sous la forme d’un message de conversation.
  • Actuellement, l’envoi de notifications ciblées et la prise en charge de webapp ne sont pas pris en charge.
  • Vous devez appeler la fonction submitTask() pour ignorer automatiquement une fois qu’un utilisateur a fait une action dans la vue web. Il s'agit d'une exigence pour la soumission d'une application. Pour plus d'informations, consultez Module de tâches du SDK Teams.
  • Si vous souhaitez que votre application prenne en charge les utilisateurs anonymes, la charge utile de la demande d’appel initial doit s’appuyer sur les métadonnées de la demande dans from.id l’objet, fromet non sur from.aadObjectId les métadonnées de la demande. from.idest l’ID d’utilisateur et from.aadObjectId est l’ID Microsoft Azure Active Directory (Azure AD) de l’utilisateur. Pour plus d’informations, consultez l’utilisation de modules de tâches dans des onglets et créez et envoyez le module de tâche.

Paramètre de requête

Le tableau suivant inclut le paramètre de requête :

Valeur Type Requis Description
conversationId String Oui L’identificateur de conversation est disponible dans le cadre de Bot Invoke.

Exemples

L’objet Bot ID est déclaré dans le manifeste et le bot reçoit un objet de résultat.

Notes

  • Le completionBotId paramètre est externalResourceUrl facultatif dans l’exemple de charge utile demandée.
  • Les externalResourceUrl paramètres de largeur et de hauteur doivent être en pixels. Pour plus d'informations, consultez Directives de conception Teams.
  • L’URL est la page, qui se charge comme <iframe> dans la notification en réunion. Le domaine doit se trouver dans le tableau des validDomainsapps de votre manifeste d'application.
Activity activity = MessageFactory.Text("This is a meeting signal test");
activity.TeamsNotifyUser(true, "https://teams.microsoft.com/l/bubble/APP_ID?url=<url>&height=<height>&width=<width>&title=<title>&completionBotId=BOT_APP_ID");
await turnContext.SendActivityAsync(activity).ConfigureAwait(false);
Nom de la propriété Description
type Type d’activité.
text Contenu du texte du message.
summary Texte récapitulatif du message.
channelData.notification.alertInMeeting Valeur booléenne indiquant si une notification doit être affichée à l’utilisateur pendant une réunion.
channelData.notification.externalResourceUrl Valeur de l’URL de ressource externe de la notification.
replyToId ID du message parent ou racine du thread.
APP_ID ID d’application déclaré dans le manifeste.
completionBotId ID d’application bot

Codes de réponse

Le tableau suivant inclut les codes de réponse :

Code de réponse Description
201 L’activité avec le signal est envoyée avec succès.
401 L’application répond avec un jeton non valide.
403 L’application ne peut pas envoyer le signal. Le code de réponse 403 peut se produire pour différentes raisons, telles que la désactivation et le blocage de l’application par l’administrateur client lors de la migration de site en direct. Dans ce cas, la charge utile contient un message d’erreur détaillé.
404 La conversation de réunion n’existe pas.

Obtenir l’API détails de la réunion

L’API Détails de la réunion permet à votre application d’obtenir les métadonnées statiques d’une réunion. Les métadonnées fournissent des points de données qui ne changent pas dynamiquement. L’API est disponible via Bot Services. Actuellement, les réunions privées planifiées ou périodiques et les réunions planifiées par canal ou périodiques prennent respectivement en charge l’API avec des autorisations RSC différentes.

L’API Meeting Details doit disposer d’une inscription de bot et d’un ID de bot. Il nécessite le Kit de développement logiciel (SDK) bot pour obtenir TurnContext. Pour utiliser l’API Détails de la réunion, vous devez obtenir différentes autorisations RSC en fonction de l’étendue de toute réunion, telle qu’une réunion privée ou une réunion de canal.

Conditions préalables

Pour utiliser l’API Détails de la réunion, vous devez obtenir différentes autorisations RSC en fonction de l’étendue de toute réunion, telle qu’une réunion privée ou une réunion de canal.


Pour le manifeste d’application version 1.12 et ultérieure

Utilisez l’exemple suivant pour configurer les propriétés et authorization le manifeste de webApplicationInfo votre application pour toute réunion privée :

"webApplicationInfo": {
    "id": "<bot id>",
    "resource": "https://RscPermission",
},
"authorization": {
    "permissions": {
        "resourceSpecific": [
            {
                "name": "OnlineMeeting.ReadBasic.Chat",
                "type": "Application"
            }
        ]
    }
}

Utilisez l’exemple suivant pour configurer les propriétés et authorization le manifeste de webApplicationInfo votre application pour n’importe quelle réunion de canal :

"webApplicationInfo": {
    "id": "<bot id>",
    "resource": "https://RscPermission",
},
"authorization": {
    "permissions": {
        "resourceSpecific": [
            {
                "name": "ChannelMeeting.ReadBasic.Group",
                "type": "Application"
            }
        ]
    }
}


Pour le manifeste d’application version 1.11 et antérieure

Utilisez l’exemple suivant pour configurer la propriété du manifeste de webApplicationInfo votre application pour toute réunion privée :

"webApplicationInfo": {
    "id": "<bot id>",
    "resource": "https://RscPermission",
    "applicationPermissions": [
      "OnlineMeeting.ReadBasic.Chat"
    ]
}

Utilisez l’exemple suivant pour configurer la propriété de votre manifeste d’application webApplicationInfo pour toute réunion de canal :

"webApplicationInfo": {
    "id": "<bot id>",
    "resource": "https://RscPermission",
    "applicationPermissions": [
      "ChannelMeeting.ReadBasic.Group"
    ]
}

Notes

  • Le bot peut recevoir automatiquement des événements de début ou de fin de réunion à partir de toutes les réunions créées dans tous les canaux en ajoutant ChannelMeeting.ReadBasic.Group au manifeste pour l’autorisation RSC.

  • Pour un appel organizer en tête-à-tête est l’initiateur de la conversation et pour les appels organizer de groupe est l’initiateur de l’appel.

Paramètre de requête

Le tableau suivant répertorie quelques exemples où le paramètre de requête est utilisé.

Valeur Type Requis Description
meetingId Chaîne Oui L’identificateur de réunion est disponible via Bot Invoke et Teams SDK client.

Exemple

MeetingInfo result = await TeamsInfo.GetMeetingInfoAsync(turnContext);
await turnContext.SendActivityAsync(JsonConvert.SerializeObject(result));
Nom de la propriété Description
details.id ID de la réunion, encodé sous forme de chaîne BASE64.
details.msGraphResourceId MsGraphResourceId, utilisé spécifiquement pour les appels API Graph MS.
details.scheduledStartTime Heure de début planifiée de la réunion, au format UTC.
details.scheduledEndTime Heure de fin planifiée de la réunion, au format UTC.
details.joinUrl URL utilisée pour rejoindre la réunion.
details.title Titre de la réunion.
details.type Type de réunion (GroupCall, OneToOneCall, Adhoc, Broadcast, MeetNow, Recurring, Scheduled ou Unknown).
conversation.isGroup Valeur booléenne indiquant si la conversation a plus de deux participants.
conversation.conversationType Type de conversation.
conversation.id ID de conversation de réunion.
organizer.id ID d’utilisateur de l’organisateur.
organizer.aadObjectId ID d’objet Azure Active Directory de l’organisateur.
organizer.tenantId ID de locataire Azure Active Directory de l’organisateur.

En cas de type de réunion périodique,

startDate : spécifie la date de début de l’application du modèle. La valeur de startDate doit correspondre à la valeur de date de la propriété start sur la ressource d’événement. Notez que la première occurrence de la réunion peut ne pas se produire à cette date si elle ne correspond pas au modèle.

endDate : spécifie la date à laquelle arrêter l’application du modèle. Notez que la dernière occurrence de la réunion peut ne pas se produire à cette date si elle ne correspond pas au modèle.

API Envoyer des légendes en temps réel

L’API envoyer des sous-titres en temps réel expose un point de terminaison POST pour les sous-titres cart (Traduction en temps réel) de l’accès aux communications Teams, sous-titres fermés de type humain. Le contenu texte envoyé à ce point de terminaison apparaît aux utilisateurs finaux d’une réunion Teams quand des légendes sont activées.

URL CART

Vous pouvez obtenir l’URL CART pour le point de terminaison POST à partir de la page Options de réunion d’une réunion Teams. Pour plus d’informations, consultez les légendes CART dans une réunion Microsoft Teams. Vous n’avez pas besoin de modifier l’URL CART pour utiliser des légendes CART.

Paramètre de requête

L’URL CART inclut les paramètres de requête suivants :

Valeur Type Requis Description
meetingId Chaîne Oui L’identificateur de réunion est disponible via Bot Invoke et Teams SDK client.
Par exemple, meetingid=%7b%22tId%22%3a%2272f234bf-86f1-41af-91ab-2d7cd0321b47%22%2c%22oId%22%3a%22e071f268-4241-47f8-8cf3-fc6b84437f23%22%2c%22thId%22%3a%2219%3ameeting_NzJiMjNkMGQtYzk3NS00ZDI1LWJjN2QtMDgyODVhZmI3NzJj%40thread.v2%22%2c%22mId%22%3a%220%22%7d
Jeton Chaîne Oui Jeton d’autorisation
Par exemple, token=04751eac

Exemple

https://api.captions.office.microsoft.com/cartcaption?meetingid=%7b%22tId%22%3a%2272f234bf-86f1-41af-91ab-2d7cd0321b47%22%2c%22oId%22%3a%22e071f268-4241-47f8-8cf3-fc6b84437f23%22%2c%22thId%22%3a%2219%3ameeting_NzJiMjNkMGQtYzk3NS00ZDI1LWJjN2QtMDgyODVhZmI3NzJj%40thread.v2%22%2c%22mId%22%3a%220%22%7d&token=gjs44ra

Méthode

Ressource Méthode Description
/cartcaption POST Gérer les légendes pour la réunion, qui a été démarrée

Notes

Vérifiez que le type de contenu pour toutes les demandes est du texte brut avec encodage UTF-8. Le corps de la requête contient uniquement des légendes.

Exemple

POST /cartcaption?meetingid=04751eac-30e6-47d9-9c3f-0b4ebe8e30d9&token=04751eac&lang=en-us HTTP/1.1
Host: api.captions.office.microsoft.com
Content-Type: text/plain
Content-Length: 22
Hello I’m Cortana, welcome to my meeting. 

Notes

Chaque requête POST génère une nouvelle ligne de légendes. Pour vous assurer que l’utilisateur final dispose de suffisamment de temps pour lire le contenu, limitez chaque corps de requête POST à 80 à 120 caractères.

Codes d’erreur

Le tableau suivant décrit les codes d'erreur.

Code d'erreur Description
400 Demande incorrecte Le corps de la réponse contient plus d’informations. Par exemple, tous les paramètres requis ne sont pas présentés.
401 Non autorisé Jeton incorrect ou expiré Si vous recevez cette erreur, générez une nouvelle URL CART dans Teams.
404 Réunion introuvable ou non démarrée Si vous recevez cette erreur, veillez à démarrer la réunion et à sélectionner les légendes de début. Une fois les légendes activées dans la réunion, vous pouvez commencer à ajouter des sous-titres à la réunion.
500 Erreur interne au serveur. Pour plus d’informations, contactez le support technique ou fournissez des commentaires.

Partager le contenu de l’application pour mettre en scène l’API

L’API shareAppContentToStage vous permet de partager des parties spécifiques de votre application à la phase de réunion. L’API est disponible via le SDK client Teams.

Conditions préalables

  • Pour utiliser l’API shareAppContentToStage , vous devez obtenir les autorisations RSC. Dans le manifeste de l’application, configurez la authorization propriété nameet le type champresourceSpecific. Par exemple :

    "authorization": {
        "permissions": { 
        "resourceSpecific": [
        { 
        "name": "MeetingStage.Write.Chat",
        "type": "Delegated"
        }
        ]
    }
    }
    
  • appContentUrl doit être autorisé par validDomains le tableau à l’intérieur de manifest.json, sinon l’API retournerait 501.

Paramètre de requête

Le tableau ci-dessous décrit chaque paramètre de chaîne de requête.

Valeur Type Requis Description
callback Chaîne Oui Le rappel contient deux paramètres, l’erreur et le résultat. L’erreur peut contenir une erreur de type SdkError ou null lorsque le partage réussit. Le résultat peut contenir une valeur true, en cas de partage réussi, ou null en cas d’échec du partage.
appContentURL Chaîne Oui URL qui sera partagée sur la scène.

Exemple

const appContentUrl = "https://www.bing.com/";

microsoftTeams.meeting.shareAppContentToStage((err, result) => {
    if (result) {
        // handle success
    }
    if (err) {
        // handle error
    }
}, appContentUrl);

Codes de réponse

Le tableau suivant présente les codes de réponse :

Code de réponse Description
500 Erreur interne.
501 L’API n’est pas prise en charge dans le contexte actuel.
1 000 L’application ne dispose pas des autorisations appropriées pour autoriser le partage à être mis en scène.

Obtenir l’API d’état de partage de l’étape de contenu de l’API

L’API getAppContentStageSharingState vous permet d’extraire des informations sur le partage des applications lors de la phase de réunion.

Paramètre de requête

Le tableau suivant inclut le paramètre de requête :

Valeur Type Requis Description
callback Chaîne Oui Le rappel contient deux paramètres, l’erreur et le résultat. L’erreur peut contenir une erreur de type SdkError, en cas d’erreur, ou null lorsque le partage réussit. Le résultat peut contenir un AppContentStageSharingState objet, indiquant une récupération réussie, ou null, indiquant l’échec de la récupération.

Exemple

microsoftTeams.meeting.getAppContentStageSharingState((err, result) => {
    if (result.isAppSharing) {
        // Indicates app has permission to share contents to meeting stage.
    }
});

Le corps de la réponse JSON pour l’API getAppContentStageSharingState est le suivant :

{
   "isAppSharing":true
} 

Codes de réponse

Le tableau suivant présente les codes de réponse :

Code de réponse Description
500 Erreur interne.
501 L’API n’est pas prise en charge dans le contexte actuel.
1 000 L’application ne dispose pas des autorisations appropriées pour autoriser le partage à être mis en scène.

Obtenir l'API des capacités de partage du contenu de l'application

L’API getAppContentStageSharingCapabilities vous permet d’extraire les fonctionnalités de l’application pour le partage dans la phase de réunion.

Paramètre de requête

Le tableau suivant inclut le paramètre de requête :

Valeur Type Requis Description
callback Chaîne Oui Le rappel contient deux paramètres, l’erreur et le résultat. L’erreur peut contenir une erreur de type SdkError ou null lorsque le partage réussit. Le résultat peut contenir un objet AppContentStageSharingState, indiquant une récupération réussie, ou null, indiquant l’échec de la récupération.

Exemple

microsoftTeams.meeting.getAppContentStageSharingCapabilities((err, result) => {
    if (result.doesAppHaveSharePermission) {
        // Indicates app has permission to share contents to meeting stage.
    }
});

Le corps de la réponse JSON pour getAppContentStageSharingCapabilities l’API est le suivant :

{
   "doesAppHaveSharePermission":true
} 

Codes de réponse

Le tableau suivant présente les codes de réponse :

Code de réponse Description
500 Erreur interne.
1 000 L’application ne dispose pas des autorisations nécessaires pour autoriser le partage à être mis en scène.

Obtenir l’API d’événements de réunion Teams en temps réel

Notes

Les événements de réunion Teams en temps réel sont pris en charge uniquement pour les réunions planifiées.

L’utilisateur peut recevoir des événements de réunion en temps réel. Dès qu’une application est associée à une réunion, l’heure de début et de fin de la réunion réelle est partagée avec le bot. L’heure de début et de fin réelle d’une réunion est différente de l’heure de début et de fin planifiée. L’API Détails de la réunion fournit l’heure de début et de fin planifiée. L’événement fournit l’heure de début et de fin réelle.

Vous devez connaître l’objet TurnContext disponible via le Kit de développement logiciel (SDK) Bot. L’objet Activity dans TurnContext contient la charge utile avec l’heure de début et de fin réelle. Les événements de réunion en temps réel nécessitent un ID de bot inscrit à partir de la plateforme Teams. Le bot peut recevoir automatiquement l’événement de début ou de fin de la réunion en l’ajoutant ChannelMeeting.ReadBasic.Group dans le manifeste.

Conditions préalables

Le manifeste de votre application doit avoir la webApplicationInfo propriété pour recevoir les événements de début et de fin de la réunion. Utilisez les exemples suivants pour configurer votre manifeste :


Pour le manifeste d’application version 1.12 et ultérieure
"webApplicationInfo": {
    "id": "<bot id>",
    "resource": "https://RscPermission",
    },
"authorization": {
    "permissions": {
        "resourceSpecific": [
            {
                "name": "OnlineMeeting.ReadBasic.Chat",
                "type": "Application"
            }
        ]    
    }
}


Pour le manifeste d’application version 1.11 et antérieure
"webApplicationInfo": {
    "id": "<bot id>",
    "resource": "https://RscPermission",
    "applicationPermissions": [
      "OnlineMeeting.ReadBasic.Chat"
    ]
}

Exemple d’obtention MeetingStartEndEventvalue

Le bot reçoit l’événement par le biais du OnEventActivityAsync gestionnaire. Pour désérialiser la charge utile JSON, un objet de modèle est introduit pour obtenir les métadonnées d’une réunion. Les métadonnées d’une réunion se trouve dans la value propriété dans la charge utile de l’événement. L’objet MeetingStartEndEventvalue modèle est créé, dont les variables membres correspondent aux clés sous la value propriété dans la charge utile de l’événement.

Notes

  • Obtenir l’ID de réunion à partir de turnContext.ChannelData
  • N’utilisez pas l’ID de conversation comme ID de réunion.
  • N’utilisez pas l’ID de réunion à partir de la charge utile turncontext.activity.valuedes événements de réunion.

Le code suivant montre comment capturer les métadonnées d’une réunion qui est MeetingType, Title, Id``JoinUrl, StartTimeet EndTime à partir d’un événement de début/fin de réunion :

Événement de début de réunion

protected override async Task OnTeamsMeetingStartAsync(MeetingStartEventDetails meeting, ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken)
{
    await turnContext.SendActivityAsync(JsonConvert.SerializeObject(meeting));
}

Événement de fin de réunion

protected override async Task OnTeamsMeetingEndAsync(MeetingEndEventDetails meeting, ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken)
{
    await turnContext.SendActivityAsync(JsonConvert.SerializeObject(meeting));
}

Exemple de charge utile d’événement de début de réunion

Le code suivant fournit un exemple de charge utile d’événement de début de réunion :

{ 
    "name": "application/vnd.microsoft.meetingStart", 
    "type": "event", 
    "timestamp": "2021-04-29T16:10:41.1252256Z", 
    "id": "123", 
    "channelId": "msteams", 
    "serviceUrl": "https://microsoft.com", 
    "from": { 
        "id": "userID", 
        "aadObjectId": "aadOnjectId" 
    }, 
    "conversation": { 
        "isGroup": true, 
        "tenantId": "tenantId", 
        "id": "thread id" 
    }, 
    "recipient": { 
        "id": "user Id", 
        "name": "user name" 
    }, 
    "entities": [ 
        { 
            "locale": "en-US", 
            "country": "US", 
            "type": "clientInfo" 
        } 
    ], 
    "channelData": { 
        "tenant": { 
            "id": "channel id" 
        }, 
        "source": null, 
        "meeting": { 
            "id": "meeting id" 
        } 
    }, 
    "value": { 
        "MeetingType": "Scheduled", 
        "Title": "Meeting Start/End Event", 
        "Id": "meeting id", 
        "JoinUrl": "url" 
        "StartTime": "2021-04-29T16:17:17.4388966Z" 
    }, 
    "locale": "en-US" 
}

Exemple de charge utile d’événement de fin de réunion

Le code suivant fournit un exemple de charge utile d’événement de fin de réunion :

{ 
    "name": "application/vnd.microsoft.meetingEnd", 
    "type": "event", 
    "timestamp": "2021-04-29T16:17:17.4388966Z", 
    "id": "123", 
    "channelId": "msteams", 
    "serviceUrl": "https://microsoft.com", 
    "from": { 
        "id": "user id", 
        "aadObjectId": "aadObjectId" 
    }, 
    "conversation": { 
        "isGroup": true, 
        "tenantId": "tenantId", 
        "id": "thread id" 
    }, 
    "recipient": { 
        "id": "user id", 
        "name": "user name" 
    }, 
    "entities": [ 
        { 
            "locale": "en-US", 
            "country": "US", 
            "type": "clientInfo" 
        } 
    ], 
    "channelData": { 
        "tenant": { 
            "id": "channel id" 
        }, 
        "source": null, 
        "meeting": { 
            "id": "meeting Id" 
        } 
    }, 
    "value": { 
        "MeetingType": "Scheduled", 
        "Title": "Meeting Start/End Event in Canary", 
        "Id": "19:meeting_NTM3ZDJjOTUtZGRhOS00MzYxLTk5NDAtMzY4M2IzZWFjZGE1@thread.v2", 
        "JoinUrl": "url", 
        "EndTime": "2021-04-29T16:17:17.4388966Z" 
    }, 
    "locale": "en-US" 
}
Nom de la propriété Description
name Nom de l'utilisateur.
type Type d’activité.
timestamp Date et heure locales du message, exprimées au format ISO-8601.
id ID de l’activité.
channelId Canal auquel cette activité est associée.
serviceUrl URL du service où les réponses à cette activité doivent être envoyées.
from.id Identification de l'utilisateur qui a envoyé la demande.
from.aadObjectId Identification de l'objet Azure Active Directory de l'utilisateur qui a envoyé la demande.
conversation.isGroup Valeur booléenne indiquant si la conversation a plus de deux participants.
conversation.tenantId ID de locataire Azure Active Directory de la conversation ou de la réunion.
conversation.id ID de conversation de réunion.
recipient.id ID de l’utilisateur qui reçoit la demande.
recipient.name Nom de l’utilisateur qui reçoit la demande.
entities.locale qui contient des métadonnées sur les paramètres régionaux.
entities.country entité qui contient des métadonnées sur le pays.
entities.type entité qui contient des métadonnées sur le client.
channelData.tenant.id ID du client Azure Active Directory.
channelData.source Nom source à partir duquel l’événement est déclenché ou appelé.
channelData.meeting.id ID par défaut associé à la réunion.
valeur. MeetingType Type de réunion.
valeur. Titre Objet de la réunion.
valeur. Id ID par défaut associé à la réunion.
valeur. JoinUrl URL de participation de la réunion.
valeur. StartTime Heure de début de la réunion en UTC.
valeur. EndTime Heure de fin de la réunion en UTC.
locale Paramètres régionaux du message défini par le client.

Obtenir le haut-parleur audio entrant

L’API getIncomingClientAudioState permet à une application d’obtenir le paramètre de haut-parleur audio entrant pour l’utilisateur de la réunion. L’API est disponible via le SDK client Teams.

Notes

L’API getIncomingClientAudioState pour mobile est actuellement disponible uniquement en préversion publique des développeurs.

Paramètre de requête

Le tableau suivant inclut le paramètre de requête :

Valeur Type Requis Description
callback Chaîne Oui Le rappel contient deux paramètres error et result. L’erreur peut contenir un type SdkError d’erreur ou null une fois la récupération audio réussie. Le résultat peut contenir une valeur true ou false lorsque l’extraction audio réussit ou null en cas d’échec de la récupération audio. L’audio entrant est désactivé si le résultat est vrai et désactivé si le résultat est false.

Exemple

function getIncomingClientAudioState(
    callback: (error: SdkError | null, result: boolean | null) => void,
  ): void {
    if (!callback) {
      throw new Error('[get incoming client audio state] Callback cannot be null');
    }
    ensureInitialized(FrameContexts.sidePanel, FrameContexts.meetingStage);
    sendMessageToParent('getIncomingClientAudioState', callback);
  }

Codes de réponse

Le tableau suivant présente les codes de réponse :

Code de réponse Description
500 Erreur interne.
501 L’API n’est pas prise en charge dans le contexte actuel.
1 000 L’application ne dispose pas des autorisations appropriées pour autoriser le partage à être mis en scène.

Activer/désactiver l’audio entrant

L’API toggleIncomingClientAudio permet à une application de désactiver le paramètre du haut-parleur audio entrant pour l’utilisateur de la réunion de désactiver le son ou inversement. L’API est disponible via le SDK client Teams.

Notes

L’API toggleIncomingClientAudio pour mobile est actuellement disponible uniquement en préversion publique des développeurs.

Paramètre de requête

Le tableau suivant inclut le paramètre de requête :

Valeur Type Requis Description
callback Chaîne Oui Le rappel contient deux paramètres error et result. L’erreur peut contenir un type SdkError d’erreur ou null une fois le basculement réussi. Le résultat peut contenir une valeur true ou false, lorsque le basculement est réussi ou null en cas d’échec du basculement. L’audio entrant est désactivé si le résultat est vrai et désactivé si le résultat est false.

Exemple

function toggleIncomingClientAudio(callback: (error: SdkError | null, result: boolean | null) => void): void {
    if (!callback) {
      throw new Error('[toggle incoming client audio] Callback cannot be null');
    }
    ensureInitialized(FrameContexts.sidePanel, FrameContexts.meetingStage);
    sendMessageToParent('toggleIncomingClientAudio', callback);
  }

Code de réponse

Le tableau suivant présente les codes de réponse :

Code de réponse Description
500 Erreur interne.
501 L’API n’est pas prise en charge dans le contexte actuel.
1 000 L’application ne dispose pas des autorisations appropriées pour autoriser le partage à être mis en scène.

Exemple de code

Exemple de nom Description C# Node.js
Extensibilité des réunions Exemple d’extensibilité de réunion Teams pour passer des jetons. View View
Bot de bulles de contenu de réunion Exemple d’extensibilité de réunion Teams pour interagir avec le bot de bulles de contenu dans une réunion. View View
Réunion MeetingSidePanel Exemple d’extensibilité de réunion Teams pour interagir avec le panneau latéral en réunion. View View
Onglet Détails de la réunion Exemple d’extensibilité de réunion Teams pour interagir avec l’onglet Détails en réunion. View View
Exemple d’événements de réunion Exemple d’application pour afficher des événements de réunion Teams en temps réel View View
Exemple de recrutement de réunions Exemple d’application pour afficher l’expérience de réunion pour le scénario de recrutement View View
Installation de l’application à l’aide du code QR Exemple d’application qui génère le code QR et installe l’application à l’aide du code QR View View

Voir aussi

Étapes suivantes