搜尋
首頁後端開發Python教學實例詳解Python+Slack API 如何實作聊天機器人

聊天機器人(Bot) 是一種像 Slack 一樣的實用的互動聊天服務方式。如果你之前從來沒有建立過聊天機器人,那麼這篇文章提供了一個簡單的入門指南,告訴你如何用 Python 結合 Slack API 建立你第一個聊天機器人。

實例詳解Python+Slack API 如何實作聊天機器人

我們透過搭建你的開發環境, 獲得一個Slack API 的聊天機器人令牌,並用Pyhon開發一個簡單聊天機器人。

我們所需的工具

我們的聊天機器人我們將它稱為“StarterBot”,它需要Python 和Slack API。要運行我們的Python 程式碼,我們需要:

  • Python 2 或Python 3

  • pip 和virtualenv 來處理Python 應用程式依賴關係

一個可以存取API 的免費Slack 帳號,或者你可以註冊一個Slack Developer Hangout team。

透過Slack 團隊建立的官方Python Slack 用戶端程式碼庫

Slack API測試令牌

當你在本教學中進行建置時,Slack API 文件是很有用的。

實例詳解Python+Slack API 如何實作聊天機器人
本教學中所有的程式碼都放在 slack-starterbot 公共庫裡,並以 MIT 授權開源。

建立我們的環境

############我們現在已經知道我們的專案需要什麼樣的工具,因此讓我們來搭建我們所的開發環境吧。首先到終端機上(或 Windows 上的命令提示字元)並且切換到你想要儲存這個項目的目錄。在那個目錄裡,建立一個新的 virtualenv 以便和其他的 Python 專案相隔離我們的應用程式依賴關係。 ############################## 啟動 virtualenv:######

實例詳解Python+Slack API 如何實作聊天機器人

你的提示符號現在應該看起來如截圖:

實例詳解Python+Slack API 如何實作聊天機器人

#已經啟動的starterbot的virtualenv的命令提示字元這個官方的slack 用戶端API 幫助庫是由Slack 建立的,它可以透過Slack 通道發送和接收訊息。透過這個pip 指令安裝slackclient 函式庫:

實例詳解Python+Slack API 如何實作聊天機器人

#當pip 指令完成時,你應該會看到類似這樣的輸出,並傳回提示符。

實例詳解Python+Slack API 如何實作聊天機器人

在已經啟動的virtualenv用pip安裝slackclient的輸出我們也需要為我們的Slack專案取得一個存取令牌,以便我們的聊天機器人可以用它來連接到Slack API。

Slack 即時訊息傳遞(RTM)API

#Slack 允許程式透過一個Web API 來存取他們的訊息傳遞通道。去這個 Slack Web API 頁面 註冊建立你自己的 Slack 專案。你也可以登入一個你擁有管理權限的已有帳號。

實例詳解Python+Slack API 如何實作聊天機器人

使用 Web API頁面的右上角登入按鈕登入後你會到達 聊天機器人使用者頁面。

實例詳解Python+Slack API 如何實作聊天機器人

自訂聊天機器人使用者頁面為你的聊天機器人命名為「starterbot」然後點擊「Add bot integration” 按鈕。

實例詳解Python+Slack API 如何實作聊天機器人

新增一個bot integration 並起名為「starterbot」這個頁面將重新加載,你將看到一個新生成的訪問令牌。你也可以將標誌改成你自己設計的。例如我給的這個「Full Stack Python」標誌。

實例詳解Python+Slack API 如何實作聊天機器人


#為你的新Slack 聊天機器人複製和貼上存取權杖在頁面底部點擊“Save Integration”按鈕。你的聊天機器人現在已經準備好連接 Slack API。

Python 開發人員的一個常見的做法是以環境變數輸出秘密令牌。輸出的Slack令牌名字為SLACK_BOT_TOKEN:

實例詳解Python+Slack API 如何實作聊天機器人
#好了,我們現在得到了將這個 Slack API 用作聊天機器人的授權。

我們建立聊天機器人還需要更多資訊:我們的聊天機器人的 ID。接下來我們將會寫一個簡短的腳本,從 Slack API 取得該 ID。

得到我們聊天機器人的ID

#這是最後寫一些Python 程式碼的時候了! 我們寫一個簡短的Python 腳本獲得StarterBot 的ID 來熱身一下。這個 ID 是基於 Slack 項目而不同。

我們需要該ID,當解析從Slack RTM上發給StarterBot的訊息時,它用於對我們的應用驗明正身。我們的腳本也會測試我們SLACK_BOT_TOKEN環境變數是否設定正確。

建立一個命名為printbotid.py的新文件,並且填入下面的程式碼:

實例詳解Python+Slack API 如何實作聊天機器人

##我們的程式碼導入SlackClient,並用我們設定的環境變數SLACK_BOT_TOKEN實例化它。 當腳本透過python指令執行時,我們透過會存取Slack API列出所有的 Slack 使用者並且取得符合一個名字為「satrterbot」的ID。

這個獲得聊天機器人的ID的腳本我們只需要執行一次。

實例詳解Python+Slack API 如何實作聊天機器人
當它運行為我們提供了聊天機器人的ID時,腳本會列印出簡單的一行輸出。

實例詳解Python+Slack API 如何實作聊天機器人
在你的Slack 專案中用Python腳本列印Slack聊天機器人的ID複製這個腳本列印出的唯一ID。並將該ID作為一個環境變數BOT_ID輸出。

實例詳解Python+Slack API 如何實作聊天機器人
這個腳本只需要執行一次才能獲得聊天機器人的ID。 我們現在可以在我們的運行StarterBot的Python應用程式中使用這個ID。

編碼我們的 StarterBot

#現在我們擁有了寫我們的StarterBot程式碼所需的一切。 建立一個新檔案命名為starterbot.py,它包括以下程式碼。

實例詳解Python+Slack API 如何實作聊天機器人
對os和SlackClient的導入我們看起來很熟悉,因為我們已經在theprintbotid.py中用過它們了。

透過我們匯入的依賴套件,我們可以使用它們來獲得環境變數值,並實例化Slack客戶端。

實例詳解Python+Slack API 如何實作聊天機器人
該程式碼透過我們以輸出的環境變數SLACK_BOT_TOKEN 實例化SlackClient`客戶端。

實例詳解Python+Slack API 如何實作聊天機器人
Slack 用戶端會連線到 Slack RTM API WebSocket,然後當解析來自 firehose 的訊息時會不斷循環。如果有任何發給 StarterBot 的訊息,那麼被稱為 handle_command 的函數會決定要做什麼。

接下來加入兩個函數來解析 Slack 的輸出並處理指令。

實例詳解Python+Slack API 如何實作聊天機器人
parse_slack_output 函數從 Slack 接受訊息,如果它們是發給我們的 StarterBot 時會作出判斷。訊息以一個給我們的聊天機器人 ID 的直接命令開始,然後交由我們的程式碼處理。目前只是透過Slack 管道發布​​一個訊息回去告訴用戶去多寫一些Python 程式碼!

這是整個程式組合在一起的樣子(你也可以在GitHub 中查看該檔案) :

實例詳解Python+Slack API 如何實作聊天機器人
實例詳解Python+Slack API 如何實作聊天機器人
#現在我們的程式碼已經有了,我們可以透過python starterbot.py 來運行我們StarterBot的代碼了。

實例詳解Python+Slack API 如何實作聊天機器人

當StarterBot 開始運作而且連接到API 的輸出通道在Slack 中建立新通道,並且把StarterBot 邀請進來,或是把StarterBot 邀請進一個已經存在的頻道。

實例詳解Python+Slack API 如何實作聊天機器人
在Slack介面建立一個新通道並且邀請 StarterBot現在在你的頻道中給 StarterBot 發指令。

實例詳解Python+Slack API 如何實作聊天機器人
在你的Slack頻道裡給你的StarterBot 發命令如果你從聊天機器人得到的回應中遇見問題,你可能需要做一個修改。如同上面所寫的這個教程,其中一行AT_BOT = “:”,在“@starter”(你給你自己的聊天機器人起的名字)後需要一個冒號。從 AT_BOT 字串後面移除:。 Slack 似乎需要在@ 一個人名後面加上一個冒號,但這好像是有些不協調的。

結束

#好吧,你現在已經獲得一個簡易的聊天機器人,你可以在程式碼中很多地方加入你想要創造的任何特性。

我們能夠使用 Slack RTM API 和 Python 完成很多功能。看看透過這些文章你還可以學到什麼:

  • 附加一個持久的關係資料庫或NoSQL 後端例如PostgreSQL、MySQL 或SQLite ,來保存和檢索使用者資料

  • 新增另外一個與聊天機器人互動的通道,例如簡訊或電話呼叫

  • 整合其它的web API,例如GitHub、Twilio 或api.ai

以上是實例詳解Python+Slack API 如何實作聊天機器人的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python和時間:充分利用您的學習時間Python和時間:充分利用您的學習時間Apr 14, 2025 am 12:02 AM

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。