Adicionar um usuário do Microsoft Teams a uma chamada existente usando a Automação de Chamadas
Nesse início rápido, vamos usar as APIs de Automação de Chamadas dos Serviços de Comunicação do Azure para adicionar, remover e transferir uma chamada para um usuário do Teams.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa, para obter detalhes, confira como Criar uma conta gratuitamente.
- Uma licença da Telefonia do Microsoft Teams e um locatário do Teams com privilégios administrativos. A licença da Telefonia do Teams é obrigatória para usar desse recurso. Saiba mais sobre as licenças do Teams aqui. O usuário do Microsoft Teams também precisa ter o
voice
habilitado. Confira Configurar a Telefonia do Teams na sua organização. São necessários privilégios administrativos para autorizar chamadas do recurso dos Serviços de Comunicação para usuários do Teams, o que será explicado mais adiante na Etapa 1. - Um recurso do Serviço de Comunicação implantado e uma cadeia de conexão válida encontrados selecionando Chaves no menu do lado esquerdo no portal do Azure.
- Adquirir um número de telefone PSTN do recurso do Serviço de Comunicação. Observe o número de telefone que você adquiriu para usar neste início rápido.
- Uma assinatura da Grade de Eventos do Azure para receber o evento
IncomingCall
. - A Biblioteca de APIs de Automação de Chamadas dos Serviços de Comunicação do Azure mais recente para o seu sistema operacional.
- Um serviço web que implemente a biblioteca de APIs de Automação de Chamadas: siga esse tutorial.
Etapa 1: Autorização do seu Recurso dos Serviços de Comunicação do Azure para habilitar a chamada para usuários do Microsoft Teams
Para habilitar chamadas por meio das APIs de Automação de Chamadas, é necessário que um Administrador do Microsoft Teams ou um Administrador Global habilite explicitamente o acesso aos recursos dos Serviços de Comunicação para o seu locatário, permitindo assim a realização de chamadas.
Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell) Configuração no nível de locatário que habilita/desabilita a federação entre seus locatários e recursos específicos dos Serviços de Comunicação.
Set-CsExternalAccessPolicy (SkypeForBusiness)Política de usuário que permite ao administrador um controle adicional de quais usuários em sua organização podem participar de comunicações federadas com usuários dos Serviços de Comunicação.
Etapa 2: Usar a API do Graph para obter a ID de objeto do Microsoft Entra para usuários do Teams e, opcionalmente, verificar sua presença
Uma ID de objeto (OID) do Microsoft Entra de um usuário do Teams é necessária para adicioná-los a uma chamada dos Serviços de Comunicação ou transferir a chamada para eles. A OID pode ser recuperada por meio do: 1) portal do Office; 2) centro de administração do Microsoft Entra; 3) Microsoft Entra Connect; ou 4) API do Graph. O exemplo a seguir usa a API do Graph.
Um administrador do Microsoft Entra deve dar consentimento antes que o Graph possa ser utilizado para pesquisar usuários. Saiba mais seguindo o documento de Visão geral da API de Segurança do Microsoft Graph. A OID pode ser recuperada usando a API de listas de usuários para pesquisar usuários. O exemplo a seguir mostra como realizar uma pesquisa pelo nome de exibição, mas você também pode buscar por outras propriedades:
Listar usuários que usam o Microsoft Graph v1.0:
Request:
https://graph.microsoft.com/v1.0/users?$search="displayName:Art Anderson"
Permissions:
Application and delegated. Refer to documentation.
Response:
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
"value": [
{
"displayName": "Art Anderson",
"mail": "artanderson@contoso.com",
"id": "fc4ccb5f-8046-4812-803f-6c344a5d1560"
}
Opcionalmente, a Presença de um usuário pode ser recuperada usando a API getPresence e o ObjectId do usuário. Saiba mais na documentação do Microsoft Graph v1.0.
Request:
https://graph.microsoft.com/v1.0/users/fc4ccb5f-8046-4812-803f-6c344a5d1560/presence
Permissions:
Delegated only. Application not supported. Refer to documentation.
Response:
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('fc4ccb5f-8046-4812-803f-6c344a5d1560')/presence/$entity",
"id": "fc4ccb5f-8046-4812-803f-6c344a5d1560",
"availability": "Offline",
"activity": "Offline"
Etapa 3: Adicionar um usuário do Teams a uma chamada existente dos Serviços de Comunicação controlada por APIs de Automação de Chamadas
Você precisa executar a etapa de pré-requisito e ter um aplicativo de serviço web para controlar uma chamada dos Serviços de Comunicação. Usando o objeto callConnection, adicione um participante à chamada.
CallAutomationClient client = new CallAutomationClient('<Connection_String>');
AnswerCallResult answer = await client.AnswerCallAsync(incomingCallContext, new Uri('<Callback_URI>'));
await answer.Value.CallConnection.AddParticipantAsync(
new CallInvite(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'))
{
SourceDisplayName = "Jack (Contoso Tech Support)"
});
CallAutomationClient client = new CallAutomationClientBuilder().connectionString("<resource_connection_string>").buildClient();
AnswerCallResult answer = client.answerCall(incomingCallContext, "<Callback_URI>"));
answer.getCallConnection().addParticipant(
new CallInvite(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"))
.setSourceDisplayName("Jack (Contoso Tech Support)"));
const client = new CallAutomationClient("<resource_connection_string>");
const answer = await client.answerCall(incomingCallContext, "<Callback_URI>"));
answer.callConnection.addParticipant({
targetParticipant: { microsoftTeamsUserId: "<Teams_User_Guid>" },
sourceDisplayName: "Jack (Contoso Tech Support)"
});
call_automation_client = CallAutomationClient.from_connection_string("<resource_connection_string>")
answer = call_automation_client.answer_call(incoming_call_context = incoming_call_context, callback_url = "<Callback_URI>")
call_connection_client = call_automation_client.get_call_connection(answer.call_connection_id)
call_connection_client.add_participant(target_participant = CallInvite(
target = MicrosoftTeamsUserIdentifier(user_id="<USER_ID>"),
source_display_name = "Jack (Contoso Tech Support)"))
No cliente de área de trabalho do Microsoft Teams, a chamada do Jack será enviada ao usuário do Microsoft Teams por meio de uma notificação do sistema sobre a chamada recebida.
Após o usuário do Microsoft Teams aceitar a chamada, a experiência de chamada exibirá todos os participantes na lista de participantes do Microsoft Teams. Seu aplicativo, responsável por gerenciar a chamada usando a API de Automação de Chamadas, permanecerá oculto para o usuário do Teams na tela da chamada.
Etapa 4: Remover um usuário do Teams de uma chamada existente dos Serviços de Comunicação controlada por APIs de Automação de Chamadas
await answer.Value.CallConnection.RemoveParticipantAsync(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'));
answer.getCallConnection().removeParticipant(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"));
answer.callConnection.removeParticipant({ microsoftTeamsUserId: "<Teams_User_Guid>" });
call_connection_client.remove_participant(target_participant = MicrosoftTeamsUserIdentifier(user_id="<USER_ID>"))
Recurso opcional: transferência de uma chamada existente dos Serviços de Comunicação controlada por APIs de Automação de Chamadas para um usuário do Teams
await answer.Value.CallConnection.TransferCallToParticipantAsync(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'));
answer.getCallConnection().transferCallToParticipant(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"));
answer.callConnection.transferCallToParticipant({ microsoftTeamsUserId: "<Teams_User_Guid>" });
call_connection_client.transfer_call_to_participant(target_participant = MicrosoftTeamsUserIdentifier(user_id = "<USER_ID>"))
Limpar os recursos
Se quiser limpar e remover uma assinatura dos Serviços de Comunicação, exclua o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele. Saiba mais sobre como limpar recursos.
Próximas etapas
- Saiba como gravar suas chamadas.
- Saiba mais sobre a Automação de Chamadas e seus recursos.
- Saiba mais sobre os recursos de Suporte à interoperabilidade do Teams com a Automação de Chamadas dos Serviços de Comunicação do Azure
- Saiba mais sobre a ação Reproduzir para reproduzir áudio em uma chamada.
- Saiba como criar um fluxo de trabalho de chamada para um cenário de suporte ao cliente.