從社交消息平臺到集成到網(wǎng)站上的票務(wù)預(yù)訂,尋找附近的餐廳,產(chǎn)生銷售線索,購買和銷售產(chǎn)品,聊天機器人如今已在幾乎所有地方使用。一些聊天機器人,例如Microsoft的Ruuh,已經(jīng)能夠使用人工智能和深度學(xué)習(xí)進行類似于人的對話。您還記得Hike的Natasha嗎?我在4年前使用它時,很驚訝地看到她如何處理我們的對話,這比機器人可能處理的要好得多。那時我還沒有聽說過機器學(xué)習(xí)的概念。
現(xiàn)在,聊天機器人已使我們變得如此依賴它們,它已成為當(dāng)今我們生活的一部分。聊天機器人不僅通過管理任務(wù)使我們的生活更輕松,而且與他們進行對話也變得非常有趣。
但是,所有這些都會以存儲我們的數(shù)據(jù)并為公司利益使用為代價。
我們對此可以采取任何措施嗎?如果我們可以構(gòu)建自己的聊天機器人怎么辦?
我們可以添加所需的所有功能,并根據(jù)喜好進行調(diào)整。
因此,讓我們構(gòu)建一個聊天機器人,它可以在Slack上運行時幫助您提高工作效率。我們即將建立的聊天機器人離Google Assistant并不遙遠。它甚至沒有啟用語音。
Slack是一個消息平臺,供團隊協(xié)作和相互協(xié)作。它是當(dāng)今公司用于與員工溝通的最常用工具。
入門
讓我們一起在Slack上構(gòu)建一個聊天機器人。
免責(zé)聲明:該項目是由2人一組的比賽創(chuàng)建的,但很遺憾,我們無法進入決賽。
這是Slackbot 的架構(gòu)。
這是我們的實體關(guān)系圖,它將幫助您創(chuàng)建自己的數(shù)據(jù)庫。
.env在/src您的項目目錄中創(chuàng)建一個文件。
安裝要求:
點安裝-r requirements.txt
這是您的主文件:slackbot.py。
slackbot.py首先 導(dǎo)入運行Slackbot所需的所有軟件包。然后,它使用存儲在文件中的Slack API密鑰來啟動Slack客戶端,.env如下所示:
API_KEY =“您的Slack API密鑰”
它初始化常量并嘗試與Slack的RTM API連接,如果無法建立連接,則返回Connection failed with the error message printed above.
如果連接成功,我們的Slack客戶端將無限循環(huán)運行,并嘗試每秒讀取一次,并且如果接收到任何消息,它將提取從Slack的RTM API接收到的通道ID和消息文本,并進一步檢查收到的消息是否具有可以處理以生成響應(yīng)的任何已分配命令。
帶有代碼和說明的功能
歌曲歌詞
我們的用戶可以通過直接從Slackbot傳遞拼寫或拼寫錯誤的歌曲名稱來獲得歌曲的歌詞。此代碼段已在您的slackbot.py文件中定義。
elif message.startswith(“的歌詞”):
get_song_name =消息[11:]
lyrics_gen = Song_Lyrics(settings.GCS_API_KEY,settings.GCS_ENGINE_ID)
歌曲= lyrics_gen.get_lyrics(get_song_name)
響應(yīng)='*'+歌曲[0] +'*'+' n n'+歌曲[1] .replace('
',' n')
· 您需要通過添加任意或所有以下網(wǎng)站來創(chuàng)建自定義搜索引擎ID。
獲取自定義搜索引擎ID后,請獲取Google自定義搜索JSON API密鑰,此舉很不錯。
獲取歌曲的音頻和視頻
我們的用戶可以通過在Slackbot上傳遞拼寫或拼寫錯誤的歌曲名稱來獲得歌曲的音頻和視頻版本。
這是您的get_music.py。
導(dǎo)入所有依賴項之后,它需要YouTube數(shù)據(jù)API來提取歌曲,并從收到的搜索結(jié)果中提取拼寫或拼寫錯誤的歌曲名稱的第一個鏈接。
注意:對于我們要求歌曲的用戶,我們認為第一個YouTube搜索結(jié)果是最準確的搜索結(jié)果。
然后,它利用Pafy Python庫從歌曲的視頻鏈接中提取音頻。它需要一個Bitly用戶名和Bitly API密鑰來縮短為流式音頻生成的長URL,并縮短YouTube視頻鏈接以提供歌曲的視頻版本。
足球比分直播
在每個設(shè)定的時間間隔后,我們的用戶會收到有關(guān)實時足球比賽的最新分數(shù)的通知。我只選擇了頂級足球聯(lián)賽,它們可以為英超,冠軍,意甲,西甲,西甲提供實時比賽。
我只選擇了幾個聯(lián)賽,因為目前有很多比賽在進行,因此為所有現(xiàn)場比賽發(fā)送分數(shù)對用戶來說毫無意義。
注意:這是一項基于訂閱的服務(wù),因此您需要一開始按照我的共享模式設(shè)置數(shù)據(jù)庫。然后,您可以使用Schedule Python Library安排在每個設(shè)置的時間間隔后將實時分數(shù)發(fā)送給訂閱的用戶。
您需要獲取Football Data API的API密鑰。
您可以從Football Data API中提供的聯(lián)賽中選擇自己喜歡的足球聯(lián)賽。
這是您的football.py文件。
該live_football函數(shù)獲取并提取comp_id字典中存儲的所選聯(lián)賽的實時足球比賽的實時比分,并返回帶有兩隊所需信息的實時比賽的元組列表。
當(dāng)用戶從Slackbot訂閱實時足球比分時,我們的football_res類對象將存儲用戶的頻道ID和松弛的客戶端API密鑰,從而進一步驗證用戶的響應(yīng)并將用戶選擇的聯(lián)賽存儲在我們的數(shù)據(jù)庫中并發(fā)送后續(xù)確認信息使用實時比賽的最新分數(shù)向訂閱的用戶回復(fù)。
新聞
我們的用戶將每天收到有關(guān)時事和突發(fā)新聞的最新消息,以便他們可以及時了解最新情況。
這是您的news.py文件。
它需要一個News API密鑰來獲取最新新聞,并需要一個Bitly用戶名和Bitly API密鑰來縮短長URL。
它返回帶有標題,描述和新聞鏈接的“新聞”作為格式化消息。
任務(wù)
我們的用戶可以在Slackbot中安排任務(wù),它會在設(shè)置的日期和時間提醒他們設(shè)置的任務(wù)。這將幫助我們的用戶按時管理和完成任務(wù),從而提高工作效率。
這是我們的task.py文件。
如果用戶消息以“提醒我”開頭,則我們的parse_tasks功能將從收到的用戶消息中提取日期,任務(wù)描述和時間,并驗證提供的日期和時間是否有效。
如果所有內(nèi)容都正確解析,則該任務(wù)將存儲在我們數(shù)據(jù)庫的任務(wù)表中,并且用戶會收到一條確認消息,使他們知道該任務(wù)已設(shè)置了事件的格式化日期和時間。
注意:首先需要根據(jù)我的共享模式在數(shù)據(jù)庫中設(shè)置一個任務(wù)表。當(dāng)前日期和時間等于設(shè)置的日期和時間時,將任務(wù)發(fā)送給指定的用戶。
提醒事項
用戶將能夠為同事和朋友的生日和周年紀念日設(shè)置提醒。這將幫助他們保持聯(lián)系并保持交流。
這是我們的hinter.py文件。
我們的提醒模塊的工作原理類似于任務(wù),但唯一的區(qū)別是每年發(fā)送提醒,而任務(wù)僅在設(shè)定的日期和時間發(fā)送一次。
如果用戶消息以“提醒我”開頭并且不包含時間,則我們的parse_reminders功能將從收到的用戶消息中提取日期和提醒,并驗證提供的日期是否有效。
如果正確解析了所有內(nèi)容,則該提醒將存儲在我們數(shù)據(jù)庫的提醒表中,并且我們的用戶會收到一條確認消息,讓他們知道該提醒已設(shè)置為該場合的格式化日期。
注意:首先需要按照我的共享模式在數(shù)據(jù)庫中設(shè)置提醒表。當(dāng)當(dāng)前日期等于設(shè)置日期時,則每年將提醒發(fā)送給指定的用戶。
結(jié)論
我們終于結(jié)束了構(gòu)建自己的具有一些出色功能的Slackbot。這是我的Slackbot Github存儲庫。有很多功能,例如事實, Slackbot中提供的引號,在本文中我沒有討論,因為它們的實現(xiàn)非常簡單。還help 向我們的用戶提供了一個命令,使他們可以了解所有可用功能及其分配的命令。
如果您在這個開源社區(qū)中做出了貢獻,以使Slackbot成為一個更好的人,將很高興審查您的請求請求。
另外,請檢查Lyrics Extractor Python庫以通過僅傳遞拼寫或拼寫錯誤的歌曲名稱來獲取歌曲歌詞。
上述就是關(guān)于如何使用Python構(gòu)建多功能Slackbot的全部內(nèi)容,想了解更多關(guān)于Python的信息,請繼續(xù)關(guān)注中培偉業(yè)。