ItChat與圖靈機器人的結合

  • 前景:

我在知乎關注一位大佬 名字叫 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能夠自動根據文件類別作出回覆 應該能夠本地創建一個萬金油式的表情包庫

    在遇到沒法解讀的狀況時 隨機發送一個便可

相關文章
相關標籤/搜索