I have a LexV2 streaming voice bot that uses a Lambda function as a codehook for fulfillment of intents. Barge-in or interruption of the bot is enabled in the bot by default.
For queries where Lex inquires slot values or for Closing responses from Lex, I am able to disable barge-in from the console but the disable barge option doesn’t exist for the cases where the Lambda function fulfills the intent and responds.
Is there any way through the console or any API that allows me to disable barge-in for fulfillment?
2
Answers
The Amazon Lex V2 Service Team confirmed that we will not able to disable barge-in feature if the response to be played to the end user is via their fulfillment lambda.
Barge-in or interruption of the bot is enabled by default for everything.
The "Users can interrupt the response when it is being read" (Barge-In) option in the console or the "allowInterrupt" options in the CreateIntent API are provided only for the static responses that are returned by Lex that include Fulfillment updates, Success response, Failure response, Timeout response and Closing responses.
Could you possibly use "x-amz-lex:allow-interrupt" set to False when calling your fulfillment Lambda code, and then in your main Lambda handler always reset this back to True (for when not in fulfillment mode)?
We did something very similar where we wanted allow-interrupt OFF for all elicit intent prompt messages, but on fallback in fallback handler, we allow the user to interrupt the ElicitIntent call from fallback, and we do that by setting x-amz-lex:allow-interrupt = True just for that fallback code.
We reset it back to False in the main Lambda handler entry point. Just a thought.
NOTE — I attempted to show the wildcard asterisk in intentName / slotName fields for x-amz-lex:allow-interrupt, but it was stripped out in the comment. We use x-amz-lex:allow-interrupt:[ASTERISK]:[ASTERISK] in our above logic.