1. 程式人生 > >Python初探之實現機器人聊天+微信自動回覆

Python初探之實現機器人聊天+微信自動回覆

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