Webview
Para enriquecer a interação com o usuário usamos a Webview, que fica responsável por pegar ou mostrar informações de forma mais eficiente durante o fluxo da conversa. A ideia aqui é que o usuário tenha a experiência de estar numa conversa com o bot e ao mesmo tempo usando recursos de um aplicativo web ou mobile.
A Webview pode ser acionada durante o fluxo da conversa apenas através do botão de uma mensagem do tipo cartão.
Estamos disponibilizando no momento 3 tipos de Webviews: Campos de Formulário, Avançado e URL Externa.
Campos de Formulários
Aqui temos a opção de apresentar um formulário com campos do objeto Usuário para serem preenchidos. Todo o comportamento é controlado pela plataforma CosmoBots.
A Altura da Webview define qual a porcentagem da tela será ocupada pela Webview. É interessante utilizar uma altura que não cubra 100% da tela, assim o usuário perceberá que ainda está no chatbot.
Abaixo segue um exemplo de como fica esta Webview para o usuário:
Após a conclusão da Webview todos os dados do formulário serão salvos na base de dados do CosmoBots.
Avançado
Este tipo de Webview possui mais recursos. E se baseia em diferentes layouts para apresentar a informação ao usuário.
Os layouts precisam ser preenchidos e colocados na variável chamada webview. Abaixo seguem os atributos disponíveis para todos os layouts:
Atributo | Tipo | Descrição |
id | String | Identificador do layout. Pode ser definido qualquer String. Obrigatório. |
header | String | Cabeçalho do layout. Obrigatório. |
buttons | Array | Conjunto de botões para navegação que aparecem ao final do layout. Obrigatório. Os campos são: label: rótulo do botão next_id: caso esteja dentro de um Conjunto de Layouts, define aqui o id do próximo layout go_back: caso esteja dentro de um Conjunto de Layouts, define se a ação do botão é voltar ao layout anterior required: indica se é necessário selecionar algum item antes de seguir adiante save_record: indica se precisa salvar o registro dos dados do layout atual. |
options | Object (JSON) | Opções adicionais do layout: min_select: mínimo de itens a serem selecionados (Número) max_select: máximo de itens a serem selecionados (Número) min_item_quantity: quantidade mínima de cada item (Número) max_item_quantity: quantidade máxima de cada item (Número) show_limit_select: mostra mensagem sobre o limite de itens a serem selecionados (Booleano) show_limit_quantity: mostra mensagem sobre o limite da quantidade de cada item a serem selecionados(Booleano) |
E agora vamos aos detalhes de cada layout, contendo exemplos de uso:
Lista e Seleciona Item
Abaixo segue os atributos adicionais para este tipo de layout:
Atributo | Tipo | Descrição |
type | String | Tipo do layout: select. Obrigatório. |
data | Array | Dados que serão usados para montar a lista. Obrigatório. |
selected | Array | Itens já selecionados. |
response | String | Nome da variável que receberá a resposta do usuário. Exemplo: Caso seja 'itens', ela poderá ser acessada dentro do contexto, usando context.itens. Obrigatório. |
fields | Object (JSON) | Nome dos campos usados para mostrar informações sobre cada item. Os campos devem ser valores presentes nos itens exibidos. Obrigatório. As opções são: title, subtitle, price, currency. |
Aqui temos um exemplo de como preencher este layout:
Lista e Seleciona Quantidade do Item
Segue os atributos adicionais para este tipo de layout:
Atributo | Tipo | Descrição |
type | String | Tipo do layout: select_product_quantity. Obrigatório. |
data | Array | Dados que serão usados para montar a lista. Obrigatório. |
selected | Array | Itens já selecionados. |
response | String | Nome da variável que terá os itens com as quantidades selecionadas após a conclusão da Webview. Obrigatório. |
fields | Object (JSON) | Nome dos campos usados para mostrar informações sobre cada item. Obrigatório. As opções são: title, subtitle, quantity, price, currency. |
Aqui temos um exemplo de como preencher este layout:
Lista e Seleciona Endereço
Segue os atributos adicionais para este tipo de layout:
Atributo | Tipo | Descrição |
type | String | Tipo do layout: select_address. Obrigatório. |
data | Array | Dados que serão usados para montar a lista. Obrigatório. |
selected | Array | Registro de endereço já selecionado. |
response | String | Nome da variável que terá o registro de endereço selecionado após a conclusão da Webview. Obrigatório. |
fields | Object (JSON) | Nome dos campos usados para mostrar informações sobre cada registro de endereço. Obrigatório. As opções são: street, number, complement, neighborhood, city, state, zipcode. |
Aqui temos um exemplo de como preencher este layout:
Lista Pedidos
Segue os atributos adicionais para este tipo de layout:
Atributo | Tipo | Descrição |
type | String | Tipo do layout: list_orders. Obrigatório. |
data | Array | Dados que serão usados para montar a lista. Obrigatório. |
fields | Object (JSON) | Nome dos campos usados para mostrar informações sobre cada item da lista. Obrigatório. As opções são: order_number, status, confirmation_date, payment_method, subtotal, freight, total, currency. |
Aqui temos um exemplo de como preencher este layout:
Mostra Total
Segue os atributos adicionais para este tipo de layout:
Atributo | Tipo | Descrição |
type | String | Tipo do layout: show_total. Obrigatório. |
response | String | Nome da variável que terá as informações sobre os valores totais após a conclusão da Webview. Obrigatório. |
fields | Object (JSON) | Nome dos campos dos itens selecionados que serão usados para calcular os valores totais. Obrigatório. As opções são: freight, price, quantity, currency. |
Aqui temos um exemplo de como preencher este layout:
Novo Registro
Segue os atributos adicionais para este tipo de layout:
Atributo | Tipo | Descrição |
type | String | Tipo do layout: new_record. Obrigatório. |
response | String | Nome da variável que terá as informações do novo registro após a conclusão da Webview. Obrigatório. |
fields | Object (JSON) | Nome dos campos do novo registro a ser criado. Obrigatório. As opções dependem quais campos você deseja que o usuário preencha. Como exemplo de criar um novo endereço, os campos seriam: street, number, complement, neighborhood, city, state, zipcode. |
Aqui temos um exemplo de como preencher este layout:
Conjunto de Layouts
E finalmente, temos a opção de definir um Conjunto de Layouts. Seria como um passo a passo que o usuário precisa seguir para concluir a Webview. Para isso basta adicionar cada layout dentro da variável webview a ordem que você deseja que as mesmas aparecem para o usuário.
Segue um exemplo, onde o cenário aqui seria para finalizar uma compra:
URL Externa
Existe a opção também de a Webview ter sua origem em alguma URL externa ao CosmoBots. Portanto o controle não estaria na plataforma do CosmoBots mas poderia usar uma etapa seguinte a esta para, por exemplo, chamar uma API para consultar ou atualizar informações do contexto da conversa.
Last updated