我想强制检测意图,这样无论用户输入什么,都会重定向到特定的意图。
目前,我正在尝试使用以下代码通过传递上下文名称来实现这一点:
const request = {
session: sessionPath,
queryInput: {
text: {
text: query,
languageCode: 'en-US',
},
},
queryParams: {
contexts: [
{
"name": "projects/xxx/agent/sessions/yyy/contexts/question-followup",
"lifespanCount": 2
}
]
}
};
但它似乎是通过用户输入而不是我给出的上下文来检测意图!
有没有关于如何实现这样的事情的想法?
发布于 2018-06-07 04:54:41
你想要做什么是很模糊的,但我认为你有几种方法。
使用Context的回退意图
您可以在系统中创建多个备用意图,诀窍是每个意图都应该具有不同的上下文,因为需要输入上下文。在这些情况下,如果文本输入没有匹配项,它将查找设置了所有输入上下文的后备。
使用 @sys:any
Entity
一个空的训练短语字面上的意思是“什么都不说”,所以仅仅有一个匹配的上下文是不够的。相反,您可以将训练短语设置为仅具有@sys:any
实体的参数。
这可能是最不可能真正做你想要做的事情,但如果有你想要捕获的短语的组成部分,这可能是有用的。
发送事件
由于您使用API调用Dialogflow,因此如果您想强制执行特定的意图,您可以发送事件而不是发送文本,它将与设置了该事件的意图相匹配。该事件倾向于优先于其他规则,以确定要调用的意图。
使用event data发送给detectIntent
的消息可能如下所示:
const request = {
session: sessionPath,
queryInput: {
event: {
name: 'event_personal_MINE',
parameters: {
whatever: 'value'
},
languageCode: 'en-US',
},
},
};
(参数是可选的)
https://stackoverflow.com/questions/50719675
复制相似问题