엔지니어링

Slack, Zapier, Elastic App Search를 사용하여 검색 봇 구축

Slack에서 쿼리할 수 있는 자체 검색 봇을 구축한다면 정말 유용하지 않을까요? Slack 채널 내에서 수많은 고객 레코드, 문서, 서버 로그, 헬프데스크 티켓 등을 살펴본다고 상상해 보세요. Zapier를 사용해 Elastic App Search와 Slack을 조합하여 유용한 검색 봇을 만들어 보겠습니다.

코딩은 필요 없습니다!

검색 봇: 어셈블

다음이 필요합니다.

  • 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로 전송됩니다.

mountains를 검색하라는 Slack 메시지와 mountains가 포함된 결과

Slack 연결

Zapier에 로그인한 후 **Make a Zap!**을 클릭합니다.

먼저, 트리거를 생성해야 합니다.

트리거는 Zapier를 Slack 작업 영역에 연결합니다.

Slack을 검색한 후, 이를 선택합니다.

일련의 Slack 트리거 중 선택할 수 있습니다.

여기서는 “New Message Posted Anywhere”를 선택하겠습니다.

Zapier Slack 앱에서 메시지 선택

Continue를 클릭합니다. Zapier가 Slack에 인증을 요청합니다.

인증되면, 계정 인스턴스를 Zap에 연결합니다.

봇 필터에 응답할지 여부에 대해 “no”라고 명시합니다. 우리에게 필요 없는 항목입니다!

우리에게 필요한 것은 Slack의 샘플 데이터입니다. 연결된 Slack 작업 영역의 테스트 채널에 “search for old growth”라고 입력합니다. 이 메시지는 Test This Step 단계에서 Zapier에 제공됩니다.

가져온 Slack 메시지

메시지를 선택한 후, Continue를 클릭합니다.

이 링크는 자동화 체인의 첫 번째 링크입니다. 훌륭합니다!

원활한 필터링

다음 단계는 하나뿐인 Zap 필터를 구성하는 것입니다.

ADD A HELPER STEP 헤더 아래에서 Filter를 클릭합니다.

유일한 옵션인 **Only continue if...**를 계속 진행합니다.

그리고 다음과 같이 입력합니다.

zap 필터 생성: 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를 입력한 다음 이를 선택합니다.

아래 두 필드는 FindReplace입니다.

Find에 “search for”를 입력합니다.

Replace를 빈 상태로 두고 Continue를 클릭합니다.

Zapier 포맷터

이 단계를 완료한 후, 다시 Add a Step을 클릭합니다.

캡틴 웹훅

두 번째 작업은 API 호출입니다. 여기에서 App Search로 보내는 쿼리를 작성합니다. “search for ...” 뒤에 오는 것이 쿼리 파라미터입니다.

웹훅을 사용하여 API 호출을 생성할 것입니다.

Choose an Action App 드롭다운 내에 Webhooks by Zapier라고 입력한 다음 이를 선택합니다.

CREATE 헤더 아래에서 POST를 선택한 후 Continue를 클릭합니다.

API 호출을 작성하려면 다음 4개의 필드가 필요합니다.

1. URL.

API 엔드포인트 URL은 App Search 대시보드에 제공되어 있습니다. https://host-2376rb.api.swiftype.com/api/as/v1/engines/sample-engine/search와 같은 자체 호스트 식별자를 포함해야 합니다. 위의 URL을 사용하여 예제를 작성하셔도 좋습니다. 이는 공개 URL입니다.

App Search 자격 증명 대시보드

2. 페이로드 유형.

이는 양식의 기본값입니다. Json을 선택합니다.

3. 데이터.

첫 번째 상자에 “query”를 입력합니다. 이는 POST에 포함할 파라미터입니다. 값 입력 바 옆의 아이콘을 클릭합니다. 여기서 1단계의 “search for old growth” 테스트 데이터를 선택합니다.

1단계의 Slack 메시지 샘플 데이터 사용

예제 Slack 메시지의 문자열이 포함된 Text 필드를 선택합니다.

4. 헤더.

양식 하단에 Headers 섹션이 있습니다. 이 첫 번째 상자에 “Authorization”을 입력합니다. 옆에 있는 상자에 "Bearer"라는 단어를 입력하고 이어서 App Search 대시보드의 Credentials 메뉴에 있는 공개 검색 키를 입력합니다.

공개 검색 키를 인증 헤더로 추가

자체 키가 없는 경우 이 공개 데모 키 search-7eud55t7ecdmqzcanjsc9cqu를 사용하셔도 좋습니다.

Continue를 클릭한 후, 테스트를 실행합니다. App Search 엔진의 공원 데이터가 포함된 예제 응답이 표시되어야 합니다!

좋습니다. 이로써 API 요청을 수행할 수 있게 되었습니다. 이제 응답 형식을 지정해야 합니다.

오토매지컬

Add a Step을 클릭합니다.

Action/Search를 선택한 후 Formatter를 찾아 선택합니다.

CREATE 헤더 아래에서 Utilities 옵션을 선택한 후 Continue를 클릭합니다.

TransformLine Itemizer를 입력합니다.

4단계의 API 호출에 따른 출력을 기반으로 Line-item(s) 헤더 아래에 두 개의 항목을 생성하려고 합니다.

  1. Title: “Results Title Raw”
  2. Link: “Results NPS Link Raw”

우리는 검색 결과에 미국 국립공원 이름과 자세한 정보가 포함된 링크만 표시되기를 원합니다.

API 호출에서 두 줄의 항목 생성

단계를 테스트하고 완료합니다. 그럼, 세 번째 작업으로 넘어가겠습니다...

단계, 형식, 단계

Add a Step...을 클릭합니다.

앞에서처럼 Formatter를 선택한 후, Utilities를 선택합니다.

하지만 이번에는 Line-Item to Text를 찾습니다.

Values라는 이름의 상자가 있고 그 안에 Input 헤더가 있습니다. 바를 클릭한 후 Step 5, Utilities선택하고 생성된 두 줄 항목을 모두 가져옵니다.

입력 상자 내의 구조는 Slack 메시지의 형식을 반영합니다. 다음과 같이 제목, 공백, 괄호 안에 URL 순서로 구성하려고 합니다.

[TITLE] ([LINK])

그리고 결과가 별도 줄에 표시되도록 하려고 합니다. 이를 위해 Separator 헤더 아래의 상자에 특수 문자 [:newline:]을 추가합니다.

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

Zap 내부는 다음과 같은 모습입니다.

새 줄의 형식을 올바르게 지정하면 API 응답이 표시되는 방식이 변경됩니다.

이제 마지막 단계입니다! 형식이 지정된 검색 결과를 특정 채팅 Slack으로 전송합니다.

마지막 전송

... Add a step을 클릭한 후, Action/Search를 입력합니다.

Slack을 선택합니다.

Create 아래에서 Send Channel Message를 선택한 후, save + continue를 선택합니다.

Slack 계정을 선택하고, Continue를 클릭합니다.

Zap이 작동할 채널을 선택합니다. 테스트하기에는 #random이 적합합니다.

Message Text 헤더 아래에서 상자를 클릭한 후, 6단계의 출력을 선택합니다.

게시할 Slack 채널과 모든 필터 체인의 출력인 메시지 콘텐츠 선택

봇에 Searchbot이라고 이름을 붙이고 멋진 아바타를 제공하여 개성을 부여할 수 있습니다.

이름: Slackbot 사진: APP SEARCH!

원하는 경우 아래 이미지를 마우스 오른쪽 버튼으로 클릭하여 이 블로그 페이지의 Elastic App Search 이미지 링크를 복사하세요.

아름다운 Elastic App Search 로고

일어나라, 검색 봇!

모든 구성이 완료되면, Zap을 활성화합니다.

ZAP 활성화!

Slack으로 이동하여 “search for something”을 입력하고 몇 가지 쿼리를 수행해 보세요.

쿼리에 응답하는 Slack을 보여주는 GIF

축하합니다! 이제 Slack에 지능형 검색 봇이 생겼습니다.

요약

검색 봇이 있으면 유용하게 활용할 수 있습니다. 내부 기술 자료를 검색하거나 대규모 서버 로그 풀에서 오류를 찾아야 할 수도 있습니다. 어떤 경우든 Elastic App Search를 기반으로 검색 봇을 구축하고 간단하게 Slack에 연결하십시오.

호스팅 버전의 14일 무료 체험판을 사용하거나 자가 관리형 베타 버전을 다운로드하여 시작할 수 있습니다. 각 새 체험판에는 샘플 데이터가 사전에 로드되어 제공되므로, 자체 데이터를 가져오기 전에 먼저 실험할 수 있습니다.