Biblioteca de clientes Comum de Comunicação do Azure para .NET – versão 1.2.1
Esse pacote contém código comum para bibliotecas do Serviço de Comunicação do Azure.
Código-fonte | Pacote (NuGet) | Documentação do produto
Introdução
Instalar o pacote
Instale a biblioteca de clientes Comuns de Comunicação do Azure para .NET com o NuGet.
dotnet add package Azure.Communication.Common
Pré-requisitos
Você precisa de uma assinatura do Azure e um Recurso do Serviço de Comunicação para usar esse pacote.
Para criar um novo Serviço de Comunicação, você pode usar o Portal do Azure, o Azure PowerShell ou a biblioteca de clientes de gerenciamento do .NET.
Autenticar o cliente
Este módulo não contém um cliente e, em vez disso, bibliotecas que ajudam outros clientes de Comunicação do Azure a se autenticarem.
Principais conceitos
CommunicationTokenCredential
O CommunicationTokenCredential
objeto é usado para autenticar um usuário com os Serviços de Comunicação, como Chat ou Chamada. Opcionalmente, ele fornece um mecanismo de atualização automática para garantir um estado de autenticação continuamente estável durante as comunicações.
Dependendo do seu cenário, talvez você queira inicializar o CommunicationTokenCredential
com:
- um token estático (adequado para clientes de curta duração usados para, por exemplo, enviar mensagens de Chat pontuais) ou
- uma função de retorno de chamada que garante um estado de autenticação contínua (ideal, por exemplo, para sessões de chamada longas).
Os tokens fornecidos para o CommunicationTokenCredential
por meio do construtor ou por meio do retorno de chamada do atualizador de token podem ser obtidos usando a biblioteca de Identidade de Comunicação do Azure.
Acesso thread-safe
Garantimos que todos os métodos de instância do cliente sejam thread-safe e independentes uns dos outros (diretriz). Isso garante que a recomendação de reutilize instâncias de cliente seja sempre segura, mesmo entre threads.
Conceitos adicionais
Opções do | cliente Acessando a resposta | Operações de execução longa | Tratamento de falhas | Diagnostics | Zombando | Tempo de vida do cliente
Exemplos
Criar uma credencial com um token estático
Para clientes de curta duração, a atualização do token após a expiração não é necessária e CommunicationTokenCredential
pode ser instanciada com um token estático.
string token = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_USER_TOKEN");
using var tokenCredential = new CommunicationTokenCredential(token);
Criar uma credencial com um retorno de chamada
Como alternativa, para clientes de longa duração, você pode criar um com um CommunicationTokenCredential
retorno de chamada para renovar tokens se tiver expirado.
Aqui, passamos duas funções imaginadas que fazem solicitações de rede para recuperar cadeias de caracteres de token para o usuário Bob.
Se os retornos de chamada forem passados, mediante solicitações (enviando uma mensagem de chat), CommunicationTokenCredential
garantirá que um token válido seja adquirido antes da execução da solicitação.
É necessário que o FetchTokenForUserFromMyServer
método retorne um token válido (com uma data de validade definida no futuro) o tempo todo.
Opcionalmente, você pode habilitar a atualização proativa de tokens em que um novo token será adquirido assim que o token anterior se aproximar da expiração. Usando esse método, suas solicitações são menos propensas a serem bloqueadas para adquirir um novo token:
using var tokenCredential = new CommunicationTokenCredential(
new CommunicationTokenRefreshOptions(
refreshProactively: true, // Indicates if the token should be proactively refreshed in the background or only on-demand
tokenRefresher: cancellationToken => FetchTokenForUserFromMyServer("bob@contoso.com", cancellationToken))
{
AsyncTokenRefresher = cancellationToken => FetchTokenForUserFromMyServerAsync("bob@contoso.com", cancellationToken)
});
Se você já tiver um token, poderá otimizar ainda mais a atualização do token passando esse token inicial:
string initialToken = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_USER_TOKEN");
using var tokenCredential = new CommunicationTokenCredential(
new CommunicationTokenRefreshOptions(
refreshProactively: true, // Indicates if the token should be proactively refreshed in the background or only on-demand
tokenRefresher: cancellationToken => FetchTokenForUserFromMyServer("bob@contoso.com", cancellationToken))
{
AsyncTokenRefresher = cancellationToken => FetchTokenForUserFromMyServerAsync("bob@contoso.com", cancellationToken),
InitialToken = initialToken
});
Solução de problemas
As falhas proativas de atualização ocorrem em um thread em segundo plano e, para evitar falhas no aplicativo, as exceções serão tratadas silenciosamente.
Todas as outras falhas ocorrerão durante sua solicitação usando outros clientes, como chat, em que você pode capturar a exceção usando RequestFailedException
.
Próximas etapas
Leia mais sobre Tokens de acesso do usuário de comunicação
Contribuição
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.
Azure SDK for .NET