我想强制检测一个意图,这样无论用户输入是什么,都会重定向到特定的意图。
目前我正在尝试通过传递上下文名称使用以下代码来实现此目的:
const request = {
session: sessionPath,
queryInput: {
text: {
text: query,
languageCode: 'en-US',
},
},
queryParams: {
contexts: [
{
"name": "projects/xxx/agent/sessions/yyy/contexts/question-followup",
"lifespanCount": 2
}
]
}
};
但它似乎检测的是用户输入的意图,而不是我提供的上下文!
关于如何实现这样的事情有什么想法吗?
最佳答案
您尝试做的事情非常模糊,但我认为您有一些方法。
回退意图与上下文
您可以在系统中创建多个 Fallback Intents,诀窍是每个都应根据输入上下文的需要具有不同的上下文。在这些情况下,如果与文本输入不匹配,它将找到一个设置了所有输入上下文的回退。
使用@sys:any
实体
一个空的训练短语字面意思是“什么都不说”,所以只有一个具有匹配上下文的短语是不够的。相反,您可以将训练短语设置为仅带有 @sys:any
实体的参数。
这可能是最不可能实际执行您想要的操作的方法,但如果您确实想要捕获短语的某些组成部分,则可能会有用。
发送事件
由于您使用 API 调用 Dialogflow,如果您想强制执行特定的 Intent,您可以发送一个事件而不是发送文本,它会匹配具有该事件集的 Intent。事件往往会被赋予优先于其他规则来确定调用哪个 Intent。
您将使用 event data 发送到 detectIntent
的消息可能看起来像这样:
const request = {
session: sessionPath,
queryInput: {
event: {
name: 'event_personal_MINE',
parameters: {
whatever: 'value'
},
languageCode: 'en-US',
},
},
};
(参数可选)
关于javascript - 无论用户在 dialogflow v2 中输入什么,如何强制检测特定意图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719675/