ItChat与图灵机器人的结合
- 前景:
我在知乎关注一位大佬 名字叫 LittleCoder

我是在他开发ItChat包时关注的

ItChat已经完成了微信的个人账号的API接口
已经实现了实时获取用户的即时信息并自动化进行回应
后来又看到了国内的人工智能机器人团队TURING ROBOT研发的智能机器人
并提供了给开发者的详尽的API调用文档
既是说
个人账号可以通过ItChat获取即时消息 并实时通过图灵机器人的API得到反馈发送出去
再简单点就是说 使用这两者 构建了一个微信端的智能机器人
- 环境搭建
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
# coding=utf8
import requests
import itchat KEY = '填写你的key' # 请求图灵机器人并得到返回消息
def get_response(msg):
apiUrl = 'http://www.tuling123.com/openapi/api' data = {
'key': KEY,
'info': msg,
'userid': 'Joeric07'
} try:
r = requests.post(apiUrl, data=data).json()
return r.get('text')
except:
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()
以上代码将在微信群聊中 当检测到登录者被@ 且@后有信息时 返回信息
返回信息为 @发送者 信息
信息为发送者@登录者后的信息
- 结合
# coding=utf8
import requests
import itchat KEY = '在此填入key' # 请求图灵机器人并得到返回消息
def get_response(msg):
apiUrl = 'http://www.tuling123.com/openapi/api' data = {
'key': KEY,
'info': msg,
'userid': 'Joeric07'
} try:
r = requests.post(apiUrl, data=data).json()
return r.get('text')
except:
return
# 微信私聊回复
@itchat.msg_register(itchat.content.TEXT)
def tuling_reply(msg):
default_reply = 'I received: ' + msg['Text']
#调用图灵机器人
reply = get_response(msg['Text'])
return reply or default_reply # 微信群聊回复
@itchat.msg_register(itchat.content.TEXT, isGroupChat=True)
def text_reply(msg):
if msg['isAt']:
# 调用机器人
reply = get_response(msg['Text'])
itchat.send(u'@%s\u2005: %s' % (msg['ActualNickName'], reply), msg['FromUserName']) itchat.auto_login(hotReload=True)
itchat.run()
ok好了能跑了 而且响应速度还挺快 基本上秒回了
不过现阶段的缺点是 不支持表情 emoj表情会被解读成无法识别的字典形式的英文
itchat可以自动根据文件类别做出回复 应该可以本地建立一个万金油式的表情包库
在遇到无法解读的情况时 随机发送一个即可
ItChat与图灵机器人的结合的更多相关文章
- Python itchat模块的使用,利用图灵机器人进行微信消息自动回复
一.下载安装itchat模块 二.小实验:获取微信好友头像信息 这需要用itchat模块中的一个方法 itchat.get_friends()#获取微信所有微信好友信息 现在我们导入itchat,打印 ...
- python与图灵机器人交互(ITCHAT版本)
#!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/9/5 17:42import requestsimport ...
- 个人微信接入图灵机器人(基于Python)
编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号, 创建机器人, 如果只是学习的话,可以使用2免费版 , 一个账号最多可以创建5个机器人 ...
- 基于itchat定制聊天机器人
#coding=utf8import requestsimport itchat #key自己到图灵注册一个 KEY = '************************************** ...
- python与图灵机器人交互(WXPY版本)
开发者账号:wujunfeng , 开发者key:官网申请 #!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/ ...
- Python使用微信接入图灵机器人
1.wxpy库介绍 wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展. 文档地址:https://wxpy.readthedocs.io 从 PYPI 官 ...
- 【chrome插件】web版微信接入图灵机器人API实现自动回复
小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...
- 使用图灵机器人API实现聊天机器人
使用图灵机器人的API需要先注册,获取key才行,这我就不说了,自己到http://www.tuling123.com/注册一个账号即可. 下面就是一个简单的python调用API实现聊天机器人的简易 ...
- 用django实现一个微信图灵机器人
微信的post请求格式是xml,所以django需要做的就是将xml请求解析出来,把content发送到图灵机器人接口, 接口返回的json数据把主要内容给解析出来,然后重新封装成xml返回给微信客户 ...
随机推荐
- Netty、NIO、多线程
一:Netty.NIO.多线程? 时隔很久终于又更新了!之前一直迟迟未动也是因为积累不够,后面比较难下手.过年期间@李林锋hw发布了一个Netty5.0架构剖析和源码解读,看完也是收获不少.前面的文章 ...
- web前端对文件的引用规则
web前端一般常用文件 .html .css .js.但是当用css文件和html引入资源(比如图片)时,路径可能不相同.下面总结了几条. 使用相对路径引入规则: html或者js引入图片,按照htm ...
- using_where, Using temporary ,using_filesort 分享
Using filsort文档中的解释: Mysql需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配where子句的行保存排序关键字和行的指针来完成排序,然后关键 ...
- string转utf8后解决TTS识别中文的问题
今天遇到string字符编码的问题,由于遇到了用TTS将文本转语音的一个API,里面的中文必须是utf8的,我传了一个uncode编码的中文进去,就一直不能正常读出来.后来才发现是编码的问题.这里在网 ...
- cocos2d-x 3.0 经常使用对象的创建方式
cocos2d-x 3.0 中全部对象差点儿都能够用create函数来创建,其它的创建方式也是有create函数衍生. 以下来介绍下create函数创建一般对象的方法,省得开发中常常忘记啥的. 1.精 ...
- USACO 1.2 Transformations (模拟)
模拟题目,依照题目给定的要求变换图形就可以,变换的优先级依次减小. 这个题目我写的非常乱.只是最还还是勉强能够执行 /* ID:twd30651 PROG:transform LANG:C++ */ ...
- nor flash 和nand flash 傻傻分不清楚
nor flash和nand flash差别 学习嵌入式有一段时间了,刚接触nor和nand时非常是迷惑.非要逼我写一篇博客才干记清楚. 首先他们都是存储设备.统称叫做flash memory.导致他 ...
- [IOS]mac以太网连接
今天玩了一下苹果一体机.感觉还是蛮不错的,只是.就是用以太网连接的时候遇到了一点问题.用这篇文章记录一下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/ ...
- 蓝桥杯-- 历届试题 核桃的数量 (gcd)
历届试题 核桃的数量 时间限制:1.0s 内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋 ...
- Redis学习笔记(二) Redis 数据类型
Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...