Python30行代码实现微信聊天机器人(基于WXPY+百度理解与交互技术UNIT)
引言:
前幾天看到新聞說一個程序員開發了微信聊天機器人陪女朋友聊天,感覺有興趣,之前聽說過WXPY,由于本人Python真的很菜,一直沒有動手,受新聞啟發開發了一個簡單的基于Python微信機器人。有接口開發基礎的可以直接粘我的代碼,首先要注冊一個百度云賬號(不是那個百度云,是百度云計算)。如果沒有相關知識,我把步驟放在下面。
先上最終版的代碼(百度對話系統版):
# encoding:utf-8 import requests import json import random from wxpy import *def getBaiDuAK():# client_id 為官網獲取的AK, client_secret 為官網獲取的SKhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=這是你百度AK&client_secret=這是你的SK'r = requests.get(host)return r.json()['access_token']def baiduApi(text):global access_tokenurl = 'https://aip.baidubce.com/rpc/2.0/unit/bot/chat?access_token=' + access_tokenquery = text#下面的log_id在真實應用中要自己生成,可是遞增的數字log_id ='7758521'#下面的user_id在真實應用中要是自己業務中的真實用戶id、設備號、ip地址等,方便在日志分析中分析定位問題user_id='222333'#下面要替換成自己的bot_id,是你的技能ID!!bot_id='60795'post_data = '{\"bot_session\":\"\",\"log_id\":\"'+log_id+'\",\"request\":{\"bernard_level\":1,\"client_session\":\"{\\\"client_results\\\":\\\"\\\", \\\"candidate_options\\\":[]}\",\"query\":\"' + query + '\",\"query_info\":{\"asr_candidates\":[],\"source\":\"KEYBOARD\",\"type\":\"TEXT\"},\"updates\":\"\",\"user_id\":\"'+user_id+'\"},\"bot_id\":'+bot_id+',\"version\":\"2.0\"}'print (json.loads(post_data))headers = {'Content-Type':'application/json'}r = requests.post(url, data=post_data.encode('utf-8'),headers=headers)print ()return r.json()['result']['response']['action_list'][random.randint(0,2)]['say']global access_token #在使用前初次聲明 access_token =getBaiDuAK() bot = Bot(cache_path=True)#登錄緩存 #bot.file_helper.send('[奸笑][奸笑]') print('欣欣AI已經啟動')@bot.register() def forward_message(msg):print('[接收]'+str(msg))if (msg.type!='Text'):ret = '[奸笑][奸笑]'else:ret = baiduApi(msg.text)print('[發送]'+str(ret))return retembed()思路:
要開發微信聊天機器人bot我們需要能夠獲取到微信好友的消息并且自動回復,這些能夠通過WXPY輕松實現。但是如何做到處理好友發來的消息確實是個頭疼的問題,需要有自己的語料庫。WXPY中原生支持了圖靈機器人的調用方式,真的很簡單,只要注冊后獲取Key就可以通過預置的函數調用接口。一會我會把這個方式的源碼也附在下面,因為真的很簡單,而且網上博客基本上都是這么寫的,但是這種方法真的好坑,因為圖靈機器人收費了一天只能免費用4條,想繼續用就要手持身份證拍照上傳(裸貸噢?)。于是我就開始找大廠的語料庫(其實大部分都收費),終于找到了百度的Unit對話系統暫時免費。
WXPy開發:
本人使用了3.7.3的Python版本,首先引入WXPy包?wxpy官網
命令:pip install wxpy
? ? 該包的原理就是模擬微信網頁版登陸,爬取對應的信息進行處理。各種基本操作就不贅述了,官網寫的很詳細了,注意的是一定要用微信小號開發,否則當同時處理過多消息時判定為機器人,可能會導致微信無法登陸微信網頁版(新注冊的微信號不能使用微信網頁版)。圖靈機器人真的很坑,只有前幾條好使,不充錢或者認證,剩下的就會說“換個話題吧”。
圖靈機器人版代碼如下:
from wxpy import * bot = Bot(cache_path=True) # 搜索名稱含有 "啟夢項目組" 的群組 my_friend = bot.groups().search('啟夢項目組')[0] tuling = Tuling('你的圖靈AK') #my_friend = bot.friends() # 發送文本給好友 my_friend.send('Hello WeChat!') # 打印來自其他好友、群聊和公眾號的消息 @bot.register() def print_others(msg):print(msg)# 回復 my_friend 的消息 (優先匹配后注冊的函數!) @bot.register(my_friend) def tuling_reply(msg):tuling.do_reply(msg) embed()百度Unit對話系統:
鏈接:理解與交互技術UNIT
技能對話API文檔:http://ai.baidu.com/docs#/UNIT-v2-API/top
首先進入鏈接:http://ai.baidu.com/unit/home,點擊進入控制臺,選擇我的技能,添加一個閑聊技能(這個Unit系統其實不是這么用的,這個閑聊功能只時很小的一個模塊,他主要時用來訓練自己的語料庫模型和制作對話機器人的)。將技能Id填入開篇代碼的Bot_Id中
在百度云控制臺中找到,理解與交互技術UNIT,開通后獲取AK和SK,將AK和SK填入開篇的代碼中,這樣一個聊天機器人就大功告成了。
?
總結
以上是生活随笔為你收集整理的Python30行代码实现微信聊天机器人(基于WXPY+百度理解与交互技术UNIT)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA练习 ——火车
- 下一篇: websocket python爬虫_p