brunch

You can make anything
by writing

C.S.Lewis

by Lumos Jul 30. 2024

이 글을 보면 당신도 슬랙봇을 만들 수 있다!(기본편)

자동화까지 가보시죠

그럴 때가 있지 않나요?

 어? 이 아이디어 대박인데?

가끔씩 좋은 아이디어가 떠오르면 이다음 생각은 "어떻게 하면 이 아이디어를 가장 빠르고 효과적으로 검증할 수 있을까?"였습니다. 그리고 이번 아이디어의 해답으로 슬랙봇이 눈에 들어왔습니다. 


최근 회사에서 자동화 관련 슬랙봇 제작 요청을 진행했던 경험이 떠올랐습니다. 당시 제가 직접 만들지는 않았지만, 그 과정을 지켜보며 슬랙봇의 잠재력과 활용도에 깊은 인상을 받았죠. 이제 제 아이디어를 실현할 기회가 왔다고 생각했습니다.


사내에서 먼저 테스트해보고 괜찮으면 더 디벨롭해 보자는 생각이 들었고, 슬랙봇 관련해서도 계속 관심이 있는 상태였습니다. 


그리고 슬랙봇 관련된 요청을 할 때마다 "이 정도면 충분해요~"라는 답변을 들으며, 저는 항상 뭔가 부족함을 느꼈습니다. 구조나 흐름을 이해하는 것이 양쪽 모두에게 도움이 될 거라 확신했기에, 더 나은 소통 방법을 찾고 싶었습니다.


슬랙봇이 간단한 아이디어를 실현시키기 좋은 툴임이 분명하다고 판단해서 오래간만에 코드를 더듬어가며 만들기 시작했습니다.


목표와 요구사항


처음 목표는 질문을 만들고 저장하고 활용하는 긱봇과 유사한 기능을 구현하는 것이었습니다. 그 이후엔 자동화였어요! 아이디어가 꼬리에 꼬리를 물어서 요구사항은 다양했지만, 우선 기본적인 슬랙봇을 만들어 전체적인 흐름을 파악하고자 했습니다.


작업하려는 플로우

1. 커맨드 입력("/망고")

2. 원하는 대답("망고란~~~")


흐름

0. 슬랙 워크스페이스 생성

1. 슬랙 앱 생성

2. 슬랙 앱 환경 설정

3. 로컬 개발 환경 설정

4. 코드 작성

5. 실행

6. 결과


슬랙봇 제작 과정


0. 슬랙 워크스페이스 생성

Slack 공식 웹사이트에서 새 워크스페이스를 생성합니다.




1. 슬랙 앱 생성

Your Apps → 'Create New App' → From scratch 순서로 클릭

앱 이름 입력 및 워크스페이스 선택


2. 슬랙 앱 환경 설정


요약

Permissions → Add an OAuth Scope에서 [chat:write] 선택

'Install to Workspace' 버튼 클릭하여 액세스 권한 허용

Bot User OAuth Token과 Signing Secret 메모 (코드에서 사용됨)


슬랙 앱을 만들었다면 이제 권한을 설정해야 한다. 처음엔 권한이 아무것도 없어서 꼭 해줘야 합니다.

우선은 앱에게 워크스페이스에 글을 쓸 수 있게 권한을 주도록 합시다.


permissions - Add an OAuth Scope 클릭 후에 [chat:write]를 선택한 뒤 맨 위에 있는 Install to Workspace 버튼을 눌러서 액세스 권한을 허용을 해주세요.


이렇게 되면 워크스페이스에 슬랙 앱이 추가됩니다.


이제 OAuth & Permissions 섹션에 보시면 Bot User OAuth Token이라는 게 있는데 이 항목을 메모장에 따로 적어두기! 코드작성 시에 쓰임.

ex) SLACK_BOT_TOKEN="코드 부분입니다"


추가로 initialization_error 가 뜰 수도 있으니 토큰을 추가로 준비해줘야 합니다.

Basic Information - Signing Secret에 있는 토큰을 복사하기. 아래에서 활용됩니다.



3. 로컬 개발 환경 설정


*여기선 Node.js, ngrok, bolt를 활용합니다.


3-1. Node.js 프로젝트 생성


아래 코드를 터미널에 순차적으로 입력할 것.

Node.js 프로젝트 생성


3-2. 환경변수 설정

프로젝트 루트 디렉터리에 `. env`파일을 생성하고, 토큰을 추가합니다.

환경변수 설정


3-3. ngrok

8080 포트를 임시 도메인을 연결해서 접근 가능하게 만들자! 다른 포트를 쓰고 있다면 해당 포트에 맞춰서 붙여주면 된다! 다운로드 후 계정등록만 해놓으시면 됩니다.


자세한 건 아래 글을 확인. 

https://cordcat.tistory.com/105


4. 코드 입력

app.js라는"/망고"라는 커맨드를 입력하면 망고에 대한 정보를 알려주는 코드를 짰습니다.

app.js


5. 실행

이렇게 셋업 한 뒤 app.js를 실행하고 ngrok을 켜줍시다.

각자 다른 터미널에서 진행하자.


5-1 슬랙 api 설정

포워딩된 url을 슬랙 커맨드와 이벤트 쪽에 연결해줘야 합니다.

여기 붉은 게 포워딩되어 있는 url이고 이걸 쓰면 됩니다.

터미널



5-2. slash command 부분에 커맨드를 생성

request URL에 포워딩된 URL을 붙인 뒤 "/slack/events"를 꼭 붙여주세요.

그 뒤에 해당 URL복사해 두자. *바로 아래에서 또 쓰입니다!

ex) "https://0c55-118~~~~~~~~~~~~free.app/slack/events"

command 설정

5-3. event Subscriptions 설정

여기도 마찬가지로 request URL 부분에 붙여주세요!

event 설정 



6. 결과

자 그럼 이제 결과를 보시죠

"/망고" 커맨드를 입력
결과!


이제 기본적인 슬랙봇을 만들었으니, 다음 글에서는 더 복잡한 기능을 추가하고, 실제로 하고 싶었던 작업인 자동화를 수행해 보겠습니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari