Biblioteca cliente de Azure Communication Rooms para .NET: versión 1.0.0

Este paquete contiene un SDK de C# para el servicio Salas de Azure Communication Services. Azure Communication Services (ACS) Rooms es un conjunto de API, que usan las aplicaciones de servidor de Contoso para crear un espacio de conversación administrado por el servidor con un conjunto fijo de duración y participantes, predefinindo reglas de nivel de servidor tanto a quién como cuándo pueden comunicarse (como la creación de reuniones programadas).

Con la versión de disponibilidad general de salas de ACS, Contoso podrá hacer lo siguiente:

- Create a meeting space with known time coordinates (validFrom/validUntil)
- Join voice/video calls within that meeting space using the ACS web calling SDK or native mobile calling SDKs
- Add participants to a room
- Assign pre-defined roles to room participants

Escenarios principales en los que se pueden usar las salas:

- Virtual Visits (e.g., telemedicine, remote financial advisor, virtual classroom, etc...)
- Virtual Events (e.g., live event, company all-hands, live concert, etc...)

Código | fuente | Documentación del productoMuestras

Introducción

Instalar el paquete

Instale la biblioteca cliente de Azure Communication Rooms para .NET con NuGet:

dotnet add package Azure.Communication.Rooms

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.

Conceptos clave

RoomsClient proporciona la funcionalidad de crear sala, actualizar sala, obtener sala, salas de lista, eliminar sala, agregar participantes, actualizar participantes, quitar participantes y enumerar participantes.

Uso de las instrucciones

using Azure.Communication.Rooms

Autenticar el cliente

Los clientes de salas se pueden autenticar mediante la cadena de conexión adquirida desde un recurso de comunicación de Azure en Azure Portal.

var connectionString = Environment.GetEnvironmentVariable("connection_string") // Find your Communication Services resource in the Azure portal
RoomsClient client = new RoomsClient(connectionString);

Ejemplos

Creación de una sala

Para crear una sala, llame a la CreateRoom función o CreateRoomAsync desde RoomsClient. Los validFromargumentos , validUntily participants son opcionales. Si validFrom no se proporcionan y validUntil , el valor predeterminado para validFrom es la fecha y hora actual y el valor predeterminado para validUntil es validFrom + 180 days. Al definir RoomParticipant, si no se especifica el rol, será Attendee de forma predeterminada. El valor devuelto es Response<CommunicationRoom> que contiene los detalles de la sala creados, así como el estado y los códigos de error asociados en caso de error.

// Create communication users using the CommunicationIdentityClient
Response<CommunicationUserIdentifier> communicationUser1 = await communicationIdentityClient.CreateUserAsync();
Response<CommunicationUserIdentifier> communicationUser2 = await communicationIdentityClient.CreateUserAsync();

DateTimeOffset validFrom = DateTimeOffset.UtcNow;
DateTimeOffset validUntil = validFrom.AddDays(1);
RoomParticipant participant1 = new RoomParticipant(communicationUser1.Value); // If role is not provided, then it is set as Attendee by default
RoomParticipant participant2 = new RoomParticipant(communicationUser2.Value) { Role = ParticipantRole.Presenter};
List<RoomParticipant> invitedParticipants = new List<RoomParticipant>
{
    participant1,
    participant2
};

Response<CommunicationRoom> createRoomResponse = await roomsClient.CreateRoomAsync(validFrom, validUntil, invitedParticipants);
CommunicationRoom createCommunicationRoom = createRoomResponse.Value;

Actualizar una sala

Las validFrom propiedades y validUntil de una sala creada se pueden actualizar llamando a la UpdateRoom función o UpdateRoomAsync desde RoomsClient.

validUntil = validFrom.AddDays(30);
Response<CommunicationRoom> updateRoomResponse = await roomsClient.UpdateRoomAsync(createdRoomId, validFrom, validUntil);
CommunicationRoom updateCommunicationRoom = updateRoomResponse.Value;

Obtener una sala creada

Se puede recuperar una sala creada llamando a la GetRoom función o GetRoomAsync desde RoomsClient y pasando el objeto asociado roomId.

Response<CommunicationRoom> getRoomResponse = await roomsClient.GetRoomAsync(createdRoomId);
CommunicationRoom getCommunicationRoom = getRoomResponse.Value;

Obtener todas las habitaciones

Todas las salas válidas creadas en un recurso de ACS se pueden recuperar llamando a la GetRooms función o GetRoomsAsync desde RoomsClient.

AsyncPageable<CommunicationRoom> allRooms = roomsClient.GetRoomsAsync();
await foreach (CommunicationRoom room in allRooms)
{
    Console.WriteLine($"Room with id {room.Id} is valid from {room.ValidFrom} to {room.ValidUntil}.");
}

Eliminar sala

Para eliminar una sala, llame a la DeleteRoom función o DeleteRoomAsync desde RoomsClient.

Response deleteRoomResponse = await roomsClient.DeleteRoomAsync(createdRoomId);

Agregar o actualizar participantes en una sala

Para agregar nuevos participantes o actualizar los participantes existentes, llame a la AddOrUpdateParticipants función o AddOrUpdateParticipantsAsync desde RoomsClient.

Response<CommunicationUserIdentifier> communicationUser3 = await communicationIdentityClient.CreateUserAsync();
RoomParticipant newParticipant = new RoomParticipant(communicationUser3.Value) { Role = ParticipantRole.Consumer };

// Previous snippet for create room added participant2 as Presenter
participant2 = new RoomParticipant(communicationUser2) { Role = ParticipantRole.Attendee };

List<RoomParticipant> participantsToAddOrUpdate = new List<RoomParticipant>
{
    participant2,   // participant2 updated from Presenter to Attendee
    newParticipant, // newParticipant added to the room
};

Response addOrUpdateParticipantResponse = await roomsClient.AddOrUpdateParticipantsAsync(createdRoomId, participantsToAddOrUpdate);

Quitar participantes en una sala

Para quitar participantes de una sala, llame a la RemoveParticipants función o RemoveParticipantsAsync desde RoomsClient.

List<CommunicationIdentifier> participantsToRemove = new List<CommunicationIdentifier>
{
   communicationUser1,
   communicationUser2
};
Response removeParticipantResponse = await roomsClient.RemoveParticipantsAsync(createdRoomId, participantsToRemove);

Obtener participantes en una sala

Para obtener todos los participantes de una sala, llame a la GetParticipants función o GetParticipantsAsync desde RoomsClient. El valor devuelto es Pageable<RoomParticipant> o AsyncPageable<RoomParticipant> que contiene la lista paginada de participantes.

AsyncPageable<RoomParticipant> allParticipants = roomsClient.GetParticipantsAsync(createdRoomId);
await foreach (RoomParticipant participant in allParticipants)
{
    Console.WriteLine($" Participant with id {participant.CommunicationIdentifier.RawId} is a {participant.Role}");
}

Solución de problemas

Respuestas de servicio

Se RequestFailedException produce como una respuesta de servicio para las solicitudes incorrectas. La excepción contiene información sobre qué código de respuesta se devolvió del servicio.

try
{
    CommunicationIdentityClient communicationIdentityClient = CreateInstrumentedCommunicationIdentityClient();
    Response<CommunicationUserIdentifier> communicationUser1 = await communicationIdentityClient.CreateUserAsync();
    Response<CommunicationUserIdentifier> communicationUser2 = await communicationIdentityClient.CreateUserAsync();
    DateTimeOffset validFrom = DateTimeOffset.UtcNow;
    DateTimeOffset validUntil = validFrom.AddDays(1);
    List<RoomParticipant> createRoomParticipants = new List<RoomParticipant>();
    RoomParticipant participant1 = new RoomParticipant(communicationUser1.Value) { Role = ParticipantRole.Presenter };
    RoomParticipant participant2 = new RoomParticipant(communicationUser2.Value) { Role = ParticipantRole.Attendee };
    Response<CommunicationRoom> createRoomResponse = await roomsClient.CreateRoomAsync(validFrom, validUntil, createRoomParticipants);
    CommunicationRoom createRoomResult = createRoomResponse.Value;
}
catch (RequestFailedException ex)
{
    Console.WriteLine(ex.Message);
}

Pasos siguientes

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 obtener 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.

Actualizar los vínculos de código de ejemplo una vez publicado el SDK