Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste exercício, você adicionará o composto de chamada da interface do usuário do ACS em um aplicativo React para habilitar a realização de chamadas de áudio/vídeo de um aplicativo personalizado em uma reunião do Microsoft Teams.
Visite o GitHub e faça login. Se você ainda não tiver uma conta no GitHub, poderá selecionar a opção Inscrever-se para criar uma.
Visite o repositório GitHub da Microsoft Cloud.
Selecione a opção Fork para adicionar o repositório à sua organização/conta desejada do GitHub.
Execute o seguinte comando para clonar este repositório para a sua máquina. Substitua <YOUR_ORG_NAME> pelo nome da sua organização/conta do GitHub.
git clone https://github.com/<YOUR_ORG_NAME>/MicrosoftCloudAbra a pasta do projeto samples/acs-to-teams-meeting no Visual Studio Code.
Expanda a pasta client/react.
Abra o arquivo package.json no VS Code e observe que os seguintes pacotes ACS estão incluídos:
@azure/communication-common @azure/communication-reactVerifique se você tem o npm 10 ou superior instalado abrindo uma janela do terminal e executando o seguinte comando:
npm --versionSugestão
Se você não tiver o npm 10 ou superior instalado, poderá atualizar o npm para a versão mais recente executando
npm install -g npm.Abra uma janela do terminal e execute o
npm installcomando na pasta react para instalar as dependências do aplicativo.Abra App.tsx e reserve um momento para explorar as importações na parte superior do arquivo. Eles lidam com a importação de símbolos de segurança ACS e chamadas de áudio/vídeo que serão usados no aplicativo.
import { AzureCommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common'; import { CallComposite, fromFlatCommunicationIdentifier, useAzureCommunicationCallAdapter } from '@azure/communication-react'; import React, { useState, useMemo, useEffect } from 'react'; import './App.css';Observação
Você verá como o
CallCompositecomponente é usado mais adiante neste exercício. Ele fornece a funcionalidade principal da interface do usuário para os Serviços de Comunicação do Azure para permitir fazer uma chamada de áudio/vídeo do aplicativo em uma reunião do Microsoft Teams.Localize o
Appcomponente e execute as seguintes tarefas:- Reserve um momento para examinar as
useStatedefinições no componente. - Substitua as aspas vazias da
userIduseStatefunção pelo valor de identidade do usuário ACS copiado no exercício anterior. - Substitua as aspas vazias da função
tokenuseStatepelo valor do token ACS copiado no exercício anterior. - Substitua as aspas vazias da
teamsMeetingLinkuseStatefunção pelo valor do link de reunião do Teams copiado no exercício anterior.
// Replace '' with the ACS user identity value const [userId, setUserId] = useState<string>(''); // Replace '' with the ACS token value const [token, setToken] = useState<string>(''); // Replace '' with the Teams meeting link value const [teamsMeetingLink, setTeamsMeetingLink] = useState<string>('');Observação
Mais adiante neste tutorial, você verá como recuperar o
userId,tokeneteamsMeetingLinkvalores dinamicamente.- Reserve um momento para examinar as
Reserve um momento para explorar as
useMemofunções noAppcomponente.- A
credentialuseMemofunção cria uma novaAzureCommunicationTokenCredentialinstância quando o token tem um valor. - A
callAdapterArgsuseMemofunção retorna um objeto que tem os argumentos que são usados para fazer uma chamada de áudio/vídeo. Observe que usa os valoresuserId,credentialeteamsMeetingLinknos argumentos de chamada do ACS.
const credential = useMemo(() => { if (token) { return new AzureCommunicationTokenCredential(token) } return; }, [token]); const callAdapterArgs = useMemo(() => { if (userId && credential && displayName && teamsMeetingLink) { return { userId: fromFlatCommunicationIdentifier(userId) as CommunicationUserIdentifier, displayName, credential, locator: { meetingLink: teamsMeetingLink }, } } return {}; }, [userId, credential, displayName, teamsMeetingLink]);Observação
useMemoé usado neste cenário porque só queremos que oAzureCommunicationTokenCredentialobjeto e o adaptador de chamada args sejam criados uma vez à medida que os parâmetros necessários são passados. Veja detalhes adicionais sobre useMemo aqui.- A
Quando o
credentialsecallAdapterArgsestiverem prontos, a linha a seguir trata da criação de um adaptador de chamada ACS usando ouseAzureCommunicationCallAdaptergancho React fornecido pelo ACS. OcallAdapterobjeto será usado posteriormente na interface do usuário chamando o componente composto.const callAdapter = useAzureCommunicationCallAdapter(callAdapterArgs);Observação
Como
useAzureCommunicationCallAdapteré um hook do React, ele não atribuirá um valor acallAdapteraté que o valor decallAdapterArgsseja válido.Anteriormente, você atribuiu a identidade do usuário, o token e o link de reunião do Teams aos valores de estado no
Appcomponente. Isso funciona bem por enquanto, mas em um exercício posterior você verá como recuperar dinamicamente esses valores. Como você definiu os valores anteriormente, comente ouseEffectcódigo na função como mostrado a seguir. Depois de executar o Azure Functions nos próximos exercícios, você revisitará esse código.useEffect(() => { /* Commenting out for now 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(); */ }, []);Localize o seguinte código JSX. Ele usa o
CallCompositesímbolo que você viu importado para renderizar a interface do usuário usada para fazer uma chamada de áudio/vídeo do aplicativo React em uma reunião do Teams. OcallAdapterque você explorou anteriormente é passado para suaadapterpropriedade para fornecer os argumentos necessários.if (callAdapter) { return ( <div> <h1>Contact Customer Service</h1> <div className="wrapper"> <CallComposite adapter={callAdapter} /> </div> </div> ); }Salve o arquivo antes de continuar.
Execute
npm startna janela do terminal para executar o aplicativo. Certifique-se de executar o comando dentro da pasta react .Após as compilações das aplicações, deverá ver uma interface de chamada do utilizador exibida. Ative a seleção do microfone e da câmera e inicie a chamada. Você deve ver que você está colocado em uma sala de espera. Se participar na reunião que configurou anteriormente no Microsoft Teams, pode permitir que o convidado entre na reunião.
Pressione Ctrl + C para parar o aplicativo. Agora que você o executou com êxito, vamos explorar como você pode obter dinamicamente a identidade de usuário e o token do ACS e criar automaticamente uma reunião do Microsoft Teams e retornar a URL de ingresso usando o Microsoft Graph.