AWS Lex + Lambda-拦截所有下一个用户响应,而不管上下文如何-无需定义示例话语?

时间:2018-06-29 11:50:07

标签: python amazon-web-services aws-lambda amazon-lex

请考虑以下情形(U =用户,L = Lex):

U1:您好

L1:您好,请给我您的名字以开始使用。

U2:鲍勃

L2:Bob,请考虑以下问题:天空是什么颜色?

U3:天空通常是蓝色的,但有时天空是红色的。

系统读取问题数据库,并随机选择一个要呈现给用户的数据库。这是通过AWS Lambda完成的,问题会在消息L2中显示给用户。

有没有办法说“来自用户的下一个答复应被视为他们对问题的答案,而无需定义话语等?这是因为漫游器发送的问题可能会有很大的差异。

我需要一种将所有U3块传递回Lambda进行处理的方法。无论背景如何,我将如何实现这一目标? (我将python用于Lambda)

谢谢

1 个答案:

答案 0 :(得分:1)

Lex始终在Request字段下的inputTranscript中传递整个用户的输入。

Lex-Lambda Event Format

  

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