Diagramas de eventos do CXone Mobile SDK
Esta página fornece diagramas e explicações de eventos comuns que ocorrem durante uma interação de chat.
O aplicativo torna-se ativo
Este diagrama de sequência captura o fluxo quando o aplicativo móvel torna-se ativo, prepara o chat, lida com informações de visitantes e clientes e se comunica com os serviços de back-end. Se ocorrer algum erro, ele será resolvido e registrado adequadamente.
Abrir diagrama em uma nova janela
Estado inicial:
-
O status inicial do SDK é definido como initial.
-
O aplicativo móvel entra em primeiro plano.
Preparação de chat:
-
O usuário inicia a preparação de chat chamando prepare(brandId:channelId:).
-
Se o estado do chat não for inicial ou offline, um IllegalChatStateError será retornado.
-
Caso contrário, o SDK definirá o estado do chat como preparing e notifica a interface do usuário com onChatUpdated().
Configuração do canal:
-
O SDK solicita a configuração do canal do back-end com getChannelConfiguration().
-
Se houver um erro no servidor, um ServerError será retornado e o estado do chat será redefinido para initialize.
-
Caso contrário, a configuração do canal será recebida, e o SDK criará um ID de destino.
-
Se o ID do visitante ou do cliente for null, eles são criados e armazenados localmente.
Atendimento de visitantes e clientes:
-
O SDK chama createOrUpdateVisitor(visitorId:customerId:deviceToken:) no back-end.
-
Se houver um erro no servidor, o estado do chat será redefinido para initialize.
-
Caso contrário, o atendimento de visitantes e clientes será bem-sucedido.
Estado de chat preparado:
-
O estado do chat é definido como prepared.
-
A interface do usuário é notificada com onChatUpdated().
-
A análise de visualizações da página é monitorada entre o aplicativo móvel e o back-end.
O aplicativo entra em segundo plano
Este diagrama de sequência captura o fluxo quando o aplicativo móvel entra em segundo plano, lida com o rastreamento de visualizações da página e se comunica com os serviços de back-end. Se ocorrer algum erro, ele será resolvido adequadamente. Quando um aplicativo entra em segundo plano, significa que ele não é mais a coisa principal que você vê ou com a qual interage no seu dispositivo. Imagine que você está usando um aplicativo de mensagem e pressiona o botão da página inicial ou muda para outro aplicativo. O aplicativo de mensagem está agora em segundo plano. Ainda está em execução, mas você não o está usando ativamente. Isso acontece quando você minimiza um aplicativo, muda para um aplicativo diferente ou bloqueia seu telefone. O aplicativo ainda está lá, mas não está mais em primeiro plano.
Abrir diagrama em uma nova janela
Aplicativo entrando em segundo plano:
-
A interface do usuário exibe uma caixa indicando que o aplicativo está entrando em segundo plano.
-
A interface do usuário notifica o SDK de que a visualização da página terminou usando pageViewEnded.
-
O back-end recebe o evento pageViewEnded.
-
Se houver um erro no servidor, ele será resolvido.
-
Caso contrário, o evento será bem-sucedido.
-
Desconexão e tratamento de estados:
-
A interface do usuário inicia a desconexão usando disconnect().
-
Dependendo do estado atual:
-
Se estiver em preparação, o SDK definirá o estado como initial.
-
Se já estiver preparado, o SDK desconectará o soquete e definirá o estado como prepared.
-
Visualizar página
Este diagrama de sequência representa o fluxo quando um usuário visualiza uma página no aplicativo móvel, incluindo interações com o SDK e serviços de back-end. Ele mostra o evento de análise quando um usuário visualiza uma página, rastreia os detalhes da visita e se comunica com os serviços de back-end. Se ocorrer algum erro, ele será resolvido adequadamente.
Abrir diagrama em uma nova janela
Referência de ativação do aplicativo:
-
O diagrama faz referência ao evento aplicativo tornou-se ativo.
Evento de visualização de página:
-
O usuário visualiza uma página, e a interface do usuário notifica o SDK com viewPage(title:url:).
-
O modo de chat é verificado:
-
Se não estiver preparado, um illegalChatStateError será retornado.
-
Caso contrário, a expiração dos detalhes da visita será verificada.
-
Se expirados, novos detalhes da visita serão criados (UUID e expiração).
-
Se forem válidos, o SDK ajustará a expiração atual.
-
-
Se a última página visualizada não foi enviada, o SDK encerrará a visualização da página.
-
O título, o URI e o registro de data/hora da última página visualizada no momento são armazenados.
-
Se houver uma falha, como um erro no servidor, ela será resolvida.
-
Interação com o back-end:
-
O SDK se comunica com os serviços de back-end:
-
visitorVisit(date:) é chamado para gravar a visita.
-
pageView(title:uri:timestamp) é chamado para registrar a visualização da página.
-
Se houver um erro no servidor, ele será resolvido.
-
Chat aberto
Este diagrama de sequência captura o fluxo quando um usuário abre o chat, lida com o OAuth e estabelece uma conexão com os serviços de back-end. Se ocorrer algum erro, ele será resolvido adequadamente.
Abrir diagrama em uma nova janela
Referência de ativação do aplicativo:
-
O diagrama faz referência ao evento aplicativo tornou-se ativo.
Abertura de chat:
-
O usuário do aplicativo abre o chat, e a interface do usuário inicia uma conexão com connect().
-
O estado do chat é verificado:
-
Se estiver conectando, o SDK estabelecerá uma conexão WebSocket.
-
Se for inicial ou em preparação, um IllegalChatStateError será retornado.
-
Se estiver preparado, o modo de chat é verificado:
-
Se for chat ao vivo e o status do chat ao vivo for offline, o estado do chat será definido como offline.
-
Caso contrário, a conexão WebSocket será bem-sucedida.
-
O tratamento de OAuth depende se ele está ativado ou desativado.
-
-
OAuthTratamento de :
-
Se OAuth estiver ativado:
-
O SDK se reconectará com reconnectCustomerEventData(accessToken:).
-
Se houver um erro no servidor, ele será resolvido.
-
Caso contrário, o CustomerReconnectedEvent será recebido.
-
-
Se OAuth estiver desativado:
-
O SDK autorizará com authorizeCustomerEventData(authorizationCode:codeVerifier:).
-
Se houver um erro no servidor, ele será resolvido.
-
Caso contrário, o CustomerAuthorizedEvent será recebido, e o token de acesso e a identidade do cliente serão armazenados.
-
Estado de chat conectado:
-
O estado do chat é definido como connected.
-
A interface do usuário é notificada com onChatUpdated().
-
Dependendo se o chat for single-thread Em um aplicativo de conversa única, cada contato pode ter apenas uma conversa de chat. Qualquer interação que eles tenham com sua organização ocorre nessa conversa de chat. ou multi-thread Se seu aplicativo for para várias conversas, seus contatos poderão criar quantas conversas desejarem para discutir novos tópicos. Essas conversas podem estar ativas ao mesmo tempo., a visualização de chat relevante será exibida.
Single-thread
Este diagrama de sequência captura o fluxo quando um usuário interage com um chat single-thread Em um aplicativo de conversa única, cada contato pode ter apenas uma conversa de chat. Qualquer interação que eles tenham com sua organização ocorre nessa conversa de chat., lida com a recuperação de conversas e se comunica com os serviços de back-end. Se ocorrer algum erro, ele será resolvido adequadamente.
Abrir diagrama em uma nova janela
Referência de ativação do aplicativo:
-
O diagrama faz referência ao evento chat aberto.
Recuperação de conversas:
-
O SDK carrega o ID da conversa do armazenamento local.
-
Se qualquer ID de conversa de uma plataforma externa for armazenado localmente, o SDK recuperará a conversa usando RecoverMessagingThreadEvent(threadId:).
-
Se nenhum UUID estiver disponível, O SDK tentará a recuperação com RecoverMessagingThreadEvent(nil).
Verificar existência de conversa:
-
Se a conversa existir, o ThreadRecoveredEvent será recebido.
-
Os estados do chat e da conversa serão definidos como ready.
-
A interface do usuário é notificada com onThreadUpdated().
-
-
Se a conversa não existir, o ThreadRecoverFailedEvent será recebido.
-
O estado do chat será definido como pronto.
-
A interface do usuário é notificada com onChatUpdated().
-
Uma nota indica que nenhuma recuperação de conversa é necessária.
-
Interação por chat:
-
A interface do usuário exibe a janela de chat para o usuário interagir com um agente.
Multi-thread
Este diagrama de sequência captura o fluxo quando um usuário interage com um chat multi-thread Se seu aplicativo for para várias conversas, seus contatos poderão criar quantas conversas desejarem para discutir novos tópicos. Essas conversas podem estar ativas ao mesmo tempo., lida com a recuperação de conversas e se comunica com os serviços de back-end. Se ocorrer algum erro, ele será resolvido adequadamente.
Abrir diagrama em uma nova janela
Referência de ativação do aplicativo:
-
O diagrama faz referência ao evento chat aberto.
Recuperação da lista de conversas:
-
O SDK busca a lista de conversas do back-end usando FetchThreadListEvent.
-
Se houver um erro no servidor, ele será resolvido.
-
Caso contrário, a lista de conversas será obtida.
Tratamento de conversas:
-
Se houver conversas:
-
O SDK define o estado de cada conversa como received e carrega as últimas mensagens.
-
Os metadados da conversa são carregados, e o estado é definido como loaded.
-
O estado do chat será definido como ready, e a interface do usuário será notificada.
-
-
Se não houver conversas:
-
O estado do chat será definido como ready, e a interface do usuário será notificada.
-
Criar ou abrir conversas:
-
Se estiver criando uma nova conversa:
-
O usuário iniciará a criação da conversa.
-
-
Se estiver abrindo uma conversa existente:
-
O usuário selecionará uma conversa.
-
A interface do usuário abrirá a conversa usando openThread(thread:).
-
A conversa será recuperada do back-end.
-
Se houver um erro no servidor, ele será resolvido.
-
Caso contrário, a conversa será recuperada, e o estado será definido como ready.
-
Interação por chat:
-
O usuário interage com um agente por chat.
Chat ao Vivo
Este diagrama de sequência mostra o fluxo de back-end de uma interação por chat ao vivo. Chat ao Vivo é a opção de chat digital em tempo real, enquanto o Mensagem de Chat é a opção de mensagens assíncronas, semelhante às mensagens privadas ou diretas.
Abrir diagrama em uma nova janela
Criar conversa
Este diagrama de sequência captura o fluxo quando um usuário cria uma nova conversa de chat, gerencia a criação da conversa e se comunica com o SDK. Se ocorrer algum erro, ele será resolvido adequadamente.
Abrir diagrama em uma nova janela
Detalhes do usuário e pré-chat:
-
Se o nome do cliente não for fornecido, a interface do usuário mostrará uma visualização de formulário de detalhes do usuário.
-
Se informações pré-chat estiverem disponíveis, a interface do usuário mostrará uma visualização de formulário pré-chat.
Criação de conversa:
-
O usuário iniciará uma conversa.
-
A interface do usuário inicia a criação da conversa usando createThread(customFields:).
-
Se o modo de chat não for multi-thread, e já existir uma conversa:
-
Um unsupportedChannelConfigError será retornado.
-
Um alerta de erro será exibido.
-
-
Caso contrário:
-
O SDK cria a conversa localmente com um UUID.
-
O UUID é armazenado localmente.
-
O estado da conversa é definido como pending.
-
A interface do usuário é notificada com onThreadUpdated().
-
Falar com um agente por chat
Este diagrama de sequência captura o fluxo quando um usuário final interage com um agente por chat, lida com mensagens de boas-vindas e se comunica com os serviços de back-end. Se ocorrer algum erro, ele será resolvido adequadamente.
Abrir diagrama em uma nova janela
Inicialização de chat:
-
O usuário envia uma mensagem usando sendMessage(message:).
-
Se uma mensagem de boas-vindas estiver disponível:
-
O SDK enviará uma mensagem de boas-vindas usando SendOutboundMessageEvent(welcomeMessage:).
-
Se houver um erro no servidor, ele será resolvido.
-
Caso contrário, o MessageCreatedEvent será recebido, e a interface do usuário será atualizada.
-
-
O SDK enviará a mensagem do usuário usando sendMessageEvent.
-
Se houver um erro no servidor, ele será resolvido.
-
Caso contrário, o MessageCreatedEvent será recebido, e a interface do usuário será atualizada.
-
Encerrar contato
Este diagrama de sequência captura o fluxo quando um usuário encerra um chat, lida com o encerramento da conversa e se comunica com os serviços de back-end. Se ocorrer algum erro, ele será resolvido adequadamente.
Abrir diagrama em uma nova janela
Encerramento de chat:
-
O usuário clica em Encerrar conversa.
-
A interface do usuário notifica o SDK para encerrar a conversa usando endConversation().
-
O back-end recebe o EndConversationEvent.
-
Se houver um erro no servidor, ele será resolvido.
-
Caso contrário, o status do caso será alterado, e o estado da conversa será definido como closed.
-
A interface do usuário é notificada com onThreadUpdated().
-
Visualização da experiência de encerrar contato:
-
A interface do usuário exibe a visualização de encerrar contato.
Processar eventos grandes
Uma das limitações do AWS API Gateway é que ele pode enviar no máximo 128 KB em uma mensagem. Para enviar eventos maiores do servidor para o cliente:
-
No servidor, carregue eventos maiores em um bucket S3 disponível publicamente.
-
Em seguida, o cliente pode receber apenas o URL desse arquivo via WebSocket e baixar o corpo do evento real por meio de REST.