봇 사용자
봇 사용자 (Bot Users)
슬랙에서 "봇"이라고 하면 보통 메시지를 대신 보내고, 멘션에 반응하며, 이벤트를 듣는 사용자를 말해요. 봇 사용자는 워크스페이스에 설치된 앱이 가지는, 사용자 계정에 가까운 존재예요. 봇을 만들면 대화형 서비스나 자동화 도구를 슬랙 안에서 자연스럽게 돌릴 수 있어요. 다만 이 페이지는 레거시 봇 사용자(bot user) 방식에 대한 문서라는 점을 먼저 짚어 둘게요 — 봇의 개념과 이벤트 연동 흐름 자체는 지금도 그대로 유효하니 익히는 데는 그대로 도움이 돼요.
봇 사용자 만들기
봇 사용자를 만들려면 먼저 앱이 필요해요. 앱 설정 페이지에서 Bot Users 기능을 찾아 Add a Bot User 버튼을 누르면 봇을 구성할 수 있어요. 이때 정하는 정보는 두 가지예요:
- Display name — 봇이 메시지를 게시하거나 프로필을 볼 때 다른 사용자에게 표시되는 이름
- Default username — 메시지에서 봇을 멘션할 때 쓰는 문자열
이벤트 API 설정
이벤트 API는 봇의 "눈과 귀" 역할을 해요. 채널에 새 메시지가 올라오거나 채널이 바뀌는 등 슬랙에서 일어나는 활동에 봇이 반응할 수 있게 해주죠. 이벤트가 발생하면 데이터 페이로드가 봇에게 보내지고, 봇은 그 데이터를 바탕으로 유용한 응답을 만들 수 있어요.
구성 순서는 이래요:
- 앱 설정에서 Event Subscriptions 기능을 찾아요.
- Enable Events 토글을 켜면 새 옵션 화면이 나와요.
- 데이터 페이로드가 전달될 Request URL을 구성해요. 이 URL은 먼저 검증(verification)을 통과해야 해요.
- 개별 이벤트 구독을 추가해요. 봇 이벤트를 받으려면 Add Bot User Event 버튼을 눌러요.
- 이벤트 종류는 많지만, 예를 들어 누군가 봇을 멘션하면 오는
app_mention과 새 메시지가 올라오면 오는message.channels두 가지를 구독한다고 해볼게요.
워크스페이스에 봇 설치하기
봇 사용자는 봇이 연결된 앱을 워크스페이스에 설치하면 추가돼요. 설치가 끝나면 bot 스코프가 부여된 봇 토큰을 받게 되고, 이 토큰은 일부 Web API 메서드와 함께 쓸 수 있어요.
이벤트 처리하기
각 이벤트는 설정한 Request URL로 JSON 페이로드를 담은 요청을 트리거해요. 예를 들어 봇이 멘션을 받으면 app_mention 이벤트가, 그다음 올라오는 봇의 메시지에는 message 이벤트가 생겨요. 봇은 각 이벤트를 해석해 적절히 응답해야 해요.
받은 이벤트 페이로드에는 HTTP 200 상태로 응답해줘야 해요:
router.post("/", function (req, res, next) {
// Get event payload
let payload = req.body;
// Respond to this event with HTTP 200 status
res.sendStatus(200);
});
멘션에 응답하려면 페이로드의 type 필드로 app_mention 이벤트인지 구분하고, Web API의 chat.postMessage를 써서 봇 토큰으로 메시지를 보내면 돼요:
POST https://slack.com/api/chat.postMessage
Content-type: application/json
Authorization: Bearer YOUR_BOTS_TOKEN
{ "text": "Hello <@UA8RXUPSP>! Knock, knock.", "channel": "C123ABC456" }