Este repositório não será atualizado. O repositório será mantido disponível em modo somente leitura.
Neste padrão de código, usaremos o recurso Watson Assistant Slots para construir um chatbot que recebe um pedido de pizza. As informações necessárias, como tamanho, tipo e opções de ingredientes, podem ser inseridas em um nó do assistente, ao contrário das versões anteriores do assistente.
Quando o leitor tiver concluído este Padrão de Código, ele entenderá como:
NOTA : Este padrão de código foi atualizado para incluir instruções para acessar o Watson Assistant em execução no IBM Cloud Pak for Data. Essas atualizações podem ser localizadas nas instruções específicas para implementar seu app localmente ou implementar seu app no OpenShift no IBM Cloud. A principal mudança necessária é que seu aplicativo precisará de credenciais adicionais para acessar o cluster IBM Cloud Pak for Data que hospeda o serviço Watson Assistant.
Clique aqui para obter mais informações sobre o IBM Cloud Pak for Data.
NOTA : Este padrão de código usa a experiência do Watson Assistant. Após 8 de outubro de 2021, todas as instâncias (não padrão) poderão alternar entre as experiências clássica e nova do Watson Assistant acessando o canto superior direito da tela do Watson Assistant e clicando no ícone Gerenciar localizado no canto superior direito da tela do Assistente. Clique em Mudar para experiência clássica ou clique em Mudar para nova experiência para alternar entre os dois.
Usando o Cloud Foundry na IBM Cloud | Usando o serviço Kubernetes da IBM Cloud |
---|---|
Clique em uma das opções abaixo para obter instruções sobre como implantar o aplicativo.
O poder dos Slots está em como ele reduz o número de nós necessários para implementar a lógica em seu Watson Assistant Dialog. Aqui está uma caixa de diálogo de conversa parcial usando o método antigo:
E aqui está um Diálogo mais completo usando slots, que coloca toda a lógica no Nó Pizza ordering
.
Abra a caixa de diálogo e daremos uma olhada:
Cada slot representa um campo a ser preenchido no chatbot: pizza_size
, pizza_type
e pizza_topings
. Caso não estejam presentes, o usuário será avisado, começando no topo, até que todos sejam preenchidos através da variável associada ( $pizza_size
, $pizza_type
, etc).
Clique em Configurar para adicionar mais funcionalidades:
Aqui, podemos adicionar uma resposta para quando esta vaga for preenchida (Encontrada). A lógica pode ser usada para um ingrediente:
ou se houver mais de um ingrediente adicionado:
1 cobertura"" style="max-width: 100%;">
Adicionamos lógica para responder sim ou não à pergunta "Alguma cobertura extra?":
Clique nos 3 círculos e escolha Open JSON editor
para editar o json diretamente:
Aqui, definimos um valor vazio para o campo context: {"pizza_topings"}, para que possamos sair do loop preenchendo este espaço.
Por fim, adicionamos respostas assim que todas as vagas estiverem preenchidas:
Começamos com o caso onde temos "pizza_toppings", detectando que o array tem tamanho>0. Aqui, primeiro tratamos do caso em que o slot opcional "pizza_place" está preenchido e, em seguida, tratamos do caso em que não está.
Por fim, adicionamos um manipulador para o caso em que as respostas do usuário a um prompt não forem encontradas. Adicionamos um manipulador para a intenção "ajuda".
Temos um nó de diálogo para lidar com a intenção #reset
que redefinirá todos os campos para null
:
Vejamos um exemplo de conversa e o JSON associado. Com sua Pizzaria Watson funcionando, inicie um diálogo e comece dizendo ao Pizza Bot que você quer uma pizza grande:
A 'Entrada do usuário' mostra o campo "input"{"text"}, bem como o "contexto" que é usado principalmente pelo Assistant para acompanhar o estado interno. Role para baixo até Watson Understands
e observe intents
:
Observe que a intenção de "pedido" foi detectada. A entidade "pizza_size" agora é um slot preenchido. Ainda temos 2 slots obrigatórios, "pizza_type" e "pizza_toppings". O usuário será avisado até que estes sejam preenchidos:
Agora podemos ver que todos os slots necessários estão preenchidos:
E se quiséssemos avisar para a Pizzaria Watson que queríamos comer a pizza lá, no restaurante? Tarde demais! o slot para "pizza_place" é opcional, portanto o usuário não será solicitado e, uma vez preenchidos os slots necessários, saímos do nó de diálogo "Pedido de pizza". O usuário precisa preencher primeiro os slots opcionais. Digite reset para começar de novo e teste adicionando a frase "comer lá...":
cf push
fornece: FAILED Could not find service
Se você nomear seu serviço wcsi-conversation-service
, isso deverá funcionar. Quando você usa cf push
, ele tenta se vincular aos serviços listados em manifest.yml
.
Portanto, existem duas maneiras de fazer isso funcionar:
NOTA: O botão
Deploy to IBM Cloud
resolve esse problema criando os serviços dinamicamente (com os nomes corretos).
Este padrão de código é licenciado sob a Licença de Software Apache, Versão 2. Objetos de código de terceiros separados invocados neste padrão de código são licenciados por seus respectivos provedores de acordo com suas próprias licenças separadas. As contribuições estão sujeitas ao Certificado de Origem do Desenvolvedor, Versão 1.1 (DCO) e à Licença de Software Apache, Versão 2.
Perguntas frequentes sobre a licença de software Apache (ASL)