Gestión de miembros con el Client SDK

Product deprecation notice

Effective April 30th, 2026, Vonage In-App Messaging will no longer be available. Access for new users will be closed, and the service will be discontinued for all existing users.

If you have any questions regarding this product’s discontinuation, please contact your account manager or our support team.

Esta guía explica cómo administrar miembros con el Vonage Client SDK. Antes de comenzar, asegúrate de haber agregado el SDK a tu aplicación y de haber creado una sesión (Android, iOS, JS).

Cuando un Usuario se une a una Conversación se convierten en Miembro. Una afiliación es una correspondencia entre un Usuario, un Canal y un Conversación. Por ejemplo, un Usuario llamado "Alice", se convertirá en Miembro en una Conversación llamada "Chat", a través del canal "App".

Cualquier usuario que disponga de un ID de conversación puede realizar acciones relacionadas con los miembros, como invitarlos o añadirlos a una lista. Para controlar qué usuarios pueden realizar estas acciones, restrinja el acceso mediante ACL en el JWT.

Participar en una conversación

Si dispones de un ID de conversación, puedes unirte a ella. Al unirte, se crea un miembro en la conversación con el JOINED estado. Después de esto, puede enviar y recibir mensajes. Al unirse a una conversación a través del Client SDK, el canal se establece en "App".

client.joinConversation(conversationId)
.then(memberId => {
    console.log("Successfully joined Conversation with Member Id: ", memberId);
}).catch(error => {
    console.error("Error joining Conversation: ", error);
});
client.joinConversation("CONV_ID") { error, memberId ->
    error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */} ?:
    error?.let {/* Handle generic Error */}
    memberId?.let { /* Conversation joined */ }
}
client.joinConversation("CONV_ID") { error, memberId in
    ...
}

Invitar a una conversación

Si dispones del ID de una conversación y del nombre de usuario de otra persona, puedes invitarla a esa conversación. En Android e iOS, se enviará una notificación push a los dispositivos registrados de la persona invitada.

client.inviteToConversation(conversationId, username)
    .then(memberId => {
        console.log("Successfully invited User to Conversation with Member Id: ", memberId);
    }).catch(error => {
        console.error("Error joining Conversation: ", error);
    });
client.inviteToConversation("CONV_ID", "USERNAME") { error, memberId ->
    error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */} ?:
    error?.let {/* Handle generic Error */}
    memberId?.let { /* Invited to Conversation */ }
}
client.inviteToConversation("CONV_ID", username: "USERNAME") { error, memberId in
    ...
}

Abandonar una conversación

Con un identificador de conversación, puede abandonar una conversación. Al abandonar una conversación, se actualiza el Miembros estado a LEFT.

client.leaveConversation(conversationId)
    .then(() => {
        console.log("Successfully left Conversation.");
    }).catch(error => {
        console.error("Error leaving Conversation: ", error);
    });
client.leaveConversation("CONV_ID") { error ->
    error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */} ?:
    error?.let {/* Handle generic Error */}
    /* Conversation Left */
}
client.leaveConversation("CONV_ID") { error in
    ...
}

Conseguir miembros para la conversación

Dado un ID de Conversación de una Conversación en la que eres Miembro, puedes obtener todos los Miembros de esa Conversación. Opcionalmente puede pasar algunos parámetros para configurar la respuesta, si no se utilizarán los valores por defecto. Este método devuelve una respuesta paginada. Si no está familiarizado con la paginación, consulte la sección guía de paginación.

Puedes configurar:

  • Pedido
  • Tamaño de la página
  • Un cursor
const params = {
    order: "asc", // "desc"
    pageSize: 100,
    cursor: null
};
    
client.getConversationMembers(conversationId, params)
    .then(({members, nextCursor, previousCursor}) => {
        console.log("Array of Members: ", members);
        console.log("cursor for next set of results, if any. could be null: ", nextCursor);
        console.log("cursor for previous set of results, if any. could be null: ", previousCursor);
    }).catch(error => {
        console.error("Error getting Members: ", error);
    });
val params = GetConversationMembersParameters(PresentingOrder.ASC, 100)
client.getConversationMembers("CONV_ID", params) { error, membersPage ->)
    error?.let { /* Handle Error in fetching Conversation Members */ }
    membersPage?.let {
        it.members.forEach { member ->
            println("Member id: ${member.id}, user id: ${member.user?.id}")
        }
    }
}
let params = VGGetConversationMembersParameters(order: .asc, pageSize: 100)
client.getConversationMembers("CONV_ID", parameters: params) { error, membersPage in
    if error == nil {
        let members = membersPage!.members
    } else {
        // Handle failure
    }
}

Cómo conseguir un miembro para conversar

Si dispones de un ID de conversación y un ID de miembro, puedes obtener un objeto «Member» completo. Si deseas obtener tu objeto «Member», puedes establecer el memberId parámetro a "me".

client.getConversationMember(conversationId, memberId)
    .then(member => {
        console.log("Successfully got Member: ", member);
    }).catch(error => {
        console.error("Error getting Member: ", error);
    });
client.getConversationMember("CONV_ID", "MEM_ID") { error, member ->
    error?.let { /* Handle Error in fetching Conversation Members */ }
}
client.getConversationMember("CONV_ID", memberId: "MEM_ID") { error, member in
    ...
}

Eventos para miembros de Getting A Conversation

Puede recibir todos los Eventos de Miembro de Conversación en su aplicación configurando una Función de Escucha/Delegado de Eventos. Aquí puede comprobar el tipo de Evento Miembro entrante.

client.on("conversationEvent", event => {
    switch (event.kind) {
        case "member:invited":
            handleMemberInvited(event);
            break;
        case "member:joined":
            handleMemberJoined(event);
            break;
        case "member:left":
            handleMemberLeft(event);
            break;
    };
});
client.setOnConversationEventListener {
    when(it) {
        is MemberInvitedConversationEvent -> {}  // Handle Member Invited Event
        is MemberJoinedConversationEvent -> {} // Handle Member Joined Event
        is MemberLeftConversationEvent -> {} // Handle Member Left Event
        else -> {}
    }
}
func chatClient(_ client: VGChatClient, didReceiveConversationEvent event: VGConversationEvent) {
    switch event.kind {
    case .memberInvited:
        // Handle Member Invited Event
        let memberInvitedEvent = event as! VGMemberInvitedEvent
    case .memberJoined:
        // Handle Member Joined Event
        let memberJoinedEvent = event as! VGMemberJoinedEvent
    case .memberLeft:
        // Handle Member Left Event
        let memberLeftEvent = event as! VGMemberLeftEvent
    ...
    }
}