Str*_*ch0 4 database chatbot node.js aws-lambda facebook-chatbot
使用Claudia JS构建Facebook messenger机器人并计划在AWS Lambda上托管.
我想问一下用户一系列问题.
当用户回答答案时,我需要保存以供日后使用,一旦我掌握了所需的所有信息,我会将答案传递给函数.
保存此信息的最佳方法是什么?
我正在考虑一些缓存层,例如redis,但因为存储在RAM中,当lamda服务器关闭时我会丢失它.Mongodb在连接时显然有很多开销,但至少会持久.
也许只是一个简单的mySQL服务器?
别人怎么做?我觉得有一个我想念的简单解决方案.
我将首先回答有关我如何做的部分:我正在使用MongoDB.我玩弄了你提到的想法,但很快就克服了内存解决方案(Memcached,Redis)的原因.我的最终解决方案归结为关系数据库或像MongoDB这样的noSQL.说实话,在我的项目规模上,我没有考虑比较DB类型之间的性能.
凭借我的特殊功能"路线图",由于Mongo的规范化结构,我决定在处理用户"对象"时使用Mongo来处理更"OOP"的风格而无需明确定义用户类.我也理解同样可以为MySQL做的,只是处理json数据对我来说更像"对象" flask,也就是说user = getUserFromMongo,这给了我一个Python的字典然后我就可以了user['first_name'].下面的代码将解释这种简单性:
(不知何故,感觉就像......不必为Rails中的简单数据库交互编写SQL命令)
最后,关于我如何管理用户输入,我采用了Wit.ai的概念context.我不知道他们是如何做到这一点的,但context对我而言,正是这种谈话目的正在进行中.我像堆栈一样使用它,并且一旦完成当前上下文,就将其从用户的上下文数据中弹出.对于机器人收到的每条消息,程序将获取当前上下文并指导流程.每当发生未知错误(异常处理)时,很可能是因为用户说的是机器人不理解的东西,我也清除了context数据.
关于MongoDB的好处是,我可以塑造context我想要的东西并将其视为一个对象.一个简单的就像{name: yelp-search, stage:ask-for-user-location},我想复杂的也可以建立在这个结构上.当然,堆栈实现context并不处理复杂的过去引用的复杂对话.
如果你想看一下,我把我的项目放在Github上.
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |