我在亚马逊lex和像
这样的话语中创建了一个机器人“向我展示十大供应商”
所以,如果我输入
即使它有一个拼写错误,对我来说,lex仍然与话语匹配。但我需要知道什么话语与我在lambda内的输入记录相匹配。有可能吗? 我试图在事件对象中找到它,它传递给lambda但找不到任何东西。“告诉我十大卖家”
答案 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)来匹配最接近的字符串。
希望它有所帮助。