슬랙봇 개발
슬랙봇(Slack Bot)은 Slack의 RTM(Real Time Messaging) API를 통해 채널 메시지를 수신하고 응답하는 자동화 봇이다. Node.js 환경에서 @slack/client 라이브러리를 활용하여 간단하게 구현할 수 있으며, 외부 오픈 API와 연동하면 날씨·대기질 등 실시간 정보를 제공하는 인포봇으로 확장할 수 있다.
슬랙봇의 기본 구조는 토큰 기반 인증, 메시지 이벤트 리스닝, 조건 분기 응답의 세 단계로 이루어진다. 봇을 생성하면 `xoxb-`로 시작하는 API Token을 발급받고, `RTMClient`를 초기화하여 메시지를 실시간으로 수신한다. 특정 키워드를 포함한 메시지가 들어오면 사전 정의된 응답 또는 외부 API 호출 결과를 보낸다.
외부 API 연동은 request 모듈로 처리한다. API로부터 받은 응답은 대부분 JSON 형태로, 중첩 구조를 점 표기법(`body.currently.temperature`)으로 접근하여 원하는 값만 추출한다. 로컬에서 실행하는 봇은 해당 컴퓨터가 켜져 있어야만 동작하며, 항상 작동하게 하려면 별도 호스팅 환경에 배포해야 한다.
비개발자를 위한 슬랙봇 구축 가이드
디자이너 등 비개발자가 처음 슬랙봇을 만들 때 가장 큰 장벽은 개발 환경 세팅이다. 실제로 코드 자체보다 환경 구성(호스팅, Node.js, Git)에서 막히는 경우가 많다. 그 장벽을 낮추기 위한 단계적 접근이 필요하다.
환경 구성은 크게 세 단계다. 먼저 코드 에디터(Sublime Text 등)를 설치한다. 다음으로 Heroku 같은 무료 호스팅 서비스에 계정을 만들고 Heroku CLI를 설치하여 `heroku create`, `git push heroku master` 명령으로 Node.js 앱을 배포할 수 있는 환경을 만든다. macOS는 Node.js와 Git이 기본 탑재되어 있어 별도 설치 없이 시작할 수 있다.
슬랙봇 생성은 Slack 앱 관리 화면에서 Custom Integrations > Bots 경로로 진행하며, 발급받은 API Token을 소스 코드에 주입하는 방식으로 연결한다. 핵심 코드는 `RTMClient`를 초기화하고 `rtm.on('message', ...)` 이벤트 핸들러에서 메시지 내용을 확인한 뒤 `sendMessage()`로 응답을 보내는 구조다. 봇을 웹 서버가 아닌 워커(worker) 프로세스로 실행해야 하므로 Heroku의 `Procfile`에서 `web`을 `worker`로 변경해야 한다.
이 튜토리얼 방식은 완벽한 이해보다 초반의 성공 경험을 우선시하는 접근이다. 동작하는 봇을 먼저 만들고, 필요에 따라 구조와 원리를 점진적으로 이해해 나가는 전략이 비개발자에게 효과적이다.
핵심 내용
- Slack Bot Token 발급: 슬랙 앱 > Administration > Manage Apps > Custom Integrations > Bots
- `RTMClient` 초기화 후 `rtm.on('message', ...)` 로 모든 메시지 수신
- 키워드 매칭 조건 분기로 정적 응답 또는 API 호출 분기
- request 모듈로 외부 API 비동기 호출 후 콜백으로 결과값 처리
- JSON 응답 데이터: 점 표기법으로 중첩 필드 접근
- 날씨(Darksky API), 대기질(AQICN API) 등 오픈 API와 연동 가능
- 로컬 실행 한계 → 항상 동작하려면 Heroku 같은 호스팅에 배포 필요
- Heroku `Procfile`에서 `web` → `worker` 변경 필수 (웹서버가 아닌 상주 프로세스)
- 비개발자 진입 전략: 완벽한 이해보다 초반 성공 경험 우선
관련 개념
- 챗봇 UX 설계 — 슬랙봇이 속하는 CUI(대화형 인터페이스) 설계 원칙
- GitHub Actions와 Slack 연동 — Slack을 활용하는 자동화의 다른 형태
- Socket.IO와 실시간 통신 — 실시간 메시지 전달의 기술적 배경
출처
- 슬랙봇을 만들어봅시다 — 2017-10-12, Sungi Kim
- 슬랙봇 만들기: API를 통해 정보 얻기 및 표시하기 — 2019-01-28, Sungi Kim