IBM/watson-banking-chatbot

Name: watson-banking-chatbot

Owner: International Business Machines

Description: A chatbot for banking that uses the Watson Assistant, Discovery, Natural Language Understanding and Tone Analyzer services.

Created: 2017-05-07 18:28:08.0

Updated: 2018-05-24 09:49:34.0

Pushed: 2018-05-24 09:49:32.0

Homepage: https://developer.ibm.com/code/patterns/create-cognitive-banking-chatbot/

Size: 13420

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Build Status

Read this in other languages: ??.

Watson Conversation is now Watson Assistant. Although some images in this code pattern may show the service as Watson Conversation, the steps and processes will still work.

Create a banking chatbot with FAQ discovery, anger detection and natural language understanding

In this developer journey, we will create a chatbot using Node.js and Watson Assistant. The Assistant flow will be enhanced by using Natural Language Understanding to identify entities and using Tone Analyzer to detect customer emotions. 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 journey, they will understand how to:

Flow
  1. The FAQ documents are added to the Discovery collection.
  2. The user interacts with a chatbot via the app UI.
  3. User input is processed with Tone Analyzer to detect anger. An anger score is added to the context.
  4. User input is processed with Natural Language Understanding (NLU). The context is enriched with NLU-detected entities and keywords (e.g., a location).
  5. The input and enriched context is sent to Assistant. Assistant recognizes intent, entities and dialog paths. It responds with a reply and/or action.
  6. Optionally, a requested action is performed by the app. This may include one of the following:
  7. Lookup additional information from bank services to append to the reply
  8. Use Discovery to reply with an answer from the FAQ documents
With Watson

Want to take your Watson app to the next level? Looking to leverage Watson Brand assets? Join the With Watson program which provides exclusive brand, marketing, and tech resources to amplify and accelerate your Watson embedded commercial solution.

Included components
Featured technologies

Watch the Video

Steps

Use the Deploy to IBM Cloud button OR create the services and run locally.

Deploy to IBM Cloud

Deploy to Bluemix

  1. Press the above Deploy to IBM Cloud button and then click on Deploy.

  2. In Toolchains, click on Delivery Pipeline to watch while the app is deployed. Once deployed, the app can be viewed by clicking ``View app.

  3. To see the app and services created and configured for this journey, use the Bluemix dashboard. The app is named watson-banking-chatbot with a unique suffix. The following services are created and easily identified by the wbc- prefix:

    • wbc-conversation-service
    • wbc-discovery-service
    • wbc-natural-language-understanding-service
    • wbc-tone-analyzer-service
Run locally

NOTE: These steps are only needed when running locally instead of using the Deploy to IBM Cloud button.

  1. Clone the repo
  2. Create Watson services with IBM Cloud
  3. Import the Watson Assistant workspace
  4. Load the Discovery documents
  5. Configure credentials
  6. Run the application
1. Clone the repo

Clone the watson-banking-chatbot locally. In a terminal, run:

t clone https://github.com/IBM/watson-banking-chatbot

We?ll be using the file data/conversation/workspaces/banking.json and the folder data/conversation/workspaces/

2. Create Watson services with IBM Cloud

Create the following services:

3. Import the Assistant workspace

Launch the Watson Assistant tool. Use the import icon button on the right

Find the local version of data/conversation/workspaces/banking.json and select Import. Find the Workspace ID by clicking on the context menu of the new workspace and select View details. Save this ID for later.

Optionally, to view the conversation dialog select the workspace and choose the Dialog tab, here's a snippet of the dialog:

4. Load the Discovery documents

Launch the Watson Discovery tool. Create a new data collection and give the data collection a unique name.

Save the environment_id and collection_id for your .env file in the next step.

Under Add data to this collection use Drag and drop your documents here or browse from computer to seed the content with the five documents in data/discovery/docs.

5. Configure credentials

The credentials for IBM Cloud services (Assistant, Discovery, Tone Analyzer and Natural Language Understanding), can be found in the Services menu in IBM Cloud, by selecting the Service Credentials option for each service.

The other settings for Assistant and Discovery were collected during the earlier setup steps (DISCOVERY_COLLECTION_ID, DISCOVERY_ENVIRONMENT_ID and WORKSPACE_ID).

Copy the env.sample to .env.

 env.sample .env

Edit the .env file with the necessary settings.

env.sample:
place the credentials here with your own.
name this file to .env before starting the app.

tson conversation
ERSATION_USERNAME=<add_conversation_username>
ERSATION_PASSWORD=<add_conversation_password>
SPACE_ID=<add_conversation_workspace>

tson Discovery
OVERY_USERNAME=<add_discovery_username>
OVERY_PASSWORD=<add_discovery_password>
OVERY_ENVIRONMENT_ID=<add_discovery_environment>
OVERY_COLLECTION_ID=<add_discovery_collection>

tson Natural Language Understanding
RAL_LANGUAGE_UNDERSTANDING_USERNAME=<add_nlu_username>
RAL_LANGUAGE_UNDERSTANDING_PASSWORD=<add_nlu_password>

tson Tone Analyzer
_ANALYZER_USERNAME=<add_tone_analyzer_username>
_ANALYZER_PASSWORD=<add_tone_analyzer_password>

n locally on a non-default port (default is 3000)
RT=3000
6. Run the application
  1. Install Node.js runtime or NPM.
  2. Start the app by running npm install, followed by npm start.
  3. Use the chatbot at localhost:3000.

    Note: server host can be changed as required in server.js and PORT can be set in .env.

Sample output

Links

Troubleshooting

License

Apache 2.0


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.