Python初探之實現機器人聊天+微信自動回覆
阿新 • • 發佈:2019-01-22
最近看到公司程式碼平臺上有小夥伴用Python實現了聊天機器人功能,一直很想學Python卻沒有開始,自己實現一下,整合聊天機器人+接入微信介面實現自動回覆。
一、圖靈機器人
1. 在圖靈機器人官網註冊一個賬號http://www.turingapi.com/#/platfrom
2. 註冊登入後點擊建立機器人,填寫基本資訊
3. 建立成功,在機器人設定介面找到APP Key,程式碼中會用。(免費版每天只能回覆5000條訊息)
二、Python實現機器人聊天功能
1. 編寫python檔案,整合圖靈機器人聊天功能。
import json import urllib.request api_url = "http://openapi.tuling123.com/openapi/api/v2" text_input = input('想問我什麼?') req = { "reqType":0,#輸入型別,0代表文字 "perception":#輸入資訊 { "inputText":#文字資訊,必須 { "text": text_input }, "selfInfo":#客戶端屬性 { "location":#地理位置資訊 { "city": "北京", "province": "北京", "street": "海淀區" } } }, "userInfo": #使用者引數 { "apiKey": "97b1e612d69a459fa7893f7712ec4a4a", "userId": "OnlyUseAlphabet" } } # 將字典格式的req編碼為utf8 req = json.dumps(req).encode('utf8') http_post = urllib.request.Request(api_url, data=req, headers={'content-type': 'application/json'}) response = urllib.request.urlopen(http_post) response_str = response.read().decode('utf8') response_dic = json.loads(response_str) intent_code = response_dic['intent']['code'] results_text = response_dic['results'][0]['values']['text'] print('小圖說:') #print('code:' + str(intent_code)) print(results_text)
各個引數的意義參考官方API文件https://www.kancloud.cn/turing/web_api/522992
2. 在cmd裡執行python檔案:python 檔案地址
3. 成功:
三、整合微信自動回覆功能
1. 首先下載微信個人號的包itchat
pip install itchat
2. 修改程式碼:#isGroupChat為false表示忽略群聊import json import urllib.request import itchat api_url = "http://openapi.tuling123.com/openapi/api/v2" def get_response(_info): req = { "reqType":0,#輸入型別,0代表文字 "perception":#輸入資訊 { "inputText":#文字資訊,必須 { "text": _info#為函式傳入的引數,即好友傳送過來的訊息 }, "selfInfo":#客戶端屬性 { "location":#地理位置資訊 { "city": "北京", "province": "北京", "street": "海淀區" } } }, "userInfo": #使用者引數 { "apiKey": "97b1e612d69a459fa7893f7712ec4a4a", "userId": "OnlyUseAlphabet" } } # 將字典格式的req編碼為utf8 req = json.dumps(req).encode('utf8') http_post = urllib.request.Request(api_url, data=req, headers={'content-type': 'application/json'}) response = urllib.request.urlopen(http_post) response_str = response.read().decode('utf8') response_dic = json.loads(response_str) return response_dic['results'][0]['values']['text'] @itchat.msg_register(itchat.content.TEXT, isGroupChat=False)#isGroupChat為false表示忽略群聊 def text_reply(msg): return get_response(msg["Text"]) if __name__ == '__main__': itchat.auto_login(hotReload=True) # hotReload = True, 保持線上,下次執行程式碼可自動登入 itchat.run()
3. 執行python檔案,會彈出二維碼,掃碼登入微信,經測試可用!
效果如圖。
注:
1. 由於公司入域限制,公司電腦是不可以呼叫圖靈機器人api的,會報連線錯誤,未入域的電腦可以。
2. 一天圖靈機器人最多回復5000條訊息,無回覆的話可能是達到上限。
四、自己訓練一個機器人
剛剛搜尋了一下機器學習實現閒聊機器人模型的資料,立一個flag,爭取以後自己做一個閒聊機器人!