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

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

零到壹度
零到壹度原創
2018-04-02 11:23:086523瀏覽

聊天機器人(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