Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Zerar memória das variáveis salvas no SLOT

Olá, gostaria de saber como fazer para zerar a variável que salva os itens mencionados pelos usuários, como $marca, $moeda.. Fazer isso sem utilizar o clear do chat de teste. Exemplo: Depois que foi salvo no carrinho um dado que o usuário inseriu (como smartphone da apple de até 2000), o bot retorna algo como "Posso te ajudar com mais alguma coisa?" e o usuário gostaria de comprar outro smartphone, e falaria "Quero comprar um smartphone". O problema é que o bot retorna "Tenho um smartphone da apple por até 2000 reais para te indicar. Gostaria de adicioná-lo ao carrinho?" Mas o usuário quer adicionar outro celular. Como faço para que ele repita as perguntas "reiniciadas/zeradas" sem precisar fazer outro slot ou dar clear no chat de teste.

3 respostas
solução!

Olá, Letícia!

Por ser um curso inicial não abordamos as variáveis, mas pretendemos abordar num próximo que ainda está sendo feito.

Agora, respondendo a sua dúvida, há alguns modos de se fazer isso.

Você pode criar um nó pai ou filho do slot cujo único propósito seja zerar essas variáveis, atribuindo null a elas dentro do json de resposta, pode também conectar o serviço com um client e tratar na camada de aplicação, ou também receber um pedido de reset do usuário e chamar uma intenção dentro do próprio slot que faça isso.

Caso você vá criar um nó pai ou filho, crie o nó, e dentro dele clique nos 3 pontos ao lado direito do campo de resposta e então em Abrir o editor de Json (open json editor), e esse json de resposta deve ser configurado se baseando no exemplo abaixo:

{
  "output": {
 },
  "context": {
    "sn": null,
    "sn2": null,
    "marca": null,
    "moeda": null
  }
}

Ou seja, você vai digitar esse campo de context e atribuir o valor null a cada uma das variáveis que está usando.

Caso opte pela camada de aplicação, um jeito de fazer isso é testando a intenção do usuário, então, quando for igual à intenção do slot, atribuir null as variáveis.

Exemplo testando a intenção (em js):

if (response.intents[0].intent === 'comprar'){
    response.context.sn = null,
    response.context.sn2 = null,
    response.context.marca = null,
    response.context.moeda = null,
}

E, finalmente, você pode criar uma intenção e um nó de reset ou resetar, atribuir null às variáveis dentro do json e chamá-la de dentro do Gerenciador de Controles (manage handlers) do slot.

Como mostrado nas imagens:

  1. Clicando no gerenciador de controles (manage handlers) do slotclicar no gerenciador de controles do slot

  2. Adicionando a intenção de resetar adicionar a intenção de resetar

  3. Fazendo como no exemplo do editor de resposta de Json, adicionando o context e setando o valor das variáveis para null. ir no editor de json da resposta do nó, adicionar o campo context e setar o valor das variáveis para null

Espero que alguma dessas maneiras funcione!

Se precisar, este é o link da documentação oficial do Conversation que aborda os slots. E este o link as variáveis de contexto.

Qualquer outra dúvida, só mandar :).

Obrigada =D

Imagina Leticia! :)