我正在使用 Dialogflow 和 Dialogflow 的内联编辑器(用于云函数和 Firebase 数据库“实时数据库”)创建一个聊天机器人。我会将这个聊天机器人与 Google Assistant 集成。
我必须从数据库中读取一个列表,其中列表有几个孩子,其中很少有子孩子,很少有子孩子有子子孩子。因为输出是一个列表并且包含长文本,所以一次说出所有数据需要很长时间。所以我想从列表中输出一个孩子并请求用户许可(是/否)“你想阅读下一个吗?”。如果用户说“是”,我将继续阅读直到最后。如果用户说“不”,我会触发一个事件。在读一个孩子,甚至是sub-child,甚至是sub-sub-child之前,请求用户的许可是真实的。
我采用的方法包括在每个用户第一次请求列表时为他们创建一个单独的数据库记录,以跟踪他们在列表中的位置。当用户说是时,从数据库中获取用户当前的项目 id,获取列表中的下一个项目(通过 将其返回给用户agent.add
),然后将用户的数据库记录更新为下一个项目的 id,依此类推,直到用户到达列表的末尾。之后agent.add()
,请求用户的许可agent.setFollowupEvent()
。如果用户说不,只需重置/删除该用户的数据库记录。
我想问几个问题:
- 我将如何将每个用户识别为个人:通过某个 id、会话或其他方式?
return
当我在云函数中运行以下代码时,agent.add
会被agent.setFollowupEvent
. 我该如何阻止这个?
agent.add('I will print the list here!');
agent.setFollowupEvent('SOME_EVENT'); //invoking an intent to ask for the permission.