ChatOps是对话驱动的开发。 这个想法是您可以编写响应于聊天窗口中键入的内容而执行的代码。 作为开发人员,您可以使用ChatOps合并来自Slack的拉取请求,自动从收到的Facebook消息中向某人分配支持票证,或者通过IRC检查部署状态。
在Python世界中,使用最广泛的ChatOps库是Opsdroid和Errbot。 在本月的Python专栏中,让我们聊聊使用它们的感觉,各方面的优势以及如何开始使用它们。
类s
Opsdroid是一个相对较年轻(自2016年起)的用Python编写的开源聊天机器人库。 它具有出色的文档,出色的教程,并包括可帮助您连接到流行聊天服务的插件。
内置什么
Opsdroid将聊天机器人执行的功能称为“技能”。 技能是async
Python函数,并使用Opsdroid的匹配修饰符(称为“ matchers”)。 您可以将Opsdroid项目配置为使用配置文件所在代码库中的技能,或者从外部公共或私有存储库导入技能。
您可以启用现有的一些Opsdroid技能,以及包括看出 ,它告诉你,当一个特定的用户最后由BOT,见过的天气 ,这将天气报告给用户。
最后,Optdroid允许您使用其现有数据库模块来配置数据库。 当前支持Opsdroid的数据库包括:
您可以在Opsdroid项目的configuration.yaml
文件中配置数据库,技能和连接器。
Opsdroid优点
Docker支持: Opsdroid旨在从一开始就在Docker中良好运行。 Docker指令是其安装文档的一部分。 将Opsdroid与Docker Compose结合使用也很简单:将Opsdroid设置为服务,当您运行docker docker-compose up
,Opsdroid服务将启动,并且聊天机器人将准备好聊天。
version
:
"3"
services :
opsdroid :
container_name
: opsdroid
build :
context
: .
dockerfile
: Dockerfile
大量的连接器: Opsdroid开箱即用地支持9个连接器,例如Slack和GitHub。 您需要做的就是在配置文件中启用这些连接器,并传递必要的令牌或API密钥。 例如,要使Opsdroid能够在名为#updates
的Slack通道中#updates
,请将其添加到配置文件的connectors
部分:
- name
: slack
api-token
:
"this-is-my-token"
default-room
:
"#updates"
在配置Opsdroid连接到Slack之前,您必须将bot用户添加到Slack工作区。
如果您需要连接到Opsdroid不支持的服务,则可以在docs中找到有关添加自己的连接器的说明。
相当不错的文档。 特别是对于正在积极开发中的年轻图书馆,Opsdroid的文档非常有帮助。 该文档包含一个教程 ,可指导您创建一些不同的基本技能。 关于技能 , 连接器 , 数据库和匹配器的Opsdroid文档也很清楚。
其支持的技能和连接器的存储库为您开始编写自己的自定义技能和连接器提供了有用的示例代码。
自然语言处理: Opsdroid不仅支持正则表达式,而且还支持多种NLP API,包括Dialogflow , luis.ai , Recast.AI和wit.ai。
可能的Opsdroid问题
Opsdroid尚未启用其某些连接器的全部功能。 例如,Slack API允许您将彩条,图像和其他“附件”添加到消息中。 Opsdroid Slack连接器未启用“附件”功能,因此,如果这些功能对您很重要,则需要编写自定义Slack连接器。 但是,如果连接器缺少您需要的功能,Opsdroid将欢迎您的贡献 。 文档可以使用更多示例,尤其是预期的用例。
用法示例
hello/__init__.py
from opsdroid.
matchers
import match_regex
import
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
)
configuration.yaml
connectors :
- name
: websocket
skills
:
- name
: hello
repo
:
"https://github.com/<user_id>/hello-skill"
Errbot
Errbot是包含电池的开源聊天机器人。 Errbot于2012年发布,它拥有成熟项目中任何人所期望的一切,包括出色的文档,出色的教程以及许多插件,可帮助您连接到现有的流行聊天服务。
内置什么
与Opsdroid需要更轻量级的方法不同,Errbot附带了安全构建自定义bot所需的一切。
Errbot原生支持XMPP,IRC,Slack,Hipchat和Telegram服务。 它列出了通过社区提供的后端对其他10种服务的支持。
Errbot专业人士
好的文档: Errbot的文档很成熟并且易于使用。
动态插件架构: Errbot允许您通过与bot聊天来安全地安装,卸载,更新,启用和禁用插件。 这使开发和添加功能变得容易。 出于安全意识的考虑,这一切都可以归功于Errbot的细化权限系统。
当有人键入!help
,Errbot使用您的插件文档字符串生成可用命令的文档,这使您更容易知道每个命令的作用。
内置的管理和安全性: Errbot允许您限制具有管理权限甚至具有细粒度访问控制的用户列表。 例如,您可以限制特定用户和/或特定房间可以调用哪些命令。
扩展的插件框架: Errbot支持钩子,回调,子命令,webhooks,轮询以及更多其他功能 。 如果还不够,您甚至可以编写Dynamic plugins 。 如果要基于远程服务器上可用的命令启用聊天命令,此功能很有用。
带有测试框架: Errbot支持pytest并附带一些有用的实用程序,这些工具使测试插件变得容易且可行。 它的“ 测试您的插件 ”文档经过深思熟虑,可以提供足够的入门信息。
可能的Errbot问题
初始!:默认情况下,Errbot命令以感叹号( !help
和!hello
)开头发出。 有些人可能会喜欢,但其他人可能会觉得烦。 幸运的是,这很容易关闭。
插件元数据:首先,Errbot的Hello World插件示例似乎易于使用。 但是,直到我进一步阅读本教程并发现我还需要一个.plug
文件(Errbot用来加载插件的文件)后,我才能加载我的插件。 这是一个很小的小问题,但是直到我进一步研究文档后,对我来说这才是显而易见的。
用法示例
hello.py
import
random
from 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.plug
[ Core ]
Name
=
Hello
Module
=
hello
[ Python ]
Version
=
2+
[ Documentation ]
Description
=
Example
"Hello" plugin
您是否使用过Errbot或Opsdroid? 如果是这样,请留下您对这些工具的印象。
翻译自: https://opensource.com/article/18/3/python-chatops-libraries-opsdroid-and-errbot