Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo esercizio si apprenderà come recuperare dinamicamente i valori di identità utente e token da Servizi di comunicazione di Azure usando Funzioni di Azure. Una volta recuperati, i valori verranno passati al composito dell'interfaccia utente ACS per consentire l'esecuzione di una chiamata da parte di un cliente.
Aprire local.settings.json e aggiornare il
ACS_CONNECTION_STRINGvalore con la stringa di connessione ACS salvata in un esercizio precedente.Aprire Startup.cs in Visual Studio ed esplorare la seconda
AddSingleton()chiamata all'interno del metodoConfigureServices().var host = new HostBuilder() .ConfigureFunctionsWebApplication() .ConfigureServices(services => { ... services.AddSingleton(static p => { var config = p.GetRequiredService<IConfiguration>(); var connectionString = config.GetValue<string>("ACS_CONNECTION_STRING"); return new CommunicationIdentityClient(connectionString); }); ... }) .Build(); }La
AddSingleton()chiamata crea unCommunicationIdentityClientoggetto usando ilACS_CONNECTION_STRINGvalore di local.settings.json.Aprire ACSTokenFunction.cs e individuare il costruttore e le definizioni dei campi.
Viene definito un campo denominato
Scopesche include l'ambitoCommunicationTokenScope.VoIP. Questo ambito viene usato per creare il token di accesso per la videochiamata.private static readonly CommunicationTokenScope[] Scopes = [ CommunicationTokenScope.VoIP, ];L'istanza
CommunicationIdentityClientsingleton creata in Startup.cs viene inserita nel costruttore e assegnata al_tokenClientcampo.private readonly CommunicationIdentityClient _tokenClient; public ACSTokenFunction(CommunicationIdentityClient tokenClient) { _tokenClient = tokenClient; }
Esplora il
Run()metodo in ACSTokenFunction.cs:[Function("HttpTriggerAcsToken")] public async Task<HttpResponseData> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequestData req, ILogger log) { var user = await _tokenClient.CreateUserAsync(); var userToken = await _tokenClient.GetTokenAsync(user, Scopes); var response = req.CreateResponse(HttpStatusCode.OK); await response.WriteAsJsonAsync( new { userId = user.Value.Id, userToken.Value.Token, userToken.Value.ExpiresOn } ); return response; }- Definisce una funzione denominata di
HttpTriggerAcsTokenche può essere chiamata con una richiesta HTTP GET. - Un nuovo utente ACS viene creato chiamando il
_tokenClient.CreateUserAsync()metodo . - Un token di accesso usato per le videochiamate viene creato chiamando il
_tokenClient. GetTokenAsync()metodo . - L'ID utente e il token vengono restituiti dalla funzione come oggetto JSON.
- Definisce una funzione denominata di
Eseguire il programma premendo F5 in Visual Studio o selezionando Debug -> Avvia debug dal menu. Verrà avviato il progetto di Azure Functions e rendere
ACSTokenFunctiondisponibile per le chiamate.Annotazioni
Se si usa VS Code, è possibile aprire una finestra del terminale nella cartella GraphACSFunctions ed eseguire
func start. Si presuppone che nel computer siano installati gli strumenti di base di Funzioni di Azure .Ora che le Funzioni di Azure sono in esecuzione in locale, il client deve essere in grado di chiamarle per ottenere l'identità utente ACS e i valori del token.
Aprire il file samples/acs-to-teams-meeting/client/react/App.tsx nell'editor.
Individuare le
userIdvariabili di stato etokennel componente. Rimuovere i valori hardcoded e sostituirli con virgolette vuote:const [userId, setUserId] = useState<string>(''); const [token, setToken] = useState<string>('');Individuare la
useEffectfunzione e modificarla in modo che sia simile alla seguente per abilitare la chiamata alla funzione di Azure per recuperare un'identità utente e un token ACS:useEffect(() => { const init = async () => { setMessage('Getting ACS user'); //Call Azure Function to get the ACS user identity and token let res = await fetch(process.env.REACT_APP_ACS_USER_FUNCTION as string); let user = await res.json(); setUserId(user.userId); setToken(user.token); setMessage('Getting Teams meeting link...'); //Call Azure Function to get the meeting link res = await fetch(process.env.REACT_APP_TEAMS_MEETING_FUNCTION as string); let link = await res.text(); setTeamsMeetingLink(link); setMessage(''); console.log('Teams meeting link', link); } init(); }, []);Salvare il file prima di continuare.
Aprire una finestra del terminale ed eseguire
npm startnellareactcartella . Dopo la compilazione e il caricamento, verrà visualizzata l'interfaccia utente chiamante ACS ed è possibile chiamare la riunione di Teams creata dinamicamente da Microsoft Graph.Arrestare l'app React premendo CTRL+C nella finestra del terminale.
Arresta il progetto Funzioni di Azure.
Eseguire il commit delle modifiche Git ed eseguirne il push nel repository GitHub usando Visual Studio Code:
- Selezionare l'icona Controllo del codice sorgente (terza giù nella barra degli strumenti di Visual Studio Code).
- Immettere un messaggio di commit e selezionare Commit.
- Seleziona Sincronizza modifiche.