- 前景:
我在知乎關注一位大佬 名字叫 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能夠自動根據文件類別作出回覆 應該能夠本地創建一個萬金油式的表情包庫
在遇到沒法解讀的狀況時 隨機發送一個便可