Voicebot built on top of Project Fonos with support for Dialogflow.
This repository contains a dockerized distribution of Rox AI.
You can see all images available to pull from Docker Hub via the Tags page. Docker tag names that begin with a "change type" word such as task, bug, or feature are available for testing and may be removed at any time.
The version is the same of the Asterisk this is image is based on
You can clone this repository and manually build it.
cd fonoster/rox\:%%VERSION%%
docker build -t fonoster/rox:%%VERSION%% .
Otherwise you can pull this image from docker index.
docker pull fonoster/rox:%%VERSION%%
The following is a basic example of using this image.
docker run -it \
-p 3000:3000 \
-e WELCOME_INTENT_TRIGGER="hi!"
-e ACTIVATION_INTENT="bot.activate" \
-e INTENTS_ENGINE="dialogflow" \
-e ASR_ENGINE="google" \
-e TTS_ENGINE="google" \
-e TTS_VOICE="en-US-Wavenet-F" \
fonoster/rox
To allow for seamless integration between Dialogflow and Rox, we introduced the concept of Effects. Effects are actions sent from Dialogflow to Rox so you don't have to programm the behavior everytime. All you need to do is send the Effect's payload and Rox will react accordingly.
You can send multiple responses from Dialogflow. The Effects will run in sequence.
Effect ID | Description | Payload Example |
|
The Effect will randomly pick a textual response and play it back to the user |
{
"effect": "say",
"parameters": {
"responses": [
"Goodbye!",
"Talk later",
"Bye!",
"Have a good one!"
]
}
} |
|
The hangup Effect will close the call |
{
"effect": "hangup"
} |
|
Use this Effect send arbitrary data to the client. Note that this only works with clients that subscribe for events |
{
"effect": "send_data",
"parameters": {
"type": "map",
"icon": "https://freeicons.net/icons/map.png",
"link": "https://goo.gl/maps/YTum2VeZSQwNB4ik6"
}
} |
|
Forward call to a different endpoint |
{
"effect": "transfer",
"parameters": {
"destination": "17853178070",
"record": true
}
} |
Notes: The parameter
type
is set to map in the example, but you can send anything that makes send to the client. If the parameterallRequiredParamsPresent
is set to true, the fulfillmentText will be take presedence over the custom effects.
Environment variables are used in the entry point script to render configuration templates. You can specify the values of these variables during docker run
, docker-compose up
, or in Kubernetes manifests in the env
array.
INTENTS_ENGINE
- Use to select the intents engine. Accepts[dialogflow.es, dialogflow.cx]
. RequiredINTENTS_ENGINE_AGENT
- Intents Agent identifier. Required fordialogflow.cx
INTENTS_ENGINE_LOCATION
- Region where the bot was deployed. Required fordialogflow.cx
ASR_ENGINE
- Use to select the ASR engine. Accepts[google]
. RequiredTTS_ENGINE
- Use to select the TTS engine. Accepts[google]
. RequiredTTS_VOICE
- Name of the voice. Check https://cloud.google.com/text-to-speech/docs/voices for a list of Google TTS voices. RequiredINITIAL_DTMF
- Set if you want to send a DTMF at the begining of the callWELCOME_INTENT_TRIGGER
- Set if you want to ask the backend for a welcome intentACTIVATION_INTENT
- Set to the desired intent if you want to have an activation command. If this is set, theINTERACTION_TIMEOUT
will have not effectsINTERACTION_TIMEOUT
- Timeout, in seconds, to ask again for user input. Use-1
for no timeout. Defaults to-1
EVENTS_ENABLED
- If set totrue
it will send events to ws clients subscribed to events. Defaults tofalse
ACTIVATION_TIMEOUT
- Time in seconds for the duration of theAWAKE_ACTIVE
state, set for the activation command. After this time the bot will return toAWAKE_PASSIVE
and new intents will be ignored. Defaults to15000
LANGUAGE_CODE
- Sets the default language for the application. Defaults toen-US
3000
- Port to start a session request3001
- Port to subscribe tosendData
effects
/etc/rox/google.json
- This must exist ifINTENTS_ENGINE=dialogflow
, orASR_ENGINE=google
, orTTS_ENGINE=google
- Add authentication to secure the events port
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
See also the list of contributors who participated in this project.
Copyright (C) 2021 by Fonoster Inc. MIT License (see LICENSE for details).