This is a Botium connector for testing your Genesys chatbot.
Did you read the Botium in a Nutshell articles? Be warned, without prior knowledge of Botium you won't be able to properly use this library!
Botium connects to the API of your Genesys chatbot.
It can be used as any other Botium connector with all Botium Stack components:
- Node.js and NPM
- a Genesys bot flow
- a project directory on your workstation to hold test cases and Botium configuration
When using Botium CLI:
> npm install -g botium-cli
> npm install -g botium-connector-genesys
> botium-cli init
> botium-cli run
When using Botium Bindings:
> npm install -g botium-bindings
> npm install -g botium-connector-genesys
> botium-bindings init mocha
> npm install && npm run mocha
When using Botium Box:
Already integrated into Botium Box, no setup required
You can choose between Web messaging and Open messaging channels based on GENESYS_MESSAGING_CHANNEL
(WEB_MESSAGING, OPEN_MESSAGING) capability.
If you set 'WEB_MESSAGING' value in GENESYS_MESSAGING_CHANNEL
, then you choose Web messaging channel, which is a websocket based channel.
In Genesys cloud you have to do the following:
- You have to have a
Digital Bot Flow
or aBot Flow
, which is connected to anInbound Message Flow
under Architect page - You have to set up a
Messenger Configuration
under Admin page - You have to create a
Messenger Deployment
under Admin page
After the Messenger Deployment
you create a botium.json
file and copy the Deployment Key into GENESYS_DEPLOYMENT_ID
and set your genesys account AWS region into GENESYS_AWS_REGION
.
{
"botium": {
"Capabilities": {
"PROJECTNAME": "<whatever>",
"CONTAINERMODE": "genesys",
"GENESYS_MESSAGING_CHANNEL": "WEB_MESSAGING",
"GENESYS_AWS_REGION": "us-east-1",
"GENESYS_DEPLOYMENT_ID": "baf4d3ab-d758-4439-995e-c4d86f6d9121"
}
}
}
To check the configuration, run the emulator (Botium CLI required) to bring up a chat interface in your terminal window:
> botium-cli emulator
Botium setup is ready, you can begin to write your BotiumScript files.
If you set 'OPEN_MESSAGING' value in GENESYS_MESSAGING_CHANNEL
, then you choose Open messaging channel, which is a webhook based channel.
In Genesys cloud you have to do the following:
- You have to have a
Digital Bot Flow
or aBot Flow
, which is connected to anInbound Message Flow
under Architect page - Under
Admin/Message/Platform
menu you have to create a new integration forOpen Messaging
. You have to add here a webhook URL which is the endpoint to your botium box instance or tobotium-cli inbound-proxy
. (from localhost you can use ngrok, see later) - Under
Admin/Routing/Message
Routing you have to add a new Message route. Select here yourInbound Message Flow
and add in addresses yourOpen Messaging
integration. - Under
Admin/Integrations/OAuth
create OAuth client credentials with the corresponding roles
After you finished the steps in Genesys you can create a botium.json
file. (The value for GENESYS_OPEN_MESSAGING_INTEGRATION_ID
you can find in the url when you open in genesys cloud your open messaging integration for edit)
{
"botium": {
"Capabilities": {
"PROJECTNAME": "<whatever>",
"CONTAINERMODE": "genesys",
"GENESYS_MESSAGING_CHANNEL": "OPEN_MESSAGING",
"GENESYS_AWS_REGION": "us-east-1",
"GENESYS_CLIENT_ID": "5305cdc8-5ef9-49b9-8cbe-95e87bd3c123",
"GENESYS_CLIENT_SECRET": "vL9kEoHLCb6AWmby5xpHrbAKviL-Lzu6WCiBUZTt123",
"GENESYS_OPEN_MESSAGING_INTEGRATION_ID": "1387d005-b09a-4788-bf53-16c378cdc111",
"GENESYS_USER_DATA": {
"nickname": "Messaging User",
"id": "messaging-user@externalservice.com",
"idType": "email",
"firstName": "Messaging",
"lastName": "User"
},
"SIMPLEREST_INBOUND_REDISURL": "redis://127.0.0.1:6379"
}
}
}
To check the configuration, run the emulator (Botium CLI required) to bring up a chat interface in your terminal window:
> botium-cli emulator
Botium setup is ready, you can begin to write your BotiumScript files.
There are some small demo in samples with Botium Bindings. By changing the corresponding capabilities you can use it with your Genesys bot.
- Install the dependencies and botium-core as peerDependency:
> npm install && npm install --no-save botium-core
- Navigate into the web messaging sample directory
- Install the dependencies
> cd ./samples/webmessaging > npm install
- Adapt botium.json in the sample directory:
- Change
GENESYS_AWS_REGION
with your Genesys aws region - Change
GENESYS_DEPLOYMENT_ID
with your Messenger Deployment key - Change
GENESYS_CUSTOM_ATTRIBUTES
if necessary
- Change
- Finally run the test
> npm test
- Install the dependencies
- Navigate into the web messaging sample directory
-
Install the dependencies
> cd ./samples/openmessaging > npm install
-
Adapt botium.json in the sample directory:
- Change
GENESYS_AWS_REGION
with your Genesys aws region - Change
GENESYS_CLIENT_ID
with your OAuth Client Id - Change
GENESYS_CLIENT_SECRET
with your OAuth Client Secret - Change
GENESYS_OPEN_MESSAGING_INTEGRATION_ID
with your Open Messaging integration Id - Change
GENESYS_USER_DATA
if necessary - Change
GENESYS_CUSTOM_ATTRIBUTES
if necessary
- Change
-
Start
inbound-proxy
(it will listen onhttp://127.0.0.1:45100/
):> npm run inbound
- In your open messaging integration in Genesys cloud you need to set
SzabiTest Outbound Notification Webhook URL
according to the previous step set up inbound-proxy url. (To make this localhost url public you can use e.g. ngrok)
- In your open messaging integration in Genesys cloud you need to set
-
Finally run the test
> npm test
-
Set the capability CONTAINERMODE to genesys to activate this connector.
You have to specify the AWS region where your Genesys account located
You can choose between Web Messaging (WEB_MESSAGING) - websocket and Open Messaging (OPEN_MESSAGING) - webhook channels
You can enable NLP analytics by this boolean flag. (false by default)
When you turn on GENESYS_NLP_ANALYTICS
, then it's required to specify the inbound message flow name.
You have to set the Messenger Deployment key here
Genesys OAuth Client Id
Genesys OAuth Client Secret
Open Messaging integration Id (you can find it in the browser url)
You can define a user data object. E.g.:
{
"nickname": "Messaging User",
"id": "messaging-user02@externalservice.com",
"idType": "email",
"firstName": "Messaging",
"lastName": "User"
}
You can define a custom attribute object. E.g.:
{
"department": "sales",
"device": "mobile"
}