当前位置: 首页 > 科技观察

Python的ChatOps库:Opsdroid和Errbot

时间:2023-03-13 17:16:34 科技观察

了解Python世界中使用最广泛的ChatOps库:每个库可以做什么以及如何使用它们。ChatOps基于面向对话的开发。这个想法是您可以编写可执行代码来响应聊天窗口中的某些输入。作为开发人员,您可以使用ChatOps合并来自Slack的拉取请求,自动从收到的Facebook消息中为某人分配支持票,或者通过IRC检查开发状态。在Python世界中,使用最广泛的ChatOps库是Opsdroid和Errbot。在本月的Python专栏中,让我们谈谈使用它们的感觉、适合它们的位置以及如何开始使用。OpsdroidOpsdroid是一个相对年轻(2016年开始)的Python开源聊天机器人库。它有很好的开发文档、很好的教程,并包含可帮助您与流行的聊天服务集成的插件。它内置了什么?图书馆本身并没有提供您入门所需的一切,但这是故意的。轻量级框架鼓励您使用其现有的连接器(Opsdroid所谓的帮助您访问聊天服务的插件)或编写您自己的连接器,但它不附带您不需要的连接器并且自我贬低。您可以轻松地使用现有的Opsdroid连接器来插入:命令行CiscoSparkFacebookGitHubMatrixSlackTelegramTwitterWebsocketOpsdroid调用使??聊天机器人能够显示其“技能”的功能。这些能力实际上是异步Python函数,并使用Opsdroid称为“匹配器”的匹配装饰器。您可以将您的Opsdroid项目设置为使用与您的设置文件所在的代码相同的“技能”。您还可以从外部公共或私人存储库调用这些“技能”。您还可以启用一些现有的Opsdroid“技能”,包括seen-它会告诉您聊天机器人最后一次看到用户的时间,以及weather-它会向用户报告天气。***,Opdroid允许您使用现有的数据库模块来设置数据库。Opdroid目前支持的数据库包括:MongoRedisSQLite您可以在您的Opdroid项目的configuration.yaml文件中设置数据库、技能和连接器。OpsdroidDocker支持的优势:从一开始,Opsdroid就打算在Docker中良好运行。Docker中的说明是其安装文档的一部分。将Opsdroid与DockerCompose一起使用也很简单:将Opsdroid设置为服务,当您运行docker-composeup时,您的Opsdroid服务将启动,您的聊天机器人将准备就绪。版本:“3”服务:opsdroid:容器名称:opsdroid构建:上下文:。dockerfile:Dockerfilerichconnectors:Opsdroid支持从外部访问的九种服务连接器,如Slack和Github。您所要做的就是在您的设置文件中启用这些连接器并传入所需的密码或API密钥。例如,要使Opsdroid能够在名为#updates的Slack频道上发帖,您可以将以下代码添加到设置文件的连接器部分:-name:slackapi-token:"this-is-my-token"default-room:“#updates”在设置Opsdroid连接到Slack之前,您需要添加一个机器人用户。如果您需要连接到Opsdroid不支持的服务,文档中有关于添加您自己的连接器的说明。非常好的文档:特别是对于一个正在积极开发中的新库,Opsdroid的文档非常有帮助。该文档包括一个教程,可指导您创建多种不同的基本技能。Opsdroid关于技能、连接器、数据库和匹配器的文档也很清楚。它的支持技能和连接器存储库为其技能提供了有用的示例代码。自然语言处理:Opsdroid的技能可以使用正则表达式,但它也提供了几个NLPAPI,包括Dialogflow、luis.ai、Recast.AI和wit.ai。Opsdroid的可能缺点Opsdroid没有为其某些连接器启用所有功能。例如,SlackAPI允许您向消息添加彩条、图像和其他“附件”。OpsdroidSlack连接器没有启用“附件”功能,因此如果这些功能对您很重要,您需要编写自定义Slack连接器。如果连接器缺少您需要的功能,Opsdroid欢迎您的贡献。文档中可以使用更多示例,特别是对于预期的使用场景。示例用法fromopsdroid.matchersimportmatch_regeximportrandom@match_regex(r'hi|hello|hey|hallo')asyncdefhello(opsdroid,config,message):text=random.choice(["Hi{}","Hello{}","Hey{}"]).format(message.user)awaitmessage.respond(text)hello/__init__.pyconnectors:-name:websocketskills:-name:hellorepo:"https://github.com//hello-skill"configuration.yamlErrbotErrbot是一个功能齐全的开源聊天机器人。Errbot于2012年发布,拥有人们对成熟项目的所有期望,包括良好的文档、出色的教程以及许多可帮助您连接到现有流行聊天服务的插件。内置内容与采用更轻量级方法的Opsdroid不同,Errbot提供了可靠地创建自定义机器人所需的一切。Errbot包括对原生XMPP、IRC、Slack、Hipchat和Telegram服务的支持。它列出了另外十个具有社区支持后端的服务。Errbot的优点良好的文档:Errbot的文档成熟且易于阅读。动态插件架构:Errbot允许您通过与聊天机器人对话来安全地安装、卸载、更新、启用和禁用插件。这使得开发和添加功能变得非常容易。多亏了Errbot的精细授权系统,所有这些都可以出于安全原因被锁定。当有人输入!help时,Errbot会使用您的插件的文档字符串为可用命令生成文档,这样可以更轻松地理解每一行的作用。内置管理和安全功能:Errbot允许您限制具有管理权限的用户列表,甚至是细粒度的访问控制。例如,您可以限制特定用户或聊天室访问特定命令。附加插件框架:Errbot支持挂钩、回调、子命令、webhook、轮询和更多功能。如果这些还不够,您甚至可以编写动态插件。当您需要根据远程服务器上可用的命令启用相应的聊天命令时,此功能非常有用。内置测试框架:Errbot支持pytest,同时还附带了一些有用的功能,可以让您轻松测试插件。它的“测试您的插件”文档经过深思熟虑,并提供了足够的材料来帮助您入门。Errbot不能以“!”开头:默认情况下,Errbot命令以感叹号(!help和!hello)开头。有些人可能会喜欢这个,但其他人可能会觉得这很烦人。值得庆幸的是,这很容易关闭。插件元数据首先,Errbot的HelloWorld插件示例看起来很容易使用。但是,在我进一步阅读教程并发现我还需要一个.plug文件之前,我无法加载我的插件,这是Errbot用来加载插件的文件。这可能有点挑剔,但在我深入研究文档之前,这些对我来说都不明显。用法示例importrandomfromerrbotimportBotPlugin,botcmdclassHello(BotPlugin):@botcmddefhello(self,msg,args):text=random.choice(["Hi{}","Hello{}","Hey{}"]).format(message.user)returntexthello.py[Core]Name=HelloModule=hello[Python]Version=2+[Documentation]Description=Example"Hello"pluginhello.plug你用过Errbot还是Opsdroid?如果有,请留下您对这些工具的印象的评论。