最近看到公司代碼平臺上有小夥伴用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,爭取以後自己做一個閒聊機器人!