All Projects → IBM → Watson Assistant Slots Intro

IBM / Watson Assistant Slots Intro

Licence: apache-2.0
A Chatbot for ordering a pizza that demonstrates how using the IBM Watson Assistant Slots feature, one can fill out an order, form, or profile.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Watson Assistant Slots Intro

Watson Banking Chatbot
A chatbot for banking that uses the Watson Assistant, Discovery, Natural Language Understanding and Tone Analyzer services.
Stars: ✭ 233 (+73.88%)
Mutual labels:  chatbot, ibmcode
Calypsobot
A fully customizable bot built with discord.js
Stars: ✭ 131 (-2.24%)
Mutual labels:  chatbot
Chatbots
Chatbots build with Intelligo Framework.
Stars: ✭ 119 (-11.19%)
Mutual labels:  chatbot
Rasa Chatbot Templates
RASA chatbot use case boilerplate
Stars: ✭ 127 (-5.22%)
Mutual labels:  chatbot
Mlds2018spring
Machine Learning and having it Deep and Structured (MLDS) in 2018 spring
Stars: ✭ 124 (-7.46%)
Mutual labels:  chatbot
Alan Sdk Pcf
Alan AI Power Apps SDK adds a voice assistant or chatbot to your Microsoft Power Apps project.
Stars: ✭ 128 (-4.48%)
Mutual labels:  chatbot
Jared
An easily extensible chat bot for iMessage written in Swift.
Stars: ✭ 117 (-12.69%)
Mutual labels:  chatbot
Spark Tpc Ds Performance Test
Use the TPC-DS benchmark to test Spark SQL performance
Stars: ✭ 133 (-0.75%)
Mutual labels:  ibmcode
Framework
Chatbot framework
Stars: ✭ 130 (-2.99%)
Mutual labels:  chatbot
Rasa Addons
A set of 🚀🚀🚀 components to be used with Botfront and/or Rasa
Stars: ✭ 127 (-5.22%)
Mutual labels:  chatbot
Xmpp Echo Bot
XMPP/Jabber echo bot (written in sed)
Stars: ✭ 127 (-5.22%)
Mutual labels:  chatbot
Dialog corpus
用于训练中英文对话系统的语料库 Datasets for Training Chatbot System
Stars: ✭ 1,662 (+1140.3%)
Mutual labels:  chatbot
Decentralized Energy Composer
WARNING: This repository is no longer maintained ⚠️ We are no longer showing the Hyperledger Composer Service.
Stars: ✭ 129 (-3.73%)
Mutual labels:  ibmcode
Transformer In Generating Dialogue
An Implementation of 'Attention is all you need' with Chinese Corpus
Stars: ✭ 121 (-9.7%)
Mutual labels:  chatbot
Lita
ChatOps for Ruby.
Stars: ✭ 1,663 (+1141.04%)
Mutual labels:  chatbot
Quantified Self
Self-knowledge through numbers
Stars: ✭ 118 (-11.94%)
Mutual labels:  chatbot
Neuro
🔮 Neuro.js is machine learning library for building AI assistants and chat-bots (WIP).
Stars: ✭ 126 (-5.97%)
Mutual labels:  chatbot
Chinese Chatbot
中文聊天机器人,基于10万组对白训练而成,采用注意力机制,对一般问题都会生成一个有意义的答复。已上传模型,可直接运行,跑不起来直播吃键盘。
Stars: ✭ 124 (-7.46%)
Mutual labels:  chatbot
Telegram.bot
.NET Client for Telegram Bot API
Stars: ✭ 1,964 (+1365.67%)
Mutual labels:  chatbot
Messaging Apis
Messaging APIs for multi-platform
Stars: ✭ 1,754 (+1208.96%)
Mutual labels:  chatbot

Build Status

Creating a pizza ordering chatbot using Watson Assistant slots feature

In this Code Pattern, we will use the Watson Assistant Slots feature to build a chatbot that takes a pizza order. The needed information such as size, type, and ingredient choices can all be entered within one Assistant Node, unlike with previous versions of Assistant.

When the reader has completed this Code Pattern, they will understand how to:

  • Create a chatbot dialog with Watson Assistant
  • Use the power of Assistant Slots to more efficiently populate data fields
  • Use Assistant Slots to handle various inputs within one Node.

NOTE: This code pattern has been updated to include instructions for accessing Watson Assistant running on IBM Cloud Pak for Data. These updates can be found in the specific instructions for deploying your app locally, or deploying your app to OpenShift on IBM Cloud. The main change required is that your application will need additional credentials to access the IBM Cloud Pak for Data cluster that is hosting the Watson Assistant service.

Click here for more information about IBM Cloud Pak for Data.

"Architecture"

Flow

  1. User sends messages to the application (running locally or on IBM Cloud).
  2. The application sends the user message to IBM Watson Assistant service, and displays the ongoing chat in a web page.
  3. Watson Assistant uses the Slots feature to fill out the required fields for a pizza order, and sends requests for additional information back to the running application. Watson Assistant can be provisioned on either IBM Cloud or IBM Cloud Pak for Data.

Included Components

  • IBM Watson Assistant: Build, test and deploy a bot or virtual agent across mobile devices, messaging platforms, or even on a physical robot.

Featured technologies

  • Node.js: An asynchronous event driven JavaScript runtime, designed to build scalable applications.

Watch the Video

Using Cloud Foundry on IBM Cloud Using IBM Cloud's Kubernetes service
video "video"

Deployment options

Click on one of the options below for instructions on deploying the app.

public public openshift local

Assistant Slots Discussion

The power of Slots is in how it reduces the number of nodes required to implement logic in your Watson Assistant Dialog. Here's a partial conversation Dialog using the old method:

"Pizza dialog old way"

And here's a more complete Dialog using slots, which puts all the logic in the Pizza ordering Node.

"Pizza dialog new way"

Open up the Dialog, and we'll have a look:

"Pizza dialog begin"

Each slot represents a field to be populated in the chatbot: pizza_size, pizza_type, and pizza_topings. If they are not present, the user will be prompted, starting at the top, until all are populated via the associated variable ($pizza_size, $pizza_type, etc).

Click on the Configure "icon" to add more functionality:

"Pizza config 3 toppings"

Here, we can add a response for when this slot is filled (Found). Logic can be used for one ingredient:

"Pizza config 3 one topping"

or if there are greater than one ingredient added:

"Pizza config 3 >1 topping"

We've added logic to address yes or no answers to the question "Any extra toppings?":

"Pizza config 3 confirm not found"

Click on the 3 circles "icon" and choose Open JSON editor to edit the json directly:

"Pizza config edit JSON"

Here, we've set an empty value for the context: {"pizza_topings"} field, so that we can exit the loop by filling this slot.

Finally, we add responses for once the slots are all filled:

"Pizza order finish"

We start with the case where we have "pizza_toppings", by detecting that the array has size>0. Here, we first handle the case where the optional "pizza_place" slot is filled, and then handle the case where it is not.

"Pizza order finish no place"

Finally, we add a handler for the case where the user's answers to a prompt is not found. We've added a handler for the intent "help".

"Pizza handle Help"

We have a dialog node to handle the intent #reset which will reset all fields to null:

"Pizza reset node"

Assistant Example

Let's look at an example conversation and the associated json. With your Watson Pizzeria running, start a dialog and begin with telling the Pizza Bot you want a large pizza:

The 'User Input' shows you the "input"{"text"} field, as well as come of the "context" that is mostly used for Assistant to keep track of internal state. Scroll Down to Watson Understands and look at intents:

Note that the intent for "order" is detected. The entity "pizza_size" is now a slot that is filled out. We still have 2 required slots, "pizza_type" and "pizza_toppings". The user will be prompted until these are filled out:

We can now see that all required slots are filled:

What if we wanted to tell the Watson Pizzeria that we wanted to eat the pizza there, in the restaurant? Too late! the slot for "pizza_place" is optional, so the user won't be prompted for it, and once the required slots are filled, we exit the "Pizza Ordering" dialog node. The user needs to fill out optional slots first. Type reset to start again and test this by adding the phrase "to eat there...":

Troubleshooting

  • Deploy using Cloud Foundry cf push gives:

FAILED Could not find service <Watson_service> to bind to <IBM_Cloud_application>

If you name your service wcsi-conversation-service, this should work. When you use cf push, it is trying to bind to the services listed in the manifest.yml.

So, there are 2 ways you can get this to work:

  • Change the names of your IBM Cloud services to match the names in the manifest.
  • Change the names in the manifest to match the names of your IBM Cloud services.

NOTE: The Deploy to IBM Cloud button solves this issue by creating the services on the fly (with the correct names).

License

This code pattern is licensed under the Apache Software License, Version 2. Separate third party code objects invoked within this code pattern are licensed by their respective providers pursuant to their own separate licenses. Contributions are subject to the Developer Certificate of Origin, Version 1.1 (DCO) and the Apache Software License, Version 2.

Apache Software License (ASL) FAQ

Links

Learn more

  • Artificial Intelligence Code Patterns: Enjoyed this Code Pattern? Check out our other AI Code Patterns.
  • AI and Data Code Pattern Playlist: Bookmark our playlist with all of our Code Pattern videos
  • With Watson: Want to take your Watson app to the next level? Looking to utilize Watson Brand assets? Join the With Watson program to leverage exclusive brand, marketing, and tech resources to amplify and accelerate your Watson embedded commercial solution.
  • Kubernetes on IBM Cloud: Deliver your apps with the combined the power of Kubernetes and Docker on IBM Cloud
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].