Challenge Overview
Challenge Objectives
-
Create a bot using BotFramework.
-
The bot will present a survey / questionnaire to the user and capture user’s responses
Project Background
-
In this project, our client is attempting to create a ChatBot to answer any questions that the user may have.
-
The ChatBot also determines the eligibility or readiness of the end user in using our client’s services by asking a set of questions to the user
Technology Stack
-
Nodejs (version 10)
-
BotFramework (Javascript / Nodejs based SDK version 4)
-
Azure (services related to deployment of the Bot). https://azure.microsoft.com/en-us/free/ It has a free trial for 30 days.
Code access
This is the first contest in the project and thus there is no initial code base to work with.
Individual requirements
Create a survey / questionnaire using the BotFramework (Major Requirement)
-
We will share with you the list of questions in the contest forum. Kindly copy them over to a json file, which is read during runtime (such that we can easily add / remove questions)
-
The questions are not dependent on each other. They are independent questions.
-
The questions however have a specific set of choices, from which the user must select a single choice. Thus, there is no free form text input. Instead, the user has to necessarily select a choice for each question.
-
Thus, you will end up using the choice based Prompt Dialog flow in your bot.
-
When the bot is started / launched, the bot immediately begins to ask the questions to the user. You don’t have to welcome the user or wait for user input to start the workflow.
-
Use states to remember the user’s choices for each question. At the end of survey, thank the user (and log the list of choices selected by the user for each question to RequestBin or something similar) and demonstrate that the bot has indeed remembered the choices selected by the user. Later, we intend to call a third party service that processes these choices, but that is not in scope for this contest.
Provide instructions to deploy the bot to Azure (Major Requirement)
-
Once the bot is ready, prepare the bot for deployment to Azure
-
You need to provide a Deployment Guide with detailed steps on how to deploy your bot to Azure. Please do not make any assumption here. The client will be using the same Deployment Guide and you can assume that the client understands how to use the command line and Azure GUI but has no technical knowledge. Mention any pre-requisites and provide instructions independent of platforms (should be able to deploy to Azure from Windows and Linux environments)
-
Provide screenshots to aid your steps wherever necessary.
Embed the chatbot in a web page (Major Requirement)
-
Use Create React App to create a react app
-
Use the React based approach to embed the chatbot in your web app, by using WebChat. Create a component that can be exported / used in other web apps.
-
You do not have to customize or style the chat interface in any way and can use the default styles. We will have another contest later specifically for this.
-
The expectation from your chatbot is that the user be able to answer the survey and for your bot to record the answers. Additionally, we should be able to export the chatbot component easily to other apps (You can describe in your documentation how to import the component too)
Deployment guide and validation document
-
Deployment Guide for deployment to Azure is a Major Requirement so please make sure that it is written well. You can use Markdown or Word Doc, either is fine.
-
Validation Document is not necessary. You can however mention the endpoint details for your Azure hosted bot with instructions on how to use it - this is entirely optional though.
Important Notes
-
Please use standard as your linter for the bot framework code. The React app need not have a linter and you can use the existing one provided by CRA itself
-
Provide two separate code bases. One for the bot framework code, along with the deployment guide to Azure. Another for the react app.
-
React app need not be deployed to Azure. It needs to only work locally. You do need to ensure that the app build works though.
-
In the react app, isolate the bot into a component that can be exported. The client will use only the chatbot component and embed it into their website, so focus on creating a reusable component.
Final Submission Guidelines
Upload a zip file with two separate code bases. One for the bot framework code, along with the deployment guide to Azure. Another for the react app.