Biblioteca cliente de Chat de Comunicación de Azure para .NET: versión 1.1.2
Este paquete contiene un SDK de C# para Azure Communication Services para chat.
Código | fuentePaquete (NuGet) | Documentación del producto
Introducción
Instalar el paquete
Instale la biblioteca cliente de Chat de comunicación de Azure para .NET con NuGet:
dotnet add package Azure.Communication.Chat
Requisitos previos
Necesita una suscripción de Azure y un recurso de Communication Service para usar este paquete.
Para crear un servicio de comunicación, puede usar Azure Portal, la Azure PowerShell o la biblioteca cliente de administración de .NET.
Autenticar el cliente
Tokens de acceso de usuario
Los tokens de acceso de usuario permiten compilar aplicaciones cliente que se autentiquen directamente en Azure Communication Services. Para la generación de tokens de acceso de usuario, consulte Tokens de acceso de usuario.
Uso de las instrucciones
using Azure.Communication.Identity;
using Azure.Communication.Chat;
Crear un ChatClient
Esto le permitirá crear, obtener o eliminar subprocesos de chat.
ChatClient chatClient = new ChatClient(
endpoint,
new CommunicationTokenCredential(userToken));
Crear un chatThreadClient
ChatThreadClient le permitirá realizar operaciones específicas de un subproceso de chat, como actualizar el tema del subproceso de chat, enviar un mensaje, agregar participantes al subproceso de chat, etc.
Puede crear una instancia de un nuevo ChatThreadClient mediante la operación GetChatThread de ChatClient con un identificador de subproceso existente:
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(chatThread.Id);
Conceptos clave
Una conversación de chat se representa mediante un subproceso. Cada usuario del subproceso se denomina participante del subproceso. Los participantes de subprocesos pueden chatear entre sí de forma privada en un chat de 1:1 o agruparse en un chat de grupo 1:N. Los usuarios también obtienen actualizaciones casi en tiempo real para cuando otros escriben y cuando han leído los mensajes.
Una vez inicializada una ChatClient
clase, puede realizar las siguientes operaciones de chat:
Creación de un subproceso
CreateChatThreadResult createChatThreadResult = await chatClient.CreateChatThreadAsync(topic: "Hello world!", participants: new ChatParticipant[] { });
ChatThreadProperties chatThread = createChatThreadResult.ChatThread;
Obtener un subproceso
ChatThread chatThread = chatClient.GetChatThread(chatThread.Id);
Obtener todos los subprocesos para el usuario
Pageable<ChatThreadItem> threads = chatClient.GetChatThreads();
Eliminación de un subproceso
chatClient.DeleteChatThread(chatThread.Id);
Una vez inicializada una ChatThreadClient
clase, puede realizar las siguientes operaciones de chat:
Actualizar un subproceso
chatThreadClient.UpdateTopic(topic: "Launch meeting");
Envío de un mensaje
SendChatMessageResult sendChatMessageResult = chatThreadClient.SendMessage("Let's meet at 11am");
Actualización de un mensaje
chatThreadClient.UpdateMessage(sendChatMessageResult.Id, content: "Instead of 11am, let's meet at 2pm");
Obtención de mensajes
ChatMessage message = chatThreadClient.GetMessage(sendChatMessageResult.Id);
Eliminar un mensaje
chatThreadClient.DeleteMessage(sendChatMessageResult.Id);
Obtener mensajes
Pageable<ChatMessage> messages = chatThreadClient.GetMessages();
Obtener una lista de participantes
Pageable<ChatParticipant> chatParticipants = chatThreadClient.GetParticipants();
Agregar participantes
chatThreadClient.AddParticipants(participants: new[] { new ChatParticipant(participantIdentifier) });
Quitar un participante
chatThreadClient.RemoveParticipant(identifier: participantIdentifier);
Envío de una notificación de escritura
chatThreadClient.SendTypingNotification();
Obtener una lista de recibos de lectura
Pageable<ChatMessageReadReceipt> readReceipts = chatThreadClient.GetReadReceipts();
Envío de una confirmación de lectura
chatThreadClient.SendReadReceipt(sendChatMessageResult.Id);
Seguridad para subprocesos
Garantizamos que todos los métodos de instancia de cliente son seguros para subprocesos e independientes entre sí (instrucciones). Esto garantiza que la recomendación de reutilizar instancias de cliente siempre es segura, incluso entre subprocesos.
Conceptos adicionales
Opciones | de clienteAcceso a la respuesta | Operaciones | de larga duraciónControl de errores | Diagnóstico | Burla | Duración del cliente
Ejemplos
En las secciones siguientes se proporcionan varios fragmentos de código que abarcan algunas de las tareas más comunes, entre las que se incluyen:
- Operaciones de subprocesos
- Operaciones de mensaje
- Operaciones de participantes de subprocesos
- Operaciones de eventos
Operaciones de subprocesos
Creación de un subproceso
Use CreateChatThread
para crear un objeto de cliente de subproceso de chat.
- Use
topic
para proporcionar un tema de subproceso. - Estos son los atributos admitidos para cada participante del subproceso:
communicationUser
, obligatorio, es la identificación del participante del subproceso.displayName
, opcional, es el nombre para mostrar del participante del subproceso.shareHistoryTime
es opcional y es la hora a partir de la cual el historial de chat se compartió con el participante.
ChatThreadClient
es el resultado devuelto al crear un subproceso, puede usarlo para realizar otras operaciones en el subproceso 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);
Obtener un subproceso
Use GetChatThread
para recuperar un subproceso de chat del servicio.
threadId
es el identificador único del subproceso.
ChatThreadProperties chatThread = await chatThreadClient.GetPropertiesAsync();
Obtener subprocesos (para un participante)
Use GetChatThreads
para obtener la lista de subprocesos de chat para el participante que creó una instancia de chatClient.
AsyncPageable<ChatThreadItem> chatThreadItems = chatClient.GetChatThreadsAsync();
await foreach (ChatThreadItem chatThreadItem in chatThreadItems)
{
Console.WriteLine($"{ chatThreadItem.Id}");
}
Eliminación de un subproceso
Use DeleteChatThread
para eliminar un subproceso.
threadId
es el identificador único del subproceso.
await chatClient.DeleteChatThreadAsync(threadId);
Actualizar un subproceso
Use UpdateTopic
para actualizar el tema del subproceso de chat.
topic
se usa para describir el tema actualizado del subproceso.
await chatThreadClient.UpdateTopicAsync(topic: "new topic !");
Operaciones de mensaje
Envío de un mensaje
Utilice SendMessage
para enviar un mensaje a una conversación.
- Utilice
content
para proporcionar el contenido del mensaje; es obligatorio. - Utilice
type
para indicar el tipo de contenido del mensaje, como "text" o "html". Si no se especifica, se establecerá 'Text'. - Utilice
senderDisplayName
para especificar el nombre para mostrar del remitente. Si no se especifica, se establecerá una cadena vacía.
SendChatMessageResult sendChatMessageResult = await chatThreadClient.SendMessageAsync(content:"hello world");
var messageId = sendChatMessageResult.Id;
Obtención de mensajes
Utilice GetMessage
para recuperar un mensaje del servicio.
messageId
es el identificador único del mensaje.
ChatMessage
es la respuesta devuelta al obtener un mensaje, contiene un identificador, que es el identificador único del mensaje, entre otros campos. Consulte Azure.Communication.Chat.ChatMessage.
ChatMessage chatMessage = await chatThreadClient.GetMessageAsync(messageId);
Obtener mensajes
Use GetMessages
para recuperar todos los mensajes del subproceso de chat.
AsyncPageable<ChatMessage> allMessages = chatThreadClient.GetMessagesAsync();
await foreach (ChatMessage message in allMessages)
{
Console.WriteLine($"{message.Id}:{message.Content.Message}");
}
Actualización de un mensaje
Use UpdateMessage
para actualizar un mensaje.
messageId
es el identificador único del mensaje.content
es el contenido del mensaje que se va a actualizar.
await chatThreadClient.UpdateMessageAsync(messageId, "updated message content");
Eliminar un mensaje
Use DeleteMessage
para eliminar un mensaje.
messageId
es el identificador único del mensaje.
await chatThreadClient.DeleteMessageAsync(messageId);
Operaciones de participantes de subprocesos
Obtención de los participantes de la conversación
Use GetParticipants
para recuperar los participantes de la conversación de chat.
AsyncPageable<ChatParticipant> allParticipants = chatThreadClient.GetParticipantsAsync();
await foreach (ChatParticipant participant in allParticipants)
{
Console.WriteLine($"{((CommunicationUserIdentifier)participant.User).Id}:{participant.DisplayName}:{participant.ShareHistoryTime}");
}
Agregar participantes de subprocesos
Use AddParticipants
para agregar uno o varios participantes a la conversación de chat. A continuación se indican los atributos admitidos para cada participante de la conversación:
communicationUser
, obligatorio, es la identificación del participante del subproceso.displayName
es opcional y es el nombre para mostrar del participante de la conversación.shareHistoryTime
es opcional y es la hora a partir de la cual el historial de chat se compartió con el participante.
var participants = new[]
{
new ChatParticipant(josh) { DisplayName = "Josh" },
new ChatParticipant(gloria) { DisplayName = "Gloria" },
new ChatParticipant(amy) { DisplayName = "Amy" }
};
await chatThreadClient.AddParticipantsAsync(participants);
Quitar participante de subprocesos
Use RemoveParticipant
para quitar un participante de subproceso del subproceso.
communicationUser
es la identificación del participante del chat.
await chatThreadClient.RemoveParticipantAsync(gloria);
Operaciones de eventos
Envío de notificación de escritura
Use SendTypingNotification
para indicar que el usuario está escribiendo una respuesta en la conversación.
await chatThreadClient.SendTypingNotificationAsync();
Envío de confirmación de lectura
Use SendReadReceipt
para notificar a otros participantes que el usuario ha leído el mensaje.
await chatThreadClient.SendReadReceiptAsync(messageId);
Obtención de confirmaciones de lectura
Use GetReadReceipts
para comprobar el estado de los mensajes y ver cuáles han leído otros participantes de una conversación de chat.
AsyncPageable<ChatMessageReadReceipt> allReadReceipts = chatThreadClient.GetReadReceiptsAsync();
await foreach (ChatMessageReadReceipt readReceipt in allReadReceipts)
{
Console.WriteLine($"{readReceipt.ChatMessageId}:{((CommunicationUserIdentifier)readReceipt.Sender).Id}:{readReceipt.ReadOn}");
}
Solución de problemas
Respuestas de servicio
RequestFailedException
Se produce como respuesta de servicio para las solicitudes incorrectas. La excepción contiene información sobre qué código de respuesta se devolvió desde el servicio.
try
{
CreateChatThreadResult createChatThreadErrorResult = await chatClient.CreateChatThreadAsync(topic: "Hello world!", participants: new[] { josh });
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.Message);
}
Pasos siguientes
Más información sobre chat en Azure Communication Services
Contribuciones
Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más información, visite cla.microsoft.com.
Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.