Configuração avançada de chatbots
O Tolvnow permite que você crie chatbots através de Fluxos visuais ou através de estruturas de código JSON.
Neste artigo iremos apresentar o procedimento de configuração avançado através do código JSON.
Atenção: se você não tem experiência com programação, em especial, estruturas JSON, este artigo pode não ser adequado.
Esta opção permite que sejam feitas exatamente as mesmas funções que a criação por fluxo conversacional, sendo que na maioria das situações, não há vantagens em utilizar este método, mesmo para os programadores mais experientes. Entretanto, em alguns cenários, você pode utilizar a edição de código para copiar e colar blocos de forma mais rápida do que seria feito no diagrama visual. Entretanto, tome cuidado com os parâmetros ID dos blocos, pois é muito fácil duplicá-los.
Estrutura básica do código JSON:
{
"flow-version": 1,
"name": "novo fluxo",
"startId" : 1,
"blocks": []
}
- flow-version: versão do fluxo.
- name: nome do fluxo
- startId: código (id) do bloco inicial (o mesmo efeito do bloco start)
- blocks: lista (array) dos blocos do fluxo conversacional
Dentro da propriedade blocks você irá incluir os passos que o sistema de chatbot irá percorrer para responder aos usuários. O encadeamento dos passos será feito através do uso das propriedades id e next.
Veja este exemplo:
{
"flow-version": 1,
"name": "novo fluxo",
"startId": 1,
"blocks": [
{
"id": 1,
"type": "start",
"next": 2
},
{
"id": 2,
"type": "text-message",
"data": {
"text": "Olá! Bem vindo ao chatbot!"
},
"next": 3
},
{
"id": 3,
"type": "end"
}
]
}
No código acima, utilizamos 3 blocos: start, text-message, end. Observe que o primeiro bloco indica a propriedade next como 2, que é o id do segundo bloco. No segundo bloco a propriedade next é 3, que é o id do terceiro e último bloco. O chatbot com a configuração acima simplesmente iniciaria, enviaria uma mensagem "Olá! Bem vindo ao chatbot!" e encerraria. De forma simples, é assim que o fluxo através dos blocks funciona.
Agora vamos avançar nos diferentes tipos de blocos que o Tolvnow permite utilizar até o momento.
Bloco indicador de início:
Este bloco pode ser usado como alternativa à propriedade startId. Indica onde o processamento do fluxo irá iniciar. Havendo a propriedade startId definida na raiz do JSON, este bloco pode ser desconsiderado.
{
"id": 1,
"type": "start",
"next": 2
}
Bloco para enviar mensagem de texto:
Este bloco é utilizado para enviar mensagens de texto.
{
"id": 2,
"type": "text-message",
"data": {
"text": "Olá! Bem vindo ao chatbot!"
},
"next": 22
}
Bloco para indicar espera (atraso):
Este bloco indica ao chatbot para esperar ou atrasar o fluxo em um determinado tempo em segundos. Este bloco é especialmente utilizado para tornar o fluxo de conversa mais humanizado e de fácil leitura. Por exemplo, se você for enviar diversas mensagens em sequencia, pode ser desagradável para o usuário ler todas elas na sequencia, desta forma, pode ser interessante incluir um pequeno atraso de alguns segundos.
{
"id": 28,
"type": "delay",
"data": {
"time_seconds": 4
},
"next": 4
}
A propriedade data.time_seconds indica a quantidade de segundos que o chatbot irá esperar até seguir para a próxima etapa (text-message ou variable-request).
Bloco para captura de informações / perguntas
O chatbot deve efetuar perguntas para o usuário, como por exemplo, "Qual é o seu nome?". Para isso, utilizamos um bloco chamado variable-request. Como este bloco possui particularidades, vamos aprofundar um pouco mais.
{
"id": 5,
"type": "variable-request",
"data": {
"request": "Qual é o seu nome?",
"data-type": "name",
"set-as-name": true,
"set-as-email": false,
"set-as-identifier": true,
"variable-name": "name",
"success-message": "Ok, obrigado {{name}}!",
"error-message": "Não entendi seu nome corretamente. Podes me informar novamente?"
},
"next": 6
}Vamos falar agora sobre cada uma das propriedades dentro da propriedade data:
- request: é a pergunta que será exibida ao usuário, como se fosse uma mensagem.
- data-type: é o tipo de dado esperado da resposta. O Tolvnow só permitirá que o fluxo continue se a resposta do usuário estiver de acordo com o data-type. Os data-type's disponíveis neste momento são: name, email, cpf, cnpj, phone, text-options. Sobre o text-options, vamos falar um pouco mais adiante, os demais são auto-explicativos.
- set-as-name: se definida como true (verdadeiro), o Tolvnow irá entender que este é o nome do usuário e irá definir a propriedade raiz nome do usuário com o valor desta variável.
- set-as-email: se definida como true (verdadeiro), o Tolvnow irá entender que este é o e-mail do usuário e irá definir a propriedade raiz email do usuário com o valor desta variável.
- set-as-identifier: se definida como true (verdadeiro), o Tolvnow irá entender que este é o e-mail do usuário e irá definir a propriedade raiz identificador do usuário com o valor desta variável.
- variable-name: este é o nome da variável à qual a resposta do usuário será salva e identificada.
- success-message: mensagem que o chatbot irá informar ao usuário se a resposta for aceita / válida.
- error-message: mensagem que o chatbot irá informar ao usuário se a resposta for inválida.
Veja que na propriedade success-message há uma marcação {{name}}. Se a variável com o nome "name" estiver definida, o Tolvnow irá automaticamente substituir pelo seu valor. Você pode usar {{nome_da_variavel}} em qualquer mensagem de resposta ao usuário, no bloco atual ou em blocos futuros.
O bloco de perguntas ainda possui o recurso de mandar opções de resposta, na forma de um menu, onde o usuário pode clicar para responder. Isto é feito utilizando o data-type text-options. Veja o exemplo abaixo:
{
"id": 22,
"type": "variable-request",
"next": 23,
"data": {
"request": "Gostaria de saber mais informações deste imóvel?",
"data-type": "text-options",
"variable-name": "ack",
"success-message": "Ok, vamos adiante.",
"error-message": "Escolha uma das opções.",
"options": [
"Sim",
"Não"
]
}
}
No exemplo acima, o chatbot irá exibir a pergunta "Gostaria de saber mais informações deste imóvel?" e logo abaixo duas opções de resposta "Sim" e "Não". A resposta do usuário será salva na variável ack, para que possa ser avaliada em um passo seguinte.
Bloco condicional de desvio de fluxo:
O bloco condicional de desvio de fluxo tem o objetivo de desviar o fluxo do chatbot de acordo com o valor de uma variável. Veja o exemplo abaixo:
{
"id": 23,
"type": "if-variable-value",
"data": {
"variable": "ack",
"conditions": [
{
"value": "Sim",
"next": 4
},
{
"value": "Não",
"next": 24
},
{
"value": "default",
"next": 24
}
]
}
}
No exemplo acima, iremos verificar o valor da variável ack. Obviamente, esta variável já deve ter sido criada anteriormente. O Tolvnow irá utilizar as opções listadas em conditions para desviar o fluxo para o bloco seguinte de acordo com o parâmetro next de cada item de conditions. Exemplo, se o valor da variável ack for "Sim", o próximo bloco processado pelo chatbot será aquele cujo id é 4.
Temos em conditions uma propriedade especial com valor default. Se o valor de ack não for localizado em nenhum item de conditions, será considerado, portanto, o valor de default, no caso do exemplo 24. Lembrando que o valor de next neste caso é o id do bloco seguinte a ser processado.
Bloco de encerramento
O bloco de encerramento de fluxo serve para indicar ao Tolvnow que seu fluxo encerrou. Ele não é obrigatório, uma vez que caso o Tolvnow não localize em algum momento um bloco indicado como next, o fluxo será automaticamente encerrado. Veja o exemplo:
{
"id": 11,
"type": "end",
"data": {
"text": "Sessão encerrada."
}
}A propriedade data.text indica a mensagem que será exibida ao usuário quando o fluxo for encerrado.