Diagramas de eventos do 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 tem uma conversa de chat que lida com qualquer interação que ele tenha com sua organização. 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 tem uma conversa de chat que lida com qualquer interação que ele tenha com sua organização., 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.