Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste exercício, você aprenderá como recuperar dinamicamente a identidade do usuário e os valores de token dos Serviços de Comunicação do Azure usando o Azure Functions. Uma vez recuperados, os valores serão passados para o composto da interface do usuário do ACS para permitir que uma chamada seja feita por um cliente.
Abra local.settings.json e atualize o valor
ACS_CONNECTION_STRING
com a cadeia de conexão ACS que guardou numa tarefa anterior.Abra Startup.cs no Visual Studio e explore a segunda
AddSingleton()
chamada noConfigureServices()
método.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(); }
A
AddSingleton()
chamada cria umCommunicationIdentityClient
objeto usando oACS_CONNECTION_STRING
valor de local.settings.json.Abra ACSTokenFunction.cs e localize o construtor e as definições de campo.
É definido um campo nomeado
Scopes
que inclui oCommunicationTokenScope.VoIP
escopo. Esse escopo é usado para criar o token de acesso para a chamada de vídeo.private static readonly CommunicationTokenScope[] Scopes = [ CommunicationTokenScope.VoIP, ];
A
CommunicationIdentityClient
instância singleton criada em Startup.cs é injetada no construtor e atribuída ao_tokenClient
campo.private readonly CommunicationIdentityClient _tokenClient; public ACSTokenFunction(CommunicationIdentityClient tokenClient) { _tokenClient = tokenClient; }
Explore o
Run()
método em 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; }
- Define uma função chamada
HttpTriggerAcsToken
que pode ser invocada com uma solicitação HTTP GET. - Um novo usuário ACS é criado chamando o
_tokenClient.CreateUserAsync()
método. - Um token de acesso usado para chamadas de vídeo é criado chamando o
_tokenClient. GetTokenAsync()
método. - O ID do usuário e o token são retornados da função como um objeto JSON.
- Define uma função chamada
Execute o programa pressionando F5 no Visual Studio ou selecionando Depurar --> Iniciar Depuração no menu. Isso iniciará o projeto do Azure Functions e disponibilizará o
ACSTokenFunction
para chamada.Observação
Se você estiver usando o VS Code, você pode abrir uma janela de terminal na pasta GraphACSFunctions e executar
func start
. Isso pressupõe que você tenha as Ferramentas Principais do Azure Functions instaladas em sua máquina.Agora que o Azure Functions está sendo executado localmente, o cliente precisa ser capaz de chamá-los para obter a identidade do usuário do ACS e os valores de token.
Abra o arquivo samples/acs-to-teams-meeting/client/react/App.tsx em seu editor.
Encontre as variáveis de estado
userId
etoken
no componente. Remova os valores codificados e substitua-os por aspas vazias:const [userId, setUserId] = useState<string>(''); const [token, setToken] = useState<string>('');
Localize a
useEffect
função e altere-a para ter a seguinte aparência para habilitar a chamada da Função do Azure para recuperar uma identidade de usuário e um token do 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(); }, []);
Salve o arquivo antes de continuar.
Abra uma janela do terminal e execute
npm start
nareact
pasta. Depois que o sistema compilar e carregar, deverá ver a interface de utilizador de chamada do ACS exibida e poderá entrar na reunião do Teams que foi criada de forma dinâmica pelo Microsoft Graph.Pare o aplicativo React pressionando Ctrl + C na janela do terminal.
Pare o projeto do Azure Functions.
Confirme suas alterações do git e envie-as por push para o repositório do GitHub usando o Visual Studio Code:
- Selecione o ícone Controle do código-fonte (3º abaixo na barra de ferramentas Código do Visual Studio).
- Insira uma mensagem de confirmação e selecione Confirmar.
- Selecione Sincronizar alterações.