If you don't have IBM Cloud Account yet, please register it via this link; also consider to join the renovated Topcoder Cognitive Community, if you have not already.
To make participation in these educational challenges even a bit more interesting, we offer some prizes:
- $1000 will be given to the member who has completed the most of these educational challenges (six in total). In case there are few such members, this prizes will be equality divided among them;
- Additionally, ten prizes, $200 each, will be randomly distributed among all members who have completed any of these educational challenges. During this random draw, your chance to get a prize will be proportional to the number of challenges you have completed, e.g. if we draw between just three competitors who have completed 1, 2, and 3 challenges each, their chances to be drawn will be: 16.7%, 33.0%, 50.0%.
In this challenge we want you to use Watson's Conversation Service to build a chatbot that helps to order a salad. To make it a bit more interesting, we require you to ensure that your bot is capable of the following, which might be a bit tricky to do at first, but it is a good exercise (and there are plans that we gonna have much more new chatbot challenges with IBM Watson soon):
- Chatbot should ask me one question after another: what primary ingredient, what secondary ingredient, and what sauce I want in my salad. My answers should be stored in the conversation context state object, and repeated back to me in the end of the order.
- At any point of conversation I should be able to ask the bot, what ingredients / sauces can I choose from, and also I should be able to ask what is the specific ingredient / sauce (as the answer for each of them, you can just copy/paste a sentence about that ingredient from Wikipedia).
- The bot should remember my position through the order process, so after I have got my reply about ingredients, I expect to continue with my order from where I was. Also, I should be able to ask the bot to start from the very beginning at any moment. The bot should also greet me in a nice way, and answer the general question like "what can you do?" / "how can you help me?"
- Design the context state so that all state of the conversation / order is stored there at any time
- Use the dialog tree as a decision tree, i.e. each time the bot has to react on user input, let it start from the root, evaluate the context in each node, thus going to a tree-leaf, and reply to the user in the leaf (this way, the next reply from the user will be evaluated starting from the root again). This way you don't run into a problem like "I have a dialog sub-tree that replies about ingredients, and another sub-tree that handles the order, but to freely jump between them I have to add tons of conditional redirections".