4

有没有办法使用 API.AI 结束 Google Home 与服务器的对话?

我假设我需要以某种方式访问​​ expect_user_response 并将其设置为 false。

我还看到您可以使用动作 SDK 使用“assistant.tell()”,但这似乎无法通过 API.AI 访问。

4

3 回答 3

5

对于不使用 SDK 的人。在使用 API.AI 时,我发现有两种方法可以停止 Google Home 上的麦克风。

在“意图”窗格中的履行下,您可以展开“Actions on Google”部分。在此之下,您将看到“结束对话”复选框。选中该框。

在您的履行中包括以下内容:

data: {
  google: {
    expect_user_response: false,
  }
}

在您的回复中将其添加到与您的语音属性相同的级别。

于 2016-12-22T06:59:35.473 回答
3

是的你可以。在您的应用程序中,编写一个向您的代理发送查询“停止”的函数。

function stop_conversation(){ var api_request = new Request('https://api.api.ai/v1/query?v=20150910', {
        method: 'POST',
        mode: 'cors',
        redirect: 'follow',
        headers: {
            'Authorization': 'Bearer 21f6a5778d484870ad46be4d34ac2eeb',
            'content-Type': 'application/json; charset=utf-8'
        },
        body: JSON.stringify({
            q: 'stop',
            lang: 'en',
            sessionId: '44628d21-d7a4-47d5-b1c6-a7f851be65fv'
        })
    });
}

如果您使用的是实现库,则调用Assist('stop');.

...

在“意图”窗格中的履行下,您可以展开“Actions on Google”部分。在此之下,您将看到“结束对话”选中该框。

在您的履行中包括以下内容:

data: {
  google: {
    expect_user_response: false,
  }
}

在您的回复中将其添加到与您的语音属性相同的级别。

于 2016-12-22T04:17:19.490 回答
1

对于使用 Node.js 客户端库的用户,这是通过tell()函数以编程方式完成的(ActionsSdk客户端的文档,API.AI客户端的文档)。

即使文档只是说:

告诉助手呈现语音响应并关闭麦克风。

这确实有效地结束了与您的助手应用程序的通信,将用户返回到 Google 助手。

同样的事情可以通过在特定 Intent 中选中 API.AI Web GUI 中的“结束对话”框来完成(当然这不是动态的,每次调用 Intent 时都会结束对话): 在此处输入图像描述

于 2017-08-25T04:02:04.953 回答