多个问题的一个意图 - Amazon Lex
One intent for Multiple Questions - Amazon Lex
我可以使用一个意图来回答不同的问题吗?
例如:
假设我有一个意图 reports,现在 reports 可能有多个问题,例如
Q1。如何下载报告?
Q2。我在哪里可以看到我的报告?
Do i have to make separate intent for download reports and show
reports and call a single lambda function for fulfillment? I can
have nested if else for intents to give a suitable response.
有没有其他方法可以最大程度地减少我的意图?我正在使用 JavaScript 作为 lambda 函数。
我强烈建议不要这样做,因为这不是一个好的设计,但可以用一个 Intent 和两个问题来做,就像在输入中一样 JSON 您将对 Lambda 提出您的问题带着意图问道。如果您看到下面的 JSON,这是您的 Lambda 函数(或其他端点)的 Lex 格式。 'inputTranscript' 字段将包含您提出的问题。您可以在代码中针对字段 'inputTranscript' 编写 if 条件检查,然后可以响应相应的答案。
正如我所说,我建议不要这样做,因为 Intent 意味着意图是什么。两个不同的问题意味着两个不同的意图。
{
"messageVersion": "1.0",
"invocationSource": "FulfillmentCodeHook",
"userId": "876669698689967676",
"sessionAttributes": {},
"requestAttributes": null,
"bot": {
"name": "LexBotName",
"alias": "$LATEST",
"version": "$LATEST"
},
"outputDialogMode": "Text",
"currentIntent": {
"name": "WorkingHours",
"slots": {},
"slotDetails": {},
"confirmationStatus": "None"
},
"inputTranscript": "The question you have asked"
}
(在 Alexa 和 Lex 行话中:"Utterance" = 用户问题或陈述。)
决定分组或分离意向时的一般提示:
当话语差异很大时使用多个意图。
当您有相似的话语并且它们之间只有几个词不同时,请使用单一意图。
如果话语相似,则可以使用 slots
来确定关键字差异。
以下是使用您的示例进行设置的方法:
创建一个名为 Records
的意图。
然后创建一个名为 actionTypes
的自定义 slotType
并将值列为:(download
、see
、view
等)
然后使用 actionTypes
作为 slotType 添加一个名为 action
的 slot
到 Records
。
你的话语会变成:
how do I {action} reports
how do I {action} a report
where can I {action} my reports
然后在您的 Lambda 和您的 Records
处理逻辑中,您可以检测 action
插槽并做出相应的响应。
这比您自己解析 inputTranscript
要好得多。让 Lex 尽可能多地这样做,这就是 Lex 的本意。
我可以使用一个意图来回答不同的问题吗?
例如:
假设我有一个意图 reports,现在 reports 可能有多个问题,例如
Q1。如何下载报告?
Q2。我在哪里可以看到我的报告?
Do i have to make separate intent for download reports and show reports and call a single lambda function for fulfillment? I can have nested if else for intents to give a suitable response.
有没有其他方法可以最大程度地减少我的意图?我正在使用 JavaScript 作为 lambda 函数。
我强烈建议不要这样做,因为这不是一个好的设计,但可以用一个 Intent 和两个问题来做,就像在输入中一样 JSON 您将对 Lambda 提出您的问题带着意图问道。如果您看到下面的 JSON,这是您的 Lambda 函数(或其他端点)的 Lex 格式。 'inputTranscript' 字段将包含您提出的问题。您可以在代码中针对字段 'inputTranscript' 编写 if 条件检查,然后可以响应相应的答案。
正如我所说,我建议不要这样做,因为 Intent 意味着意图是什么。两个不同的问题意味着两个不同的意图。
{
"messageVersion": "1.0",
"invocationSource": "FulfillmentCodeHook",
"userId": "876669698689967676",
"sessionAttributes": {},
"requestAttributes": null,
"bot": {
"name": "LexBotName",
"alias": "$LATEST",
"version": "$LATEST"
},
"outputDialogMode": "Text",
"currentIntent": {
"name": "WorkingHours",
"slots": {},
"slotDetails": {},
"confirmationStatus": "None"
},
"inputTranscript": "The question you have asked"
}
(在 Alexa 和 Lex 行话中:"Utterance" = 用户问题或陈述。)
决定分组或分离意向时的一般提示:
当话语差异很大时使用多个意图。
当您有相似的话语并且它们之间只有几个词不同时,请使用单一意图。
如果话语相似,则可以使用 slots
来确定关键字差异。
以下是使用您的示例进行设置的方法:
创建一个名为 Records
的意图。
然后创建一个名为 actionTypes
的自定义 slotType
并将值列为:(download
、see
、view
等)
然后使用 actionTypes
作为 slotType 添加一个名为 action
的 slot
到 Records
。
你的话语会变成:
how do I {action} reports
how do I {action} a report
where can I {action} my reports
然后在您的 Lambda 和您的 Records
处理逻辑中,您可以检测 action
插槽并做出相应的响应。
这比您自己解析 inputTranscript
要好得多。让 Lex 尽可能多地这样做,这就是 Lex 的本意。