【问题标题】:how do I send a context parameter to the webhook/fulfilments DialogFlow v2如何将上下文参数发送到 webhook/fulfilments DialogFlow v2
【发布时间】:2018-11-15 19:56:00
【问题描述】:

我正在从这个链接阅读官方文档: https://cloud.google.com/dialogflow-enterprise/docs/reference/rest/v2beta1/QueryParameters 但我无法使用以下代码将上下文参数传递到我的请求中:

  var query = req.body.query;
    const request = {
      session: sessionPath,
      queryInput: {
        text: {
          text: query,
          languageCode: 'en-US',
        },
      },
      queryParameters: {
        contexts: ['Question-followup']
      },
    };

    // Send request and log result
    sessionClient
      .detectIntent(request)
      .then(responses => {
        const result = responses[0].queryResult;
        console.log(result);
        res.json(result);   
        if (result.intent) {
          console.log(`  Intent: ${result.intent.displayName}`);
        } else {
          console.log(`  No intent matchede.`);
        }
      })
      .catch(err => {
        console.error('ERROR:', err);
      });

在文档中说我应该有类似的东西:

"contexts": [
    {
      object(Context)
    }
  ],

我想要这个的原因是有时 DialogFlow 无法检测到 Intent,所以我认为通过将上下文传递给参数将有助于 dialogflow 找到正确的意图!

【问题讨论】:

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


    【解决方案1】:

    contexts 数组必须是 Context 对象的数组,而不仅仅是带有上下文名称的字符串。

    上下文对象看起来像

    {
      "name": "projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context Name>",
      "lifespanCount": 1,
      "parameters": {
        "anyParameterName": "parameterValue"
      }
    }
    

    【讨论】:

    • 我不再收到错误,这似乎可以解决,但我没有得到的一件事是,为什么在我提供一些输入时没有检测到正确的意图,我的意思是我想强制用户正在编写重定向到特定意图的任何内容,这可能吗?我认为通过传递上下文名称可以完成工作,但事实并非如此!相反,它通过输入文本检测意图
    • 我会接受这个答案,因为它解决了我在提供正确参数时遇到的问题,但我仍然想知道如何将用户输入重定向到特定的 Intent,而不管他们的输入。跨度>
    • 我建议直接将其作为一个新问题提出 - 目前尚不清楚您要做什么以及为什么它不起作用,所以有一些示例(Intents 和结果等)会有所帮助。
    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多