node-webot / webot

An easy-to-use robot for web services.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

node-webot 里各模块之间的关系

ktmud opened this issue · comments

取名 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 的命令行工具。提供:发送测试消息、初始化项目等功能(注:与微信无关)。

wechat

微信公共平台 API 的辅助工具。提供解析和打包消息的接口,不一定在 webot 使用。

weixin-robot

webot + wechat 的更高层级的包装。需要搭建微信机器人的用户可以直接使用此模块。

我感觉想的有点大,不如从小做起吧,现在webot还有很多东西可以提供,迈太大很容易扯到蛋

自动回复的路由和微信API相关的东西,至少是可以拆开来的。dashboard 和更复杂的 cli 可以先放着不做。

我觉得现在的思路不错,代码感觉思路和connect是一致的,实现也很相似,所以未来实现这种middleware方式的插件开发还是很容易的

关于自动回复的路由,实际上现在的replies, waitRulewait有点像临时替换成一套简单的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 notifications@github.com 写道:

@rogerz 想法挺好,可以搞起,欢迎提 PR


Reply to this email directly or view it on GitHub.