Botium Tone Analyzer Asserter
MIT 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, ...).
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
Default: https://gateway.watsonplatform.net/tone-analyzer/api
URL of your Watson Tone Analyzer instance
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
Default: 2017-09-21
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.
Default: en
Content language. For list of supported languages, see here.
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
Default: 0.75
Minimum likelihood to trigger a tone match.
Deploy the NPM package to Botium Box
{
"WATSONTA_URL": "...",
"WATSONTA_APIKEY": "..."
}
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": "..."
}
}
]
}
}
}
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