微信化身自动回复小机器人
由于微软小冰没有提供官方开放的API,而测试过图灵机器人的回复,只能说一番体验下来,小冰简直把图灵机器人完爆的麻麻都不认识了呀。。只能说还好图灵机器人唯一的好处就是和其它第三方应用的开放接口比较好,而小冰则没有开放的api接口,所以这里我们利用图灵的api和微信公众号的小冰进行结合,简单而快捷的将自己的微信号打造成一个简单的自动回复机器人,本文只是最简单的实现思路,依据这个思路和图灵开放的其它api接口,大胆进行拓展我们能做的事情还是有很多很多的哦!!!本文主要工作分为:
- 获取微信聊天内容并发送给小冰
- 获取小冰回复内容,发送给对方
1. 获取聊天消息并发送给小冰
这里对应的消息分为几类:文本消息(itchat.content.TEXT
)、图片消息(itchat.content.PICTURE
)、视频消息(itchat.content.VIDEO
)等,对于每种不同的消息处理方式是类似的,本文主要处理了文本消息和图片消息。具体的处理代码十分简单如下:
@itchat.msg_register(itchat.content.TEXT)
def get_msg(msg):
global xiaoice,who_send
xiaoice = itchat.search_mps(name='小冰')[0]['UserName']
who_send = msg['FromUserName'] #这里提取出发送人作为全局变量,在后续自动回复时需要知道消息发送方时有用
itchat.send(msg['Text'],xiaoice) #将信息发送给小冰
以上代码例子是对于个人聊天内容中关于文本信息的处理方法,通过@itchat.msg_register(itchat.content.TEXT)
注解修饰方法好,这个方法就自动注册为了对于个人聊天消息中文本信息的处理类,注意这里是对个人聊天,即你和你普通用户之间的聊天,因为对于公众号内的聊天内容需要加参数,这里本文和小冰的聊天信息就是公众号的聊天内容处理。而对于xiaoice
变量就是通过名称获取到小冰对应的系统中的UserName
,调试发现其实“小冰”是nickname
,而UserName
则是一串看不懂的字符串,并且对于自己的UserName
在针对不同的对话中,例如和表哥A聊天时自己的UserName
是一个字符串,而和堂弟B聊天时自己的UserName
则是另外一个字符串,所以如果要用这些API做其它应用拓展时需要注意这一点。
2. 获取小冰回复内容并转发
对于小冰回复的内容进行处理时,和获取内容时一样,也要区分不同的消息类型,当然消息类型和上述一样,本文这里主要处理了文本信息和图片信息,方法如下:
@itchat.msg_register(itchat.content.TEXT,isMpChat=True)
def get_ice(msg):
itchat.send(msg['Text'],who_send)
@itchat.msg_register(itchat.content.PICTURE,isMpChat=True)
def get_ice(msg):
msg.download(msg.fileName)
itchat.send_image(msg.fileName,who_send)
这里主要也是通过注解的方式将方法注册为对文本和图片信息的处理方法,其中加了isMpChat=True
参数的意思就是说这个方法是处理公众号信息的,如果不加就是处理个人信息的方法了。显然,这里在通过第一节中将信息发送给小冰之后,小冰会对我们发送的内容进行智能回复,我们这里对于小冰回复的文字内容,只需要简单的调用itchat.send(xxx,xxx)
即可。但是,对于图片内容,则需要先调用msg.download(msg.fileName)
将图片信息下载到本地,然后调用itchat.send_image(msg.fileName,who_send)
将本地的图片发送过去,因为这里关于send_image
方法的入参中只能接收图片路径,其实在msg.content
属性中存储的应该是图片的二进制内容,但是本人好像没有发现itchat.send_image()
方法中能将图片二进制作为入参的,所以只能先下载到本地,然后再通过图片名称进行发送。
至此,这里关于消息的处理已经基本搞定,其它几类未处理的方法也可以通过itchat.send_xxx
方法进行处理即可,对于每种特定方法均有一个对于的send方法,大家依据自己的需求进行处理即可,如有不清楚可以参考:https://itchat.readthedocs.io/zh/latest/。
这里需要说明的一点就是,对于启动而言,启动方法如下:
itchat.auto_login(hotReload=True)
itchat.run()
这里第一行的作用是对于第一次登录成功后,如果应用关闭,会暂存一段时间登录状态,下次再重新启动时不需要再进行扫码,最终的效果图就是自动回复,就不贴图了~依据图灵机器人的这些api,还能做得一些事情例如:http://python.jobbole.com/86532/ 这篇文章中提到的一些小工具都是有点实用性的~ 另外,今天看到一篇文章说蚂蜂窝的各种评论数据都是爬虫抄袭其它网站的,这个东西仔细想想现在这个流量就是毛爷爷的年代,爬虫赚钱的套路还是真的有很多很多哟,嗯,不得不感叹爬虫真是一个好东西,python真是一个好东西!!!
下一篇: R 集成算法② bagging