Partecipare a una riunione di team
Servizi di comunicazione di Azure SDK possono consentire agli utenti di partecipare alle normali riunioni di Microsoft Teams. Ecco come!
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Una risorsa di Servizi di comunicazione distribuita. Creare una risorsa di Servizi di comunicazione.
- Token di accesso utente per abilitare il client chiamante. Per altre informazioni, vedere Creare e gestire i token di accesso.
- Facoltativo: Completare la guida introduttiva per aggiungere chiamate vocali all'applicazione
Installazione dell'SDK
Usare il comando npm install
per installare SDK comuni e di chiamata di Servizi di comunicazione di Azure per JavaScript:
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
Inizializzare gli oggetti necessari
Per la maggior parte delle operazioni di chiamata è necessaria un'istanza di CallClient
. Quando si crea una nuova istanza di CallClient
, è possibile configurarla con opzioni personalizzate come un'istanza di Logger
.
Con l'istanza di CallClient
è possibile creare un'istanza di CallAgent
chiamando il createCallAgent
. Questo metodo restituisce in modo asincrono un oggetto istanza CallAgent
.
Il metodo createCallAgent
usa CommunicationTokenCredential
come argomento. Accetta un token di accesso utente.
È possibile usare il metodo getDeviceManager
nell'istanza di CallClient
per accedere a 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()
Come gestire al meglio la connettività dell'SDK all'infrastruttura Microsoft
L'istanza Call Agent
consente di gestire le chiamate (per partecipare o avviare le chiamate). Per lavorare con l'SDK per chiamate, è necessario connettersi all'infrastruttura Microsoft per ricevere notifiche delle chiamate in arrivo e coordinare altri dettagli delle chiamate. Call Agent
ha due possibili stati:
Connesso : un valore connectionStatue Call Agent
di Connected
indica che l'SDK client è connesso e in grado di ricevere notifiche dall'infrastruttura Microsoft.
Disconnesso : un valore connectionStatue Call Agent
di Disconnected
indica un problema che impedisce all'SDK di connettersi correttamente. Call Agent
deve essere ricreato.
invalidToken
: se un token è scaduto o non è valido l'istanzaCall Agent
si disconnette con questo errore.connectionIssue
: se si verifica un problema con il client che si connette a Microsoft infrascture, dopo molti tentativiCall Agent
espone l'erroreconnectionIssue
.
È possibile verificare se l'infrastruttura locale Call Agent
è connessa all'infrastruttura Microsoft controllando il valore corrente della proprietà connectionState
. Durante una chiamata attiva è possibile restare in ascolto dell'evento connectionStateChanged
per determinare se Call Agent
cambia dallo stato Connesso a Disconnesso.
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);
Metodi di partecipazione alle riunioni
Per partecipare a una riunione di Teams, usare il join
metodo e passare un collegamento alla riunione o le coordinate di una riunione.
Partecipare usando un collegamento alla riunione:
const locator = { meetingLink: '<MEETING_LINK>'}
const call = callAgent.join(locator);
Partecipare usando le coordinate della riunione (attualmente disponibile in anteprima limitata):
const locator = {
threadId: <thread id>,
organizerId: <organizer id>,
tenantId: <tenant id>,
messageId: <message id>
}
const call = callAgent.join(locator);
Configurare il sistema
Seguire questa procedura per configurare il sistema.
Creare il progetto di Visual Studio
Per un'app piattaforma UWP (Universal Windows Platform), in Visual Studio 2022 creare un nuovo progetto App vuota (Windows universale). Dopo aver immesso il nome del progetto, è possibile scegliere qualsiasi Windows SDK successivo alla versione 10.0.17763.0.
Per un'app WinUI 3, creare un nuovo progetto con il modello App vuota, Incluso nel pacchetto (WinUI 3 in Desktop) per configurare un'app WinUI 3 a pagina singola. È necessario SDK per app di Windows in versione 1.3 o successiva.
Installare il pacchetto e le dipendenze usando Gestione pacchetti NuGet
Le API e le librerie di SDK Chiamata sono disponibili pubblicamente tramite un pacchetto NuGet.
Per trovare, scaricare e installare il pacchetto NuGet Calling SDK:
- Aprire Gestione pacchetti NuGet selezionando Strumenti>Gestione pacchetti NuGet> Gestisci pacchetti NuGet per la soluzione.
- Selezionare Sfoglia e quindi immettere Azure.Communication.Calling.WindowsClient nella casella di ricerca.
- Assicurarsi che la casella di controllo Includi versione preliminare sia selezionata.
- Selezionare il pacchetto Azure.Communication.Calling.WindowsClient e quindi selezionare Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 o una versione più recente.
- Selezionare la casella di controllo corrispondente al progetto Servizi di comunicazione di Azure nel riquadro destro.
- Selezionare Installa.
Metodi di partecipazione alle riunioni
Per partecipare a una riunione di Teams, usare il metodo e passare il CallAgent.join
contesto dell'applicazione, JoinMeetingLocator
e JoinCallOptions
.
ID riunione e passcode
TeamsMeetingIdLocator
individua una riunione utilizzando un ID riunione e un passcode. Queste informazioni sono disponibili nelle informazioni di partecipazione di una riunione di Teams.
Un ID riunione di Teams sarà lungo 12 caratteri e sarà costituito da cifre numeriche raggruppate in tre (ad esempio 000 000 000 000
).
Un passcode sarà costituito da 6 caratteri alfabetici (ad esempio aBcDeF
). Il passcode fa distinzione tra maiuscole e minuscole.
String meetingId, passcode;
TeamsMeetingIdLocator locator = new TeamsMeetingIdLocator(meetingId, passcode);
Collegamento alla riunione
TeamsMeetingLinkLocator
Individua una riunione usando un collegamento a una riunione di Teams. Questo è disponibile nelle informazioni di partecipazione a una riunione di Teams.
String meetingLink;
TeamsMeetingLinkLocator locator = new TeamsMeetingLinkLocator(meetingLink);
Coordinate della riunione
TeamsMeetingCoordinatesLocator
Individua le riunioni usando un ID organizzatore, un ID tenant, un ID thread e un ID messaggio. Queste informazioni sono disponibili usando Microsoft Graph.
Guid organizerId, tenantId;
String threadId, messageId;
TeamsMeetingCoordinatesLocator locator = new TeamsMeetingCoordinatesLocator(threadId, organizerId, tenantId, messageId);
Partecipare alla riunione con i localizzatori
Dopo aver creato questi localizzatori di riunioni di Teams, è possibile usarlo per partecipare a una riunione di Teams usando CallAgent.join
come illustrato di seguito.
JoinCallOptions options = new JoinCallOptions();
call = agent.join(
getApplicationContext(),
locator,
options);
Configurare il sistema
Seguire questa procedura per configurare il sistema.
Creare il progetto di Visual Studio
Per un'app piattaforma UWP (Universal Windows Platform), in Visual Studio 2022 creare un nuovo progetto App vuota (Windows universale). Dopo aver immesso il nome del progetto, è possibile scegliere qualsiasi Windows SDK successivo alla versione 10.0.17763.0.
Per un'app WinUI 3, creare un nuovo progetto con il modello App vuota, Incluso nel pacchetto (WinUI 3 in Desktop) per configurare un'app WinUI 3 a pagina singola. È necessario SDK per app di Windows in versione 1.3 o successiva.
Installare il pacchetto e le dipendenze usando Gestione pacchetti NuGet
Le API e le librerie di SDK Chiamata sono disponibili pubblicamente tramite un pacchetto NuGet.
Per trovare, scaricare e installare il pacchetto NuGet Calling SDK:
- Aprire Gestione pacchetti NuGet selezionando Strumenti>Gestione pacchetti NuGet> Gestisci pacchetti NuGet per la soluzione.
- Selezionare Sfoglia e quindi immettere Azure.Communication.Calling.WindowsClient nella casella di ricerca.
- Assicurarsi che la casella di controllo Includi versione preliminare sia selezionata.
- Selezionare il pacchetto Azure.Communication.Calling.WindowsClient e quindi selezionare Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 o una versione più recente.
- Selezionare la casella di controllo corrispondente al progetto Servizi di comunicazione di Azure nel riquadro destro.
- Selezionare Installa.
Metodi di partecipazione alle riunioni
Per partecipare a una riunione di Teams, usare il CallAgent.join
metodo e passare un JoinMeetingLocator
oggetto e .JoinCallOptions
ID riunione e passcode
TeamsMeetingIdLocator
individua una riunione utilizzando un ID riunione e un passcode. Queste informazioni sono disponibili nelle informazioni di partecipazione di una riunione di Teams.
Un ID riunione di Teams sarà lungo 12 caratteri e sarà costituito da cifre numeriche raggruppate in tre (ad esempio 000 000 000 000
).
Un passcode sarà costituito da 6 caratteri alfabetici (ad esempio aBcDeF
). Il passcode fa distinzione tra maiuscole e minuscole.
String meetingId, passcode
let locator = TeamsMeetingIdLocator(meetingId: meetingId, passcode: passcode)
Collegamento alla riunione
TeamsMeetingLinkLocator
Individua una riunione usando un collegamento a una riunione di Teams. Questo è disponibile nelle informazioni di partecipazione a una riunione di Teams.
String meetingLink
let locator = TeamsMeetingLinkLocator(meetingLink: meetingLink)
Partecipare alla riunione con i localizzatori
Dopo aver creato questi localizzatori di riunioni di Teams, è possibile usarlo per partecipare a una riunione di Teams usando CallAgent.join
come illustrato di seguito.
func joinTeamsMeeting() {
// Ask permissions
AVAudioSession.sharedInstance().requestRecordPermission { (granted) in
if granted {
let joinCallOptions = JoinCallOptions()
// Insert meeting locator code for specific join methods here
// for CallAgent callAgent
self.callAgent?.join(with: teamsMeetingLinkLocator, joinCallOptions: joinCallOptions)
}
}
}
Configurare il sistema
Seguire questa procedura per configurare il sistema.
Creare il progetto di Visual Studio
Per un'app piattaforma UWP (Universal Windows Platform), in Visual Studio 2022 creare un nuovo progetto App vuota (Windows universale). Dopo aver immesso il nome del progetto, è possibile scegliere qualsiasi Windows SDK successivo alla versione 10.0.17763.0.
Per un'app WinUI 3, creare un nuovo progetto con il modello App vuota, Incluso nel pacchetto (WinUI 3 in Desktop) per configurare un'app WinUI 3 a pagina singola. È necessario SDK per app di Windows in versione 1.3 o successiva.
Installare il pacchetto e le dipendenze usando Gestione pacchetti NuGet
Le API e le librerie di SDK Chiamata sono disponibili pubblicamente tramite un pacchetto NuGet.
Per trovare, scaricare e installare il pacchetto NuGet Calling SDK:
- Aprire Gestione pacchetti NuGet selezionando Strumenti>Gestione pacchetti NuGet> Gestisci pacchetti NuGet per la soluzione.
- Selezionare Sfoglia e quindi immettere Azure.Communication.Calling.WindowsClient nella casella di ricerca.
- Assicurarsi che la casella di controllo Includi versione preliminare sia selezionata.
- Selezionare il pacchetto Azure.Communication.Calling.WindowsClient e quindi selezionare Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 o una versione più recente.
- Selezionare la casella di controllo corrispondente al progetto Servizi di comunicazione di Azure nel riquadro destro.
- Selezionare Installa.
Metodi di partecipazione alle riunioni
Per partecipare a una riunione di Teams, usare il CallAgent.JoinAsync
metodo e passare un JoinMeetingLocator
oggetto e .JoinCallOptions
ID riunione e passcode
TeamsMeetingIdLocator
individua una riunione utilizzando un ID riunione e un passcode. Queste informazioni sono disponibili nelle informazioni di partecipazione di una riunione di Teams.
Un ID riunione di Teams sarà lungo 12 caratteri e sarà costituito da cifre numeriche raggruppate in tre (ad esempio 000 000 000 000
).
Un passcode sarà costituito da 6 caratteri alfabetici (ad esempio aBcDeF
). Il passcode fa distinzione tra maiuscole e minuscole.
string meetingId, passcode;
TeamsMeetingIdLocator locator = new TeamsMeetingIdLocator(meetingId, passcode);
Collegamento alla riunione
TeamsMeetingLinkLocator
Individua una riunione usando un collegamento a una riunione di Teams. Questo è disponibile nelle informazioni di partecipazione a una riunione di Teams.
string meetingLink;
TeamsMeetingLinkLocator locator = new TeamsMeetingLinkLocator(meetingLink);
Coordinate della riunione
TeamsMeetingCoordinatesLocator
Individua le riunioni usando un ID organizzatore, un ID tenant, un ID thread e un ID messaggio. Queste informazioni sono disponibili usando Microsoft Graph.
Guid organizerId, tenantId;
string threadId, messageId;
TeamsMeetingCoordinatesLocator locator = new TeamsMeetingCoordinatesLocator(threadId, organizerId, tenantId, messageId);
Partecipare alla riunione con i localizzatori
Dopo aver creato questi localizzatori di riunioni di Teams, è possibile usarlo per partecipare a una riunione di Teams usando CallAgent.JoinAsync
come illustrato di seguito.
var joinCallOptions = new JoinCallOptions() {
OutgoingAudioOptions = new OutgoingAudioOptions() { IsMuted = true },
OutgoingVideoOptions = new OutgoingVideoOptions() { Streams = new OutgoingVideoStream[] { cameraStream } }
};
var call = await callAgent.JoinAsync(locator, joinCallOptions);