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