您好,登錄后才能下訂單哦!
Python中如何使用ChatOps庫,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
ChatOps 是基于會話導(dǎo)向而進行的開發(fā)。其思路是你可以編寫能夠?qū)α奶齑翱谥械哪承┹斎脒M行回復(fù)的可執(zhí)行代碼。作為一個開發(fā)者,你能夠用 ChatOps 從 Slack 合并拉取請求,自動從收到的 Facebook 消息中給某人分配支持工單,或者通過 IRC 檢查開發(fā)狀態(tài)。
在 Python 世界,最為廣泛使用的 ChatOps 庫是 Opsdroid 和 Errbot。在這個月的 Python 專欄,讓我們一起聊聊使用它們是怎樣的體驗,它們各自適用于什么方面以及如何著手使用它們。
Opsdroid 是一個相對年輕的(始于 2016)Python 開源聊天機器人庫。它有著良好的開發(fā)文檔,不錯的教程,并且包含能夠幫助你對接流行的聊天服務(wù)的插件。
庫本身并沒有自帶所有你需要上手的東西,但這是故意的。輕量級的框架鼓勵你去運用它現(xiàn)有的連接器(Opsdroid 所謂的幫你接入聊天服務(wù)的插件)或者去編寫你自己的,但是它并不會因自帶你所不需要的連接器而自貶身價。你可以輕松使用現(xiàn)有的 Opsdroid 連接器來接入:
命令行
Cisco Spark
GitHub
Matrix
Slack
Telegram
Websocket
Opsdroid 會調(diào)用使聊天機器人能夠展現(xiàn)它們的“技能”的函數(shù)。這些技能其實是異步 Python 函數(shù),并使用 Opsdroid 叫做“匹配器”的匹配裝飾器。你可以設(shè)置你的 Opsdroid 項目,來使用同樣從你設(shè)置文件所在的代碼中的“技能”。你也可以從外面的公共或私人倉庫調(diào)用這些“技能”。
你同樣可以啟用一些現(xiàn)存的 Opsdroid “技能”,包括 seen —— 它會告訴你聊天機器人上次是什么時候看到某個用戶的,以及 weather —— 會將天氣報告給用戶。
***,Opdroid 允許你使用現(xiàn)存的數(shù)據(jù)庫模塊設(shè)置數(shù)據(jù)庫。現(xiàn)在 Opdroid 支持的數(shù)據(jù)庫包括:
Mongo
SQLite
你可以在你的 Opdroid 項目中的 configuration.yaml
文件設(shè)置數(shù)據(jù)庫、技能和連接器。
Docker 支持:從一開始 Opsdroid 就打算在 Docker 中良好運行。在 Docker 中的指導(dǎo)是它 安裝文檔 中的一部分。使用 Opsdroid 和 Docker Compose 也很簡單:將 Opsdroid 設(shè)置成一種服務(wù),當(dāng)你運行 docker-compose up
時,你的 Opsdroid 服務(wù)將會開啟你的聊天機器人也將就緒。
version: "3" services: opsdroid: container_name: opsdroid build: context: . dockerfile: Dockerfile
豐富的連接器: Opsdroid 支持九種像 Slack 和 Github 等從外部接入的服務(wù)連接器。你所要做的一切就是在你的設(shè)置文件中啟用那些連接器,然后把必須的口令或者 API 密匙傳過去。比如為了啟用 Opsdroid 以在一個叫做 #updates
的 Slack 頻道發(fā)帖,你需要將以下代碼加入你設(shè)置文件的 connectors
部分:
- name: slack api-token: "this-is-my-token" default-room: "#updates"
在設(shè)置 Opsdroid 以接入 Slack 之前你需要添加一個機器人用戶。
如果你需要接入一個 Opsdroid 不支持的服務(wù),在文檔里有有添加你自己的連接器的教程。
相當(dāng)不錯的文檔: 特別是對于一個在積極開發(fā)中的新興庫來說,Opsdroid 的文檔十分有幫助。這些文檔包括一篇帶你創(chuàng)建幾個不同的基本技能的教程。Opsdroid 在技能、連接器、數(shù)據(jù)庫,以及匹配器方面的文檔也十分清晰。
它所支持的技能和連接器的倉庫為它的技能提供了富有幫助的示范代碼。
自然語言處理: Opsdroid 的技能里面能使用正則表達式,但也同樣提供了幾個包括 Dialogflow,luis.ai,Recast.AI 以及 wit.ai 的 NLP API。
Opsdroid 對它的一部分連接器還沒有啟用全部的特性。比如說,Slack API 允許你向你的消息添加顏色柱、圖片以及其他的“附件”。Opsdroid Slack 連接器并沒有啟用“附件”特性,所以如果那些特性對你來說很重要的話,你需要編寫一個自定義的 Slack 連接器。如果連接器缺少一個你需要的特性,Opsdroid 將歡迎你的貢獻。文檔中可以使用更多的例子,特別是對于預(yù)料到的使用場景。
from opsdroid.matchers import match_regeximport random @match_regex(r'hi|hello|hey|hallo')async def hello(opsdroid, config, message): text = random.choice(["Hi {}", "Hello {}", "Hey {}"]).format(message.user) await message.respond(text)
hello/__init__.py
connectors: - name: websocket skills: - name: hello repo: "https://github.com/<user_id>/hello-skill"
configuration.yaml
Errbot 是一個功能齊全的開源聊天機器人。Errbot 發(fā)行于 2012 年,并且擁有人們從一個成熟的項目能期待的一切,包括良好的文檔、優(yōu)秀的教程以及許多幫你連入現(xiàn)有的流行聊天服務(wù)的插件。
不像采用了較輕量級方式的 Opsdroid,Errbot 自帶了你需要可靠地創(chuàng)建一個自定義機器人的一切東西。
Errbot 包括了對于本地 XMPP、IRC、Slack、Hipchat 以及 Telegram 服務(wù)的支持。它通過社區(qū)支持的后端列出了另外十種服務(wù)。
良好的文檔: Errbot 的文檔成熟易讀。
動態(tài)插件架構(gòu): Errbot 允許你通過和聊天機器人交談安全地安裝、卸載、更新、啟用以及禁用插件。這使得開發(fā)和添加特性十分簡便。感謝 Errbot 的顆粒性授權(quán)系統(tǒng),出于安全意識這所有的一切都可以被鎖閉。
當(dāng)某個人輸入 !help
,Errbot 使用你的插件的文檔字符串來為可獲取的命令生成文檔,這使得了解每行命令的作用更加簡便。
內(nèi)置的管理和安全特性: Errbot 允許你限制擁有管理員權(quán)限的用戶列表,甚至細粒度訪問控制。比如說你可以限制特定用戶或聊天房間訪問特定命令。
額外的插件框架: Errbot 支持鉤子、回調(diào)、子命令、webhook、輪詢以及其它更多特性。如果那些還不夠,你甚至可以編寫動態(tài)插件。當(dāng)你需要基于在遠程服務(wù)器上的可用命令來啟用對應(yīng)的聊天命令時,這個特性十分有用。
自帶測試框架: Errbot 支持 pytest,同時也自帶一些能使你簡便測試插件的有用功能。它的“測試你的插件”的文檔出于深思熟慮,并提供了足夠的資料讓你上手。
以 “!” 開頭: 默認情況下,Errbot 命令發(fā)出時以一個驚嘆號打頭(!help
以及 !hello
)。一些人可能會喜歡這樣,但是另一些人可能認為這讓人煩惱。謝天謝地,這很容易關(guān)掉。
插件元數(shù)據(jù) 首先,Errbot 的 Hello World 插件示例看上去易于使用。然而我無法加載我的插件,直到我進一步閱讀了教程并發(fā)現(xiàn)我還需要一個 .plug
文檔,這是一個 Errbot 用來加載插件的文檔。這可能比較吹毛求疵了,但是在我深挖文檔之前,這對我來說都不是顯而易見的。
import randomfrom errbot import BotPlugin, botcmd class Hello(BotPlugin): @botcmd def hello(self, msg, args): text = random.choice(["Hi {}", "Hello {}", "Hey {}"]).format(message.user) return text
hello.py
[Core]Name = HelloModule = hello [Python]Version = 2+ [Documentation]Description = Example "Hello" plugin
關(guān)于Python中如何使用ChatOps庫問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。