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