专栏名称: 给产品经理讲技术
为互联网产品经理普及技术基础知识
目录
相关文章推荐
产品犬舍  ·  给年轻人看的互联网行业中年人求生指南 ·  昨天  
刘言飞语  ·  DeepSeek 小传:制造了 AI ... ·  20 小时前  
人人都是产品经理  ·  商业下半场,情绪价值才是破局关键 ·  昨天  
51好读  ›  专栏  ›  给产品经理讲技术

如何做一个QQ聊天机器人

给产品经理讲技术  · 公众号  · 产品  · 2017-03-02 09:16

正文

记得上学的时候,学校bbs上有个帖子很火,我一说估计在读的校友们都知道。大意是有个女生发帖问一帮程序员,说她准备出100块,能不能做一个能在淘宝自动回答问题的客服机器人出来。底下的程序员瞬间炸了锅,要知道在那个年代,人工智能远没有像现在这么火,很多人第一时间想到了分词、自然语言处理等等高精尖技术,又看到人家只出100块,顿时感觉自尊心受到了伤害。后面发生的事情就不提了,只能说惹怒了一群程序员,后果要多严重有多严重。

果果今天想到这个题目,也不是偶然。前几天过年,收到很多人的群发拜年消息,不回不好意思,回又嫌打字麻烦,复制粘贴又没诚意,如果可以弄个聊天机器人出来,自动回复,还能和对方聊两句,那就太棒了。

发散了想,其实很多人都需要这个。举个例子,女神如果有个聊天机器人,就再也不用“嗯,啊,呵呵,洗澡去了”来应付备胎了,如果能多聊几句,必能极大的提升做备胎的体验,对双方都有好处。

回到正题,你觉得应该如何做一个QQ聊天机器人呢?是不是也要用到分词、自然语言处理等核心科技呢?今天我把大体思路说一下,限于篇幅,大家如果感兴趣的话,后面的文章可以展开分析。

程序员拿到需求,首先会把问题拆开来看。第一步,就是要注册一个作为聊天机器人的QQ号,然后取个名字。当然这一步可以交给产品经理来做,毕竟存在感是个好东西,但不是人人都有,嘿嘿。第二步,就是能做到让程序登录机器人的QQ号。通俗点,用程序来提交机器人的账号密码,取得后台服务器的信任。这是基础,也是比较难的一步。第三步,就是能收发QQ的消息,不然怎么聊天呢。第四步,就是聊天的时候,如果能智能一点就好了,如果只是简单的一问一答,玩起来也没意思。

你看,我们写了一个程序,能登陆QQ,能收发消息,不就是一个极简版的QQ客户端么,和PC QQ、安卓QQ、iPhone QQ也没啥区别嘛。只不过,别人的客户端给用户用,我们的客户端是给机器用的。作为非官方的客户端,需要解决的第一个问题,就是如何取得后台服务器的信任,如何与后台服务器通信的问题。

对,就是伪造协议。QQ的后台服务器不信任我们,但是总信任他们自己人吧。我们的方法就是,先截获正规军与服务器之间的通信,然后自己也装模作样的拿同样的数据去请求,理论上来讲,服务器应该不会拒绝我们的,毕竟我们也是有正儿八经的QQ账号密码的。说起来简单,实际上,你可以截获PC QQ、手机QQ客户端的通信数据,但你肯定不知道是什么格式的(毕竟大厂)。不过,果果告诉你,有一个smart QQ,基于Web的,走http协议,一来一回,尽收眼底。所以,你要做的就是,登录smart QQ,然后打开chrome的dev tools,切到network那个选项卡,然后登录,收发消息,看看它和服务器是用什么格式的数据通信,然后自己写代码模拟整个过程重放一遍。一个能收发消息的机器人,就八九不离十了。


在整个过程中,你会发现很多过去讲过的知识用上了。举两个例子,一个是用smartQQ登录你的机器人账号的时候,回要求你用手机扫描一个二维码,然后点击确认,才能通过验证。这其实就是我们之前讲过的OAuth认证的一个流程。用户委托第三方去访问自己的隐私信息,必须要经过用户的亲自授权,想不起来的同学可以复习一下。( 如何抱上微信的大腿?——说说授权登录的那些事儿


还有一个,QQ是即时通讯软件。什么是即时通讯?就是别人发给你的消息,你能立马收到,请问Web端的SmartQQ,使用http协议,一问一答,只有问才有答,如何保证及时性?话说起来,Web端实现即时推送的手段,有不少,什么WbSocket、轮询、长轮询,都讲过的哦。这里SmartQQ协议采用长轮询的机制。







请到「今天看啥」查看全文