Customizações Avançadas
Máquina de Estados - Detalhes
este é um manual mais avançado das capacidades da máquina de estados os exemplos mostrados aqui pertencem ao editor de código de uma skill \# adiciona um comentário; / caractere de escape @ estado local; @+ espera por um input; @@ estado global; adiciona um texto; = adiciona um exemplo; % exemplo externo; > avança para um estado; ! frase apresentada, caso não haja um entendimento; ? frase apresentada, caso haja uma desambiguação; ^ permite ocultar menu (botão); {{variavel de ambiente}} variáveis de ambiente; $pipeline interceptor pasta do cliente/nome da pipeline/ chamada de pipeline; $human attendance interceptor\ id fila chamada de fila de atendimento humano; paginação more options label configura mensagem para ver mais opções; max menu options quantidade de menus apresentada por vez; min word size tamanho mínimo para ser considerado uma palavra; estado ou intenções operadores especiais não entendimento (!) o operador (!), mostrará de forma aleatória uma das frases apresentadas, caso não haja um entendimento desambiguação (?) outro operador muito similar ao similar ao anterior, é operador (?) , onde este mostrará de forma aleatória uma das frases apresentadas, caso haja uma desambiguação texto ( ) para adicionar um texto a um fluxo, use o operador ( ) vale lembrar que se o fluxo tiver mais de um operador de texto ( ), um abaixo do outro, todos no início da linha a máquina de estados escolherá de forma aleatória um dos textos @start \= um exemplo aleatorio \ olá, seja bem vindo(a)! eu sou o assistente virtual da reduce xyz como posso ajudar? \> end @end \# se seu fluxo tiver mais de um operador de texto ( ), um abaixo do outro como no exemplo a máquina de estados escolherá de forma aleatória um dos textos \ se precisar de ajuda, basta me chamar reduce xyz agradece o contato! \ reduce xyz está sempre a disposição para ajudar e agradecemos o contato! /codes/cetralit/wanderson on master ?3 wanderson examples/operador \ olá, seja bem vindo(a)! eu sou o assistente virtual da reduce xyz como posso ajudar? \ reduce xyz está sempre a disposição para ajudar e agradecemos o contato! start end 1 000 /codes/cetralit/wanderson on master ?3 wanderson examples/operador \ olá, seja bem vindo(a)! eu sou o assistente virtual da reduce xyz como posso ajudar? \ se precisar de ajuda, basta me chamar reduce xyz agradece o contato! start end 1 000 exemplo (=) o operador de exemplo (=) permite cadastrar exemplos a intenções e entidades para serem analisados e interpretados pela nossa nlu exemplo externo (%) o operador de exemplo externo (%), permite cadastrar de forma externa exemplos (=) , que podem ser utilizados por mais de uma intenção ou entidade através do caractere (&) utilizar essa abordagem reduz o número de linhas e facilita a adesão de novos exemplos, após o processo de curadoria exemplos externos devem ser cadastrados em uma única pasta, todos os arquivos nesta pasta devem conter apenas, este operador %chit chat saudacao \= alô \= boa noite \= boa tarde \= bom dia \= bom dia, prezados \= hello \= hi \= oi \= olá \= saudação @start \# uso do exemplo externo ( % ) \&chit chat saudacao \= um exemplo aleatório \ olá, seja bem vindo(a)! eu sou o assistente virtual da reduce xyz como posso ajudar? \> end @end \&chit chat saudacao \ se precisar de ajuda, basta me chamar reduce xyz agradece o contato! \ reduce xyz está sempre a disposição para ajudar e agradecemos o contato! variável de ambiente ({{variavel ambiente}}) este é um operador que permite acessar variáveis externas de clientes , para incorporar ao nosso fluxo de conversa o exemplo mais comum é a variável, {{username}} do citsmart caractere de escape (/) o caractere de escape permite, anular um operador da máquina de estados que seria interpretado de alguma maneira, para ser usado num texto @start \ {{saudacao tempo}} olá {{user name}} como vai você? por favor acesse o perfil \\@centralit \> end @end \ até a próxima! \ bom dia olá user name como vai você? epor favor acesse o perfil @centralit \ até a próxima! start end 1 000 intenções locais (@) intenções ou estados locais são estados que só podem ser acessados quando um jump (>) a partir do estado atual os aponta são categorizados pelo @nome qualquer titulo do menu e possuem a seguinte estrutura @start \ olá, seja bem vindo(a)! eu sou o assistente virtual da reduce xyz como posso ajudar? \> atendente \> status @atendente atendente \= atendente \ um atendente irá te ajuda \> end @status ^ status \= status \ seu status está ok \> end @reduce reduce \= reduce \ impossivel entrar no reduce, pois nenhum estado, da jump para ele \> end @end \ acabou \ olá, seja bem vindo(a)! eu sou o assistente virtual da reduce xyz como posso ajudar? 1\ map start start 1 000 > status \ seu status está ok \ acabou filter end 1 000 /codes/cetralit/wanderson on master ?3 wanderson examples/operador \ olá, seja bem vindo(a)! eu sou o assistente virtual da reduce xyz como posso ajudar? 1\ atendente start start 1 000 > reduce \ não compreendi o que você deseja 1\ atendente start start 0 000 > perceba que apesar de a intenção @reduce existir e não estar ocultada, pelo operador (^) ela não aparece de forma alguma no fluxo conversacional isso porque o estado atual não aponta para o reduce aguarde por input (@+) aguarde por input, faz com que o próximo jump, só seja executado caso o usuário digite o próximo passo perfeito para criar listas passo a passo veja o exemplo @start \ oi \> passo1 @+passo1 \ passo 1 \> passo2 @+passo2 passo 2 \ passo 2 \> passo3 @passo3 passo 3 \ passo 3 \> end @end \ tchau /codes/cetralit/wanderson on master ?3 wanderson examples/operador \ oi \ passo 1 1\ passo 2 start passo1 1 000 > 1 \ passo 2 1\ passo 3 passo2 passo2 1 000 > 1 \ passo 3 \ tchau passo3 end 1 000 intenções globais ( @@ ) intenções ou estados globais, como proprio nome sugere, podem ser acessados de qualquer etapada da conversa são categorizados pelo @@nome qualquer titulo do menu e possuem a seguinte estrtura @start \ olá {{username}}! seja bem vindo(a)! eu sou o assistente virtual do reduce como posso ajudar? \> map \> filter \#fluxo local @map map \= map \> end \#fluxo local @filter filter \= filter \> end \# fluxo global @@fluxo global oculto ^ fluxo global oculto \= fluxo global oculto \ todo fluxo global, se não ocultado pelo operador (^) conforme a cima, aparecera nos menus do @start este é o caso, do fluxo global não oculto \> end \#fluxo global @@fluxo global nao oculto fluxo global nao oculto \= fluxo global não oculto \ todo fluxo global, se não ocultado pelo operador (^) conforme a cima, aparecera nos menus do @start \> end @end \ acabou /codes/cetralit/wanderson on master ?3 wanderson examples/operador \ olá username! seja bem vindo(a)! eu sou o assistente virtual do reduce como posso ajudar? 1\ map 2\ filter 3\ fluxo global nao oculto start start 1 000 > fluxo global start start 0 683 > /codes/cetralit/wanderson on master ?3 wanderson examples/operador \ olá username! seja bem vindo(a)! eu sou o assistente virtual do reduce como posso ajudar? 1\ map 2\ filter 3\ fluxo global nao oculto start start 1 000 > /codes/cetralit/wanderson on master ?3 wanderson examples/operador \ olá username! seja bem vindo(a)! eu sou o assistente virtual do reduce como posso ajudar? 1\ map 2\ filter 3\ fluxo global nao oculto start start 1 000 > fluxo global não oculto \ todo fluxo global, se não ocultado pelo operador (^) conforme a cima, aparecera nos menus do @start \ acabou fluxo global nao oculto end 1 000 vale lembrar que todo fluxo global, se não ocultado pelo operador (^) conforme a cima, aparecerá nos menus do @start este é o caso, do fluxo global não oculto entidades entidades na máquina de estados ( ) o operador que caracteriza uma entidade ( ) , seguido de seu nome nome para um melhor uso dessa entidade, você deve pegar exemplos (=) que são muito próximos e cadastrá los numa mesma entidade veja a seguinte estrutura entidades devem ser cadastrados em uma única pasta, todos os arquivos dessa pasta devem conter apenas, este operador vale lembrar também, que a ordem das entidades ( ) importa nos exemplos (=) veiculo \= carro \= moto \= caminhao marca veiculo \= honda \= bmw \= ford \= fiat posse \= meu \= minha ipva \= imposto propriedade veículo automotor \= imposto propriedade veículos automotores \= ipva vontade \= quero \= preciso \= gostaria de @start \ oi \> pagar ipva \> transferir carro \> end @pagar ipva \= ipva posse \ ipva \> end @transferir carro \# a ordem das entidades ( ) importa nos exemplos ( = ) \= ipva marca veiculo \ transferir carro \> end @end \ tchau interceptadores ( $ ) pipeline de forma bem resumida e abrangente o conceito de pipeline, representa as etapas do processo pelas quais algo passa até cumprir um objetivo na equipe gia, se utiliza muito pipelines para acessar api's do citsmart para abrir chamados, preenchendo formulários via pipeline como usar? basta colocar no fluxo que deseja invocar uma pipeline “ $ pipeline interceptor pasta do cliente/nome da pipeline/ " o nome da pasta do cliente bem como nome da pipeline pode ser encontrado no citbot filebrowser file browser https //citbot api centralit com br/fb/login?redirect=%2ffiles%2f @@mapear pasta rede ^ conceder acesso/mapear pasta de rede \= acesso a pasta de rede \ entendi que deseja atendimento sobre concessão de acesso/mapeamento de pasta de rede está correto? \> mapear pasta rede sim \> mapear pasta rede nao @mapear pasta rede sim ^ sim \&navigation sim \# invocando pipeline $ pipeline interceptor pasta do cliente/nome da pipeline/ \> finalizacao fluxo padrao @mapear pasta rede nao ^ não \&navigation nao \> finalizacao de fluxo em caso de entendimento incorreto atendimento humano a plataforma aura permite que o bot, transfira para uma fila de atendimento humano bastando colocar no fluxo que deseja invocar um atendimento humano $human attendance interceptor\ id fila para conseguir o id fila, acesse a plataforma aura ou consulte seu manual respectivamente citbot https //citbot centralit com br/ citbot manual https //citbot api centralit com br/manuais/manual do usuario solucao plataforma citbot pdf @@atendimento humano ^ atendimento humano \ gostaria de falar com um de nossos analistas? \&atendimento humano \&demanda nao resolvida \&nenhuma das opcoes \> atendimento humano sim \> atendimento humano nao @atendimento humano sim ^ sim \&navigation sim \# invocando atendimento humano $human attendance interceptor\ id fila \> finalizacao fluxo padrao @atendimento humano nao ^ não \&navigation nao \> finalizacao fluxo padrao parametros de configuração recomenda se que os parâmetros citados nesse tópico, sejam passados num arquivo chamado “ 01 settings ” paginação os parâmetros de paginação permitem, mostrar uma quantidade específica de menus na tela sendo o more options label , a mensagem que permite ver mais opções, max menu options , a quantidade de menus apresentada por vez \# paginated more options label = ver mais max menu options = 3 @start ? estou em dúvida entre as opções ! não entendi absolutamente nada \ esses são os parametros de paginação, sendo o more options label, a mensagem que permite ver mais opções o max menu options, a quantidade de menus apresentada por vez \> menu \> atendimento \> status \> reclamação \> novo pedido @manu menu \ menu \= menu \> start @atendimento atendimento \ atendimento \= atendimento \> start @status status \ status \= status \> start @reclamação reclamação \ reclamação \= reclamacao \> start @novo pedido novo pedido \ novo pedido \= novo \= pedido \> start @@end sair \= tchau \= bye \ tchau \ esses são os parametros de paginação, sendo o more options label, a mensagem que permite ver mais opções o max menu options, a quantidade de menus apresentada por vez 1\ menu 2\ atendimento 3\ status 4\ sair 5\ ver mais start start 1 000 > 5 \ opções 1\ reclamação 2\ novo pedido 4\ sair 5\ ver mais start start 1 000 > 4 \ tchau end end 0 000 tamanho minimo de palavra como o próprio nome sugere, o parâmetro min word size , especifica o número mínimo de letras , que uma palavra deve ter, para a máquina de estados considerar ela como válida vale lembrar que por padrão o min word size é igual a 2, caso queira alterar esse valor, basta passar o parâmetro emojis nos exemplos ( = ) para passar emoji nos exemplos, min word size deve ser igual a 0 min word size = 0 @start \ oi como você está? 🤔 \> triste \> feliz @triste triste \= 😢 \ que pena \> end @feliz feliz \= 🙃 \ um dia lindo um bom lugar pra ler um livro \> end @end \ tchau 🦽 /codes/cetralit/wanderson on master !2 ?3 wanderson examples/emoji pagode \ oi como você está? 🤔 1\ triste 2\ feliz start start 1 000 > c \ um dia lindo um bom lugar pra ler um livro \ tchau 🦽 feliz end 1 000 /codes/cetralit/wanderson on master !2 ?3 rank options a máquina de estados trabalha com referência por estado, palavras chave e número de palavras dando uma nota para os inputs, colocados pelo usuário como mostra o exemplo do debug export wanderson info=true os ranks abaixo permitem mudar isso /codes/cetralit/wanderson on master !2 ?3 wanderson examples/emoji pagode 😢 => triste((1 0, 1)) 🙃 => feliz((1 0, 1)) referências por estado 16 end ////////////////////////////// 4 feliz ////////////////////////////// 4 start ////////////////////////////// 4 triste ////////////////////////////// 4 número de palavras chave 2 1 ////////////////////////////// 2 número de estados relacionados a palavra chave 2 1 ////////////////////////////// 2 \ oi como você está? 🤔 1\ triste 2\ feliz start start 1 000 > 🙃 🙃 rank 1 feliz ////////////////////////////// 1 triste 0 \ um dia lindo um bom lugar pra ler um livro \ tchau 🦽 feliz end 1 000 ignore below o valor padrão desse parâmetro fara com que a máquina de estados ignore tudo abaixo de ignore below = 0 2 is answer above o valor padrão desse parâmetro fara com que a máquina de estados somente considere como correto, tudo que for superior ou igual a is answer above = 0 8 parse at start esse paramtro define, se no @start , o bot vai começar mandando mensagem parse at start = false ou se ele vai esperar o usuario digitar parse at start = true