最初发布 在 Airbyte 网站上

概述

Slack 免费层 仅保存最后 10,000 条消息。对于社交 Slack 实例,升级到付费计划以保留这些消息可能不切实际。同样,对于像 Airbyte 这样的开源项目,我们通过公开的 Slack 实例与社区互动,为每个 Slack 成员支付一个席位的成本是禁止的。

但是,搜索旧消息可能非常有用。失去那些历史记录感觉就像某种高级的记忆力丧失。关于 Java 8 Streams 的那个笑话是什么?这个贡献者问题听起来很熟悉——我们以前没见过吗?但是你就是记不起来!

本教程将向您展示如何免费使用 Airbyte 保存这些消息(即使 Slack 删除了对它们的访问权限)。它还将为您提供一种方便的方法来搜索它们。

具体来说,我们将从您的 Slack 实例导出消息到一个名为 Meilisearch 的开源搜索引擎中。我们将重点介绍如何从您的本地工作站运行此设置。最后我们将提到如何设置此管道的更生产版本。

我们希望使这个过程变得容易,因此,虽然我们会链接到一些外部文档以供进一步探索,但我们会提供所有您需要在此处设置并运行的说明。

设置 Meilisearch

首先,让我们在我们的工作站上运行 Meilisearch。Meilisearch 有广泛的文档可用于 入门。但是,在本教程中,我们将为您提供使用 Docker 设置 Meilisearch 的所有必要说明。

docker run -it --rm \
  -p 7700:7700 \
  -v $(pwd)/data.ms:/data.ms \
  getmeili/meilisearch

就是这样!

Meilisearch 将数据存储在 $(pwd)/data.ms 中,因此如果您想将其存储在其他位置,只需调整此路径即可。

如何将您的 Slack 消息复制到 Meilisearch

设置 Airbyte

确保您已安装 Docker 和 Docker Compose。如果您尚未设置 Docker,请按照 此处说明 在您的机器上设置它。然后,运行以下命令

git clone https://github.com/airbytehq/airbyte.git
cd airbyte
docker-compose up

如果您遇到任何问题,请随时查看我们更全面的 入门 获取更多帮助。

当您看到 Airbyte 横幅时,UI 即可在 http://localhost:8000/ 上使用。设置完用户偏好后,您将被带到一个页面,要求您设置源。在下一步中,我们将介绍如何执行此操作。

设置 Airbyte 的 Slack 源连接器

在 Airbyte UI 中,从下拉菜单中选择 Slack。我们提供了在 Airbyte 中设置 Slack 源的分步说明 此处。这些说明将引导您完成如何在该页面上完成表格的操作。

在完成这些说明后,您应该已经在 Airbyte UI 中创建了一个 Slack 源。现在,只需将您的 Slack 应用程序添加到一个公开频道(您可以在稍后将其添加到更多频道)。仅来自该频道的消息将被复制。

Airbyte 应用程序现在将提示您设置一个目标。接下来,我们将介绍如何设置 Meilisearch。

设置 Airbyte 的 Meilisearch 目标连接器

返回 Airbyte UI。它应该仍在提示您设置目标。从下拉菜单中选择“Meilisearch”。对于主机字段,设置:http://localhost:7700。api_key 可以留空。

设置复制

在下一页,系统将要求您选择要复制哪些数据流。我们建议取消选中“文件”和“远程文件”,因为您实际上无法在此搜索引擎中轻松搜索它们。

对于频率,我们建议每 24 小时一次。

搜索 Meilisearch

保存连接后,Airbyte 应该立即开始复制数据。完成复制后,您应该看到以下内容

同步完成后,您可以通过向 Meilisearch 发出搜索请求来验证这一切是否正常工作。根据您的 Slack 实例的大小,复制可能需要几分钟。

curl 'http://localhost:7700/indexes/messages/search' --data '{ "q": "<search-term>" }'

例如,我在复制的消息中有一条消息:欢迎使用 airbyte..

curl 'http://localhost:7700/indexes/messages/search' --data '{ "q": "welcome to" }'
# => {"hits":[{"_ab_pk":"7ff9a858_6959_45e7_ad6b_16f9e0e91098","channel_id":"C01M2UUP87P","client_msg_id":"77022f01-3846-4b9d-a6d3-120a26b2c2ac","type":"message","text":"welcome to airbyte.","user":"U01AS8LGX41","ts":"2021-02-05T17:26:01.000000Z","team":"T01AB4DDR2N","blocks":[{"type":"rich_text"}],"file_ids":[],"thread_ts":"1612545961.000800"}],"offset":0,"limit":20,"nbHits":2,"exhaustiveNbHits":false,"processingTimeMs":21,"query":"test-72"}

通过 UI 搜索

向您的 Slack 历史记录发出 curl 请求进行搜索有点笨拙,因此我们修改了 Meilisearch 在 其文档 中提供的示例 UI,以便通过 Slack 结果进行搜索。

将此 html 文件 下载(或复制粘贴)到您的工作站。然后,使用浏览器打开它。您现在应该能够在搜索栏中写入搜索词并立即获得结果!

“生产化”保存 Slack 历史记录

您可以在 此处 找到有关如何在各种云平台上托管 Airbyte 的说明。

有关如何在云平台上托管 Meilisearch 的文档可在 此处 找到。

如果您想使用上面部分中提到的 UI,我们建议将其静态托管在 S3、GCS 或等效服务上。