教你用python幾十行代碼編寫對話機器人
最近閒來無事,就自己寫點代碼弄了一個對話機器人。當然,這個機器人是基於圖靈機器人這個平臺的接口的,因爲對於我這個小白來說自己編寫一個機器人代碼還是頗有難度啊哈哈。
說實話這個機器人小姐姐還是有點高冷呢(對了,悄悄告訴你們,機器人的性別、名字和年齡都是可以修改的哦,大家趕快自己去看看吧)
好了,廢話不多說,我們先來看看這個機器人是怎麼實現的吧。
首先我們先去http://www.tuling123.com註冊一個賬號,然後找到機器人管理頁面:
這裏可以免費創建一些自己的機器人,不過這些機器人是有單日調用次數限制的,好像是每天一千條,不過對於我們只是玩玩的人來說是綽綽有餘啦。然後注意上面的apikey,這就是我們將來要調用的端口的祕鑰,把它複製下來備用。
接下來就是我們的代碼實現了,這個代碼主要完成的還是端口的調用,網上也有一些類似的代碼,甚至有可以搭建微信還有qq機器人的代碼,不過那些就有些複雜啦,爲了方便起見我給大家準備了一個只有幾十行的代碼給大家作參考(大佬們也可以自己完成啦)
import json
import socket
import uuid
from urllib.request import urlopen, Request
from urllib.parse import urlencode
class robot(object):
def __init__(self):
self.turing_url = "http://www.tuling123.com/openapi/api?"
self.app_key = "這裏填寫自己的apikey哦"
def getTuringText(self, text):
user_ip = self.getHostIp()
mac_id = self.getMacId()
turing_url_data = dict(key = self.app_key, info = text, userid = mac_id)
request = Request(self.turing_url + urlencode(turing_url_data))
try:
w_data = urlopen(request)
except:
return error_info
response_text = w_data.read().decode("utf-8")
json_result = json.loads(response_text)
return json_result["text"]
def getHostIp(self):
socket_info = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_info.connect(("8.8.8.8", 80))
ip = socket_info.getsockname()[0]
return ip
def getMacId(self):
node = uuid.getnode()
mac = uuid.UUID(int = node).hex[-12:]
return mac
if __name__ == '__main__':
print("現在可以和機器人聊天了(退出請輸q)")
turing = robot()
while True:
msg = input("\n我:")
if msg =='q':
exit("聊天結束")
else:
turing_data = turing.getTuringText(msg)
print("機器人:", turing_data)
這段代碼直接複製到你的集成開發環境就可以直接運行了,記得在裏面填寫自己機器人的apikey哦,是不是很簡單呢?
所以趕緊去問他一些有趣的問題吧!(當然一些非主流的問題他不一定回答的上來哦,畢竟機器人不是人哦)
好了,本教程就到此結束啦,喜歡的小夥伴記得點贊哦,也歡迎志同道合的朋友們關注我和我一起交流。
2019年4月2日