Gestión de conversaciones con 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 conversaciones 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).
A Conversación puede verse como una sala de chat cuando se trabaja con el Vonage Client SDK. Las Usuarios pueden unirse a Conversaciones. Cuando se unen a una Conversación, se convierten en un Miembro. Los miembros pueden enviar y recibir mensajes.
Acciones como borrar una Conversación o Evento son posibles por cualquier Usuario con un ID de Conversación. Para controlar qué Usuarios pueden realizar determinadas acciones, restrínjalas mediante ACL en el JWT.
Crear una conversación
En createConversation le permite crear una Conversación pasando opcionalmente algunos parámetros. Los nombres de las conversaciones deben ser únicos. Si no proporcionas un nombre de Conversación o un nombre para mostrar, se generará uno para ti.
Puedes configurarlo:
- Nombre
- Mostrar nombre
- URL de la imagen
- TTL
- Clave de clasificación personalizada
- Datos personalizados
val params = CreateConversationParameters("Conversation","Alice+Bob")
client.createConversation(params) { error, conversationId ->
error?.takeIf { it is VGError }?.let {
// Handle Error in creating Conversation
} ?: error?.let {
// Handle generic Exception
}
conversationId?.let { /* Conversation created */ }
}
let params = VGCreateConversationParameters(name: "Conversation", displayName: "Alice+Bob")
client.createConversation(params) { error, conversationId in
...
}
Conseguir conversaciones
En getConversations le permite obtener todas las conversaciones en las que el usuario actual es miembro. 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
- Incluir o no datos personalizados
- Qué pedir
val params = GetConversationsParameters(
order = PresentingOrder.DESC,
pageSize = 10,
)
client.getConversations(params) { error, conversationsPage ->
err?.let { /* Handle Error in fetching Conversations */ }
conversationsPage?.let {
val nextCursor = it.nextCursor
it.conversations.forEach {conversation ->
println("Conversation id: ${conversation.id}, name: ${conversation.name}, display name: ${conversation.displayName}")
}
}
}
let params = VGGetConversationsParameters(order: .asc, pageSize: 100)
client.getConversations(params) { error, conversationsPage in
if error == nil {
let conversations = conversationsPage!.conversations
} else {
// Handle failure
}
}
Conseguir una conversación
Dado un ID de Conversación, puedes obtener un objeto de Conversación.
client.getConversation("CONV_ID") { error, conversation ->
error?.let { /* Handle Error in fetching Conversation */ }
conversation?.let { /*Conversation received.*/ }
}
client.getConversation("CONV_ID") { error, conversation in
...
}
Actualizar una conversación
En updateConversation le permite actualizar las propiedades de su Conversación. Puede pasar algunos parámetros con 3 opciones:
- Omitir un valor - No hay cambios en la Conversación.
- Proporcionar un valor (
VGOption.some()en Android e iOS) - El valor se actualiza en la Conversación. - Pasar
null(VGOption.some(null/nil)en Android e iOS) - El valor se establece en null o el valor predeterminado en la Conversación.
Puede actualizar estas propiedades de Conversación:
- Nombre
- Mostrar nombre
- URL de la imagen
- TTL
- Clave de clasificación personalizada
- Datos personalizados
// Update the conversation displayName and remove the imageUrl
val params = UpdateConversationParameters(displayName = Option.Some("New Display Name"),
imageUrl = Option.Some(null))
client.updateConversation("CONV_ID", params) { err, conversationId ->
if(err == null){
storedConversation = conversationId
} else {
// Handle error
}
}
// Update the conversation displayName and remove the imageUrl
let params = VGUpdateConversationParameters(displayName: .some(value: "New Display Name"),
imageUrl: .some(value: nil))
client.updateConversation("CONV_ID", parameters: params) { error, conversationId in
if error == nil {
storedConversation = conversationId
} else {
// Handle failure
}
}
Eventos de una conversación
Dado un ID de Conversación, puede obtener los Eventos de una 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
- Eventos por los que filtrar
- Incluir o no los eventos borrados
val params = GetConversationEventsParameters(PresentingOrder.ASC, 100)
client.getConversationEvents("CONV_ID", params) { error, eventsPage ->
error?.let { /* Handle Error in fetching Conversation Events */ }
eventsPage?.let {
it.events.forEach { event ->
//Process events
}
}
}
let params = VGGetConversationEventsParameters(order: .asc, pageSize: 100)
client.getConversationEvents("CONV_ID", parameters: params) { error, eventsPage in
if error == nil {
let events = eventsPage!.events
} else {
// Handle failure
}
}
Borrar los eventos de una conversación
Dado un ID de Evento y un ID de Conversación, puede eliminar un evento.
client.deleteEvent("EVENT_ID", "CONV_ID") { error ->
error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */ } ?:
error?.let {/* Handle generic Error */ }
}
client.deleteEvent("EVENT_ID", conversationId: "CONV_ID") { error in
if error != nil {
// Handle failure
}
}
Borrar una conversación
Dado un ID de Conversación, puedes borrar una Conversación.
client.deleteConversation("CONV_ID") { error ->
error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */} ?:
error?.let {/* Handle generic Error */}
/* Conversation Deleted */
}
client.deleteConversation("CONV_ID") { error in
...
}