자동화까지 가보시죠
어? 이 아이디어 대박인데?
가끔씩 좋은 아이디어가 떠오르면 이다음 생각은 "어떻게 하면 이 아이디어를 가장 빠르고 효과적으로 검증할 수 있을까?"였습니다. 그리고 이번 아이디어의 해답으로 슬랙봇이 눈에 들어왔습니다.
최근 회사에서 자동화 관련 슬랙봇 제작 요청을 진행했던 경험이 떠올랐습니다. 당시 제가 직접 만들지는 않았지만, 그 과정을 지켜보며 슬랙봇의 잠재력과 활용도에 깊은 인상을 받았죠. 이제 제 아이디어를 실현할 기회가 왔다고 생각했습니다.
사내에서 먼저 테스트해보고 괜찮으면 더 디벨롭해 보자는 생각이 들었고, 슬랙봇 관련해서도 계속 관심이 있는 상태였습니다.
그리고 슬랙봇 관련된 요청을 할 때마다 "이 정도면 충분해요~"라는 답변을 들으며, 저는 항상 뭔가 부족함을 느꼈습니다. 구조나 흐름을 이해하는 것이 양쪽 모두에게 도움이 될 거라 확신했기에, 더 나은 소통 방법을 찾고 싶었습니다.
슬랙봇이 간단한 아이디어를 실현시키기 좋은 툴임이 분명하다고 판단해서 오래간만에 코드를 더듬어가며 만들기 시작했습니다.
처음 목표는 질문을 만들고 저장하고 활용하는 긱봇과 유사한 기능을 구현하는 것이었습니다. 그 이후엔 자동화였어요! 아이디어가 꼬리에 꼬리를 물어서 요구사항은 다양했지만, 우선 기본적인 슬랙봇을 만들어 전체적인 흐름을 파악하고자 했습니다.
1. 커맨드 입력("/망고")
2. 원하는 대답("망고란~~~")
흐름
0. 슬랙 워크스페이스 생성
1. 슬랙 앱 생성
2. 슬랙 앱 환경 설정
3. 로컬 개발 환경 설정
4. 코드 작성
5. 실행
6. 결과
Slack 공식 웹사이트에서 새 워크스페이스를 생성합니다.
Your Apps → 'Create New App' → From scratch 순서로 클릭
앱 이름 입력 및 워크스페이스 선택
요약
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에 있는 토큰을 복사하기. 아래에서 활용됩니다.
*여기선 Node.js, ngrok, bolt를 활용합니다.
3-1. Node.js 프로젝트 생성
아래 코드를 터미널에 순차적으로 입력할 것.
3-2. 환경변수 설정
프로젝트 루트 디렉터리에 `. env`파일을 생성하고, 토큰을 추가합니다.
3-3. ngrok
8080 포트를 임시 도메인을 연결해서 접근 가능하게 만들자! 다른 포트를 쓰고 있다면 해당 포트에 맞춰서 붙여주면 된다! 다운로드 후 계정등록만 해놓으시면 됩니다.
자세한 건 아래 글을 확인.
https://cordcat.tistory.com/105
app.js라는"/망고"라는 커맨드를 입력하면 망고에 대한 정보를 알려주는 코드를 짰습니다.
이렇게 셋업 한 뒤 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"
5-3. event Subscriptions 설정
여기도 마찬가지로 request URL 부분에 붙여주세요!
자 그럼 이제 결과를 보시죠
이제 기본적인 슬랙봇을 만들었으니, 다음 글에서는 더 복잡한 기능을 추가하고, 실제로 하고 싶었던 작업인 자동화를 수행해 보겠습니다.