使用 NodeJS 实现的微信公众平台机器人
发布于 2年前 作者 ktmud 10634 次浏览

微信公共帐号 是个很好玩的东西,因为他们最近开放了自动回复消息的接口,所以就更好玩了……

因为别的语言不会写,就用 JavaScript 写了个自动回复的小脚本,后来想让他变得更智能,就慢慢扩展成了这样一个还算方便使用的机器人……

代码公开在:https://github.com/ktmud/weixin-robot

不涉及任何算法和人工智能,也不需要数据库,只是一个单纯地类似于 url 路由的东西,只不过这里的 “url” 是用户说的话而已。

理论上来说,这东西可以并不只服务于微信,只要约定好消息来往的格式,也可以很方便地搭建起一个可以自动回复的客服系统。因为它是因微信公众平台而生的,故姑且还是叫 weixin-robot 。

大家可以尝试用微信关注“豆瓣同城”公共帐号试一下效果: enter image description here

22 回复

前些天还想自己搞一个呢~看来又可以偷懒啦!顶一下

非常开心找到这样有用的东西 我是一个node的纯新手 想使用您的这个程序
安装npm i weixin-robot后 我需要怎样做 让他监听我的80呢? node \node_modules\weixin-robot\examples\app.js? 实在抱歉提这样的问题 纯新手 请谅解。(网吧技术员 刚接触编程) modules已安装 用app.js可以成功收取发送

修改 examples/app.js 倒数第三行设定的 port 为 80 端口即可,比较建议用 nginx 或者 apache 做一层 proxy…

感谢您对我的帮助 问下跟程序无关的~~ 80已经更改 token 我更改为自己的 或者不更改 都无法再公众平台进行验证成功 我向腾讯的URL是带有端口号的 不知道会不会因此产生影响 导致无法token验证成功 我的外网IP 80被封掉了 期望得到您的回答。

已经通过域名转发的方式搞定了 通讯问题
使用内网机器3000映射到了服务器3000上 然后服务器绑定根域名 A记录 wx1.superjue.net 通过隐藏域名转发到www.superjue.net:3000上 本地webot可以连接上 但是无论输入什么只能回复‘ 听不懂你说什么’ 即error 400 但是公众平台始终无法token认证

恩,我听说现在确实只支持80端口……

本地webot可以连接上 但是无论输入什么只能回复‘ 听不懂你说什么’ 即error 400 但是公众平台始终无法token认证

windoes环境下

通过域名隐藏转发 把非80端口转成了80端口 在公众平台验证的时候 通过本地抓包获取到腾讯向我非80端口发送: name=%E5%BC%A0%E5%8B%89&mobile=186065XXXXX&email=zhengzha1234%40hotmail.com&url=http%3A%2F%2Fwx1.superjue.net&token=XXXXX&ajax=1

手动测试到返回为 { "r": 403, "msg": "Where is your key?" }

issues 可以到 github 上去提,论坛这边不便回复

你本地抓的…… 是编辑后台点保存时,腾讯向他们服务器提交的信息吧…… =。=

微信服务器发给你的请求应该是这种格式的:

"GET /?signature=29d1a5e85dcdafcb6bd660c55ee6f6f81afa&echostr=5814915060441739089&timestamp=1353903953&nonce=1353890419 HTTP/1.0"

最新版本欢迎大家试试

已经上传。地址:http://myzhbit.cloudfoundry.com/ 一直无法验证Token。 代理部分改为 //微信后台只允许 80 端口,你可能需要自己做一层 proxy //app.listen(3000, '127.0.0.1’, function(){ //log(“WeBot Start… God bless love…”); //}); app.listen(80); if(!process.env.DEBUG){ console.log("use SET DEBUG=webot.* to got debug info. current env is: %s ", process.env.DEBUG); } 还是不行。。。请问要怎么设置代理?

关注一个,前段时间也做了个自动回复小机器人,比你这个简陋很多,你这个给我很多启发,顶

如何实现 s+内容 发布到指定微博?

欢迎加入一起开发

@jovelang cloundfoundry默认自动变为80端口的。你先看下日志,有没有启动成功先

这个类库只是帮你分析到有收到 s+内容 这个消息进来, 后面的处理你可以自己在process里面连接微博然后发送, 具体看微博的api或者github上的那个第三方nodejs类库

运行vmc push 发生了以下错误: Uploading app_name… FAILED Upload failed. Try again with 'vmc push’. TypeError: can’t convert nil into String For more information, see ~/.vmc/crash

你是如何上传的?vmc版本多少?谢谢

@jaffwu 我最近一次用是vmc 0.4.7,你试着把manifest.yml删掉,再push吧

@ktmud 大神能否出个发布再BAE的教程呢,BAE现在也支持node.js了。

不知道楼主实现微信支付了吗

微信支付算是另外一个单独的事情了

目前一些基本的API可以试下用这个:https://github.com/ktmud/wechat-api

回到顶部