【问题标题】:Best way to store answers from users in Facebook bot chat?在 Facebook 机器人聊天中存储用户答案的​​最佳方式?
【发布时间】:2017-01-20 15:17:48
【问题描述】:

使用 Claudia JS 构建 Facebook Messenger 机器人并计划在 AWS Lambda 上进行托管。

我想问用户一系列问题。

当用户回复答案时,我需要将其保存以备后用,一旦获得所需的所有信息,我会将答案传递给函数。

保存这些信息的最佳方式是什么?

我在考虑一些缓存层,例如 redis,但因为它存储在 RAM 中,所以当 lamda 服务器关闭时我会丢失它。 Mongodb在连接时显然有很多开销,但至少会持久。

也许只是一个简单的 mySQL 服务器?

其他人是怎么做的?我觉得我缺少一个简单的解决方案。

【问题讨论】:

    标签: node.js database aws-lambda chatbot facebook-chatbot


    【解决方案1】:

    我也将 mysql 用于聊天机器人,但我已将 NodeJS 用于后端应用程序。因为mysql 模块会非常有帮助。

    您需要为问答会话存储用户的当前状态,还需要存储用户的答案本身,您需要进行切换或if-else-if case 用于根据用户的状态为 switch(state) 向用户提问,在 switch 的情况下只需更新它的状态。您在聊天机器人的事件对象中有用户的 facebook-id 这样您就可以将每个用户的数据及其状态和问题答案单独存储在不同的表中。

    例如定义标志{1,2,3}

    用户的状态在开始时将为 1,因此请询问他,例如问题一 只有,并将其存储为答案 1,您可以通过它的状态来执行此操作 检查,并在此更新状态为 2 之后。

    因此,您可以通过这种方式向每个学生提问 他们的状态并回答他。

    我已经按照上面的方式做了同样的事情。

    希望这对你有帮助。

    【讨论】:

    • 我非常喜欢这种存储状态的方法。特别是如果您使用的是 mySQL,您可以拥有一个包含所有问题的单独表,然后用户表中的 state 字段可以引用他们要解决的问题。
    【解决方案2】:

    我将首先回答关于我是如何做到这一点的部分:我正在使用 MongoDB。我玩弄了你提到的想法,但出于同样的原因很快就删除了内存解决方案(Memcached、Redis)。我的最终解决方案归结为关系数据库或像 MongoDB 这样的 noSQL。老实说,在我的项目规模上,我并没有考虑过对不同数据库类型的性能进行稳健的比较。

    借助我的特殊功能“路线图”,我决定使用 Mongo 在处理用户“对象”时采用更加“OOP”的风格,而无需显式定义用户类,这要归功于 Mongo 的规范化结构。我知道 MySQL 也可以这样做,只是处理json 数据对我和flask 来说更像“对象”,即user = getUserFromMongo,这给了我一个 Python 中的 dict 然后我可以做user['first_name']。下面的代码将解释这种简单性:

    (不知何故,这感觉就像......不必为 Rails 中的简单数据库交互编写 SQL 命令)

    我在 MongoDB 上的用户对象数据

    最后,关于我如何管理用户输入,我采用了 Wit.ai 的 context 概念。我不知道他们究竟是如何做到的,但context 对我来说是正在进行的对话目的类型。我像堆栈一样使用它,一旦当前上下文完成,就将其从用户的上下文数据中弹出。对于机器人收到的每条消息,程序将获取当前上下文并引导流程。每当发生未知错误(异常处理)时,很可能是因为用户说出了机器人不理解的内容,我也会清除 context 数据。

    关于 MongoDB 的好处是我可以塑造 context 但我想要并将其视为一个对象。一个简单的就像{name: yelp-search, stage:ask-for-user-location},我想复杂的也可以建立在这个结构上。当然,context 的堆栈实现不能处理具有复杂过去引用的复杂对话。

    如果你想看的话,我put my project on Github

    【讨论】:

    • 这与我最终采用的解决方案非常相似。我使用了 mySQL 而不是 mongo(只是因为我更熟悉它,并且不想在学习新东西的过程中受到干扰)。不过,MongoDB 肯定是要走的路。我也使用过人工智能,如果响应的上下文回答了一个尚未回答的问题,那么我会将其保存在用户面前。感谢您的答复。将检查您的代码:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多