在 10 分钟内构建一个 Slack 中的数据检索应用





0/5 (0投票)
在本文中,我们将构建一个简单的斜杠命令,该命令使用户能够将数据存储在MongoDB数据库中并从中检索数据。
Slack不仅是历史上增长最快的初创公司,它还是同名的应用程序,也是当今最受欢迎的通信工具之一。我们在MongoDB广泛使用它来促进团队之间和公司内部的高效沟通。我们并非孤例。我遇到的每个开发人员似乎都在他们的公司中使用它。
Slack(有很多方面)一个有趣的地方是它的可扩展性。有几种方法可以扩展Slack。构建聊天机器人、与通信服务接口的应用程序,以及通过引入称为“斜杠命令”的附加命令来扩展Slack,这些命令使用户能够与外部服务进行通信。在本文中,我们将构建一个简单的斜杠命令,该命令使用户能够将数据存储在MongoDB数据库中并从中检索数据。我一直在网上找到有趣的信息,我想与我的团队成员分享,所以让我们构建一个名为URL Stash的应用程序,它将存储有趣的URL,以便稍后通过Slack斜杠命令检索。现在,请跟随下面的视频,或跳过视频,继续阅读详细信息。
创建Slack应用程序
首先登录您的Slack团队,或者您可以创建一个新的团队进行测试。访问Slack API控制台以创建新的Slack应用程序。
您需要有一个Slack团队或实例,我们可以在其中安装和测试URL Stash。我将使用MongoDB Community Slack实例。在我们的团队工作区中创建应用程序后,我们可以暂时搁置Slack应用程序,并创建应用程序的另一半——MongoDB Atlas集群、数据库、集合和Stitch应用程序。
创建Atlas集群、数据库和集合
存储URL意味着我们需要一个地方来存储它们。在本例中,我们将演示使用MongoDB Atlas执行此操作的简便性。我们将首先登录MongoDB Atlas,创建一个集群、数据库和集合。您可以免费开始并创建一个M0类集群实例。启动集群后,使用Atlas中的集合查看器创建一个数据库和一个集合。我将我的命名为exampledb和examplecoll,但您可以随意命名。您只需确保在下一节Stitch中创建的函数中正确引用它们。
创建Stitch应用程序
Stitch应用程序与特定集群相关联,因此在创建集群后,您可以从Atlas左侧导航菜单中单击Stitch应用程序,然后单击创建新应用程序。
创建服务
Stitch中的服务是与外部世界集成的主要点——在本例中是Slack。让我们创建一个HTTP服务,它将提供Slack和Stitch之间的集成点。
单击服务,添加新服务,单击HTTP,然后命名该服务。单击添加服务。然后在设置选项卡中,为传入的Webhook起一个有意义的名称。我选择了“slack”,但您可以随意命名。Webhook将提供一个外部Web地址,该地址将被插入到您的Slack应用程序中。
插入此Webhook URI将告知您的Slack应用程序将对话的某些详细信息从Slack发送到您新创建的Stitch应用程序。
单击保存后,您的新Webhook将获得一个公共URI,您将能够编辑当请求发送到Webhook时将执行的JavaScript代码。您可能需要复制Webhook URL,因为稍后创建Slack斜杠命令时会用到它。
这就是奇迹发生的地方。短短几分钟,我们就创建了Slack和Stitch之间的集成。只需进行一些配置(命名)即可。让我们将注意力转移到我们将用于为Slack用户存储和检索URL的代码上。
Stitch服务的核心是在收到其Webhook URL的传入请求时运行的函数。在本例中,我们选择响应POST请求。在Slack中,我们将通过POST将数据从斜杠命令发送到我们的Stitch函数。我们将评估用户作为斜杠命令一部分发送的文本,然后存储URL,或列出先前已存储的现有URL。
由于函数接收来自Slack的详细信息,因此我们将在斜杠命令本身之后启用一组简单的命令。我们将允许用户存储URL,因此我们将使用命令格式
/url stash [url]
由于我们将允许用户查看先前已存储的URL,因此我们将启用“list”选项
/url list
最后,由于我们将允许用户删除他们先前添加的URL,因此我们将启用“remove”选项
/url remove [url]
有了这些基本命令,让我们为服务中的函数编写一些基本的JavaScript代码。
exports = async function (payload) {
const mongodb = context.services.get("mongodb-atlas");
const exampledb = mongodb.db("exampledb");
const examplecoll = exampledb.collection("examplecoll");
const args = payload.query.text.split(" ");
switch (args[0]) {
case "stash":
const result = await examplecoll.insertOne({
user_id: payload.query.user_id,
when: Date.now(),
url: args[1]
});
if (result) {
return {
text: `Stashed ${args[1]}`
};
}
return {
text: `Error stashing`
};
case "list":
const findresult = await examplecoll.find({}).toArray();
const strres = findresult.map(x => `<${x.url}|${x.url}> by <@${x.user_id}> at ${new Date(x.when).toLocaleString()}`).join("\n");
return {
text: `Stash as of ${new Date().toLocaleString()}\n${strres}`
};
case "remove":
const delresult = await examplecoll.deleteOne({
user_id: {
$eq: payload.query.user_id
},
url: {
$eq: args[1]
}
});
return {
text: `Deleted ${delresult.deletedCount} stashed items`
};
default:
return {
text: "Unrecognized"
};
}
}
Stitch Slack HTTP服务的示例函数
我们函数的核心是switch语句,它评估Slack用户发送到命令的文本。
创建斜杠命令
让我们完成流程的最后一步,并向我们的Slack应用程序添加一个斜杠命令。为此,请返回Slack应用程序控制台并单击“斜杠命令”。
在Slack中创建斜杠命令
为您的斜杠命令命名。请记住,您需要获取我们在前面部分创建的MongoDB Stitch服务Webhook URI。保存此斜杠命令后,您应该在Slack应用程序管理控制台的左侧导航栏中选择“安装您的应用程序”。
安装应用程序
这将提示您确认在Slack团队中的身份,并授权该应用程序在您的工作区中使用。
授权应用程序安装
完成后,您的应用程序几乎就完成了。您可以切换回Slack客户端,访问您自己的私人聊天频道以保持隐私,然后输入您新创建的Slack斜杠命令。例如,“/url stash https://mongodb.ac.cn”。按Enter键将命令发送到Slack,然后发送到您新创建的Stitch应用程序。您应该会看到类似以下的响应
就是这么简单,您已经创建了一个功能齐全的Slack聊天机器人,或者至少是一个只有几行代码且无需服务器的斜杠命令!
这仅仅是一个起点,您现在应该能够轻松地为您的新Slack应用程序构建其他功能。要查看更多详细信息并分叉项目,请访问GitHub存储库。