如何在与亚马逊lex一起使用的lambda中获得匹配的话语?

时间:2018-02-09 14:03:13

标签: amazon-web-services amazon-lex

我在亚马逊lex和像

这样的话语中创建了一个机器人
  

“向我展示十大供应商”

所以,如果我输入

  

“告诉我十大卖家”

即使它有一个拼写错误,对我来说,lex仍然与话语匹配。但我需要知道什么话语与我在lambda内的输入记录相匹配。有可能吗? 我试图在事件对象中找到它,它传递给lambda但找不到任何东西。

2 个答案:

答案 0 :(得分:1)

您应该能够看到从Lex发送到Lambda的事件对象中的匹配意图为event.currentIntent.name。完整的事件格式记录在此处 - https://docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html
话语可以引用为event.inputTranscript

以下示例收集currentIntent和utterance,并按预期将两者写入日志文件。希望这有帮助!

exports.handler = (event, context, callback) => {
    
console.log("incoming event details: " + JSON.stringify(event));
console.log("Matched intent: " + event.currentIntent.name);
console.log("Utterance: " + event.inputTranscript);


};

答案 1 :(得分:0)

截至目前,Lex无法确定其匹配的话语以确定意图。

然而,你可以做一件事,在匹配意图后写一个代码来获得匹配意图的话语,然后将每个输入与每个话语相匹配,并选择最接近的话语。

client_model = boto3.client('lex-models')
bot_details = client_model.get_intent(
    name='name_of_your_intent',
    versionOrAlias='$LATEST'
    )

bot_details['sampleUtterances']将包含所有话语。您可以使用一些字符串匹配库(如FuzzyWuzzy)来匹配最接近的字符串。

希望它有所帮助。