代码之家  ›  专栏  ›  技术社区  ›  Mizlul

如何强制检测特定意图,而不管DialogFlow v2中的用户输入是什么

  •  3
  • Mizlul  · 技术社区  · 7 年前

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

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

     const request = {
          session: sessionPath,
          queryInput: {
            text: {
              text: query,
              languageCode: 'en-US',
            },
          },
          queryParams: {
          contexts: [
              {
                "name": "projects/xxx/agent/sessions/yyy/contexts/question-followup",
                "lifespanCount": 2
              }
            ]
          }
        };
    

    但它似乎通过用户输入而不是我给出的上下文来检测意图!

    你知道怎么做吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Prisoner    7 年前

    你想做的事情很模糊,但我想你有一些办法。

    带上下文的回退意图

    您可以在系统中创建多个回退意图,诀窍是每个回退意图都应该具有不同的上下文,因为需要输入上下文。在这些情况下,如果文本输入不匹配,它将找到一个设置了所有输入上下文的回退。

    使用 @sys:any 实体

    一个空的训练短语字面意思是“什么都不说”,所以仅仅有一个匹配的上下文是不够的。相反,您可以使用 @系统:任何 实体。

    这可能是最不可能真正做你想做的事情,但如果你确实想捕捉短语的某些成分,这可能会很有用。

    发送事件

    由于使用API调用DialogFlow,如果要强制特定的意图,可以发送事件而不是发送文本,它将与设置了该事件的意图匹配。事件往往比其他规则具有优先权,以确定调用的意图。

    你要发送给的消息 detectIntent 具有 event data 可能是这样的:

     const request = {
          session: sessionPath,
          queryInput: {
            event: {
              name: 'event_personal_MINE',
              parameters: {
                whatever: 'value'
              },
              languageCode: 'en-US',
            },
          },
        };
    

    (参数是可选的)

    推荐文章