V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ktmud
V2EX  ›  微信

搞了个微信机器人,求大家调戏!可以查天气,可以成语接龙……

  •  
  •   ktmud · 2012-11-26 23:11:37 +08:00 · 18830 次点击
    这是一个创建于 4161 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用微信公众平台的开放信息接口,用 nodejs 搞了个自动回复的机器人。主要功能部分做成了 npm 模块,回复规则可以自定义。

    源码放在了 github 上:
    https://github.com/ktmud/weixin-robot

    目前维护的是豆瓣同城的官方微信:douban-event ,可以直接发送位置查找附近活动。




    另外还蛋疼地做了一些额外功能,比如查天气和成语接龙:




    然后因为自定义回复很简单,所以还写了很多自动回复的对话:



    当机器人的感觉真的很好玩啊……

    求大家前往调教,以便正式推广前,它能回答的问题能更多一些~
    41 条回复    1970-01-01 08:00:00 +08:00
    wyx
        1
    wyx  
       2012-11-26 23:49:31 +08:00
    嘿,请问他回复的信息是怎么产生的呢?
    ktmud
        2
    ktmud  
    OP
       2012-11-26 23:56:19 +08:00
    @wyx 人工编辑的…… =。=

    不涉及任何人工智能,全部是正则表达式指定的死规则。优点是写起来很方便,缺点当然是不够高级…… 不过因为加了“操作等待模式”,所以基本的对话需求都可以通过自定义回复程序来满足。
    wyx
        3
    wyx  
       2012-11-27 00:02:32 +08:00
    还是不懂你什么意思,不然我问 你知道我是谁么? 它能给出回复么? 我没看你们的代码,不过我建议专门把这部分抽象出来,以后好进一步开发
    vilic
        4
    vilic  
       2012-11-27 00:11:10 +08:00
    哈哈, 好久不见, 居然在这里碰倒了.
    money
        5
    money  
       2012-11-27 00:13:44 +08:00
    感觉很好玩,好想学
    manhere
        6
    manhere  
       2012-11-27 00:42:21 +08:00
    加入AIML就更好玩了
    passluo
        7
    passluo  
       2012-11-27 00:46:44 +08:00
    顶楼主
    imom0
        8
    imom0  
       2012-11-27 00:53:31 +08:00
    已调戏。
    发送位置返回附近活动挺赞的。
    ktmud
        9
    ktmud  
    OP
       2012-11-27 09:41:23 +08:00
    @wyx 就是属于穷举法,把用户可能发送的消息都列出来,然后人工编辑回复。。。 很低级的

    https://github.com/ktmud/weixin-robot/tree/master/examples/dialogs
    ktmud
        10
    ktmud  
    OP
       2012-11-27 09:45:44 +08:00
    @manhere =.= 其实我没听说过这个,回头研究一下!
    bullda
        11
    bullda  
       2012-11-27 10:58:11 +08:00
    怎么和某个微信帐号关联?求一个更详细一点的README。
    blank_dlh
        12
    blank_dlh  
       2012-11-27 11:01:35 +08:00
    前段时间也搞了个查天气的 支持输入名称和发送地理位置 感觉比较坑爹没敢发出来- -
    ktmud
        13
    ktmud  
    OP
       2012-11-27 11:12:44 +08:00
    @blank_dlh 好吧。。。我脸皮比较厚,呵呵呵
    blank_dlh
        14
    blank_dlh  
       2012-11-27 11:37:50 +08:00
    @ktmud 嘿嘿 你这个好多了啊-- 我那个纯属闲的蛋疼
    eallern
        15
    eallern  
       2012-11-27 12:48:58 +08:00
    楼主啊,你这功能还不如 微信里的哆啦A梦好玩 在微信里,ID 是:dlam888

    回复很有意思。。。。。大家也可以去玩玩看。。
    Tiny
        16
    Tiny  
       2012-11-27 14:47:39 +08:00
    兄弟 原来你在这里~
    thisisvoa
        17
    thisisvoa  
       2012-11-27 20:06:58 +08:00
    是不是用node js 实现的
    liuyl
        18
    liuyl  
       2012-11-29 17:53:04 +08:00
    fromUser和toUser,都是不可读的格式么?没办法搞成明文?
    nodexy
        19
    nodexy  
       2012-11-29 18:54:11 +08:00
    有学习能力么? 这个很关键啊
    ktmud
        20
    ktmud  
    OP
       2012-11-29 23:14:23 +08:00
    @liuyl 没办法吧,微信的策略,我也不知道是不是因为要保密还是怎样……
    ktmud
        21
    ktmud  
    OP
       2012-11-29 23:15:53 +08:00
    @nodexy 可以另外写一个模块做这种事,现有的只是一个单纯的回复系统,也想保持这种单纯
    liuyl
        22
    liuyl  
       2012-11-30 09:15:41 +08:00
    @ktmud 估计是不想让公众账号直接发消息给私人账号?那设置一下权限就好了。搞成这样挺不方便的
    nasa
        23
    nasa  
       2012-12-01 15:55:16 +08:00
    多谢 正在学习你的源码 :)
    anyforever
        24
    anyforever  
       2012-12-04 19:51:13 +08:00
    挺喜欢这个开源产品的,可以学习一下了。可是node.js还没装上呢,config的时候总是提示某句话语法错误 -_-|||

    源码还不太明白怎么用,希望有更详细点的文档,怎么二次开发之类的。就更好了。
    ktmud
        25
    ktmud  
    OP
       2012-12-06 14:12:52 +08:00
    @anyforever github 上的源码更新了一下,给 examples/ 添加了一点注释,你可以再看看
    anyforever
        26
    anyforever  
       2012-12-06 19:26:35 +08:00
    @ktmud 谢谢,我去看一下
    plan9
        27
    plan9  
       2012-12-06 23:30:19 +08:00
    为什么我登录不了微信公众平台
    没有遇到跟我一样问题的人么
    nasa
        28
    nasa  
       2012-12-11 09:56:07 +08:00
    @ktmud 谢谢更新了注释。
    heloo
        29
    heloo  
       2012-12-11 12:08:12 +08:00
    很有意思, 可以先简单分词一下, 在做匹配
    nasa
        30
    nasa  
       2012-12-12 13:47:45 +08:00
    @ktmud 非常感谢更新了搜索的例子。
    zhangkai_ch
        31
    zhangkai_ch  
       2012-12-31 10:33:40 +08:00
    学习一下。
    wzxjohn
        32
    wzxjohn  
       2013-01-01 17:53:51 +08:00
    @ktmud 为什么我想运行的时候总是提示我
    module.js:340
    throw err;
    ^
    Error: Cannot find module 'debug'
    我已经安装了debug模块啊纠结。。。
    ktmud
        33
    ktmud  
    OP
       2013-01-05 22:32:56 +08:00
    @wzxjohn 你是在哪儿运行?有试过执行 `npm install` 么?
    wzxjohn
        34
    wzxjohn  
       2013-01-05 23:00:16 +08:00
    @ktmud 自己的VPS。试过了,木有用。。。还是提示
    module.js:340
    throw err;
    ^
    Error: Cannot find module 'debug'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/root/lib/robot.js:1:75)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    ktmud
        35
    ktmud  
    OP
       2013-01-06 00:03:19 +08:00
    @wzxjohn 你是把这个作为一个 npm 模块在你自己的代码里跑,还是直接在 weixin-robot 的根目录下 npm start 跑的示例?无论如何,请确认你的 package.json 的 dependencies 里面有 debug 模块
    wzxjohn
        36
    wzxjohn  
       2013-01-06 01:15:50 +08:00
    @ktmud 直接在根目录下跑的。话说这个能放到AppFog上跑么?
    我直接把Git上的源码Clone下来npm install 然后npm start,提示我:
    sh: 1: supervisor: not found
    npm ERR! [email protected] start: `supervisor --debug examples/app.js`
    npm ERR! `sh "-c" "supervisor --debug examples/app.js"` failed with 127
    npm ERR!
    npm ERR! Failed at the [email protected] start script.
    npm ERR! This is most likely a problem with the weixin-robot package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR! supervisor --debug examples/app.js
    npm ERR! You can get their info via:
    npm ERR! npm owner ls weixin-robot
    npm ERR! There is likely additional logging output above.

    npm ERR! System Linux 3.2.0-29-generic-pae
    npm ERR! command "nodejs" "/usr/bin/npm" "start"
    npm ERR! cwd /root/weixin-robot
    npm ERR! node -v v0.8.16
    npm ERR! npm -v 1.1.69
    npm ERR! code ELIFECYCLE
    npm ERR!
    npm ERR! Additional logging details can be found in:
    npm ERR! /root/weixin-robot/npm-debug.log
    npm ERR! not ok code 0
    ktmud
        37
    ktmud  
    OP
       2013-01-07 12:03:23 +08:00
    @wzxjohn 你应该总是使用自己的项目目录 https://github.com/ktmud/weixin-robot/wiki/Usage
    wzxjohn
        38
    wzxjohn  
       2013-01-09 00:42:54 +08:00
    @ktmud 试了各种方法。。。怎么弄都不行。。。。。。。。。跪了。。。
    wzxjohn
        39
    wzxjohn  
       2013-01-09 00:46:18 +08:00
    @ktmud 我勒个去。。。这次居然成功了。。。直接git clone,npm install,npm start就好了。。。
    ry_wang
        40
    ry_wang  
       2013-08-15 10:12:28 +08:00
    @ktmud 请问这种功能是必须要微信公众服务号么? 订阅号可以进行这个操作么?谢谢。
    ktmud
        41
    ktmud  
    OP
       2013-08-19 22:30:02 +08:00
    @ry_wang 这个功能可以用的时候还没有订阅号和服务号的区别
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1104 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 18:47 · PVG 02:47 · LAX 11:47 · JFK 14:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.