CI工作流程和机器人

聊天机器人无处不在。 突然,我们的消息传递服务被小型的自动化系统所淹没,这些自动化系统在人对人的通信领域中占据着空间。 现在,我们可以与机器人进行对话,以帮助我们购买产品,预订旅行,开会,解决客户服务问题等等。

现在在柏林,有两个专门针对机器人的聚会,他们激起了我的兴趣,写了一系列有关如何使用和创建它们的文章。 当然对于Codeship,它必须是帮助您构建,部署或监视应用程序的机器人。

什么是机器人?

首先,让我们介绍一下机器人实际上是什么。 机器人不是一个新概念。 过去,它们是程序员通过创建自动化系统来试图说服一个人他们正在与另一个人交谈(并通过图灵测试 )的方法来提高自己的技能。 近年来,它们已成为我上面概述的聊天平台中所使用的系统。 但总而言之,机器人会处理自然语言(文本或口头语言),对其进行解释,做出响应,然后它就开始了。

机器人有两种主要形式:

  • 那些基于有限用途的预编程规则。
  • 那些基于机器学习的方法,它以一组训练数据开始并在其工作时进行学习。

对于本文的其余部分,我将坚持使用第一种更简单的类型。 第二种类型要复杂得多,对于本文的需要,简单的类型就足够了。 Bot可以独立存在,也可以是现有消息传递平台的一部分,因此,出于简单性和适当性考虑,我将在本文中继续使用Slack。

为松弛构建机器人

如果您不使用或不了解Slack ,那么它是团队的流行消息应用程序。 但其最酷的功能是集成度。 它允许使用大量令人眼花options乱的选项,以使应用程序简化您的工作流程,但本文涵盖了bot用户选项。

尽管每个消息传递平台都提供了用于管理漫游器的不同选项,但您仍然需要编写代码。 Slack提供了两个建议来删除您需要的许多样板代码: node-slack-clientBotKit (您也可以将其用于在其他平台上构建bot)。

我选择了BotKit。 起初,我努力使它工作不是因为缺少文档(因为有可用的负载),而是由于许多教程与时俱进。 Slack不断变化的API,很难知道哪个是最准确的。 最终,我发现本教程对我有用,并且我建议您在步骤3和步骤4中也趁机定制您的机器人。 这是我的截图。

完成所有步骤后,您应该在指定团队中拥有一个可以发布命令的机器人。 尝试使用@bot-name color@bot-name uptime

如果您打开下载的代码,将会看到它是JavaScript。 您可以在技能文件夹中添加自定义“技能”,然后BotKit将加载它们。 在该文件夹中创建一个名为codeship.js的新文件,并添加以下样板代码:

module.exports = function(controller) {

}

机器人将使用Codeship API访问我们帐户的某些详细信息。 幸运的是,已经有人创建可以使用的节点模块 。 将其添加到package.json ,运行npm install ,并将其包含在codeship.js中

var Codeship = require('codeship-node');
var codeship = new Codeship({apiKey: '<api-key>'});

现在,展开您创建的控制器:

module.exports = function(controller) {
  controller.hears('projects', 'direct_message,direct_mention', function (bot, message) {
    codeship.projects.list(function (err, projects) {
      if (err) {
        bot.reply(message, "I'm sorry, there was an error retrieving projects from CodeShip.");
      }
      for (var i in projects) {
        bot.reply(message, projects[i].repository_name + ' - https://app.codeship.com/projects/' + projects[i].id);
      }
    });
  });
};

controller.*方法允许您响应某些事件。 在这种情况下, controller.hears此处的文档 )匹配某些短语和关键字。 作为参数,它接受模式作为确切的单词或正则表达式字符串,要侦听的消息事件的类型(BotKit在其支持的所有平台上抽象出大多数消息事件,但有特定的),可选的中间件函数和打回来。

codeship.projects.list函数来自您先前安装的npm模块,它返回所有Codeship项目。 基于函数调用的成功,我们使用bot.reply方法( 此处的文档 ),该方法接受传入的消息对象(其本身包含有关消息的元数据),要发送的响应文本以及可选的回调作为参数功能。

如您所见,将响应添加到其他关键字或短语以触发其他Codeship端点相对简单。 如果您有兴趣添加更多内容,那么我已经创建了一个基本的代码存储库 ,并且欢迎您提出请求,以使该机器人更加实用。

要启动应用程序,请在应用程序文件夹中运行此程序: clientId="<client-id>" clientSecret="<client-secret>" PORT=3000 node .

使用ngrok之类的工具将您的计算机公开到Internet并打开它生成的URL。 当您单击看到的大型Slack按钮时,机器人将要求您访问您的团队频道。

包装你的机器人

太好了,该机器人已经在本地测试并可以正常工作,但是在您的机器或GitHub中使用它并没有太多用处。 要广泛分发它,它需要在可公开访问的服务器上运行。 我在这里将我的网站托管在Heroku上,然后更新了身份验证和事件URL以匹配新地址。

Slack有一个分发清单清单,可以在分发到全世界之前运行,在“ 管理分发清单”选项卡下可用。 但是要进入该列表,您需要完成先前的步骤。 如果您到目前为止已经执行了所有步骤,那么除了要求您确保已删除所有硬编码URL的步骤之外,大多数步骤都将完成。 由于此应用程序没有任何内容,因此请选中该框。

最终列表要求您检查详细信息,例如范围(机器人访问用户的详细信息),用户体验,侵犯版权,登录页面等。 在某些方面,完成这些步骤可能比首先创建机器人更复杂。

由于本教程中的机器人尚未准备好迎接黄金时段,并且Slack审查了所有机器人,因此我尚未将其发送给发行者。 但是,如果您像我在上面提到的那样渴望帮助我,那么我相信我们可以尽快提交它,并拥有一个每个人都可以使用的机器人。

翻译自: https://www.javacodegeeks.com/2017/05/ci-workflows-bots.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值