Botium Tone Analyzer Asserter
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).
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
Preconfigured in Botium Box with TONEANALYZER reference code. You have to add your Watson credentials.
See https://botium.atlassian.net/wiki/spaces/BOTIUM/pages/2293815/Botium+Asserters
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