• 前景:

我在知乎关注一位大佬 名字叫 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

    若有安装 则会反馈版本号

    

  1. pip --version

    若没有安装 则运行如下命令

  1. $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本
  2. $ sudo python get-pip.py # 运行安装脚本

    

    3.下载安装ItChat

  1. 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

    

  1. from importlib import reload
  2. import sys
  3. reload(sys)
  4.  
  5. import requests
  6. import itchat
  7.  
  8. apiUrl = 'http://www.tuling123.com/openapi/api'
  9. data = {
  10. 'key' : 'key请手动替换',
  11. 'info' : 'hello',          # 这是我们发出去的消息
  12. 'userid' : 'wechat-robot',      # 这里你想改什么都可以
  13. }
  14. # 我们通过如下命令发送一个post请求
  15. r = requests.post(apiUrl, data=data).json()
  16.  
  17. # 让我们打印一下返回的值,看一下我们拿到了什么
  18. print(r)

    

    在idle中运行:
    

    我们向机器人机器人发送了 hello

    机器人向我们回复了 你好

    证明我们成功实现了与机器人的交流

    下一步 只需要从微信读取与发送数据就行了

    优化部分内容

    text2.py

  1. # coding=utf8
  2. import requests
  3. import itchat
  4.  
  5. KEY = '填写你的key'
  6.  
  7. # 请求图灵机器人并得到返回消息
  8. def get_response(msg):
  9. apiUrl = 'http://www.tuling123.com/openapi/api'
  10.  
  11. data = {
  12. 'key': KEY,
  13. 'info': msg,
  14. 'userid': 'Joeric07'
  15. }
  16.  
  17. try:
  18. r = requests.post(apiUrl, data=data).json()
  19. return r.get('text')
  20. except:
  21. return

    提供了一个外部接口 用户输入的信息保存为msg 一次请求将key、msg、id一同发送 得到文本回复

  • 配置微信接口

    微信有一个文件助手 用来给自己收发文件 也可以输入文字

    尝试1:我们尝试使用python来登陆自己的微信 并通过itchat来给自己的文件助手发送一条信息

    text1_send_to_filehelper.py

  1. import itchat
  2.  
  3. itchat.auto_login()
  4.  
  5. itchat.send('Hello, filehelper', toUserName='filehelper')

    第二行代码执行时 会生成一个二维码 使用手机登录微信扫描二维码 即可登录

    文件助手的id是 filehelper

    运行后 可以在手机查看到 自己已经给文件助手发送了一条消息"Hello,filehelper"

    尝试2:在微信中回复收到的消息

    text2_relpy_msg.py

  1. import itchat
  2.  
  3. @itchat.msg_register(itchat.content.TEXT)
  4. def text_reply(msg):
  5. return msg.text
  6.  
  7. itchat.auto_login()
  8. 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

  1. import itchat
  2.  
  3. @itchat.msg_register(itchat.content.TEXT, isGroupChat=True)
  4. def text_reply(msg):
  5. if msg['isAt']:
  6. reply = msg['Text']
  7. itchat.send(u'@%s\u2005 %s' % (msg['ActualNickName'], reply), msg['FromUserName'])
  8.  
  9. itchat.auto_login()
  10. itchat.run()

    以上代码将在微信群聊中 当检测到登录者被@ 且@后有信息时 返回信息

    返回信息为 @发送者 信息

    信息为发送者@登录者后的信息

  • 结合
  1. # coding=utf8
  2. import requests
  3. import itchat
  4.  
  5. KEY = '在此填入key'
  6.  
  7. # 请求图灵机器人并得到返回消息
  8. def get_response(msg):
  9. apiUrl = 'http://www.tuling123.com/openapi/api'
  10.  
  11. data = {
  12. 'key': KEY,
  13. 'info': msg,
  14. 'userid': 'Joeric07'
  15. }
  16.  
  17. try:
  18. r = requests.post(apiUrl, data=data).json()
  19. return r.get('text')
  20. except:
  21. return
  22. # 微信私聊回复
  23. @itchat.msg_register(itchat.content.TEXT)
  24. def tuling_reply(msg):
  25. default_reply = 'I received: ' + msg['Text']
  26. #调用图灵机器人
  27. reply = get_response(msg['Text'])
  28. return reply or default_reply
  29.  
  30. # 微信群聊回复
  31. @itchat.msg_register(itchat.content.TEXT, isGroupChat=True)
  32. def text_reply(msg):
  33. if msg['isAt']:
  34. # 调用机器人
  35. reply = get_response(msg['Text'])
  36. itchat.send(u'@%s\u2005: %s' % (msg['ActualNickName'], reply), msg['FromUserName'])
  37.  
  38. itchat.auto_login(hotReload=True)
  39. itchat.run()

    

    ok好了能跑了 而且响应速度还挺快 基本上秒回了

    不过现阶段的缺点是 不支持表情 emoj表情会被解读成无法识别的字典形式的英文

    itchat可以自动根据文件类别做出回复 应该可以本地建立一个万金油式的表情包库

    在遇到无法解读的情况时 随机发送一个即可

    

ItChat与图灵机器人的结合的更多相关文章

  1. Python itchat模块的使用,利用图灵机器人进行微信消息自动回复

    一.下载安装itchat模块 二.小实验:获取微信好友头像信息 这需要用itchat模块中的一个方法 itchat.get_friends()#获取微信所有微信好友信息 现在我们导入itchat,打印 ...

  2. python与图灵机器人交互(ITCHAT版本)

    #!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/9/5 17:42import requestsimport ...

  3. 个人微信接入图灵机器人(基于Python)

    编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号, 创建机器人, 如果只是学习的话,可以使用2免费版 , 一个账号最多可以创建5个机器人 ...

  4. 基于itchat定制聊天机器人

    #coding=utf8import requestsimport itchat #key自己到图灵注册一个 KEY = '************************************** ...

  5. python与图灵机器人交互(WXPY版本)

    开发者账号:wujunfeng , 开发者key:官网申请  #!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/ ...

  6. Python使用微信接入图灵机器人

    1.wxpy库介绍 wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展. 文档地址:https://wxpy.readthedocs.io 从 PYPI 官 ...

  7. 【chrome插件】web版微信接入图灵机器人API实现自动回复

    小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...

  8. 使用图灵机器人API实现聊天机器人

    使用图灵机器人的API需要先注册,获取key才行,这我就不说了,自己到http://www.tuling123.com/注册一个账号即可. 下面就是一个简单的python调用API实现聊天机器人的简易 ...

  9. 用django实现一个微信图灵机器人

    微信的post请求格式是xml,所以django需要做的就是将xml请求解析出来,把content发送到图灵机器人接口, 接口返回的json数据把主要内容给解析出来,然后重新封装成xml返回给微信客户 ...

随机推荐

  1. CSS 居中【整合】

    <center> text-align:center 在父容器里水平居中 inline 文字,或 inline 元素 vertical-align:middle 垂直居中 inline 文 ...

  2. Linux下常用函数-字符串函数

    inux下常用函数-字符串函数 atof(将字符串转换成浮点型数)  相关函数   atoi,atol,strtod,strtol,strtoul 表头文件   #include <stdlib ...

  3. 【codeforces 719E】Sasha and Array

    [题目链接]:http://codeforces.com/contest/719/problem/E [题意] 给你一个数列,有两种操作1 l r x 给[l,r]区间上的数加上x, 2 l r 询问 ...

  4. 使用Struts2和jQuery EasyUI实现简单CRUD系统(五)——jsp,json,EasyUI的结合

    这部分比較复杂,之前看过自己的同学开发一个选课系统的时候用到了JSON,可是一直不知道有什么用.写东西也没用到.所以没去学他.然后如今以这样的怀着好奇心,这是做什么用的,这是怎么用的.这是怎么结合的心 ...

  5. Android App 内存泄露之Thread

    Thread 内存泄露 线程也是造成内存泄露的一个重要的源头.线程产生内存泄露的主要原因在于线程生命周期的不可控. 1.看一下以下是否存在问题 <span style="white-s ...

  6. HDOJ 题目3518 Boring counting(后缀数组,求不重叠反复次数最少为2的子串种类数)

    Boring counting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. EM无法登录,提示ORA-28001: the password has expired (DBD ERROR: OCISessionBegin)

    --查看数据库目前的口令期限 sys@TESTDB11>select * from dba_profiles where profile = 'DEFAULT' and resource_nam ...

  8. [jzoj 5664] [GDOI2018Day1模拟4.6] 凫趋雀跃 解题报告(容斥原理)

    interlinkage: https://jzoj.net/senior/#contest/show/2703/3 description: solution: 考虑容斥原理,枚举不合法的走的步数 ...

  9. 关于HTML与CSS与class

    在web前端开发中接触的一直是html.css.javascript. 在这个过程中,经常使用的是html中的span.div元素以及css的选择器. 为了方便查找在这里将这些内容的基础知识记录下来. ...

  10. java实现sql批量插入参数

    背景: 需要更新一些不规范的时间格式,如将某个时间格式化为yy-MM-dd,实际上为 yy-MM-dd hh:mm:ss,并且需要提供回滚脚本. 例如:规范化时间的脚本如下: ,) WHERE tes ...