【问题标题】:Invoke a Dialogflow event with a specific device source使用特定设备源调用 Dialogflow 事件
【发布时间】:2019-01-24 08:16:16
【问题描述】:

经过无数次尝试和尝试,我请求您帮助使用特定的 GoogleHome 设备调用 Dialogflow 事件 (GoogleHome)。

通过 nodeJS,我成功地调用了一个 Dialogflow 事件并获得了完整响应。一切都完美,只有我必须让我的 GoogleHome 设备完整地说话,我不需要纯文本的答案。

我的目标是让我的 GoogleHome 设备先说话,不要说“Ok, Google”,然后等待用户的回应。

我在网络上没有找到任何东西,我停止尝试调用 Dialogflow 事件并获得控制台响应。

这是我尝试完成的代码

test: async function () {
    console.log("[funcGHTalk|test] CALLED");


    const projectId = "[[projectid]]";
    const LANGUAGE_CODE = 'it-IT';
    let eventName = "[[eventname]]";
    const sessionId = uuid.v4();

    const sessionClient = new dialogflow.SessionsClient();
    const sessionPath = sessionClient.sessionPath(projectId, sessionId);

    // The text query request.
    const request = {
        session: sessionPath,
        queryInput: {
            event: {
                name: eventName,
                languageCode: LANGUAGE_CODE
            },
        },
    };

    // Send request and log result
    const responses = await sessionClient.detectIntent(request);
    console.log('Detected intent');

    const result = responses[0].queryResult;        
    console.log(result);

    console.log(`  Query: ${result.queryText}`);
    console.log(`  Response: ${result.fulfillmentText}`);
    if (result.intent) {
        console.log(`  Intent: ${result.intent.displayName}`);
    } else {
        console.log(`  No intent matched.`);
    }
}

【问题讨论】:

  • 您能分享您尝试过的代码或您认为可能有用的文档吗?这种类型的问题似乎有点过于开放且难以回答,因为它需要为问题编写完整的解决方案。你有什么具体的作品在苦苦挣扎吗?

标签: node.js dialogflow-es actions-on-google google-home


【解决方案1】:

您编写的代码使用的是Dialogflow Detect Intent API。这意味着在控制台和服务器上运行以向 Dialogflow 发送消息,Dialogflow 将解析它,确定它匹配的 Intent,使用该信息调用实现,并返回所有结果。

您无需在 Google Home 上运行此程序,因为 Google 助理会为您完成所有这些工作。

我认为您正在寻找的是通过Actions on GoogleDialogflow Fulfillment API 来开发满足感。这会处理另一端的事情——在 Dialogflow 确定与用户所说的内容匹配的 Intent 之后,如果该 Intent 启用了fulfillment,它会将信息发送到您在某处云服务器上运行的 webhook。然后,您将处理它,发送回复(使用actions-on-google 库或dialogflow-fulfillment 库最简单),然后它会将其发送回助手。

您曾表示您希望该操作“让我的 GoogleHome 设备先说话,不要说“Ok,Google”,然后等待用户的响应”。这要复杂得多,而且现在还不能用 Google Home 设备来做。大多数操作让用户使用“Ok Google,与我的测试应用程序交谈”或任何操作名称来发起对话。

您没有说明您希望如何触发 Home 开始说话,但您可能希望查看 notifications 以查看这些是否适合您的模型,但是通知目前不适用于 Home,只是移动设备上的 Google 助理。

【讨论】:

  • 谢谢你的回复,很清楚。我了解让 GoogleHome 先发言并请求答复是非常复杂的。例如,正如我们所说,发起一个“你好,欢迎回来!你好吗?”的事件。并等待随后由 Dialogflow 处理的回复。请你告诉我,我应该怎么做才能选择这个解决方案?即使没有详细的解释,也只有建议。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2021-10-07
  • 1970-01-01
相关资源
最近更新 更多