Skip to content

codeforequity-at/botium-asserter-watson-toneanalyzer

Repository files navigation

Botium Tone Analyzer Asserter

NPM

Codeship Status for codeforequity-at/botium-asserter-watson-toneanalyzer npm version license

This is a Botium asserter for analyzing and verifying the tone of a chatbot. This asserter uses the Watson Tone Analyzer to retrieve the sentiment of the bot response and trigger an assertion failure if given sentiments are matched (impolite, anger, ...).

Configuration

You have to activate the Tone Analzer in your IBM Cloud account, the URL and the credentials are shown on the Manage view.

Configuration of the asserter is done with the args properties (see below).

You can provide and overwrite each of this asserter args with an environment variable starting with BOTIUM_arg-name - for example, to provide the IBM Cloud API Key as environment variable instead of asserter arg, use the environment variable BOTIUM_WATSONTA_APIKEY

WATSONTA_URL

Default: https://gateway.watsonplatform.net/tone-analyzer/api

URL of your Watson Tone Analyzer instance

WATSONTA_APIKEY / WATSONTA_USER / WATSONTA_PASSWORD

Depending on your IBM Cloud account, you have either API Key credentials or Username/Password credentials.

The credentials are different than the credentials your are using for logging into the IBM Cloud console

WATSONTA_VERSION

Default: 2017-09-21

WATSONTA_ENDPOINT

Default: toneChat

Either toneChat or tone

The Watson Tone Analyzer supports two different tone analyzer modes, one for general tone analysis, one for customer engagement tone analysis, see here.

WATSONTA_LANGUAGE

Default: en

Content language. For list of supported languages, see here.

WATSONTA_TONE_TRIGGERS

Default: ['impolite', 'frustrated', 'sad']

JSON Array of tones. If any of these tones is identified with high likelihood (see WATSONTA_SCORE_TRIGGER) in the bot response, the test case will fail.

Depending on the WATSONTA_ENDPOINT configured, there are different tones available - see the tone_id fields in the API Docs

WATSONTA_SCORE_TRIGGER

Default: 0.75

Minimum likelihood to trigger a tone match.

Installation

Botium Box

Deploy the NPM package to Botium Box

  • Download this package as ZIP file
  • Follow these instructions to register in Botium Box
  • Use the Component Configuration field to add configuration args (see below):
{
  "WATSONTA_URL": "...",
  "WATSONTA_APIKEY": "..."
}
  • Suggestions:
    • Use TONEANALYZER as Component Ref Code
    • Use Register as global scripting component to make it a global asserter in all test cases

Botium Core / Botium Bindings / Botium CLI

Install asserter NPM package:

npm install --save botium-asserter-watson-toneanalyzer

Add to botium.json - in this case, it is added as a global asserter running it on all responses. This is the suggested use case.

{
  "botium": {
    "Capabilities": {
      ...
      "ASSERTERS": [
        {
          "ref": "TONEANALYZER",
          "src": "botium-asserter-watson-toneanalyzer",
          "global": true,
          "args": {
            "WATSONTA_URL": "...",
            "WATSONTA_APIKEY": "..."
          }          
        }
      ]
    }
  }
}

Usage

If asserter is configured as global, assertions are done on all bot responses.

Otherwise, you can trigger the assertions by adding it to your convo file:

#me
hey how are you

#bot
TONEANALYZER