工程

使用 Slack、Zapier 和 Elastic App Search 构建 Searchbot

构建自己的能够从 Slack 中进行查询的 Searchbot,那岂不是大有用处?想象一下,从一个 Slack 频道就能够查看成千上万的客户记录、文章、服务器日志或帮助台票证。接下来,我们就介绍如何通过使用 Zapier 将 Elastic App Search 和 Slack 组合在一起,构建这样一个有益的 Searchbot。

无需编码!

Searchbot:组装

我们需要:

  • 一个 Elastic App Search 帐户或 14 天免费试用版。Elastic App Search 是一个打造世界一流搜索体验的工具箱。您可以利用权重和提权内容监管同义词来微调相关性,并捕获深度搜索分析。最棒的是,它是基于 Elastic Stack 构建的。
  • Elastic App Search 文档。每个新帐户都提供了一个示例搜索引擎字段,可用来搜索预加载的美国国家公园数据。您可以直接使用示例数据,也可以索引自己的文档,并相应参考本教程的内容。
  • 一个 Zapier 帐户或试用版。Zapier 是一个自动化服务,您可以通过它创建 Zap。Zap 是一个自动化管道。自动化链条中的每一步都可以操作和转换数据。
  • 大约 30 分钟。

最后,在指定的 Slack 频道中键入“search for query ”,这会将 query 作为 API 调用发送到 Elastic App Search:

A slack message that says search for mountains and results containing mountains

选择 Slack

登录 Zapier,单击 Make a Zap!(创建 Zap!)

首先,我们需要创建一个 Trigger(触发器)。

触发器会将 Zapier 连接到 Slack 工作区

搜索 Slack,然后选择它。

您可以从一组 Slack 触发器中进行选择。

我们不妨选择“New Message Posted Anywhere(任意位置发布的新消息)”

Selecting message from the Zapier Slack App

单击 Continue(继续)。Zapier 会要求对 Slack 进行身份验证。

一旦通过身份验证,就会将帐户实例与 Zap 关联。

对于是否响应机器人筛选器,请选择“否”,因为我们不需要。

我们切实需要的是来自 Slack 的一小部分示例数据。在关联的 Slack 工作区的测试频道内,键入“search for old growth”。然后,此消息会在测试此步骤阶段提供给 Zapier。

An imported Slack message

选择此消息,然后单击 Continue(继续)。

这是我们自动化链条中的第一个环节 - 开局不错!

顺畅筛选

下一步是配置唯一的 Zap 筛选器

ADD A HELPER STEP(添加助手步骤)标题下,单击 Filter(筛选器)。

继续选择选项 Only continue if…(仅在以下条件下继续...)

然后按下图所示填充:

Building a zap filter:Text (Contains) "search for"

[Text] [Contains] "search for"

当有人在 Slack 中键入 search for 时,就会激活此 Zap。

接下来…创建操作!

现在,我们需要创建四个操作来加以实现,以便将“search for”后面的任何内容添加为查询,并从 App Search 中返回已设置好格式的结果。

第一个操作是从我们要传递到 App Search 的搜索查询中剥离“search for”文本。

单击 Add a step(添加步骤),然后选择 Action/Search(操作/搜索)。

选择 Formatter(格式化程序)。这是 BUILT-IN APPS(内置应用)下的第一个选项。

在此处,选择 Text(文本)。

此时会出现 Transform(转换)下拉菜单。在菜单中单击,键入 Replace(替换),然后选中它。

最下面的两个字段是 Find(查找)和 Replace(替换)。

Find(查找)字段内,键入“search for”。

Replace(替换)字段留空,然后单击 Continue(继续)。

The Zapier formatter

完成此步,然后再次单击 Add a Step(添加步骤)。

Webhook 队长

第二个操作是我们的 API 调用。我们将在这里构建发送到 App Search 的查询。“search for …”后面的任何内容都是查询参数。

我们将使用 Webhook 生成 API 调用。

Choose an Action App(选择操作应用)下拉菜单中,键入 Webhooks by Zapier,然后选中它。

CREATE(创建)标题下,选择 POST(发布),然后单击 Continue(继续)。

构建 API 调用需要四个字段:

1.URL

API 端点 URL 在 App Search 仪表板中提供。它必须包含您自己的主机标识符,如 https://host-2376rb.api.swiftype.com/api/as/v1/engines/sample-engine/search。您可以随意使用上面的 URL 来构建示例,它是公共的。

The App Search credentials dashboard

2.有效负载类型

默认为“Form”(表单)。选择 Json

3.数据

在第一个框中,输入“query”,这是我们将在 POST 中包含的参数。单击值输入栏旁边的图标。从此处选择第 1 步中的“search for old growth”测试数据:

Using the Slack message sample data from step 1

选择包含 Slack 示例消息中字符串的 Text(文本)字段。

4.标题

在表单底部,有一个 Headers(标题)部分。在第一个框中,输入“Authorization”。在其旁边的框中,输入“Bearer”一词,后跟您的公共搜索密钥,此密钥可以在 App Search 仪表板的 Credentials(凭据)菜单中找到:

Adding the Public Search Key as an Authorization header

如果您没有自己的密钥,可以使用以下公共演示密钥:search-7eud55t7ecdmqzcanjsc9cqu

单击 Continue(继续),然后运行测试。您应会看到一个示例响应,其中包含来自 App Search 引擎的公园数据!

真棒,接下来我们就可以发出 API 请求了。但是现在我们需要设置响应内容的格式。

自动化魔力

单击 Add a Step(添加步骤)。

选择 Action/Search(操作/搜索),然后查找并选择 Formatter(格式化程序)。

CREATE(创建)标题下,选择 Utilities(实用程序)选项,然后单击 Continue(继续)。

Transform(转换)部分,在 Line Itemizer(行清单)中键入内容。

我们希望基于第 4 步中 API 调用的输出结果在 Line-item(s)(行项目)标题下创建两个项目……

1.标题:“Results Title Raw”(原始结果标题) 2.链接:“Results NPS Link Raw”(原始结果 NPS 链接)

我们只想在结果中显示美国国家公园的名称和一个包含更多信息的链接:

Creating two line items off of the API call

测试并完成此步骤。然后,开始创建第三个操作……

步骤、格式、步骤

单击 Add a Step(添加步骤)……

如之前一样,依次选择 Formatter(格式化程序)、Utilities(实用程序)……

但这一次要查找 Line-Item to Text(行项目到文本)。

有一个名为 Values(值)的框,其中含有 Input(输入)标题。在栏内单击,然后选择第 5 步,Utilities(实用程序),并拉取已创建的两个行项目。

注意,输入框中的结构将反映 Slack 消息的格式。我们希望有标题、空格,后跟用括号括起来的 URL:

[TITLE] ([LINK])

我们想让结果在单独的一行中显示。为此,在 Separator(分隔符)标题下方的框中,添加特殊字符:[:newline:]:

[TITLE] ([LINK])
[TITLE] ([LINK])
[TITLE] ([LINK])
[TITLE] ([LINK]) 

在 Zap 中,它是这样的:

Formatting the new lines properly, which changes how the API responses appear.

现在,到了最后一步!将格式化的搜索结果发送到特定的聊天 Slack。

最后传输

单击 Add a step(添加步骤),键入 Action/Search(操作/搜索)……

选择 Slack

Create(创建)下:依次选择 Send Channel Message(发送频道消息)、save + continue(保存并继续)。

选择您的 Slack 帐户,单击 Continue(继续)……

选择 Zap 将在其中运行的频道:选择 #random 进行测试是个不错的选择。

Message Text(消息文本)标题下,在框内单击,然后选择第 6 步的输出结果:

Selecting which Slack channel to post within, and the message contents which is the output of all of the filter chain

如需增加点特色,您可以将机器人命名为 Searchbot,并使用一个好看的头像。

name:Slackbot picture:APP SEARCH!

如果您喜欢,可以右键单击下面的图片,从本博客页面复制 Elastic App Search 图片链接:

The beautiful Elastic App Search logo

起立,SEARCHBOT!

一切配置完成后,启用 Zap:

ENABLE THE ZAP!

前往 Slack,键入“search for something”,然后尝试几个查询。

A GIF showing Slack responding to queries

恭喜您!现在,您的 Slack 中已经有了一个智能的 Searchbot。

总结

Searchbot 机器人是非常有用的。也许您希望搜索内部知识库,或者从大型服务器日志池中查找错误。无论是哪种情况,都可以在 Elastic App Search 上轻松构建一个 Searchbot,并与 Slack 进行连接。

现在,您可以使用我们的托管版本免费 14 天试用版 ,或下载公测版(自管型版本)来开始使用 App Search。每个新的试用版都预先加载了一组示例数据,便于您在使用自己的数据之前进行试验。