【问题标题】:Lex bot getting value only in digit representation not from wordsLex 机器人仅以数字表示而不是从单词中获取价值
【发布时间】:2022-01-12 14:15:15
【问题描述】:

我是 Amazon Lex 的新手,我创建了一个提供多种服务的机器人:

  • 开箱
  • 检查状态
  • 电子邮件状态

当用户检查状态时,他必须提供一个“case number”。我面临的问题是它只能从 digit representation 等数字中获取值。

当用户使用“九”而不是 9 时,它不起作用。你可以看到它here

在这个问题上指导我,我会非常感谢你。

【问题讨论】:

  • 有关 Amazon Lex 的问题的正确标签是 [amazon-lex],而不是 [lex]。 [lex] 标签是关于词法分析器生成器的 lex,因此与您的问题无关。

标签: bots chatbot amazon-lex


【解决方案1】:

AWS Lambda 似乎最适合帮助您实现您想要实现的目标。

通过 AWS Lex 控制台进行测试时,单击“检查” 按钮并查看 JSON 格式的请求和响应。

您会发现,当用户以文字形式输入数值时 - 如您的示例 "nine" 而不是 "9" - Lex 将为您提供与原始输入以及输入的数字形式。

看看下面我从我自己的示例中提取的 JSON 有效负载:

{
   "messages":[
      {
         "content":"Well done!",
         "contentType":"PlainText"
      }
   ],
   "sessionState":{
      "dialogAction":{
         "type":"Close"
      },
      "intent":{
         "name":"MainIntent",
         "slots":{
            "quantity":{
               "value":{
                  "originalValue":"two",
                  "interpretedValue":"2",
                  "resolvedValues":[
                     "2"
                  ]
               }
            }
         },
         "state":"ReadyForFulfillment",
         "confirmationState":"None"
      },
      "originatingRequestId":"e309a92b-124b-4250-bbd3-2fb8891aa90f"
   },
   "interpretations":[
      {
         "nluConfidence":{
            "score":1
         },
         "intent":{
            "name":"MainIntent",
            "slots":{
               "quantity":{
                  "value":{
                     "originalValue":"two",
                     "interpretedValue":"2",
                     "resolvedValues":[
                        "2"
                     ]
                  }
               }
            },
            "state":"ReadyForFulfillment",
            "confirmationState":"None"
         }
      },
      {
         "intent":{
            "name":"FallbackIntent",
            "slots":{
               
            }
         }
      }
   ],
   "sessionId":"858917309331613"
}

查看负载中的 interpretedValue 字段。这是您要查找的数值。

使用 Lambda 函数,您可以提取此值并执行您可能需要的任何验证,然后再继续流程或用户旅程的其余部分。

您可以从开发人员指南中了解更多关于将 Lambda 函数集成到 Lex 中的信息:

https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-03
    • 2017-08-26
    • 2016-01-25
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多