请考虑以下情形(U =用户,L = Lex):
U1:您好
L1:您好,请给我您的名字以开始使用。
U2:鲍勃
L2:Bob,请考虑以下问题:天空是什么颜色?
U3:天空通常是蓝色的,但有时天空是红色的。
系统读取问题数据库,并随机选择一个要呈现给用户的数据库。这是通过AWS Lambda完成的,问题会在消息L2中显示给用户。
有没有办法说“来自用户的下一个答复应被视为他们对问题的答案,而无需定义话语等?这是因为漫游器发送的问题可能会有很大的差异。
我需要一种将所有U3块传递回Lambda进行处理的方法。无论背景如何,我将如何实现这一目标? (我将python用于Lambda)
谢谢
答案 0 :(得分:1)
Lex始终在Request
字段下的inputTranscript
中传递整个用户的输入。
inputTranscript –用于处理请求的文本。
如果输入是文本,则inputTranscript字段包含用户输入的文本。
如果输入是音频流,则inputTranscript字段包含从音频流提取的文本。这是实际用于识别意图和广告位值的文本。
这是Lambda以event
接收的Lex请求的格式:
{
"currentIntent": {
"name": "intent-name",
"slots": {...},
"slotDetails": {...},
"confirmationStatus": "(None, Confirmed, or Denied)"
},
"bot": {...},
"userId": "XXXX",
"invocationSource": "(FulfillmentCodeHook or DialogCodeHook)",
"outputDialogMode": "(Text or Voice)",
"messageVersion": "1.0",
"sessionAttributes": {...},
"requestAttributes": {...}
"inputTranscript": "Text of full user's input utterance",
}
因此,在Lambda中,您可以通过以下方式访问inputTranscipt
:
userInput = event.inputTranscript