This repository will not be updated. The repository will be kept available in read-only mode.
In this code pattern, we will create a chatbot using Node.js and Watson Assistant. The Assistant flow will detect customer emotions and be enhanced by using Natural Language Understanding to identify location entities. For FAQs, a call to the Discovery service will use passage retrieval to pull answers from a collection of documents.
When the reader has completed this pattern, they will understand how to:
NOTE: This code pattern has been updated to include instructions for accessing Watson services 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 services.
Click here for more information about IBM Cloud Pak for Data.
Clone the watson-banking-chatbot
locally. In a terminal, run:
git clone https://github.com/IBM/watson-banking-chatbot
Provision the following services:
NOTE: If you will be using the
Deploy to Cloud Foundry on IBM Cloud
deployment option, then you can skip these next steps and jump right to the Deploy the Application section. That deployment option automatically creates the services and links them to your application.
The instructions will depend on whether you are provisioning services using IBM Cloud Pak for Data or on IBM Cloud.
Click to expand one:
Use the following instructions for each of the three services.
The services are not available by default. An administrator must install them on the IBM Cloud Pak for Data platform, and you must be given access to the service. To determine whether the service is installed, Click the Services icon () and check whether the service is enabled.
The following instructions will depend on if you are provisioning Assistant from IBM Cloud or from an IBM Cloud Pak for Data cluster. Choose one:
Provisioned Instances
in your IBM Cloud Pak for Data Dashboard.View Details
from the options menu associated with your Assistant service.Open Watson Assistant
.Skills
tab.Create skill
Dialog skill
option and then click Next
.Import skill
tab.Choose JSON file
, go to your cloned repo dir, and Open
the JSON file in data/conversation/workspaces/banking_US.json
(or use the old full version in full_banking.json
). banking_IN.json
is used for content for banking in India and banking_US.json
is used for content for banking in United States.Everything
and click Import
.
Launch tool
.Skills
tab.Create skill
.Dialog skill
option and then click Next
.Import skill
tab.Choose JSON file
, go to your cloned repo dir, and Open
the JSON file in data/conversation/workspaces/banking_US.json
(or use the old full version in full_banking.json
). banking_IN.json
is used for content for banking in India and banking_US.json
is used for content for banking in United States.Everything
and click Import
.To find the Skill ID
for Watson Assistant:
Go back to the Skills
tab.
Click on the three dots in the upper right-hand corner of a card and select View API Details
.
Copy the Skill ID
GUID. Use this value when setting up your run-time environment.
By default the application will import and use the skill named watson-banking-chatbot, but you can configure it to use another skill by setting the run-time environment variable SKILL_ID
.
To view the Assistant dialog, click on the skill and choose the
Dialog
tab. Here's a snippet of the dialog:
By default, the application will create a collection named watson-banking-chatbot, but you can configure it to use another collection by setting the run-time environment variables DISCOVERY_COLLECTION_ID
and DISCOVERY_ENVIRONMENT_ID
.
The following instructions will depend on if you are provisioning Discovery from IBM Cloud or from an IBM Cloud Pak for Data cluster. Choose one:
Provisioned Instances
in your IBM Cloud Pak for Data Dashboard.View Details
from the options menu associated with your Discovery service.Open Watson Discovery
.Project
, or create a new one.Project
panel, click the Collections
tab.New Collection +
.Upload data
option and click Next
.English
language.Finish
to create the collection.Drag and drop your documents here or select documents
to seed the content with the five documents in data/discovery/docs
of your cloned repo.Integrate and deploy
option from the left-side menu of the Discovery panel. Then select the View API Details
tab to view the Project Id
. Use this as the Collection ID
value when setting up your run-time environment.NOTE: The
Environment Id
for Cloud Pak for Data collections is always set todefault
.
Find the Discovery service in your IBM Cloud Dashboard.
Click on the service and then click on Launch tool
.
Create a new data collection by hitting the Upload your own data
button.
English
languageCreate
Use Drag and drop your documents here or select documents
to seed the content with the five documents in data/discovery/docs
of your cloned repo.
Click on the upper-right api
icon and save the Environment ID
and Collection ID
as they will be required when setting up your run-time environment.
Click on one of the options below for instructions on deploying the Node.js server.
The web app presents a customer service chatbot. Interact with the chatbot by pressing the buttons when prompted or use the Type something
box. The chatbot is powered by Watson Assistant with additional information coming from Discovery and Natural Language Understanding.
Error: Unable to list workspaces for Watson Assistant: Forbidden: Access is denied due to invalid credentials.
This error occurs with
Deploy to IBM Cloud
button. Configure a runtime environment variable forASSISTANT_APIKEY
to allow automatic configuration of the default skill or configureSKILL_ID
to use another skill.
Fail: An operation for service instance wbc-discovery-service is in progress.
This error occurs when starting the app before the service is ready. It is currently common behavior with the
Deploy to IBM Cloud
button. In this case, click theRun
button to restart the application. It will succeed when the service is ready.
Error: Environment {GUID} is still not active, retry once status is active
This is common during the first run. The app tries to start before the Discovery environment is fully created. Wait a few minutes and click the
Run
button to restart the application.
Error: Only one free environment is allowed per organization
To work with a free trial, a small free Discovery environment is created. If you already have a Discovery environment, this will fail. If you are not using Discovery, check for an old service thay you may want to delete. Otherwise use the .env DISCOVERY_ENVIRONMENT_ID to tell the app which environment you want it to use. A collection will be created in this environment using the default configuration.
This code pattern is licensed under the Apache 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 and the Apache License, Version 2.
Apache License FAQ