Diagramas de eventos de CXone Mobile SDK
Esta página proporciona diagramas y explicaciones de eventos comunes que ocurren durante una interacción de chat.
La aplicación se activa
Este diagrama de secuencia captura el flujo cuando la aplicación móvil se activa, prepara el chat, maneja la información del visitante y del cliente, y se comunica con los servicios backend. Si se produce algún error, se maneja y registra adecuadamente.
Abrir el diagrama en una ventana nueva
Estado inicial:
-
El estado inicial del SDK se define a initial.
-
La aplicación móvil entra al primer plano.
Preparación de chat:
-
El usuario inicia la preparación del chat llamando a prepare(brandId:channelId:).
-
Si el estado del chat no es inicial o desconectado, se devuelve un IllegalChatStateError.
-
De lo contrario, el SDK define el estado de chat a preparing y notifica a la interfaz de usuario con onChatUpdated().
Configuración de canal:
-
El SDK solicita la configuración del canal al backend con getChannelConfiguration()).
-
Si se produce un error en el servidor, se devuelve un ServerError y el estado del chat se restablece a initialize.
-
De lo contrario, se recibe la configuración del canal y el SDK crea un ID de destino.
-
Si el ID de visitante o de cliente es null, se crean y almacenan de forma local.
Manejo de visitante y cliente:
-
El SDK llama a createOrUpdateVisitor(visitorId:customerId:deviceToken:) en el backend.
-
Si se produce un error en el servidor, el estado del chat se restablece a initialize.
-
De lo contrario, el manejo de visitantes y clientes se realiza con éxito.
Estado de chat preparado:
-
El estado del chat se define a prepared.
-
La interfaz de usuario recibe una notificación con onChatUpdated().
-
La analítica de las vistas de páginas se rastrean entre la aplicación móvil y el backend.
La aplicación entra en segundo plano
Este diagrama de secuencia captura el flujo cuando la aplicación móvil entra en segundo plano, maneja el seguimiento de la vista de página y se comunica con los servicios de backend. Si se produce algún error, se maneja adecuadamente. Cuando una aplicación entra en segundo plano, significa que ya no es la vista principal que se ve o se interactúa en su dispositivo. Imagine que está utilizando una aplicación de mensajería y luego presiona el botón de inicio o cambia a otra aplicación. La aplicación de mensajería está ahora en segundo plano. Sigue ejecutándose, pero no la está utilizando activamente. Esto ocurre cuando minimiza una aplicación, cambia a otra aplicación, o bloquea el teléfono. La aplicación sigue ahí, pero ya no está en primer plano.
Abrir el diagrama en una ventana nueva
Aplicación entrando en segundo plano:
-
La interfaz de usuario muestra un cuadro indicando que la aplicación está entrando en segundo plano.
-
La interfaz de usuario notifica al SDK que la vista de página ha finalizado utilizando pageViewEnded.
-
El backend recibe el evento pageViewEnded.
-
Si hay un error de servidor, se maneja.
-
De lo contrario, el evento se realiza con éxito.
-
Desconexión y manejo de estado:
-
La interfaz de usuario inicia la desconexión usando disconnect().
-
Dependiendo del estado actual:
-
Si se está preparando, el SDK define el estado a initial.
-
Si ya está preparado, el SDK desconecta el socket y establece el estado a prepared.
-
Ver Página
Este diagrama de secuencia representa el flujo cuando un usuario ve una página en la aplicación móvil incluyendo las interacciones con el SDK y los servicios backend. Muestra el evento de analítica cuando un usuario ve una página, rastrea los detalles de la visita y se comunica con los servicios backend. Si se produce algún error, se maneja adecuadamente.
Abrir el diagrama en una ventana nueva
Referencia de activación de aplicación:
-
El diagrama hace referencia al evento de activación de la aplicación.
Evento Ver página:
-
El usuario ve una página, y la interfaz de usuario notifica al SDK con viewPage(title:url:).
-
Se comprueba el modo de chat:
-
Si no está preparado, se devuelve un illegalChatStateError.
-
En caso contrario, se comprueba si los detalles de la visita han caducado.
-
Si han caducado, se crean nuevos detalles de visita (UUID y caducidad).
-
Si son válidos, el SDK ajusta la caducidad actual.
-
-
Si no se ha enviado la última página visitada, el SDK finaliza la visita.
-
Se almacenan el título de la última página vista actual, el URI y la marca de tiempo.
-
Si hay un fallo, como un error del servidor, se maneja.
-
Interacción con el backend:
-
El SDK se comunica con los servicios backend:
-
Se llama a visitorVisit(date:) para registrar la visita.
-
Se llama a pageView(title:uri:timestamp) para registrar la vista de la página.
-
Si hay un error de servidor, se maneja.
-
Abrir chat
Este diagrama de secuencia captura el flujo cuando un usuario abre el chat, maneja OAuth, y establece una conexión con los servicios backend. Si se produce algún error, se maneja adecuadamente.
Abrir el diagrama en una ventana nueva
Referencia de activación de aplicación:
-
El diagrama hace referencia al evento de activación de la aplicación.
Apertura del chat:
-
El usuario de la aplicación abre el chat, y la interfaz de usuario inicia una conexión con connect().
-
Se comprueba el estado del chat:
-
Si se conecta, el SDK establece una conexión WebSocket.
-
Si es inicial o en preparación, se devuelve un IllegalChatStateError.
-
Si está preparado, se comprueba el modo de chat:
-
Si el chat en directo y el estado del chat en directo es desconectado, el estado del chat se define a offline.
-
En caso contrario, se establece la conexión WebSocket.
-
El manejo de OAuth depende de si está activado o desactivado.
-
-
Manejo de OAuth:
-
Si OAuth está activado:
-
El SDK se vuelve a conectar con reconnectCustomerEventData(accessToken:).
-
Si hay un error de servidor, se maneja.
-
De lo contrario, se recibe CustomerReconnectedEvent.
-
-
Si OAuth está desactivado:
-
El SDK autoriza con authorizeCustomerEventData(authorizationCode:codeVerifier:).
-
Si hay un error de servidor, se maneja.
-
En caso contrario, se recibe el CustomerAuthorizedEvent y se almacenan el token de acceso y la identidad del cliente.
-
Estado de chat conectado:
-
El estado del chat se define a connected.
-
La interfaz de usuario recibe una notificación con onChatUpdated().
-
Dependiendo de si el chat es de un solo hilo En una aplicación de un solo hilo, cada contacto puede tener solo un hilo de chat. Cualquier interacción que tengan con su organización tiene lugar en ese único hilo de chat. o múltiples hilos En una aplicación de subprocesos múltiples, los contactos pueden crear tantos subprocesos como deseen para discutir nuevos temas. Estos hilos pueden estar activos al mismo tiempo., se muestra la vista de chat correspondiente.
Un solo hilo
Este diagrama de secuencia captura el flujo cuando un usuario interactúa con un chat de un solo hilo En una aplicación de un solo hilo, cada contacto puede tener solo un hilo de chat. Cualquier interacción que tengan con su organización tiene lugar en ese único hilo de chat., maneja la recuperación de hilos y se comunica con los servicios backend. Si se produce algún error, se maneja adecuadamente.
Abrir el diagrama en una ventana nueva
Referencia de activación de aplicación:
-
El diagrama hace referencia al evento de apertura de chat.
Recuperación de hilos:
-
El SDK carga el ID de hilo del almacenamiento local.
-
Si cualquier ID de hilo de una plataforma externa está almacenado de forma local, el SDK recupera el hilo de mensajería utilizando RecoverMessagingThreadEvent(threadId:).
-
Si no hay ningún UUID disponible, el SDK intenta la recuperación con RecoverMessagingThreadEvent(nil).
Comprobación de existencia del hilo:
-
Si el hilo existe, se recibe ThreadRecoveredEvent.
-
Los estados del chat y del hilo se definen en ready.
-
La interfaz de usuario recibe una notificación con onThreadUpdated().
-
-
Si el hilo no existe, se recibe ThreadRecoverFailedEvent.
-
El estado del chat pasa a listo.
-
La interfaz de usuario recibe una notificación con onChatUpdated().
-
Una nota indica que no es necesario recuperar el hilo.
-
Interacción de chat:
-
La interfaz de usuario muestra la ventana de chat para que el usuario interactúe con un agente.
Múltiples hilos
Este diagrama de secuencia captura el flujo cuando un usuario interactúa con un chat de múltiples hilos En una aplicación de subprocesos múltiples, los contactos pueden crear tantos subprocesos como deseen para discutir nuevos temas. Estos hilos pueden estar activos al mismo tiempo., maneja la recuperación de hilos y se comunica con los servicios backend. Si se produce algún error, se maneja adecuadamente.
Abrir el diagrama en una ventana nueva
Referencia de activación de aplicación:
-
El diagrama hace referencia al evento de apertura de chat.
Recuperación de la lista de hilos:
-
El SDK obtiene la lista de hilos desde el backend usando FetchThreadListEvent.
-
Si hay un error de servidor, se maneja.
-
De lo contrario, se obtiene la lista de hilos.
Manejo de hilos:
-
Si existen hilos:
-
El SDK define el estado de cada hilo a received y carga los últimos mensajes.
-
Se cargan los metadatos del hilo y el estado se define a loaded.
-
El estado del chat se establece a ready y se notifica a la interfaz de usuario.
-
-
Si no existe ningún hilo:
-
El estado del chat se establece a ready y se notifica a la interfaz de usuario.
-
Crear o abrir hilos:
-
Si se crea un nuevo hilo:
-
El usuario inicia la creación del hilo.
-
-
Si se abre un hilo existente:
-
El usuario selecciona un hilo.
-
La interfaz de usuario abre el hilo mediante openThread(thread:).
-
El hilo se recupera desde el backend.
-
Si hay un error de servidor, se maneja.
-
De lo contrario, el hilo se recupera, y el estado se define a ready.
-
Interacción de chat:
-
El usuario participa en un chat con un agente.
Chat en directo
Este diagrama de secuencia muestra el flujo back-end de una interacción de Chat en directo. Chat en directo es la opción de chat digital en tiempo real, mientras que Mensajería de chat es la opción de mensajería asíncrona, que es similar a los mensajes privados o mensajes directos.
Abrir el diagrama en una ventana nueva
Crear hilo
Este diagrama de secuencia captura el flujo cuando un usuario crea un nuevo hilo de chat, maneja la creación del hilo y se comunica con el SDK. Si se produce algún error, se maneja adecuadamente.
Abrir el diagrama en una ventana nueva
Detalles del usuario y previos al chat:
-
Si no se proporciona el nombre del cliente, la interfaz de usuario muestra una vista de formulario de detalles del usuario.
-
Si la información previa al chat está disponible, la interfaz muestra un formulario de la información previa al chat.
Creación de hilos:
-
El usuario inicia una conversación.
-
La interfaz de usuario inicia la creación del hilo usando createThread(customFields:).
-
Si el modo de chat no es de múltiples hilos y el hilo ya existe:
-
Se devuelve unsupportedChannelConfigError.
-
Se muestra una alerta de error.
-
-
De lo contrario:
-
El SDK crea el hilo localmente con un UUID.
-
El UUID se almacena localmente.
-
El estado del hilo se define a pending.
-
La interfaz de usuario recibe una notificación con onThreadUpdated().
-
Chat con un agente
Este diagrama de secuencia captura el flujo cuando un usuario final interactúa con un agente a través del chat, maneja los mensajes de bienvenida y se comunica con los servicios backend. Si se produce algún error, se maneja adecuadamente.
Abrir el diagrama en una ventana nueva
Inicio del chat:
-
El usuario envía un mensaje utilizando sendMessage(message:).
-
Si existe un mensaje de bienvenida:
-
El SDK envía un mensaje de bienvenida usando SendOutboundMessageEvent(welcomeMessage:).
-
Si hay un error de servidor, se maneja.
-
De lo contrario, se recibe MessageCreatedEvent y se actualiza la interfaz de usuario.
-
-
El SDK envía el mensaje del usuario utilizando sendMessageEvent.
-
Si hay un error de servidor, se maneja.
-
De lo contrario, se recibe MessageCreatedEvent y se actualiza la interfaz de usuario.
-
Finalizar contacto
Este diagrama de secuencia captura el flujo cuando un usuario finaliza un chat, maneja el cierre de la conversación y se comunica con los servicios backend. Si se produce algún error, se maneja adecuadamente.
Abrir el diagrama en una ventana nueva
Finalización del chat:
-
El usuario presiona Finalizar conversación.
-
La interfaz de usuario notifica al SDK que finalice la conversación usando endConversation().
-
El backend recibe el EndConversationEvent.
-
Si hay un error de servidor, se maneja.
-
Si no, se cambia el estado del caso y el estado del hilo se define a closed.
-
La interfaz de usuario recibe una notificación con onThreadUpdated().
-
Vista de experiencia de contacto final:
-
La interfaz de usuario muestra la vista del contacto final.
Procesamiento de grandes eventos
Una de las limitaciones de AWS API Gateway es que sólo puede enviar un máximo de 128 KB en un mensaje. Para enviar eventos de mayor tamaño desde el servidor al cliente:
-
En el servidor, cargue los eventos de mayor tamaño en un depósito S3 disponible públicamente.
-
El cliente solo puede recibir la URL a este archivo a través de WebSocket y descargar el cuerpo real del evento a través de REST.