Delen via


Aparte vergaderruimten

In dit artikel wordt beschreven hoe u aparte vergaderruimten van Microsoft Teams implementeert met Azure Communication Services. Met deze mogelijkheid kunnen Azure Communication Services-gebruikers in Teams-vergaderingen deelnemen aan aparte vergaderruimten. Teams-beheerders beheren de beschikbaarheid van brainstormruimten in Teams-vergaderingen met het teams-vergaderbeleid. Meer informatie over aparte vergaderruimten vindt u in de documentatie van Teams.

Belangrijk

De functionaliteit die in dit artikel wordt beschreven, is momenteel beschikbaar als openbare preview. Deze preview-versie wordt geleverd zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Vereisten

  • Een Azure-account met een actief abonnement. Zie Gratis een account maken.
  • Een geïmplementeerde Communication Services-resource. Zie Een Communication Services-resource maken.
  • Een gebruikerstoegangstoken om de aanroepende client in te schakelen. Zie Toegangstokens maken en beheren voor meer informatie.
  • Organisator van Teams-vergaderingen moet teams-vergaderbeleid toewijzen dat aparte vergaderruimten mogelijk maakt. Bekijk het beleid voor Teams-vergaderingen.
  • Optioneel: Voltooi de quickstart om spraakgesprekken toe te voegen aan uw toepassing.

Alleen Microsoft 365-gebruikers met de rollen Organisator, Co-Organisator of Brainstormruimtebeheerder kunnen de brainstormruimten beheren.

Ondersteuning

In de volgende tabellen wordt ondersteuning voor brainstormruimten in Azure Communication Services gedefinieerd.

Identiteiten en oproeptypen

In de volgende tabel ziet u ondersteuning in aparte vergaderruimten voor specifiek gesprekstype en specifieke identiteit.

Identiteiten Teams-vergadering Ruimte 1:1 oproep Groepsgesprek 1:1 Teams-interopgesprek Gesprek tussen Teams groeperen
Communication Services-gebruiker ✔️
Microsoft 365-gebruiker ✔️

Operations

In de volgende tabel ziet u ondersteuning voor afzonderlijke API's in de aanroepende SDK die betrekking heeft op afzonderlijke identiteitstypen.

Operations Communication Services-gebruiker Microsoft 365-gebruiker
Toegewezen aparte vergaderruimte ophalen ✔️ ✔️
Alle aparte vergaderruimten ophalen ✔️ [1]
Deelnemen aan aparte vergaderruimte ✔️ ✔️
Aparte vergaderruimten beheren
Deelnemen aan chat in aparte vergaderruimte ✔️ [2]
Instellingen voor aparte vergaderruimten ophalen ✔️ ✔️

[1] Alleen Microsoft 365-gebruiker met rolorganisator, mede-organisator of manager van brainstormruimten.

[2] Microsoft 365-gebruikers kunnen Graph API gebruiken om deel te nemen aan een chatsessie in aparte vergaderruimten. De thread-id van de chat wordt opgegeven in het toegewezen object voor aparte vergaderruimten.

SDK's

In de volgende tabellen ziet u ondersteuning voor de functie aparte vergaderruimten in afzonderlijke Azure Communication Services-SDK's.

Ondersteuningsstatus Web Webgebruikersinterface iOS iOS-gebruikersinterface Android Android-gebruikersinterface Windows
Wordt ondersteund ✔️

Installeer de SDK

Gebruik de npm install opdracht om de Common and Calling SDK voor Azure Communication Services voor JavaScript te installeren:

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

Vereiste objecten initialiseren

Een CallClient exemplaar is vereist voor de meeste aanroepbewerkingen. Wanneer u een nieuw CallClient exemplaar maakt, kunt u deze configureren met aangepaste opties, zoals een Logger exemplaar.

Met het CallClient exemplaar kunt u een CallAgent exemplaar maken door het createCallAgentaan te roepen. Deze methode retourneert asynchroon een CallAgent exemplaarobject.

De createCallAgent methode gebruikt CommunicationTokenCredential als argument. Het accepteert een toegangstoken van een gebruiker.

U kunt de getDeviceManager methode op het CallClient exemplaar gebruiken om toegang te krijgen tot 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()

Sdk-connectiviteit met Microsoft-infrastructuur het beste beheren

Het Call Agent exemplaar helpt u bij het beheren van gesprekken (om aanroepen deel te nemen of te starten). Als u wilt werken met uw aanroepende SDK, moet u verbinding maken met de Microsoft-infrastructuur om meldingen van binnenkomende oproepen te ontvangen en andere gespreksgegevens te coördineren. Uw Call Agent heeft twee mogelijke statussen:

Verbonden : een Call Agent connectionStatue-waarde van Connected het middel dat de client-SDK is verbonden en meldingen van de Microsoft-infrastructuur kan ontvangen.

Verbinding verbroken - Een Call Agent connectionStatue-waarde van Disconnected statussen is er een probleem dat verhindert dat de SDK verbinding maakt. Call Agent moet opnieuw worden gemaakt.

  • invalidToken: Als een token is verlopen of een ongeldig exemplaar Call Agent wordt verbroken met deze fout.
  • connectionIssue: Als er een probleem is met de client die verbinding maakt met Microsoft infrascture, wordt de connectionIssue fout na veel nieuwe pogingen Call Agent weergegeven.

U kunt controleren of uw lokale Call Agent verbinding heeft met de Microsoft-infrastructuur door de huidige waarde van connectionState de eigenschap te controleren. Tijdens een actieve oproep kunt u naar de connectionStateChanged gebeurtenis luisteren om te bepalen of Call Agent de status Verbonden naar Verbroken is gewijzigd.

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);

Aparte vergaderruimten implementeren

BreakoutRooms is een feature van de klas Call. Eerst moet u het pakket Features importeren uit de Aanroepende SDK:

import { Features} from "@azure/communication-calling";

BreakoutRoom-functie maken

Haal vervolgens het functie-API-object op uit het aanroepexemplaren:

const breakoutRoomsFeature = mainMeetingCall.feature(Features.BreakoutRooms);

Abonneren op brainstormroom-gebeurtenissen

Met de BreakoutRooms API kunt u zich abonneren op BreakoutRooms gebeurtenissen. Een breakoutRoomsUpdated gebeurtenis is afkomstig van een BreakoutRoomsCallFeature exemplaar en bevat informatie over de gemaakte, bijgewerkte en toegewezen aparte vergaderruimten.

Als u details van de brainstormruimte wilt ontvangen, abonneert u zich op de breakoutRoomsUpdated gebeurtenis.

breakoutRoomsFeature.on('breakoutRoomsUpdated', breakoutRoomsUpdatedListener);

Brainstormroom-gebeurtenissen afhandelen

Gebeurtenis breakoutRoomsUpdated biedt een exemplaar van een van de volgende klassen als invoerparameter. U kunt eigenschap type gebruiken om onderscheid te maken tussen afzonderlijke gebeurtenistypen.

  • Klasse BreakoutRoomsEvent: deze gebeurtenis wordt geactiveerd wanneer een gebruiker met de rolorganisator, mede-organisator of brainstormruimtebeheerder de aparte vergaderruimten maakt of bijwerken. Microsoft 365-gebruikers met rolorganisator, mede-organisator of brainstormruimtemanager kunnen dit type gebeurtenis ontvangen. Ontwikkelaars kunnen de aparte vergaderruimten in de eigenschap data gebruiken om details over alle aparte vergaderruimten weer te geven. Deze klasse heeft een eigenschap type die gelijk is aan "breakoutRooms".

      export interface BreakoutRoomsEvent {
        /**
         * Breakout room event type
        */
        type: "breakoutRooms",
        /**
         * list of Breakout rooms
        */
        data: BreakoutRoom[] | undefined;
      }
    
  • Klasse BreakoutRoomsSettingsEvent: Wanneer een gebruiker met een rolorganisator, mede-organisator of manager van brainstormruimten de instellingen van de brainstormruimte bijwerken, wordt deze gebeurtenis geactiveerd. Ontwikkelaars kunnen deze informatie gebruiken om de tijd weer te geven waarop de aparte vergaderruimte afloopt of om een knop weer te geven om deel te nemen aan de hoofdruimte. Deze klasse heeft een eigenschap type die gelijk is aan "breakoutRoomSettings".

      export interface BreakoutRoomSettingsEvent {
        /**
        * Breakout room event type
        */
        type: "breakoutRoomSettings",
        /**
        * Breakout Room setting details
        */
        data: BreakoutRoomSettings | undefined;
      }
    
  • Klasse AssignedBreakoutRoomsEvent: deze gebeurtenis wordt geactiveerd wanneer de gebruiker is toegewezen aan een aparte vergaderruimte of toegewezen aparte vergaderruimte wordt bijgewerkt. Gebruikers kunnen deelnemen aan de aparte vergaderruimte wanneer de eigenschap state is ingesteld openop, de aparte vergaderruimte verlaten wanneer de eigenschap state is ingesteld closedop of details van de aparte vergaderruimte weergeven. Deze klasse heeft een eigenschap type die gelijk is aan "assignedBreakoutRoom".

      export interface AssignedBreakoutRoomEvent {
        /**
         * Breakout room event type
         */
        type: "assignedBreakoutRoom";
        /**
         * Assigned breakout room details
         */
        data: BreakoutRoom | undefined;
      }
    
  • Klasse JoinBreakoutRoomsEvent: deze gebeurtenis wordt geactiveerd wanneer de deelnemer deelneemt aan een brainstormruimteoproep. Deze gebeurtenis kan optreden wanneer een gebruiker automatisch wordt verplaatst naar een aparte vergaderruimte (dat wil gezegd, als assignedBreakoutRoom de eigenschap state is ingesteld op en autoMoveParticipantToBreakoutRoom is ingesteld open optrue) of wanneer een gebruiker expliciet deelneemt aan een aparte vergaderruimte (dat wil gezegd, wordt de methode join aangeroepen op het exemplaar assignedBreakoutRoom wanneer autoMoveParticipantToBreakoutRoom deze is ingesteld op false). De eigenschap data bevat het exemplaar van de aparte vergaderruimte call , die ontwikkelaars kunnen gebruiken om de aanroep van aparte vergaderruimten te beheren. Deze klasse heeft een eigenschap type die gelijk is aan "join".

      export interface JoinBreakoutRoomEvent {
        /**
         * Breakout room event type
         */
        type: "join";
        /**
         * Breakoutroom call object
         */
        data: Call | TeamsCall;
      }
    

De volgende code toont de nuttige informatie die is ontvangen in de brainstormruimtegebeurtenissen:

    const breakoutRoomsUpdatedListener = (event) => {
    switch(event.type) {
        case "breakoutRooms":
          const breakoutRooms = event.data;
          console.log(`Breakout rooms are created or updated. There are ${breakoutRooms.length} breakout rooms in total.`);
          breakoutRooms.forEach((room)=>{
          console.log(`- ${room.displayName}`);
          });    
          break;
        case "assignedBreakoutRooms":
          const assignedRoom = event.data;
          console.log(`You are assigned to breakout room named: ${assignedRoom.displayName}`);      
          console.log(`Assigned breakout room thread Id: ${assignedRoom.threadId}`);
          console.log(`Automatically move participants to breakout room: ${assignedRoom.autoMoveParticipantToBreakoutRoom}`);
          console.log(`Assigned breakout room state : ${assignedRoom.state }`);      
          break;
        case "breakoutRoomsSettings":
          const breakoutRoomSettings = event.data;
          console.log(`Breakout room ends at: ${breakoutRoomSettings.roomEndTime}`);
          console.log(`Disable the user to return to main meeting from breakout room call : ${breakoutRoomSettings.disableReturnToMainMeeting}`);         
          break;
        case "join":
          const breakoutRoomCall = event.data;
          console.log(`You have joined breakout room with call ID: ${breakoutRoomCall.id}`);      
          break;
      }
    }
breakoutRoomsFeature.on('breakoutRoomsUpdated', breakoutRoomsUpdatedListener);

Beschikbare aparte vergaderruimten weergeven

Microsoft 365-gebruikers met rolorganisator, mede-organisator of manager van aparte vergaderruimten hebben toegang tot alle aparte vergaderruimten.

const breakoutRooms = breakoutRoomsFeature.breakoutRooms;
breakoutRooms.forEach((room)=>{
      console.log(`- ${room.displayName}`);
       }); 

Genodigden weergeven

Microsoft 365-gebruiker met rolorganisator, mede-organisator of manager van aparte vergaderruimten heeft toegang tot deelnemers die zijn toegewezen aan afzonderlijke aparte vergaderruimten.

breakoutRooms.forEach((room)=>{
      console.log(`${room.displayName}`);
      room.invitees.forEach((invitee) => {
          console.log(`- ${invitee.id}`);         
          })
      })

Deelnemen aan aparte vergaderruimte

Als de assignedBreakoutRoom eigenschap autoMoveParticipantToBreakoutRoom is ingesteld op true, wordt de gebruiker automatisch verplaatst naar de aparte vergaderruimte wanneer de eigenschap state is ingesteld op open. Als autoMoveParticipantToBreakoutRoom dit is ingesteld false, gebruikt u de volgende code om deel te nemen aan aparte vergaderruimte.

Met deze trigger wordt breakoutRoomsUpdated de gebeurtenis geactiveerd met de klasse JoinBreakoutRoomsEvent waarvoor de eigenschap type is ingesteld als join. U kunt het exemplaar van een klasse call in de eigenschap data gebruiken om de aanroep van aparte vergaderruimten te beheren.

const breakoutRoom = breakoutRoomsFeature.assignedBreakoutRoom;
if(breakoutRoom.state == 'open' && !breakoutRoom.autoMoveParticipantToBreakoutRoom) {
  const breakoutRoomCall = await breakoutRoom.join();
}

Aparte vergaderruimte verlaten

Wanneer de status van de aparte vergaderruimte is closed, wordt de gebruiker automatisch verplaatst naar de hoofdvergadering. Gebruiker wordt geïnformeerd over het einde van de aparte vergaderruimte door een gebeurtenis breakoutRoomsUpdated te ontvangen met klasse AssignedBreakoutRoomsEvent en eigenschap type die gelijk is aan assignedBreakoutRooms dat aangeeft dat assignedBreakoutRoom de eigenschap state is ingesteld op closed.

Als de gebruiker de aparte vergaderruimte wil verlaten, zelfs voordat de ruimte wordt gesloten en de instellingen breakoutRoomsFeature.breakoutRoomsSettings voor de aparte vergaderruimte zijn disableReturnToMainMeeting ingesteld, false kan de gebruiker deelnemen aan de hoofdvergadering met de volgende code:

const breakoutRoomsSettings = breakoutRoomsFeature.breakoutRoomsSettings;
 if(breakoutRoomCall != null && !breakoutRoomsSettings.disableReturnToMainMeeting){
    breakoutRoomCall.hangUp();   
    mainMeetingCall.resume();
 }

Deelnemers aan de aparte vergaderruimte ophalen

Wanneer u deelneemt aan de aparte vergaderruimte, kunt u de volgende code gebruiken om de lijst met externe deelnemers aan de aparte vergaderruimte op te halen:

const breakoutRoomParticipants = [breakoutRoomCall.remoteParticipants.values()].map((p: SDK.RemoteParticipant) => { p.displayName || p.identifier });
console.log(`Participants of the breakoutRoom : <br/>" + breakoutRoomParticipants.join("<br/>")`);

Het ontvangen van aparte vergaderruimten stoppen

Gebruik de volgende code om te stoppen met het ontvangen van breakoutRooms-gebeurtenissen.

breakoutRoomsFeature.off('breakoutRoomsUpdated', breakoutRoomsUpdatedListener);

Eigenschappen van aparte vergaderruimten

Aparte vergaderruimten hebben de volgende eigenschappen:

Notitie

In de volgende voorbeeldcode worden alle eigenschappen van aparte vergaderruimten efficiënt weergegeven. Het is niet bedoeld om opnieuw te worden gebruikt zoals wordt weergegeven. In de praktijk gebruikt u alleen de eigenschappen die nodig zijn voor uw brainstormruimtescenario.

const displayName : string = breakoutRoom.displayName;
const threadId : string = breakoutRoom.threadId;
const state : BreakoutRoomState = breakoutRoom.state;
const autoMoveParticipantToBreakoutRoom : boolean = breakoutRoom.autoMoveParticipantToBreakoutRoom;
const call : Call | TeamsCall = breakoutRoom.call;
const invitees : Invitee[] = breakoutRoom.invitees;
Eigenschappen van aparte vergaderruimten Beschrijving
displayName Naam van de aparte vergaderruimte. Deze eigenschap heeft het kenmerk Alleen-lezen.
threadId Gebruik de id van de chat-thread om deel te nemen aan de chatsessie van de aparte vergaderruimte. Deze eigenschap heeft het kenmerk Alleen-lezen.
state Status van de aparte vergaderruimte. Het kan een of open closed. Gebruikers kunnen alleen deelnemen aan de aparte vergaderruimte wanneer de status is open. Deze eigenschap heeft het kenmerk Alleen-lezen.
autoMoveParticipantToBreakoutRoom Booleaanse waarde die aangeeft of de gebruikers automatisch naar aparte vergaderruimten worden verplaatst wanneer de state waarde assignedBreakoutRoom is ingesteld op open. Deze eigenschap heeft het kenmerk Alleen-lezen. In de instellingen voor de gebruikersinterface van Teams voor aparte vergaderruimten kan de organisator, mede-organisator of brainstormruimtemanager deze specifieke instelling aanpassen. Door deze optie in te truestellen, worden deelnemers automatisch overgebracht naar hun aangewezen aparte vergaderruimte. Als u deze eigenschap falseechter instelt op , moet u de join methode handmatig aanroepen om deelnemers naar de aparte vergaderruimte te verplaatsen.
call Call-object voor aparte vergaderruimten. Dit object wordt geretourneerd wanneer de gebruiker automatisch deelneemt aan de aanroep van de aparte vergaderruimte of door de join methode voor het object aan assignedBreakoutRoom te roepen. Deze eigenschap heeft het kenmerk Alleen-lezen.
invitees De lijst met genodigden die zijn toegewezen aan de aparte vergaderruimte. Deze eigenschap heeft het kenmerk Alleen-lezen.

Instellingen voor aparte vergaderruimten

Aparte vergaderruimten delen de instelling met de volgende eigenschappen:

const disableReturnToMainMeeting : boolean = breakoutRoomsSettings.disableReturnToMainMeeting;
const roomEndTime : TimestampInfo = breakoutRoomsSettings.roomEndTime;
Eigenschappen van aparte vergaderruimten Beschrijving
disableReturnToMainMeeting Schakel deelnemers uit om terug te keren naar de hoofdvergadering vanuit de oproep in de brainstormruimte. Deze eigenschap heeft het kenmerk Alleen-lezen. In de instellingen voor de gebruikersinterface van Teams voor brainstormruimten kunnen de organisator, mede-organisator of manager van brainstormruimten deze specifieke instelling aanpassen om te bepalen wanneer de deelnemer aan aparte vergaderruimten kan terugkeren naar de hoofdvergadering.
roomEndTime Eindtijd van aparte vergaderruimte ingesteld door de Microsoft 365-gebruiker met rolorganisator, mede-organisator of manager van de hoofdvergadering. Deze eigenschap heeft het kenmerk Alleen-lezen.

Probleemoplossing

Foutcode Subcode Resultaatcategorie Reden Oplossing
400 46250 ExpectedError De functie Brainstormruimten is alleen beschikbaar in Teams-vergaderingen. Implementeer uw eigen mechanisme voor aparte vergaderruimten of gebruik Teams-vergaderingen.
405 46251 ExpectedError Azure Communication Services heeft deze functie momenteel uitgeschakeld. Probeer de API's over een paar dagen.
500 46254 UnexpectedServerError Kan niet deelnemen aan aparte vergaderruimte vanwege een onverwachte fout. Zorg ervoor dat de state van assignedBreakoutRoom is open en de aanroepmethode breakoutRoomsFeature.assignedBreakoutRoom.join() expliciet is. Als het probleem zich blijft voordoen, verzamelt u browserconsolelogboeken en neemt u contact op met de ondersteuning van Azure Communication Services.
500 46255 UnexpectedServerError Kan de hoofdvergadering niet houden. Zorg ervoor dat de state van assignedBreakoutRoom is open en de aanroepmethode breakoutRoomsFeature.assignedBreakoutRoom.join() expliciet is. Als het probleem zich blijft voordoen, verzamelt u browserconsolelogboeken en neemt u contact op met de ondersteuning van Azure Communication Services.
412 46256 ExpectedError Kan niet deelnemen aan aparte vergaderruimte omdat de ruimte is gesloten. Zorg ervoor dat de state van assignedBreakoutRoom is open en de aanroepmethode breakoutRoomsFeature.assignedBreakoutRoom.join() expliciet is.
412 46257 UnexpectedServerError Kan de hoofdvergadering niet hervatten. Volg de instructies die zijn gedefinieerd in de sectie Leave breakout room voor het handmatig verlaten van aparte vergaderruimten. Als het probleem zich blijft voordoen, verzamelt u browserconsolelogboeken en neemt u contact op met de ondersteuning van Azure Communication Services.
412 46258 UnexpectedClientError Kan de details van de aparte vergaderruimte niet lezen. Verzamel browserconsolelogboeken en neem contact op met de ondersteuning van Azure Communication Services.
500 46259 UnexpectedServerError Kan de oproep aparte vergaderruimte niet ophangen. Volg de instructies die zijn gedefinieerd in de sectie Leave breakout room voor het handmatig verlaten van aparte vergaderruimten.
412 46260 UnexpectedClientError Kan niet deelnemen aan brainstormruimte omdat deze nog niet is toegewezen. Zorg ervoor dat de breakoutRoomsFeature.assignedBreakoutRoom details van de toegewezen aparte vergaderruimte aanwezig zijn. Zorg ervoor dat de state van assignedBreakoutRoom is open en de aanroepmethode breakoutRoomsFeature.assignedBreakoutRoom.join() expliciet is.

Volgende stappen