为了账号安全,请及时绑定邮箱和手机立即绑定

使用 NodeJS 和 Slack Bolt API 创建 Slack 机器人

简介

对开发者而言,利用API来创建能够自动化处理我们枯燥任务的工具总是让人觉得兴奋。通过使用Slack Bolt API,我们可以在Slack中创建这样的机器人。

在本文中,我们将使用Slack Bolt API和Node.js制作一个Slack机器人,并且增加一些功能。

激动不激动?

我也是哦 :)

那我们就来深入吧!

继续前进,让我们出发的GIF由吉米·法伦主持的今夜秀提供

Slack是什么?你知道吗?

slack <!-- Slack 图标 -->

Slack 是一个流行的沟通平台,被许多组织、公司和技术团队广泛使用。

你会发现 Slack 有一个 Slack 机器人助手,它通过自动化流程来简化工作流程并提升团队协作。

现在让我们来回答一个大家最常问的问题:制作一个Slack机器人需要什么条件呢?

先决条件
  • 您的机器上已经安装了 Node.js 和 NPM。

如果你想了解更多,可以参考“NPM全解”,可以看看我的博客:NPM全解

  • 对 JavaScript 和 NodeJS 有一些基本的了解。

有了这些,你就可以开始这个项目的准备工作了!

thumbs up GIFs | Tenor

项目启动

我们将在这里讨论在Slack工作空间中安装机器人应用的步骤如下。

首先,我们将会创建一个新的工作区,然后在这个工作区创建一个新的Slack应用。

创建一个新的Slack工作空间

我们将遵循以下步骤创建一个新的Slack工作空间

点击Slack网站

点击一下 新建一个工作区

第三步:现在请输入你的邮箱地址。

  1. 按照所有指示和步骤来创建你的工作区。

  2. 现在您可以创建频道,并邀请团队成员加入新创建的工作空间。还可以发送私信。

我已经建立了一个名叫 Personal_Server 的工作区,我将在这个工作区里做一个 Slack 机器人。

自己的服务器

提示:您也可以直接使用现有的工作区,不用新建新的

创建一个新的Slack

以下是我们的步骤,来创建Slack应用,也就是我们自己的Slack机器人。

去这个Slack API网站

现在,点击一下 您的应用程序

Slack API官网
点击图片查看Slack API官网。

  1. 接下来点击新建应用。

新建应用

  1. 点击“新建”。

现在输入应用的名字,选择你最近新建的工作区,然后点击“创建应用”按钮。

提示:您也可以选择任何已有工作区而无需新建工作区

创建工作区
现在您将被重定向到App凭证页。

在你的应用开始与Slack通信之前,你需要先设置权限。为此,请转到OAuth和权限页面中的范围部分,并滚动到该部分。

现在,添加这些项。

范围

好的!想避免潜在的bug吗?那就也启用chat:write权限吧。

范围

在左侧边栏中,点击设置 > 安装应用 > 安装至工作区

你将获得机器人用户的OAuth令牌(Token)!

现在我们暂时先别看这个 Slack API 页面,用 NodeJS 来配置我们的 NodeJS 服务器吧。

Slackbot 机器人设置

配置一个服务器来处理发往Slackbot的请求。现在开始编码吧!

创建一个名为 SLACK-BOT 的文件夹,并运行 npm 初始化。

创建一个名为SLACK-BOT的目录,进入该目录并初始化npm项目。
mkdir SLACK-BOT 
cd SLACK-BOT
npm init -y # 使用默认配置快速初始化npm项目

全屏:开/关

提示:-y 参数会自动确认所有设置中的问题。

现在我们要安装以下软件包,

  • slack/bolt 模块 - 用于将Slack连接到服务器上的应用。

  • (dotenv) 用来存储 API 密钥和数据库密码。

  • nodemon: 用来启动服务器的一个工具。

要安装这些包,可以运行如下命令

在终端中输入以下命令来安装所需的npm包:

    npm i @slack/bolt dotenv nodemon

全屏 退出全屏

现在,nodemon会在你每次更改代码时自动重启服务器。它会在检测到更改时自动重启服务器。

在你的 package.json 文件的 scripts 部分,为 nodemon 加入下面的配置。

nodemon 设置图

我们需要在根目录中创建一个app.js文件,该文件作为我们项目的主入口点。

使用令牌认证机器人

现在来谈谈认证这一部分。在与机器人程序通信之前,Slack 首先需要通过 SIGNING_SECRETBOT_TOKEN 来验证你的机器人程序。

两者都保存在 .env 文件中,以免这些信息泄露到 GitHub 上。

那我们该怎么拿到 SIGNING_SECRETBOT_TOKEN 呢?

SIGNING_SECRET → 去基本信息页面看看,你就能找到签名密钥。

唱歌的秘密

BOT_TOKEN → 访问OAuth和权限页面,在那个页面,你可以拿到OAuth令牌。

OAuth Token(点击图片查看OAuth Token)

现在,在项目的根目录下创建一个 .env 文件,用于存储签名密钥(Signing secret)和 OAuth 令牌(OAuth token),这些内容将不会上传到 GitHub。

SIGNING_SECRET="请替换为实际的签名密钥"
BOT_TOKEN="请替换为实际的机器人令牌"

进入全屏 退出全屏

设置服务器

现在,请在app.js文件中编写如下代码

    const { App } = require("@slack/bolt");
    require("dotenv").config();
    // 使用 token 初始化应用
    const app = new App({
      token: process.env.BOT_TOKEN,
      signingSecret: process.env.SIGNING_SECRET,
    });
    (async () => {
      const port = 3000;
      await app.start(process.env.PORT || port);
      console.log("Bolt 应用已启动!");
    })();

全屏模式 退出全屏

现在运行这个命令 npm run dev,你将在终端中看到如下消息,

如图所示,这是你的终端输出。

这意味着到现在为止一切都很顺利!

现在,最大的问题在于服务器和Slackbot将如何交流?

让我们一起深入探讨吧。

服务器和Slackbot会怎样交流?

Slack 有一个叫套接字模式的功能,允许 Slack 使用 WebSockets 连接到你的应用服务器。

  1. 进入设置,→ 基本信息页面 → 应用令牌。

    点击生成令牌和权限。

  2. 给你的token起个名字,并为你的应用指定两个权限。
  • 写连接权限:write

  • 读取权限 (authorizations:read)

生成应用层的token

点击 生成 按钮。然后在下一页复制 APP_TOKEN,并粘贴到 .env 文件中。

现在,.env 文件的内容如下所示:

SIGNING_SECRET="签名密钥"
BOT_TOKEN="机器人Token"
APP_TOKEN="应用Token"

点击全屏 撤出全屏

接下来去 设置套接字模式,并开启 ‘启用套接字模式’ 切换.

在更新之后,更新app.js文件中的应用配置,将 socketMode 设置为 true,并使用你的 appToken

app.js 文件现在将看起来像:

     const { App } = require("@slack/bolt");
    require("dotenv").config();
    const app = new App({
      token: process.env.BOT_TOKEN,
      signingSecret: process.env.SIGNING_SECRET,
      socketMode: true,
      appToken: process.env.APP_TOKEN,
    });
    (async () => {
      const port = 3000;
      await app.start(process.env.PORT || port);
      console.log("Bolt 应用已启动");
    })();

切换到全屏模式 退出全屏

当你运行这个文件时,你会看到类似这样的内容在终端上显示。

终端显示

增加功能

配置基本上完成了。接下来就是添加功能,让Slackbot真正地运行起来。

激动吗?!

那我们一起来做吧!

回复消息时:

在 Slack 中,你可以通过提及机器人名称来向机器人发送消息,比如 @Personal_Bot

在 Slack 中,应用被提及是一种 事件。为了让你的机器人能够接收事件,你需要设置事件订阅。你还可以监听其他事件,比如当新用户加入群组、新建一个频道等。

点击 订阅机器人事件的 下拉 菜单,然后选择以下 事件

活动

接着,点击页面底部的保存修改

如果提示需要重新安装,就重新安装吧。

我们现在将编写代码,看看应用是否正确回应收到的消息。

请在app.js文件中添加以下代码。

    app.message("hello", async ({ message, say }) => {
        try {
          say(`你好 <@${message.user}>!`);
        } catch (error) {
          console.error(error);
        }
    });

全屏模式 退出全屏

根据上述代码,app.message 用于定义应用程序将如何回应,当接收到 “hello” 消息时,应用将回复 “Hello @username”。

但是还有一个问题。当你在 Slack 的 Apps 选项卡里点击机器人时,你会看到“你不能向此应用发送消息”的提示。解决方法是开启该功能。

现在回到设置应用的页面

然后转到功能中的应用首页。现在滚动到标签显示部分。向下滚动并找到允许用户从消息标签发送斜线命令和消息的选项,然后勾选它。

显示标签

现在,按 ctrl + r 刷新 Slack。

试着发送一条消息,比如 @ Personal_Bot 你好,你会发现它会回复 Hello @Olibhia Ghosh

这条消息

实际上,消息可能与我们提供的不完全相同。为此,Slack 提供了正则表达式功能,使得机器人可以回应包含特定关键词或部分内容的消息。

    app.message(/hi/, async ({ message , say }) => {
        try {
          say(`嗨 <@${message.user}>!`);
        } catch (error) {
            console.log("err")
          console.error(`发生错误: ${error}`);
        }
    });

全屏模式,退出全屏

如果你发送任何类似 hi personal bot 的消息,机器人会回复,因为它包含着这个词。

机器人消息

这都是关于我如何构建我的Slack机器人的故事。你可以通过查看Slack Bolt API文档添加更多功能。

这里是我制作的Slack机器人程序的源代码链接。GitHub仓库链接

结论部分

希望你已经按照这个分步指南成功创建了你的第一个Slack机器人。现在继续探索API的各种可能性,并为你的机器人添加更多的功能,以增强聊天机器人的功能。

我希望能让大家都懂。

如果你觉得这篇博客很实用又有启发性,请转发它并在下方留言你的看法。

关注我们获取更多这样的内容。

这是你可以联系我的方式。

邮箱 - olibhia0712@gmail.com

社交媒体:Twitter账号LinkedIn主页GitHub主页

谢谢你抽时间看这篇!

谢谢

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消