创建一个简单的Slack应用

在本文中,将创建一个简单的Node.js应用程序,该程序能够向Slack频道发送消息。如果尚未完成本系列教程的第一部分,在那里学习了Slack的API并创建了第一个工作区和应用程序,请先完成那部分。为了保持简单,将使用Slack的Web API。因此,所需要做的就是发送HTTP POST请求。由于这个功能已经内置在Node的标准库中,创建应用程序将会非常迅速和简单。

开始之前

如果尚未安装Node.js,请从Node.js网站下载。建议下载最新的LTS版本,截至撰写本文时是10.14.2。如果安装的是旧的8.x版本,将要编写的代码也应该适用。如果在2057年阅读本文,并且正在运行Node.js 257.8.11,假设ECMAScript 2015没有被弃用,假设Slack仍然存在,那么这段代码可能仍然适用。

安装Node.js

要开始,请安装Node.js到计算机。可以从Node.js的官方网站下载。建议下载最新的长期支持(LTS)版本,以确保稳定性和兼容性。

安装应用程序到Slack工作区

要开始,需要将应用程序安装到Slack工作区,这将给一个访问令牌,可以使用它来发布消息到工作区的频道。首先,通过导航到Slack API应用程序页面,然后点击列表中出现的应用程序,找到应用程序的管理员页面。

获取访问令牌

当应用程序的管理员页面加载后,点击左侧菜单中的'OAuth和权限'。当这个页面加载时,滚动到'Scopes'。需要至少添加一个范围,然后才能生成访问令牌。这是有意义的,因为没有任何授权的范围,应用程序将不被允许做任何事情,一个授权什么也不做的访问令牌将不会非常有用!

编写代码

现在有了需要的信息,可以继续编写将使应用程序工作的代码。

首先,在终端或命令提示符中,为应用程序创建一个新目录:

mkdir slack-app

然后切换到新目录,并运行npm init:

cd slack-app npm init

对于npm的问题,可以随意回答,或者全部按回车键使用默认值。这将为项目创建一个package.json文件。

接下来,打开目录中的文本编辑器。Visual Studio Code是一个免费的编辑器,适用于Windows、MacOS和Linux,如果不确定使用什么,这是一个不错的选择。但是,如果已经有了另一个喜欢的JavaScript编辑器,请继续使用它。

下一步是安装一个NPM包,这将帮助创建应用程序。为此,请运行以下命令:

npm install axios

这看起来有点令人失望。意思是,正在尝试创建一个超级惊人的Slack应用程序,只安装了一个包?!?而且更糟糕的是!甚至可以在不安装任何依赖项的情况下写入Slack频道!Axios只是一个不错的HTTP客户端,它将使生活变得更轻松。

在文本编辑器中打开slack-app目录,创建一个名为app.js的文件。这个文件将包含整个Slack应用程序!首先,向文件添加以下代码:

const axios = require('axios'); const accessToken = 'your-token-goes-here';

还没有太多,但开始了一个很好的开始!已经导入了Axios,并定义了将要使用的访问令牌。记住之前在工作区安装应用程序时生成的访问令牌吗?这就是想要放置它的地方。

在真正的、生产就绪的应用程序中,会希望将应用程序的秘密存储在比这更安全的地方;有些人喜欢将秘密保存在服务器上的环境变量中,运行应用程序,其他人使用像Kubernetes secrets或AWS secrets manager这样的解决方案。

请记住不要将访问令牌提交到公共GitHub仓库,除非希望世界上的每个人都知道它。在情况下,唯一可能发生的事情是,世界上所有的喷子都可以在Slack工作区愉快地发布消息。这不会是一个巨大的安全漏洞,但这肯定会很烦人。

现在有了Axios和令牌,接下来是什么?目前,应用程序非常无聊,它什么也不做。所以让编写一个函数来向Slack发送消息!向app.js添加以下代码:

async function postMessage(messageText) { const url = 'https://slack.com/api/chat.postMessage'; const post = { channel: '#general', text: messageText }; const headers = { 'Content-Type': 'application/json', 'Authorization': `Bearer ${accessToken}` }; try { const response = await axios.post(url, post, { headers: headers }); console.log(`Response code: ${response.status}`); } catch (e) { console.log(`Error posting message: ${e}`); } }

有了这段代码,就完成了整个Slack API消息发布器。每当调用这个函数并传递一个消息时,它将把消息写入Slack工作区的#general频道。

为了好玩,让添加更多的代码,这样就可以看到Slack消息发布器实际上工作了:

postMessage('Hello, is anyone out there?');

在这里,只是调用友好postMessage函数,并要求它为发布一个消息。如果登录到Slack工作区并检查#general频道,将看到应用程序确实发布了消息。

参与竞赛

如果想加入竞赛参与者列表,还有一些步骤需要遵循。首先,需要找到CodeProject会员编号。可以通过点击页面右上角的CodeProject用户名来找到它。建议在新标签页中打开它。

一旦到了那里,会看到一个包含头像的框。在这个框的顶部,会看到一个标签,比如"Member 123456789"。123456789部分是CodeProject会员编号。

接下来,打开app.js文件并添加以下代码:

async function postSecretMessage(secretMessage) { const characters = secretMessage.split('').map(ch => ch.charCodeAt(0)); var hash = characters.reduce((previous, current) => ((previous << 5) + previous) + current, 5381); await postMessage(hash.toString()); } postSecretMessage('123456789');

将123456789替换为会员编号。完成后,再次运行程序。如果检查Slack工作区的#general频道,将看到一个数字代码已经写入频道。

一旦有了代码,可以在这里输入它。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485