- 前景:
我在知乎关注一位大佬 名字叫 LittleCoderpython
我是在他开发ItChat包时关注的json
ItChat已经完成了微信的我的帐号的API接口bootstrap
已经实现了实时获取用户的即时信息并自动化进行回应api
后来又看到了国内的人工智能机器人团队TURING ROBOT研发的智能机器人微信
并提供了给开发者的详尽的API调用文档curl
既是说工具
我的帐号能够经过ItChat获取即时消息 并实时经过图灵机器人的API获得反馈发送出去post
再简单点就是说 使用这二者 构建了一个微信端的智能机器人测试
- 环境搭建
0.首先须要一个我的的微信号、有网的电脑、手机优化
1.下载安装Python
这里推荐一个发行版的Python 而且全平台支持
下载地址:https://www.anaconda.com/download
截至目前 该发行版已经支持了Python3.7 同时也提供2.7版本
在终端中输入 python 查看当前python是否安装成功 有图下反馈 便是成功安装(版本号无所谓)
2.下载安装pip
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能
在终端中输入以下命令来判断是否有安装pip
如有安装 则会反馈版本号
pip --version
若没有安装 则运行以下命令
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 $ sudo python get-pip.py # 运行安装脚本
3.下载安装ItChat
pip install itchat
若pip与Python安装没有错误 itchat应该很顺利的就下载安装完毕了
4.获取图灵机器人
在图灵机器人官网 http://www.tuling123.com 注册帐号
随便填写就行了
在以下界面 获得每个机器人的专属Key 相似于机器人的身份证
如图:
在人物设置中 根据我的状况设置机器人的属性
- 配置机器人
在图灵机器人的接入API文档中获得相关信息
https://www.kancloud.cn/turing/www-tuling123-com/718227
经过分析 获得他的使用方法:
首先向API发送你的三个信息:你的机器人KEY、向机器人发送的信息、用户标识。
将这三个信息打包成一个Post请求发送
就能够获得机器人的回复
测试代码:
text1.py
from importlib import reload import sys reload(sys) import requests import itchat apiUrl = 'http://www.tuling123.com/openapi/api' data = { 'key' : 'key请手动替换', 'info' : 'hello', # 这是咱们发出去的消息 'userid' : 'wechat-robot', # 这里你想改什么均可以 } # 咱们经过以下命令发送一个post请求 r = requests.post(apiUrl, data=data).json() # 让咱们打印一下返回的值,看一下咱们拿到了什么 print(r)
在idle中运行:
咱们向机器人机器人发送了 hello
机器人向咱们回复了 你好
证实咱们成功实现了与机器人的交流
下一步 只须要从微信读取与发送数据就好了
优化部份内容
text2.py
1 # coding=utf8 2 import requests 3 import itchat 4 5 KEY = '填写你的key' 6 7 8 # 请求图灵机器人并获得返回消息 9 def get_response(msg): 10 apiUrl = 'http://www.tuling123.com/openapi/api' 11 12 data = { 13 'key': KEY, 14 'info': msg, 15 'userid': 'Joeric07' 16 } 17 18 try: 19 r = requests.post(apiUrl, data=data).json() 20 return r.get('text') 21 except: 22 return
提供了一个外部接口 用户输入的信息保存为msg 一次请求将key、msg、id一同发送 获得文本回复
- 配置微信接口
微信有一个文件助手 用来给本身收发文件 也能够输入文字
尝试1:咱们尝试使用python来登录本身的微信 并经过itchat来给本身的文件助手发送一条信息
text1_send_to_filehelper.py
import itchat itchat.auto_login() itchat.send('Hello, filehelper', toUserName='filehelper')
第二行代码执行时 会生成一个二维码 使用手机登陆微信扫描二维码 便可登陆
文件助手的id是 filehelper
运行后 能够在手机查看到 本身已经给文件助手发送了一条消息"Hello,filehelper"
尝试2:在微信中回复收到的消息
text2_relpy_msg.py
import itchat @itchat.msg_register(itchat.content.TEXT) def text_reply(msg): return msg.text itchat.auto_login() itchat.run()
以上代码将登陆者的微信收到的私聊消息原封不动的返回发送回去
使用修饰器将text_reply(msg)做为参数给itchat.msg_register(itchat.content.TEXT)
即至关于itchat.msg_register(itchat.content.TEXT(text_reply(msg)))
尝试3:在微信群聊中回复被@的信息
text3_reply_@msg.py
import itchat @itchat.msg_register(itchat.content.TEXT, isGroupChat=True) def text_reply(msg): if msg['isAt']: reply = msg['Text'] itchat.send(u'@%s\u2005 %s' % (msg['ActualNickName'], reply), msg['FromUserName']) itchat.auto_login() itchat.run()
以上代码将在微信群聊中 当检测到登陆者被@ 且@后有信息时 返回信息
返回信息为 @发送者 信息
信息为发送者@登陆者后的信息
- 结合
1 # coding=utf8 2 import requests 3 import itchat 4 5 KEY = '在此填入key' 6 7 8 # 请求图灵机器人并获得返回消息 9 def get_response(msg): 10 apiUrl = 'http://www.tuling123.com/openapi/api' 11 12 data = { 13 'key': KEY, 14 'info': msg, 15 'userid': 'Joeric07' 16 } 17 18 try: 19 r = requests.post(apiUrl, data=data).json() 20 return r.get('text') 21 except: 22 return 23 # 微信私聊回复 24 @itchat.msg_register(itchat.content.TEXT) 25 def tuling_reply(msg): 26 default_reply = 'I received: ' + msg['Text'] 27 #调用图灵机器人 28 reply = get_response(msg['Text']) 29 return reply or default_reply 30 31 # 微信群聊回复 32 @itchat.msg_register(itchat.content.TEXT, isGroupChat=True) 33 def text_reply(msg): 34 if msg['isAt']: 35 # 调用机器人 36 reply = get_response(msg['Text']) 37 itchat.send(u'@%s\u2005: %s' % (msg['ActualNickName'], reply), msg['FromUserName']) 38 39 itchat.auto_login(hotReload=True) 40 itchat.run()
ok好了能跑了 并且响应速度还挺快 基本上秒回了
不过现阶段的缺点是 不支持表情 emoj表情会被解读成没法识别的字典形式的英文
itchat能够自动根据文件类别作出回复 应该能够本地创建一个万金油式的表情包库
在遇到没法解读的状况时 随机发送一个便可