Skip to main content

Flutter

O canal "Mobile" permite incorporar o chat do bot em aplicativos Android e iOS feitos em Flutter. A integração é feita pelo SDK digitalcontact_bots_sdk, que exibe o chat como um widget nativo do aplicativo (sem WebView) e se conecta diretamente à plataforma.

Neste documento, abordaremos as opções de configuração do canal "Mobile" no painel e como incorporar o chat no seu aplicativo Flutter.

Configurações do canal​

Dentro da aba “Canais”, selecione a opção “Mobile”. As configurações feitas nesta tela definem a aparência padrão do chat no aplicativo.

Usar configurações do Webchat​

  • Usar configurações do Webchat: ao ativar, o chat no aplicativo passa a usar os mesmos estilos e configurações do canal "WebChat". Com essa opção ativada, não é necessário repetir as configurações abaixo.

Identificação​

  • Título do bot: nome exibido no cabeçalho do chat (máximo de 28 caracteres).

Aparência​

  • Ícone: imagem do bot exibida no cabeçalho do chat (deve ter 80x80 pixels).
  • Cor principal: define a cor do cabeçalho e do fundo das mensagens enviadas pelo cliente.
  • Cor secundária: define a cor do fundo das mensagens enviadas pelo bot.
  • Cor do texto principal: define a cor do texto das mensagens enviadas pelo cliente e do cabeçalho.
  • Cor do texto secundário: define a cor do texto das mensagens enviadas pelo bot.
  • Exibir mais opções de cores: libera a personalização de cores adicionais da interface. Ao ativar, aparecem os campos abaixo:
    • Cor de fundo das sugestões: cor de fundo dos botões de sugestão.
    • Cor do texto das sugestões: cor do texto e da borda dos botões de sugestão.
    • Cor de fundo do card: cor de fundo do balão do card e do carrossel.
    • Cor do texto do card: cor do texto do balão do card e do carrossel.
    • Cor de fundo dos botões do card: cor de fundo dos botões do card e do carrossel.
    • Cor do texto dos botões do card: cor do texto e da borda dos botões do card e do carrossel.
    • Cor do hiperlink: cor dos links enviados nas mensagens.

Configurações​

  • Notificações sonoras: reproduz um som a cada nova mensagem.
  • Desabilitar anexos: impede que o cliente envie arquivos e documentos (oculta o clipe de anexos).
  • Redefinir configurações: restaura as configurações padrão do canal.
  • Salvar: aplica e salva todas as alterações feitas.

💡 Dica: as configurações do painel são carregadas pelo aplicativo sempre que o chat é aberto. Ao alterar e salvar algo aqui, não é necessário publicar uma nova versão do aplicativo.

Snippet de publicação​

Na mesma tela, a seção Snippet de publicação mostra o código para incorporar o chat no aplicativo, já preenchido com o código do seu bot. Selecione a tecnologia Flutter e, se quiser ver todos os parâmetros disponíveis, ative a opção Visualizar versão customizada.

Requisitos​

  • Flutter 3.44.9 ou superior.
  • Aplicativo Android ou iOS com acesso à internet.

Implementação Básica​

  1. Adicione a dependência no pubspec.yaml do seu projeto:
# pubspec.yaml
dependencies:
digitalcontact_bots_sdk: ^0.2.0

Depois, rode flutter pub get.

  1. Importe o pacote e use o ChatWidget:
import 'package:digitalcontact_bots_sdk/digitalcontact_bots_sdk.dart';

ChatWidget('65c11777776343f36b748f6e')

O ChatWidget cuida sozinho de toda a conexão: ele se conecta quando entra na tela e se desconecta quando sai dela. Abrir e fechar o chat fica a cargo do aplicativo. O chat não tem botão de fechar próprio, então basta exibir ou remover o widget:

class ChatScreen extends StatefulWidget {
const ChatScreen({super.key});

@override
State<ChatScreen> createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
bool _chatOpen = false;

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Atendimento'),
actions: [
if (_chatOpen)
IconButton(
icon: const Icon(Icons.close),
onPressed: () => setState(() => _chatOpen = false),
),
],
),
body: _chatOpen
? ChatWidget('65c11777776343f36b748f6e')
: const Center(child: Text('Toque no botão para abrir o chat.')),
floatingActionButton: _chatOpen
? null
: FloatingActionButton(
onPressed: () => setState(() => _chatOpen = true),
child: const Icon(Icons.chat_bubble),
),
);
}
}

Implementação completa (Opcional)​

Caso queira passar informações específicas para o fluxo do bot ou personalizar o layout, use esta versão:

import 'package:digitalcontact_bots_sdk/digitalcontact_bots_sdk.dart';

ChatWidget(
'65c11777776343f36b748f6e',
options: ChatOptions(
mustStartNewSession: false, // Força uma conversa nova ao abrir o chat

// Variáveis da sessão
sessionVariables: {
'variavel_1': 'exemplo1',
'variavel_2': 'exemplo2',
},

// Configurações de layout do chat
layout: ChatLayout(
botName: 'Assistente Virtual', // Nome do bot
botBgColor: '#2F2F2F', // Cor de fundo da mensagem do bot
botTextColor: '#FFFFFF', // Cor do texto da mensagem do bot
userBgColor: '#6A5A37', // Cor de fundo da mensagem do usuário e do cabeçalho
userTextColor: '#FFFFFF', // Cor do texto da mensagem do usuário e do cabeçalho
suggestionBgColor: '#FFFFFF', // Cor de fundo dos botões de sugestão
suggestionTextColor: '#4D70FF', // Cor do texto e da borda dos botões de sugestão
cardBgColor: '#F3F5F9', // Cor de fundo do card e do carrossel
cardTextColor: '#5A5D68', // Cor do texto do card e do carrossel
cardButtonBgColor: '#F3F5F9', // Cor de fundo dos botões do card e do carrossel
cardButtonTextColor: '#5A5D68', // Cor do texto e da borda dos botões do card e do carrossel
hyperlinkColor: '#4D70FF', // Cor dos hiperlinks enviados nas mensagens
hideHeader: false, // Esconde o cabeçalho do chat
timeAlign: 'right', // Posição do horário na mensagem: 'left' ou 'right'
inputPlaceholder: 'Digite algo...', // Texto exibido no campo de mensagem
),
),
)

Funcionalidades Avançadas​

1. Atribuição de Variáveis​

Permite que o fluxo do bot já inicie com variáveis pré-estabelecidas, personalizando a experiência do usuário desde o primeiro contato.

Como usar:

ChatWidget(
'65c11777776343f36b748f6e',
options: const ChatOptions(
sessionVariables: {
'nome_usuario': 'João Silva',
'cpf': '123.456.789-00',
'email': 'joao@exemplo.com',
'produto_interesse': 'Seguro Auto',
},
),
)

Exemplo prático: Se o cliente já está logado no seu aplicativo, o bot pode começar a conversa sabendo o nome e o CPF dele, sem precisar perguntar de novo.

💡 Dica: as variáveis ficam disponíveis durante toda a conversa e podem ser utilizadas no fluxo do bot.

2. Personalização de Layout​

Permite alterar as configurações visuais do chat diretamente no código, sobrescrevendo as configurações do painel administrativo. Só os parâmetros informados são sobrescritos; os demais continuam vindo do painel.

Como usar:

ChatWidget(
'65c11777776343f36b748f6e',
options: const ChatOptions(
layout: ChatLayout(
botName: 'Assistente Virtual',
botBgColor: '2F2F2F', // Fundo das mensagens do bot
botTextColor: 'FFFFFF', // Cor do texto do bot
userBgColor: '6A5A37', // Fundo das mensagens do usuário
userTextColor: 'FFFFFF', // Cor do texto do usuário
hyperlinkColor: 'FF8C00', // Cor dos hiperlinks
),
),
)

Parâmetros de layout disponíveis:

Os parâmetros são equivalentes aos do "WebChat", com os nomes no padrão do Dart (por exemplo, bot-bg-color no WebChat corresponde a botBgColor no Flutter).

ParâmetroEquivalente no WebChatO que alteraSe não for informado, usa
botNamebot-nameNome exibido no cabeçalhoTítulo do bot
botBgColorbot-bg-colorCor de fundo das mensagens do botCor secundária
botTextColorbot-text-colorCor do texto das mensagens do botCor do texto secundário
userBgColoruser-bg-colorCor de fundo das mensagens do usuário e do cabeçalhoCor principal
userTextColoruser-text-colorCor do texto das mensagens do usuário e do cabeçalhoCor do texto principal
suggestionBgColorsuggestion-bg-colorCor de fundo dos botões de sugestãoCor de fundo das sugestões; sem ela, fundo transparente
suggestionTextColorsuggestion-text-colorCor do texto e da borda dos botões de sugestãoCor do texto das sugestões; sem ela, a cor de fundo das mensagens do usuário (userBgColor ou Cor principal)
cardBgColorcard-bg-colorCor de fundo do card e do carrosselCor de fundo do card
cardTextColorcard-text-colorCor do texto do card e do carrosselCor do texto do card
cardButtonBgColorcard-button-bg-colorCor de fundo dos botões do card e do carrosselCor de fundo dos botões do card
cardButtonTextColorcard-button-text-colorCor do texto e da borda dos botões do card e do carrosselCor do texto dos botões do card
hyperlinkColorhyperlink-colorCor dos hiperlinks enviados nas mensagensCor do hiperlink; sem ela, a cor do texto da mensagem
hideHeader—Com true, esconde o cabeçalho do chat (nome, ícone e botões de reinício e de configurações)false
timeAlign—Posição do horário dentro da mensagem: 'left' ou 'right''right'
inputPlaceholder—Texto exibido no campo de mensagem enquanto está vazioDigite algo...

💡 Dica: as cores devem ser informadas em hexadecimal no formato RRGGBB, com ou sem o # (ex: '#FF8C00' ou 'FF8C00'). O ícone do bot não pode ser alterado pelo código: ele sempre vem do painel.

Exemplo prático: Dois aplicativos de uma empresa que usam o mesmo bot, porém possuem identidades visuais diferentes, podem personalizar apenas o seu chat, sem modificar as configurações originais do painel.

3. Controle de Sessão​

Por padrão, a conversa fica salva no aparelho: ao fechar e abrir o chat de novo, o cliente continua de onde parou e vê as mensagens anteriores. O parâmetro mustStartNewSession (false por padrão) muda esse comportamento.

Como usar:

// Sempre inicia uma conversa nova ao abrir o chat
ChatWidget(
'65c11777776343f36b748f6e',
options: const ChatOptions(mustStartNewSession: true),
)

// Continua a conversa salva no aparelho, se houver
ChatWidget(
'65c11777776343f36b748f6e',
options: const ChatOptions(mustStartNewSession: false),
)

💡 Dica: o cliente também pode reiniciar a conversa pelo botão de reinício no cabeçalho do chat.

4. Ambiente​

O parâmetro env define em qual ambiente da plataforma o chat se conecta. Para o seu aplicativo em produção, basta omiti-lo.

ValorAmbiente
'production'Produção (padrão)
'test'Homologação
'dev'Desenvolvimento

Como usar:

ChatWidget(
'65c11777776343f36b748f6e',
env: 'test',
)

Recursos do chat no aplicativo​

Além das configurações acima, o chat no aplicativo oferece:

  • Tamanho da fonte: pelo botão de configurações no cabeçalho, o cliente escolhe entre os tamanhos Normal, Grande e Extra grande. A escolha fica salva no aparelho. O chat também respeita o tamanho de fonte definido nas configurações do sistema do celular.
  • Acesso rápido: quando o Acesso Rápido está ativo no bot, a lista de atalhos é exibida pelo botão de menu ao lado do campo de mensagem.
  • Links: os links enviados nas mensagens são abertos fora do aplicativo (no navegador, no discador ou no aplicativo correspondente do celular).