Suporte dos Serviços de Comunicação do Azure para identidades do Teams — Casos de uso
O Microsoft Teams fornece identidades gerenciadas pelo ID do Microsoft Entra e experiências de chamada controladas pelo Centro de Administração e políticas do Teams. Os usuários podem ter atribuído licenças para habilitar chamadas telefônicas e recursos avançados de chamadas do Microsoft Teams Phone. O suporte dos Serviços de Comunicação do Azure para identidades do Teams permite gerenciar chamadas VoIP (voz sobre IP) do Teams, chamadas telefônicas do Teams e participar de reuniões do Teams. Os desenvolvedores podem estender os Serviços de Comunicação do Azure com a API do Graph para fornecer dados contextuais do ecossistema do Microsoft 365. Esta página está fornecendo inspiração sobre como usar as tecnologias existentes da Microsoft para fornecer uma experiência completa para cenários de chamada com usuários do Teams e SDKs de chamada dos Serviços de Comunicação do Azure.
Caso de uso 1: Fazer chamada PSTN do Teams de saída
Este cenário está mostrando um caso de uso multilocatário, em que a empresa Contoso está fornecendo SaaS para a empresa Fabrikam. O SaaS permite que os usuários da Fabrikam façam chamadas telefônicas do Teams por meio de um site personalizado que leva a identidade do usuário do Teams e a configuração da conectividade PSTN atribuída a esse usuário do Teams.
O diagrama de sequência a seguir mostra etapas detalhadas de início de uma chamada telefônica do Teams:
Passos
- Autenticar Alice da Fabrikam no aplicativo cliente da Contoso: Alice está usando um navegador para abrir a página da Web da Fabrikam e autentica. Você pode encontrar mais detalhes sobre a autenticação com a identidade do Teams. Se a autenticação for bem-sucedida, Alice será redirecionada para a página inicial.
- Carregar clientes e seus números PSTN: a Contoso fornece lógica personalizada para recuperar a lista de clientes e seus números de telefone associados. Esta lista é renderizada na página inicial para Alice.
- Iniciar uma chamada para Megan: Alice seleciona um botão para iniciar uma chamada PSTN para Megan no aplicativo Cliente da Contoso. O aplicativo cliente usa o SDK de chamada dos Serviços de Comunicação do Azure para fornecer o recurso de chamada. Primeiro, ele cria uma instância do callAgent, que contém o token de acesso dos Serviços de Comunicação do Azure adquirido durante a primeira etapa.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Então você precisa iniciar uma chamada para o número de telefone de Megan.
const pstnCallee = { phoneNumber: '<MEGAN_PHONE_NUMBER_E164_FORMAT>' }
const oneToOneCall = callAgent.startCall([pstnCallee], { threadId: '00000000-0000-0000-0000-000000000000' });
- Conectando chamada PSTN a Megan: A chamada é roteada através da conectividade telefônica do Teams atribuída a Alice, alcançando a rede PSTN e tocando o telefone associado ao número de telefone fornecido. Megan vê uma chamada recebida do número de telefone associado ao usuário do Teams de Alice.
- Megans aceita a chamada: Megan aceita a chamada e a conexão entre Alice e Megan é estabelecida.
Caso de uso 2: Receber chamada telefônica de entrada do Teams
Este cenário está mostrando um caso de uso multilocatário, em que a empresa Contoso está fornecendo SaaS para a empresa Fabrikam. O SaaS permite que os usuários da Fabrikam recebam uma chamada telefônica do Teams por meio de um site personalizado que leva a identidade do usuário do Teams e a configuração da conectividade PSTN atribuída a esse usuário do Teams.
O diagrama de sequência a seguir mostra etapas detalhadas para aceitar chamadas telefônicas recebidas do Teams:
Passos
- Autenticar Alice da Fabrikam no aplicativo cliente da Contoso: Alice está usando um navegador para abrir a página da Web da Fabrikam e autentica. Você pode encontrar mais detalhes sobre a autenticação com a identidade do Teams. Se a autenticação for bem-sucedida, Alice será redirecionada para a página inicial.
- Inscrever-se para receber chamadas: o aplicativo cliente usa o SDK de chamada dos Serviços de Comunicação do Azure para fornecer o recurso de chamada. Primeiro, ele cria uma instância do callAgent, que contém o token de acesso dos Serviços de Comunicação do Azure adquirido durante a primeira etapa.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Em seguida, você se inscreve no evento de chamada recebida.
const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
const incomingCall = args.teamsIncomingCall;
// Get information about caller
var callerInfo = incomingCall.callerInfo
showIncomingCall(callerInfo,incomingCall);
};
callAgent.on('incomingCall', incomingCallHandler);
O método showIncomingCall é um método personalizado da Contoso que renderizará uma interface do usuário para indicar chamadas de entrada e dois botões para aceitar e recusar a chamada. Se você selecionar o botão aceitar, o seguinte código será usado:
// Accept the call
var call = await incomingCall.accept();
Se você selecionar o botão recusar, o seguinte código será usado:
// Reject the call
incomingCall.reject();
- Megan inicia uma chamada para o número PSTN atribuído à usuária do Teams Alice: Megan usa seu telefone para ligar para Alice. A rede da operadora se conectará à conectividade telefônica do Teams atribuída a Alice e tocará em todos os pontos finais do Teams registrados para Alice. Ele inclui: Teams desktop, dispositivos móveis, clientes Web e aplicativos baseados no SDK de chamada dos Serviços de Comunicação do Azure.
- O aplicativo cliente da Contoso mostra a chamada de entrada de Megan: o aplicativo cliente recebe notificação de chamada de entrada. O método showIncomingCall usaria a lógica personalizada da Contoso para traduzir o número de telefone para o nome do cliente (por exemplo, um banco de dados que armazena pares chave-valor que consistem em um número de telefone e um nome do cliente). Quando as informações são recuperadas, a notificação é mostrada para Alice no aplicativo cliente da Contoso.
- Alice aceita a chamada: Alice seleciona um botão para aceitar a chamada e a conexão entre Alice e Megan é estabelecida.
Caso de uso 3: Faça chamadas VoIP do Teams de saída
Este cenário está mostrando um caso de uso multilocatário, em que a empresa Contoso está fornecendo SaaS para a empresa Fabrikam. O SaaS permite que os usuários da Fabrikam façam chamadas VoIP do Teams por meio de um site personalizado que leva a identidade do usuário do Teams.
O diagrama de sequência a seguir mostra etapas detalhadas para iniciar uma chamada VoIP do Teams:
Passos
- Autenticar Alice da Fabrikam no aplicativo cliente da Contoso: Alice está usando um navegador para abrir a página da Web da Fabrikam e autentica. Você pode encontrar mais detalhes sobre a autenticação com a identidade do Teams. Se a autenticação for bem-sucedida, Alice será redirecionada para a página inicial.
- Carregar usuários da organização da Fabrikam e seus identificadores: o aplicativo cliente da Contoso utiliza a API do Graph para obter uma lista de usuários do locatário da Fabrikam. Alice ou seu administrador precisa fornecer consentimento à API do Graph para executar essa ação. Você pode saber mais sobre o comando Graph API na documentação.
GET https://graph.microsoft.com/v1.0/users
Permissions: User.ReadBasic.All (delegated)
Response: response.body.value[1].displayName; // ”Megan Bowen”
response.body.value[1].id; // "e8b753b5-4117-464e-9a08-713e1ff266b3"
O aplicativo cliente da Contoso mostrará a lista de usuários e a capacidade de iniciar uma chamada para um determinado usuário.
- Iniciar uma chamada para Megan: Alice seleciona um botão para iniciar uma chamada VoIP do Teams para Megan no aplicativo Cliente da Contoso. O aplicativo cliente usa o SDK de chamada dos Serviços de Comunicação do Azure para fornecer o recurso de chamada. As chamadas nos Clientes do Teams estão associadas ao chat do Teams. Primeiro, o aplicativo solicita a criação de um chat dedicado para a chamada VoIP.
POST https://graph.microsoft.com/v1.0/chats
Body:
{
"chatType": "oneOnOne",
"members": [
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": [
"owner"
],
"user@odata.bind": "https://graph.microsoft.com/v1.0/users('8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca')"
},
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": [
"owner"
],
"user@odata.bind": "https://graph.microsoft.com/v1.0/users('e8b753b5-4117-464e-9a08-713e1ff266b3')"
}
]
}
Permissions: Chat.Create (delegated)
Response: response.body.value.id; // "19:8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca_e8b753b5-4117-464e-9a08-713e1ff266b3@unq.gbl.spaces"
Em seguida, o aplicativo cliente cria uma instância de callAgent que contém o token de acesso dos Serviços de Comunicação do Azure adquirido durante a primeira etapa.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Em seguida, você inicia uma chamada para o ID do Teams da Megan.
var teamsUser = { microsoftTeamsUserId: 'e8b753b5-4117-464e-9a08-713e1ff266b3'};
const oneToOneCall = callAgent.startCall([teamsUser], { threadId: '19:8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca_e8b753b5-4117-464e-9a08-713e1ff266b3@unq.gbl.spaces' });
- Conectando chamada VoIP para Megan: A chamada é roteada através dos clientes do Teams e do Teams associados à Megan. Megan vê uma chamada recebida de Alice com o nome definido no ID do Microsoft Entra.
- Megans aceita a chamada: Megan aceita a chamada e a conexão entre Alice e Megan é estabelecida.
Caso de uso 4: Receber chamada VoIP de entrada do Teams
Este cenário está mostrando um caso de uso multilocatário, em que a empresa Contoso está fornecendo SaaS para a empresa Fabrikam. O SaaS permite que os usuários da Fabrikam recebam uma chamada VoIP do Teams por meio de um site personalizado que usa a identidade do usuário do Teams e aplica políticas de roteamento aplicadas ao usuário do Teams.
O diagrama de sequência a seguir mostra etapas detalhadas para aceitar chamadas VoIP recebidas do Teams:
Passos
- Autenticar Alice da Fabrikam no aplicativo cliente da Contoso: Alice está usando um navegador para abrir a página da Web da Fabrikam e autentica. Você pode encontrar mais detalhes sobre a autenticação com a identidade do Teams. Se a autenticação for bem-sucedida, Alice será redirecionada para a página inicial.
- Inscrever-se para receber chamadas: o aplicativo cliente usa o SDK de chamada dos Serviços de Comunicação do Azure para fornecer o recurso de chamada. Primeiro, ele cria uma instância de callAgent que contém o token de acesso dos Serviços de Comunicação do Azure adquirido durante a primeira etapa.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Em seguida, o aplicativo se inscreve no evento de chamada de entrada.
const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
const incomingCall = args.teamsIncomingCall;
// Get information about caller
var callerInfo = incomingCall.callerInfo
showIncomingCall(callerInfo,incomingCall);
};
callAgent.on('incomingCall', incomingCallHandler);
O método showIncomingCall é um método personalizado da Contoso que renderizará uma interface do usuário para indicar chamadas de entrada e dois botões para aceitar e recusar a chamada. Se você selecionar o botão aceitar, o seguinte código será usado:
// Accept the call
var call = await incomingCall.accept();
Se você selecionar o botão recusar, o seguinte código será usado:
// Reject the call
incomingCall.reject();
- Megan inicia uma chamada VoIP para a usuária do Teams Alice: Megan usa seu cliente de desktop do Teams para chamar Alice. A infraestrutura do Teams tocará todos os endpoints associados a Alice. Ele inclui: Teams desktop, dispositivos móveis, clientes Web e aplicativos baseados no SDK de chamada dos Serviços de Comunicação do Azure.
- O aplicativo cliente da Contoso mostra a chamada de entrada de Megan: o aplicativo cliente recebe notificação de chamada de entrada. O método showIncomingCall usaria a API do Graph para traduzir o ID de usuário do Teams para o nome de exibição.
GET https://graph.microsoft.com/v1.0/users/e8b753b5-4117-464e-9a08-713e1ff266b3
Permissions: User.Read (delegated)
Response: response.body.value.displayName; // ”Megan Bowen”
response.body.value.id; // "e8b753b5-4117-464e-9a08-713e1ff266b3"
Quando as informações são recuperadas, a notificação é mostrada para Alice no aplicativo cliente da Contoso.
- Alice aceita a chamada: Alice seleciona um botão para aceitar a chamada e a conexão entre Alice e Megan é estabelecida.
Caso de uso 5: Participar da reunião do Teams
Este cenário está mostrando um caso de uso multilocatário, em que a empresa Contoso está fornecendo SaaS para a empresa Fabrikam. O SaaS permite que os usuários da Fabrikam participem de reuniões do Teams por meio de um site personalizado que assume a identidade do usuário do Teams.
O diagrama de sequência a seguir mostra etapas detalhadas para ingressar em uma reunião do Teams:
Passos
- Autenticar Alice da Fabrikam no aplicativo cliente da Contoso: Alice está usando um navegador para abrir a página da Web da Fabrikam e autentica. Você pode encontrar mais detalhes sobre a autenticação com a identidade do Teams. Se a autenticação for bem-sucedida, Alice será redirecionada para a página inicial.
- Carregar reuniões do Teams e seus identificadores: o aplicativo cliente da Contoso utiliza a API do Graph para obter uma lista de reuniões do Teams para os usuários da Fabrikam. Alice ou seu administrador precisa fornecer consentimento à API do Graph para executar essa ação. Você pode saber mais sobre o comando Graph API na documentação.
GET https://graph.microsoft.com/v1.0/me/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
Permissions: Calendars.Read (delegated)
Response: response.body.value[0].subject; // ”Project Tailspin”
response.body.value[0].onlineMeeting.joinUrl; // "https://teams.microsoft.com/l/meetup-join/..."
response.body.value[0].start.dateTime;
response.body.value[0].end.dateTime;
response.body.value[0].location.displayName;
O aplicativo cliente da Contoso mostrará a lista de reuniões do Teams e a capacidade de ingressar nelas.
- Participar na reunião do Teams "Project Tailspin": Alice seleciona um botão para participar na reunião do Teams "Project Tailspin" na aplicação Cliente da Contoso. O aplicativo cliente usa o SDK de chamada dos Serviços de Comunicação do Azure para fornecer o recurso de chamada. Os aplicativos cliente criam uma instância do callAgent que contém o token de acesso dos Serviços de Comunicação do Azure adquirido durante a primeira etapa.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Em seguida, o aplicativo entra em uma reunião por meio do joinUrl recebido.
var meetingLocator = new TeamsMeetingLinkLocator("https://teams.microsoft.com/l/meetup-join/...");
callAgent.startCallJoinAsync(meetingLocator , new JoinCallOptions());
Alice junta-se então à reunião das Equipas.
- Outros participantes que participam da reunião do Teams: A experiência fornecida é uma reunião padrão do Teams. Com base na configuração e nos convites, a reunião do Teams pode ser participada por usuário do Teams, usuário anônimo do Teams usando o cliente Web do Team, cliente de desktop do Teams, cliente móvel do Teams, usuário dos Serviços de Comunicação do Azure por meio de aplicativos baseados no SDK de chamada dos Serviços de Comunicação ou usuários usando telefones.
Próximos passos
Os seguintes artigos podem ser do seu interesse:
- Saiba mais sobre autenticação.
- Experimente o início rápido para autenticação de usuários do Teams.
- Experimente o início rápido para chamar um usuário do Teams.