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 createCallAgent
aan 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 exemplaarCall Agent
wordt verbroken met deze fout.connectionIssue
: Als er een probleem is met de client die verbinding maakt met Microsoft infrascture, wordt deconnectionIssue
fout na veel nieuwe pogingenCall 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 eigenschapdata
gebruiken om details over alle aparte vergaderruimten weer te geven. Deze klasse heeft een eigenschaptype
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 eigenschaptype
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 eigenschapstate
is ingesteldopen
op, de aparte vergaderruimte verlaten wanneer de eigenschapstate
is ingesteldclosed
op of details van de aparte vergaderruimte weergeven. Deze klasse heeft een eigenschaptype
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, alsassignedBreakoutRoom
de eigenschapstate
is ingesteld op enautoMoveParticipantToBreakoutRoom
is ingesteldopen
optrue
) of wanneer een gebruiker expliciet deelneemt aan een aparte vergaderruimte (dat wil gezegd, wordt de methodejoin
aangeroepen op het exemplaarassignedBreakoutRoom
wanneerautoMoveParticipantToBreakoutRoom
deze is ingesteld opfalse
). De eigenschapdata
bevat het exemplaar van de aparte vergaderruimtecall
, die ontwikkelaars kunnen gebruiken om de aanroep van aparte vergaderruimten te beheren. Deze klasse heeft een eigenschaptype
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 true stellen, worden deelnemers automatisch overgebracht naar hun aangewezen aparte vergaderruimte. Als u deze eigenschap false echter 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. |