javascript - 无论用户在 dialogflow v2 中输入什么,如何强制检测特定意图

标签 javascript node.js google-api google-cloud-platform dialogflow-es

我想强制检测一个意图,这样无论用户输入是什么,都会重定向到特定的意图。

目前我正在尝试通过传递上下文名称使用以下代码来实现此目的:

 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/

相关文章:

javascript - 表达类型错误: undefined is not a function

mysql - 通过express发布到mysql数据库时出错

Flutter Google Calendar API - clientViaServiceAccount 没有响应

google-api - ColdFusion Google OAuth 获取访问 token 连接失败

c# - 当我在 c# 中使用 gmail API 修改消息标签时出现问题

javascript - 在 switch 语句中评估 Truthy

javascript - 将 json 数据添加到数据表中

javascript - 传递链接数

javascript - Node js 闭包需要推送到数组

mysql - Heroku Node.js 应用程序无法启动