Kotlin

Eventos de chat

Anteriormente creaste una conversación en la CLI de Vonage y agregaste los dos usuarios a esa conversación. Las conversaciones son la forma en que se comunicarán los usuarios. Puedes obtener más información sobre las conversaciones en la sección Documentación de la Conversation API. Eventos de chat, o ConversationEvent se envían utilizando la conversación que has creado, por lo que para obtener el evento de chat primero tendrás que unirte a la conversación. Para implementar esto, actualiza la directiva ChatViewModel clase.

Añada el getMemberIDIfNeeded función:

Esto comprobará si el memberIDque se genera cuando te unes a una conversación. Si no es así, llama a getMemberID. Cree getMemberID:

Esta función intenta obtener primero el ID de miembro de este usuario con getConversationMembersi falla, se unirá a la conversación con joinConversation que devuelve el ID del miembro.

Ahora que está garantizado que ese usuario es miembro de la conversación, puedes obtener los eventos de la conversación utilizando el cliente. Crea una función llamada getConversationEvents:

getConversationEvents toma un ID de conversación y GetConversationEventsParameters. Los parámetros le permiten personalizar la forma en que se le devuelven los eventos. Esta función devuelve una respuesta paginada. Para obtener más información sobre la paginación, puede leer el documento guía de paginación. Para mostrar los eventos, cree una función de ayuda que convierta los objetos de evento en una cadena de visualización:

Los tres eventos que se utilizan en este tutorial son MemberJoinedConversationEvent, MemberLeftConversationEventy MessageTextEvent. En el caso de MessageTextEvent la función utiliza el memberID para determinar si el mensaje fue enviado por el usuario actual. Esto permitirá a la interfaz de usuario fijar los mensajes enviados por los usuarios a la derecha y los mensajes recibidos a la izquierda.

En ConversationEventListener

La aplicación también necesita reaccionar a eventos en una conversación después de la carga inicial, por lo que necesita implementar una función ConversationEventListener. Actualice su método de inicio de sesión para establecer este oyente una vez que se crea una sesión como:

Cuando se recibe un nuevo evento, éste se añade al archivo events que se publica automáticamente para que la interfaz de usuario se actualice.

Actualizar la interfaz de usuario

Ahora que el ChatViewModel puede recuperar y escuchar nuevos eventos de conversación, actualizar el código de la vista para mostrarlos, en MainActivity.kt Actualizar el ChatScreen Componible:

Ahora el LazyColumn tomará la lista de eventos y generará un Text para cada uno, aquí llamamos generateDisplayText para obtener el texto a mostrar, y si ese evento pertenece al usuario conectado o no. Finalmente añadimos un runBlocking para obtener el id de miembro y luego obtener los eventos de conversación cuando la vista se carga por primera vez.