lex
The 'lex' verb connects a call to an Amazon Lex V2 bot.
{
"verb": "lex",
"botId": "MTLNerCD9L",
"botAliasId": "z5yY1iYykE",
"region": "us-east-1",
"locale": "en_US",
"credentials": {
"accessKey": "XXXX",
"secretAccessKey": "YYYY"
},
"passDtmf": true,
"intent": "BookHotel",
"metadata": {
"slots": {
"Location": "Los Angeles"
},
"context": {
"callerId": "+15083084909",
"customerName": "abc company"
}
},
"tts": {
"vendor": "Google",
"language": "en-US",
"voice": "en-US-Wavenet-C"
}
"eventHook": "/lex-events"
}
The following features are supported:
- optionally specify an initial, or "welcome" intent,
- pre-fill slot values for the initial intent,
- provide text for a spoken welcome message at the start of the conversation,
- play lex-generated audio, or use text-to-speech with either AWS/Polly or Google voices,
- receive real-time notifications of intents and transcriptions as the conversation progresses, and
- provide arbitrary context data to the lex backend to help guide the flow.
You can use the following options in the lex
verb:
option | description | required |
---|---|---|
botId | Lex bot ID | yes |
botAlias | Lex bot alias ID | yes |
credentials | AWS credentials | yes |
credentials.accessKey | AWS access key id | yes |
credentials.secretAccessKey | AWS secret access key id | yes |
region | AWS region bot is running in | yes |
locale | language code of speaker (currently supported languages: en_AU, en_GB, en_US, fr_CA, fr_FR, es_ES, es_US, it_IT) | yes |
eventHook | A webhook to invoke when a Lex event occurs (e.g intent detected, transcription, etc) | no |
intent | initial intent to trigger (i.e. "welcome intent") | no |
welcomeMessage | text for a welcome message to play to the caller | no |
noInputTimeout | timeout in millseconds Lex will wait for a response before triggering fallback intent | no |
tts | if provided, playback will use text-to-speech rather than Lex-generated audio | no |
tts.vendor | 'aws', 'Google', or 'default' | no |
tts.language | language identifier or 'default' | no |
tts.voice | voice identifier or 'default' | no |
metadata | initial slot values and context data | no |
metadata.slots | key-value pairs for slot names and initial values to be pre-filled | no |
metadata.context | key-value pairs for context data to pass to Lex bot | no |
metadata['x-amz-lex:channels:platform'] | name of voice platform | no |
The eventHook webhook will contain two parameters: event
and data
. The event
parameter identifies the specific event and the data
parameter is an object containng event data associated with the event. The following events are supported:
intent
: Lex detected an intenttranscription
: a speech transcription was returned from Lexresponse-text
: Lex returned a response in the form of textdmtf
: a dtmf key was pressed by the callerstart-play
: an audio segment returned from Lex or TTS started to playstop-play
: an audio segment returned from Lex or TTS completing playingplay-interrupted
: an audio segment was interrupted