Slots
Slots são um conceito significativo no Botpress NLU. Você pode considerá-los como parâmetros necessários para concluir a ação associada a uma intenção.
Marcação de Slots
O Botpress Native NLU marcará cada palavra (token) de entrada do usuário. Palavras separadas por um hÃfen são tratadas como um token. Se o token for identificado corretamente como um slot, ele será anexado ao evento de extração NLU.Â
Cada slot identificado será acessÃvel no objeto event.nlu.slots usando seu nome como chave.
Definindo Slots
- No Conversation Studio, acesse o módulo "Compreensão de linguagem Natural";
- Abra a "Seção Intenção";
- Selecione a intenção à qual deseja adicionar slots e assim poderá defini-los;
- Clique em "Criar um Slot".

Vamos usar uma book_flight intenção.Â
Para reservar um voo, definiremos dois slots: departure e destination, ambos associados à  Airport Codes entidade de lista personalizada.Â
Feito isso, precisamos identificar cada slot do aeroporto.

Exemplo
O usuário disse: I would like to go to SFO from Mumbai (Gostaria de ir de Mumbai a São Francisco) event.nlu.slots vai parecer com o código:
slots : {
airport_to: {
name: 'airport_to',
value: 'SFO', // shorthand for entity.data.value
entity: [Object] //detailed extracted entity
},
airport_from: {
name: 'airport_from',
value: 'BOM', // shorthand for entity.data.value
entity: [Object] //detailed extracted entity
}
}Prenchimento de Slot
O preenchimento de slot é o processo de coleta de informações exigidas por uma intenção. Essas informações são definidas como slots, conforme mencionamos na seção acima.
Ele lida com a validação de entrada e a resposta do chatbot quando a entrada é inválida. O Botpress possui uma habilidade embutida para lidar com o processo de preenchimento de slots.
Criando uma Habilidade
Usaremos os slots que definimos anteriormente neste tutorial.
- No Editor de fluxo, clique em "Inserir habilidade" e em "Slot";
- Escolha uma intenção a ser usada para o preenchimento do slot;
- Escolha um slot para preencher;
- Escolha o conteúdo que seu chatbot irá pedir. Deve ser uma pergunta sobre as informações que você procura, como From where are you departing?, Where do you want to go?, etc;
- Escolha o conteúdo da resposta do seu chatbot quando a entrada for inválida. Deve orientar o usuário para uma resposta válida.

Tipos de Validação
Existem dois tipos de validações:
- Validação de entrada: A primeira validação é baseada na extração de entidade. Se as informações fornecidas não corresponderem à entidade do slot, o chatbot notificará o usuário. Isso não se aplicará quando o slot tiver o tipo @system.any. Nesse caso, o chatbot fornecerá a frase completa do usuário quando não corresponder a um slot com confiança.
- Validação de entrada personalizada: você pode usar uma ação para adicionar validação personalizada, como regex ou validação de tipo (número, string). A ação deve definir a variável temp.valid como verdadeira ou falsa com base no resultado da validação.
Máximo de Tentativas de Repetição
Quantas vezes o chatbot deve tentar obter a resposta correta. O resultado On not found será acionado quando o máximo for atingido.
Resultados
Três resultados são possÃveis:
- Na extração: O slot foi extraÃdo com sucesso. Ele será armazenado em session.slots.<slot_name>.
- Em não encontrado: O slot não foi extraÃdo. Isso também acontecerá quando o número máximo de tentativas for atingido ou quando a validação personalizada falhar.
Em já extraÃdo: O slot foi extraÃdo anteriormente. Um caso de uso para isso seria perguntar ao usuário se as informações anteriores ainda são relevantes ou se ele gostaria de sobrescrevê-las.

Encadeando Vários Slots
Você pode encadear várias habilidades para preencher todos os espaços para uma determinada intenção. As habilidades de encadeamento são úteis quando todos os slots em uma determinada intenção são obrigatórios para que um conjunto de dados seja concluÃdo.
No exemplo de reserva de voo, precisamos do departure city, destination city e time of departure para verificar se um voo está disponÃvel.Â
Como esses campos são obrigatórios, esse é um bom caso de uso para encadeamento de habilidades.

Esse fluxo resultará em uma conversa como a abaixo. Observe que na primeira frase I want to book a flight to NYC, a intenção book-flight é correspondida e NYC foi extraÃda como o slot to.Â
Em seguida, o chatbot tenta preencher os slots restantes from e when.

Diretrizes ao adicionar Slots
- Misture as posições dos slots nos enunciados
Exemplo

- Evite a duplicação ao usar slots
Exemplo para evitar

- Limite o número de slots usados ​​para uma determinada sugestão de intent: no máximo três.
- Tente misturar enunciados com os espaços a serem: preenchidos, parcialmente preenchidos ou vazios
Exemplo

- Exemplos em enunciados devem corresponder à entidade definida
Exemplo
Entity list: Google, Slack, Github, Email Intent: "Redefinir senha do Trello" (o valor do slot não faz parte da lista)
- Ao usar slots, deve haver pelo menos cinco enunciados com um exemplo do slot;Â quanto mais slots, mais enunciados com exemplos.