如何结束与 API.AI 的对话

How to end the conversation with API.AI

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

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

我还看到您可以使用 'assistant.tell()' 的操作 SDK,但似乎无法使用 API.AI。

是的,你可以。在您的应用中,编写一个函数,将查询 "stop" 发送给您的代理。

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'
        })
    });
}

如果您正在使用 the fulfillment library 然后调用 Assist('stop');.

...

在 "Intent" 窗格的 fulfillment 下,有一个 "Actions on Google" 部分可以展开。在此之下,you will see "End Conversation" 选中该框。

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

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

在您的回复中将此添加到与您的演讲相同的级别 属性。

对于不使用 SDK 的人。我发现有两种方法可以在使用 API.AI.

时停止 Google 主屏幕上的麦克风

在 "Intent" 窗格的 fulfillment 下,有一个 "Actions on Google" 部分可以展开。在那下面你会看到 "End Conversation" 复选框。选中该框。

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

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

在您的回复中将此添加到与您的演讲 属性 相同的级别。

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

尽管文档只是说:

Tells the Assistant to render the speech response and close the mic.

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

同样的事情可以通过选中 API.AI Web GUI 中特定 Intent 中的 "End Conversation" 框来完成(当然,这不是动态的,每次 Intent 时都会结束对话被调用):