node-webot 里各模块之间的关系
取名 webot 使其不光包含 wechat robot, weixin robot 之意,还可以代表 web robot 。
webot
webot 是定位于 web 服务的机器人。虽然诞生与微信有关,但最终应该变得与微信无关。即,如果将来 Line 或者别的什么聊天工具也开放了自己的 API ,我们只需提供一些工具,即可将这些 API转化成 webot 能接受的请求。甚至,我们还可以在自己的网页端应用里与 webot 通信,方便地在页面中直接嵌入机器人客服。
webot 的核心功能是提供方便易用的定义回复规则的API (AIML实在太反人类了),并且负责管理 session 。
对微信的支持,应该通过插件机制,而不是耦合在代码里。
webot-dashboard
webot 的管理后台
webot-cli
webot 的命令行工具。提供:发送测试消息、初始化项目等功能(注:与微信无关)。
微信公共平台 API 的辅助工具。提供解析和打包消息的接口,不一定在 webot 使用。
weixin-robot
webot + wechat 的更高层级的包装。需要搭建微信机器人的用户可以直接使用此模块。
我感觉想的有点大,不如从小做起吧,现在webot还有很多东西可以提供,迈太大很容易扯到蛋
自动回复的路由和微信API相关的东西,至少是可以拆开来的。dashboard 和更复杂的 cli 可以先放着不做。
我觉得现在的思路不错,代码感觉思路和connect是一致的,实现也很相似,所以未来实现这种middleware方式的插件开发还是很容易的
关于自动回复的路由,实际上现在的replies, waitRule和wait有点像临时替换成一套简单的rules,退出后恢复原来的rule set。
我在想能不能采用更加模块化的设计方式,以rule set为单位。可以切换、回退。
- menu
- guess number
- search
- guess number
- rules for guess number
- search rule set
- rules for search
初始化
webot.mode('menu')
切换模式
webot.mode('guess number');
退出当前模式,回到上一个模式
webot.mode('..')
这种方式下,各种模式是可以单独发布,灵活加载的,可以以通用的方式处理wait rule和replies。
@rogerz 想法挺好,可以搞起,欢迎提 PR
我在wechat底层提供了list,差不多也是这个思路。webot中可以考虑如何使用更灵活。
在 2013-10-21,下午6:33,Jesse Yang [email protected] 写道:
@rogerz 想法挺好,可以搞起,欢迎提 PR
— Reply to this email directly or view it on GitHub.