Biblioteca de clientes do Chat de Comunicação do Azure para .NET – versão 1.1.2
Esse pacote contém um SDK do C# para Serviços de Comunicação do Azure para chat.
Código-fonte | Pacote (NuGet) | Documentação do produto
Introdução
Instalar o pacote
Instale a biblioteca de clientes do Chat de Comunicação do Azure para .NET com o NuGet:
dotnet add package Azure.Communication.Chat
Pré-requisitos
Você precisa de uma assinatura do Azure e de 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
Tokens de acesso do usuário
Os tokens de acesso do usuário permitem que você crie aplicativos cliente que se autenticam diretamente nos Serviços de Comunicação do Azure. Para a geração de tokens de acesso do usuário, consulte Tokens de Acesso do Usuário.
Como usar instruções
using Azure.Communication.Identity;
using Azure.Communication.Chat;
Criar um ChatClient
Isso permitirá que você crie, obtenha ou exclua threads de chat.
ChatClient chatClient = new ChatClient(
endpoint,
new CommunicationTokenCredential(userToken));
Criar um ChatThreadClient
O ChatThreadClient permitirá que você execute operações específicas a um thread de chat, como atualizar o tópico de thread de chat, enviar uma mensagem, adicionar participantes ao thread de chat etc.
Você pode criar uma instância de um novo ChatThreadClient usando a operação GetChatThread do ChatClient com uma ID de thread existente:
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(chatThread.Id);
Principais conceitos
Uma conversa de chat é representada por um thread. Cada usuário no thread é chamado de participante do thread. Os participantes do thread podem conversar entre si em particular em um chat 1:1 ou se amontoar em um chat em grupo 1:N. Os usuários também recebem atualizações quase em tempo real para quando outras pessoas estão digitando e quando leem as mensagens.
Depois de inicializar uma ChatClient
classe, você poderá fazer as seguintes operações de chat:
Criar um thread
CreateChatThreadResult createChatThreadResult = await chatClient.CreateChatThreadAsync(topic: "Hello world!", participants: new ChatParticipant[] { });
ChatThreadProperties chatThread = createChatThreadResult.ChatThread;
Obter um thread
ChatThread chatThread = chatClient.GetChatThread(chatThread.Id);
Obter todos os threads para o usuário
Pageable<ChatThreadItem> threads = chatClient.GetChatThreads();
Excluir um thread
chatClient.DeleteChatThread(chatThread.Id);
Depois de inicializar uma ChatThreadClient
classe, você poderá fazer as seguintes operações de chat:
Atualizar um thread
chatThreadClient.UpdateTopic(topic: "Launch meeting");
Enviar uma mensagem
SendChatMessageResult sendChatMessageResult = chatThreadClient.SendMessage("Let's meet at 11am");
Atualizar uma mensagem
chatThreadClient.UpdateMessage(sendChatMessageResult.Id, content: "Instead of 11am, let's meet at 2pm");
Obter uma mensagem
ChatMessage message = chatThreadClient.GetMessage(sendChatMessageResult.Id);
Excluir uma mensagem
chatThreadClient.DeleteMessage(sendChatMessageResult.Id);
Obter mensagens
Pageable<ChatMessage> messages = chatThreadClient.GetMessages();
Obter uma lista de participantes
Pageable<ChatParticipant> chatParticipants = chatThreadClient.GetParticipants();
Adicionar participantes
chatThreadClient.AddParticipants(participants: new[] { new ChatParticipant(participantIdentifier) });
Remover um participante
chatThreadClient.RemoveParticipant(identifier: participantIdentifier);
Enviar uma notificação de digitação
chatThreadClient.SendTypingNotification();
Obter uma lista de recibos de leitura
Pageable<ChatMessageReadReceipt> readReceipts = chatThreadClient.GetReadReceipts();
Enviar uma confirmação de leitura
chatThreadClient.SendReadReceipt(sendChatMessageResult.Id);
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 clienteAcessando a resposta | Operações de execução prolongada | Tratamento de falhas | Diagnostics | Zombando | Tempo de vida do cliente
Exemplos
As seções a seguir fornecem vários snippets de código que abrangem algumas das tarefas mais comuns, incluindo:
Operações de thread
Criar um thread
Use CreateChatThread
para criar um objeto de cliente de thread de chat.
- Use
topic
para fornecer um tópico de thread. - Veja a seguir os atributos com suporte para cada participante do thread:
communicationUser
, obrigatório, é a identificação do participante do thread.displayName
, opcional, é o nome de exibição para o participante do threadshareHistoryTime
, opcional, é o horário no qual o histórico do chat é compartilhado com o participante.
ChatThreadClient
é o resultado retornado da criação de um thread, você pode usá-lo para executar outras operações no thread de chat.
ChatClient chatClient = new ChatClient(
endpoint,
new CommunicationTokenCredential(userToken));
var chatParticipant = new ChatParticipant(identifier: kimberly)
{
DisplayName = "Kim"
};
CreateChatThreadResult createChatThreadResult = await chatClient.CreateChatThreadAsync(topic: "Hello world!", participants: new[] { chatParticipant });
string threadId = createChatThreadResult.ChatThread.Id;
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(threadId);
Obter um thread
Use GetChatThread
para recuperar um thread de chat do serviço.
threadId
é a ID exclusiva do thread.
ChatThreadProperties chatThread = await chatThreadClient.GetPropertiesAsync();
Obter threads (para um participante)
Use GetChatThreads
para obter a lista de threads de chat para o participante que instanciou o chatClient.
AsyncPageable<ChatThreadItem> chatThreadItems = chatClient.GetChatThreadsAsync();
await foreach (ChatThreadItem chatThreadItem in chatThreadItems)
{
Console.WriteLine($"{ chatThreadItem.Id}");
}
Excluir um thread
Use DeleteChatThread
para excluir um thread.
threadId
é a ID exclusiva do thread.
await chatClient.DeleteChatThreadAsync(threadId);
Atualizar um thread
Use UpdateTopic
para atualizar o tópico do thread de chat.
topic
é usado para descrever o tópico atualizado para o thread.
await chatThreadClient.UpdateTopicAsync(topic: "new topic !");
Operações de mensagem
Enviar uma mensagem
Use SendMessage
para enviar uma mensagem para uma conversa.
- Use
content
para fornecer o conteúdo da mensagem; ele é obrigatório. - Use
type
para o tipo de conteúdo da mensagem, como "Text" ou "HTML". Se não for speficied, 'Text' será definido. - Use
senderDisplayName
para especificar o nome de exibição do remetente. Se não for especificado, uma cadeia de caracteres vazia será a usada.
SendChatMessageResult sendChatMessageResult = await chatThreadClient.SendMessageAsync(content:"hello world");
var messageId = sendChatMessageResult.Id;
Obter uma mensagem
Use GetMessage
para recuperar uma mensagem do serviço.
messageId
é a ID exclusiva da mensagem.
ChatMessage
é a resposta retornada da obtenção de uma mensagem, ela contém uma ID, que é o identificador exclusivo da mensagem, entre outros campos. Confira Azure.Communication.Chat.ChatMessage
ChatMessage chatMessage = await chatThreadClient.GetMessageAsync(messageId);
Obter mensagens
Use GetMessages
para recuperar todas as mensagens para o thread de chat.
AsyncPageable<ChatMessage> allMessages = chatThreadClient.GetMessagesAsync();
await foreach (ChatMessage message in allMessages)
{
Console.WriteLine($"{message.Id}:{message.Content.Message}");
}
Atualizar uma mensagem
Use UpdateMessage
para atualizar uma mensagem.
messageId
é o identificador exclusivo da mensagem.content
é o conteúdo da mensagem a ser atualizado.
await chatThreadClient.UpdateMessageAsync(messageId, "updated message content");
Excluir uma mensagem
Use DeleteMessage
para excluir uma mensagem.
messageId
é o identificador exclusivo da mensagem.
await chatThreadClient.DeleteMessageAsync(messageId);
Operações do participante do thread
Obter participantes da conversa
Use GetParticipants
para recuperar os participantes da conversa de chat.
AsyncPageable<ChatParticipant> allParticipants = chatThreadClient.GetParticipantsAsync();
await foreach (ChatParticipant participant in allParticipants)
{
Console.WriteLine($"{((CommunicationUserIdentifier)participant.User).Id}:{participant.DisplayName}:{participant.ShareHistoryTime}");
}
Adicionar participantes do thread
Use AddParticipants
para adicionar um ou mais participantes à conversa de chat. A seguir, estão os atributos com suporte para participantes de cada conversa:
communicationUser
, obrigatório, é a identificação do participante do thread.displayName
, opcional, é o nome de exibição do participante do thread.shareHistoryTime
, opcional, é o horário no qual o histórico do chat é compartilhado com o participante.
var participants = new[]
{
new ChatParticipant(josh) { DisplayName = "Josh" },
new ChatParticipant(gloria) { DisplayName = "Gloria" },
new ChatParticipant(amy) { DisplayName = "Amy" }
};
await chatThreadClient.AddParticipantsAsync(participants);
Remover participante do thread
Use RemoveParticipant
para remover um participante do thread.
communicationUser
é a identificação do participante do chat.
await chatThreadClient.RemoveParticipantAsync(gloria);
Operações de eventos
Enviar uma notificação de digitação
Use SendTypingNotification
para indicar que o usuário está digitando uma resposta na conversa.
await chatThreadClient.SendTypingNotificationAsync();
Enviar confirmação de leitura
Use SendReadReceipt
para notificar outros participantes de que a mensagem foi lida pelo usuário.
await chatThreadClient.SendReadReceiptAsync(messageId);
Obter confirmações de leitura
Use GetReadReceipts
para verificar o status das mensagens e ver quais delas foram lidas por outros participantes de uma conversa de chat.
AsyncPageable<ChatMessageReadReceipt> allReadReceipts = chatThreadClient.GetReadReceiptsAsync();
await foreach (ChatMessageReadReceipt readReceipt in allReadReceipts)
{
Console.WriteLine($"{readReceipt.ChatMessageId}:{((CommunicationUserIdentifier)readReceipt.Sender).Id}:{readReceipt.ReadOn}");
}
Solução de problemas
Respostas de serviço
Um RequestFailedException
é gerado como uma resposta de serviço para solicitações malsucedidas. A exceção contém informações sobre qual código de resposta foi retornado do serviço.
try
{
CreateChatThreadResult createChatThreadErrorResult = await chatClient.CreateChatThreadAsync(topic: "Hello world!", participants: new[] { josh });
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.Message);
}
Próximas etapas
Leia mais sobre o Chat no Serviços de Comunicação do Azure
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.