机器人之微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答
小标 2019-02-14 来源 : 阅读 1276 评论 0

摘要:本文主要向大家介绍了机器人之微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答,通过具体的内容向大家展现,希望对大家学习机器人有所帮助。

本文主要向大家介绍了机器人之微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答,通过具体的内容向大家展现,希望对大家学习机器人有所帮助。


本文为微信智能回复相关python项目,通过模拟网页端微信接口,实现跟好友之间自动的回复,并接入了图灵智能库,进行相应的内容回复,同时我在本地进行了一个数据库的扩充,自行设置回复内容,优先级大于图灵 。


用Python包装Web微信协议实现的微信机器人框架。


目前的消息支持情况:



群消息


文本


图片


地理位置


个人名片


语音


动画


语音电话


红包


联系人消息


文本


图片


地理位置


个人名片


语音


小视频


动画


视频电话


红包


转账


消息发送


文本


图片


文件



Web微信协议参考资料:


挖掘微信Web版通信的全过程


微信协议简单调研笔记


qwx: WeChat Qt frontend 微信Qt前端


master-dev 分支为开发版本,用于测试新特性,欢迎使用后提出建议!


1 环境与依赖


此版本只能运行于Python 2环境 。


wxBot 用到了Python requests , pypng , Pillow 以及 pyqrcode 库。


使用之前需要所依赖的库:


pip install requests


pip install pyqrcode


pip install pypng


pip install Pillow


2 快速开发


利用 wxBot 最简单的方法就是继承WXBot类并实现 handle_msg_all 或者 schedule 函数,然后实例化子类并调用 run 方法 。


2.1 代码


以下的代码对所有来自好友的文本消息回复文本消息 hi 、图片消息 1.png 以及文件消息 1.png , 并不断向好友 tb 发送文本 schedule 。


handle_msg_all 函数用于处理收到的每条消息,而 schedule 函数可以做一些任务性的工作(例如不断向好友推送信息或者一些定时任务)。


!/usr/bin/env python


coding: utf-8


import time


from wxbot import *


class MyWXBot(WXBot):


def handle_msg_all(self, msg):


if msg['msg_type_id'] == 4 and msg['content']['type'] == 0:


self.send_msg_by_uid(u'hi', msg['user']['id'])


self.send_img_msg_by_uid("img/1.png", msg['user']['id'])


self.send_file_msg_by_uid("img/1.png", msg['user']['id'])


def schedule(self):


self.send_msg(u'tb', u'schedule')


time.sleep(1)


def main():


bot = MyWXBot()


bot.DEBUG = True


bot.run()


if name == 'main':


main()


2.2 运行


直接用 python 运行代码(如运行测试代码 test.py ):


python test.py


2.3 登录微信


程序运行之后,会在当前目录下生成二维码图片文件 qr.png 并自动打开,用微信扫描此二维码并按操作指示确认登录网页微信。


如果运行在Linux下,还可以通过设置 WXBot 对象的 conf['qr'] 为 tty 的方式直接在终端打印二维码(此方法只能在Linux终端下使用),效果如下:


3 效果展示


测试代码 test.py 的运行效果:


3 效果展示


测试代码 test.py 的运行效果:


3 效果展示


测试代码 test.py 的运行效果:


3 效果展示


测试代码 test.py 的运行效果:


3 效果展示


测试代码 test.py 的运行效果:








微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答









微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答



4 接口


4.1 handle_msg_all


handle_msg_all 函数的参数 msg 是代表一条消息的字典。字段的内容为:


字段名字段内容msg_type_id整数,消息类型,具体解释可以查看 消息类型表msg_id字符串,消息idcontent字典,消息内容,具体含有的字段请参考 消息类型表 ,一般含有 type(数据类型)与 data(数据内容)字段,type 与 data的对应关系可以参考 数据类型表user字典,消息来源,字典包含 name(发送者名称,如果是群则为群名称,如果为微信号,有备注则为备注名,否则为微信号或者群昵称)字段与 id(发送者id)字段,都是字符串


4.2 消息类型表


类型号消息类型content0初始化消息,内部数据无意义,可以忽略1自己发送的消息无意义,可以忽略2文件消息字典,包含 type 与 data 字段3群消息字典, 包含 user (字典,包含 id 与 name字段,都是字符串,表示发送此消息的群用户)与 type 、 data 字段,红包消息只有 type 字段, 文本消息还有detail、desc字段, 参考 群文本消息4联系人消息字典,包含 type 与 data 字段5公众号消息字典,包含 type 与 data 字段6特殊账号消息字典,包含 type 与 data 字段99未知账号消息无意义,可以忽略


4.3 数据类型表


type数据类型data0文本字符串,表示文本消息的具体内容1地理位置字符串,表示地理位置3图片字符串,图片数据的url,HTTP POST请求此url可以得到jpg文件格式的数据4语音字符串,语音数据的url,HTTP POST请求此url可以得到mp3文件格式的数据5名片字典,包含 nickname (昵称), alias (别名),province (省份),city (城市), gender (性别)字段6动画字符串, 动画url, HTTP POST请求此url可以得到gif文件格式的数据7分享字典,包含 type (类型),title (标题),desc (描述),url (链接),from (源网站)字段8视频不可用9视频电话不可用10撤回消息不可用11空内容空字符串12红包不可用13小视频字符串,视频数据的url,HTTP POST请求此url可以得到mp4文件格式的数据99未知类型不可用


4.4 群文本消息


由于群文本消息中可能含有@信息,因此群文本消息的 content 字典除了含有 type 与 data 字段外,还含有 detail 与 desc 字段。


各字段内容为:


字段内容type数据类型, 为0(文本)data字符串,消息内容,含有@信息desc字符串,删除了所有@信息detail数组,元素类型为含有 type 与 value 字段的字典, type 为字符串 str (表示元素为普通字符串,此时value为消息内容) 或 at (表示元素为@信息, 此时value为所@的用户名)


4.5 WXBot对象属性


WXBot 对象在登录并初始化之后,含有以下的可用数据:


属性描述contact_list当前用户的微信联系人列表group_list当前用户的微信群列表public_list当前用户关注的公众号列表special_list特殊账号列表sessionWXBot 与WEB微信服务器端交互所用的 Requests Session 对象


4.6 WXBot对象方法


WXBot 对象还含有一些可以利用的方法


方法描述get_icon(uid, gid)获取联系人或者群聊成员头像并保存到本地文件 img_[uid].jpg , uid 为用户id, gid 为群idget_head_img(id)获取用户头像并保存到本地文件 img_[id].jpg ,id 为用户id(Web微信数据)get_msg_img(msgid)获取图像消息并保存到本地文件 img_[msgid].jpg , msgid 为消息id(Web微信数据)get_voice(msgid)获取语音消息并保存到本地文件 voice_[msgid].mp3 , msgid 为消息id(Web微信数据)get_video(msgid)获取视频消息并保存到本地文件 video_[msgid].mp4 , msgid 为消息id(Web微信数据)get_contact_name(uid)获取微信id对应的名称,返回一个可能包含 remark_name (备注名), nickname (昵称), display_name (群名称)的字典send_msg_by_uid(word, dst)向好友发送消息,word 为消息字符串,dst 为好友用户id(Web微信数据)send_img_msg_by_uid(fpath, dst)向好友发送图片消息,fpath 为本地图片文件路径,dst 为好友用户id(Web微信数据)send_file_msg_by_uid(fpath, dst)向好友发送文件消息,fpath 为本地文件路径,dst 为好友用户id(Web微信数据)send_msg_by_uid(word, dst)向好友发送消息,word 为消息字符串,dst 为好友用户id(Web微信数据)send_msg(name, word, isfile)向好友发送消息,name 为好友的备注名或者好友微信号, isfile为 False 时 word 为消息,isfile 为 True 时 word 为文件路径(此时向好友发送文件里的每一行),此方法在有重名好友时会有问题,因此更推荐使用 send_msg_by_uid(word, dst)is_contact(uid)判断id为 uid 的账号是否是本帐号的好友,返回 True (是)或 False (不是)is_public(uid)判断id为 uid 的账号是否是本帐号所关注的公众号,返回 True (是)或 False (不是)


5 群聊机器人示例


bot.py 用 图灵机器人 API 以及 wxBot 实现了一个自动回复机器人.


此机器人会回复来自联系人的消息,以及群里@此账号的消息。


并且本帐号可以通过发送 退下 、 走开 、 关闭 、 关掉 、 休息 、 滚开 来关闭机器人的自动回复。


也可以通过发送 出来 、 启动 、 工作 来再次开启机器人的自动回复。


群聊时需要将对应的群保存到联系人列表。


群聊实现效果:








微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答









微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答



bot.py 的运行方法:



要接入图灵机器人API时:




在图灵机器人官网注册账号,申请图灵key: 图灵key申请地址


在 bot.py 文件所在目录下新建 conf.ini 文件,内容为:(key字段内容为申请到的图灵key)




[main]


key=1d2678900f734aa0a23734ace8aec5b1




运行 bot.py




python bot.py


不接入图灵机器人API时(此时机器人对联系人消息以及群里@自己的消息统一回复 知道了 ):




运行 bot.py




python bot.py




本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能智能机器人频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved