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 con un ID de conversación puede realizar acciones como invitar y listar miembros. Para controlar qué usuarios pueden realizar estas acciones, restrínjalas mediante ACL en el JWT.
Participar en una conversación
Con un ID de conversación, puedes unirte a una conversación. Al unirse 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
Dado un ID de Conversación y el nombre de usuario de otro Usuario, puedes invitarle a una Conversación. En Android e iOS, se enviará una notificación push a los dispositivos registrados del usuario invitado.
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 configurarlo:
- Pida
- Tamaño de 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
Dado un ID de Conversación y un ID de Miembro, puede obtener un objeto Miembro completo. Si desea obtener su objeto Member, puede establecer el parámetro memberId 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
...
}
}