---
weight: 01
title: Bot 개발 가이드
type: docs
bookHidden: false
tags: kakao_work
hackmd: https://hackmd.io/@KEPTW-HUGO/KkiuJ02PTgippsYmIpEtAQ
---
# Bot 개발 시작하기
***Bot(봇)*** 은 특정 목적으로 구성된 시나리오에 따라 특정 임무를 수행하도록 프로그래밍된 애플리케이션으로, 일반적으로 시스템 알람을 수신하거나 멤버와 대화를 할 수 있는 기능을 제공합니다.
카카오워크(Kakao Work)에서 Bot은 워크스페이스(Work Space)에 가입한 멤버로부터 내/외부 응용 프로그램의 권한을 부여받아 멤버 정보 조회, 채팅방 생성, 메시지 전송 등의 다양한 작업을 수행합니다.
***워크스페이스(Work Space)*** 는 멤버들로 구성된 작은 집합으로, 팀/회사/단체/계열사 단위로 설정하여 사용될 수 있습니다. 현재 카카오워크 Bot은 사전에 협의된 워크스페이스에서만 활성화되며, 카카오워크에서 전달받은 인증 토큰(Access Token)은 특정 워크스페이스 내의 특정 Bot에만 유효하게 사용할 수 있습니다. 여러 개의 워크스페이스에 노출할 Bot을 제작해야 할 경우, 카카오워크 담당자([kakaoworkplatform@kakaoenterprise.com](mailto:kakaoworkplatform@kakaoenterprise.com))에게 문의 부탁드립니다.
본 가이드는 채팅방에서 Bot과 멤버가 대화하며 상호작용하는 시나리오와 API 기능별 사용 가이드에 대해 설명합니다.
## Bot 개발 라이프 사이클

그림. Bot의 라이프 사이클
위의 그림과 같이, 총 5 단계로 구성된 Bot의 라이프 사이클을 이해하고 Bot을 기획하고 구현한다면, 더욱 효율적인 방식으로 Bot을 생성할 수 있습니다. 각 단계별 상세 설명은 다음과 같습니다.
표. 개발 라이프 사이클
| 단계 | 설명 |
| ----| --- |
| 기획 | Bot 시나리오 기획이 완료되면 개발 담당자에게 공유합니다. <br /> - 기획된 Bot 시나리오가 카카오워크 API를 활용하여 구현이 가능한지 개발자와 확인합니다. <br /> - Bot 기획에 대한 자세한 내용은 [Bot 기획](https://hackmd.io/GsKIY-NxT7efkXSe2PiTpw#Bot-%EA%B8%B0%ED%9A%8D) 챕터를 참고합니다. |
| 개발 | 고객사 Bot 개발 담당자는 카카오워크 확장 플랫폼에 기획된 Bot 시나리오를 구현합니다. |
| 테스트 | 개발된 Bot이 정상 동작하는지 확인을 위해 일정 기간 동안 테스트를 진행합니다. <br /> - 카카오워크 플랫폼에 Bot이 등록되면 전체 멤버가 Bot을 사용할 수 있는 상태가 됩니다. 따라서, 별도의 테스트용 워크스페이스를 생성 후 Bot을 개발하시는 것을 추천합니다. <br /> - 운영중인 워크스페이스에서 테스트가 필요한 경우, Bot의 이름을 “개발중”으로 표시하거나 코드 네임으로 사용하시는 것을 추천합니다. |
| 공개 |Bot 개발이 완료되면 멤버에게 Bot에 대한 충분한 설명을 진행합니다. |
| 모니터링 |Bot을 사용하는 멤버로부터 피드백을 수집하고, Bot 시나리오를 개선할 부분이 있는지 검토하여 다시 기획 후 Bot에 적용합니다. |
**참고**
현재 카카오워크의 Bot을 사용할 수 있는 멤버는 해당 워크스페이스의 전체 멤버로 설정되어 있습니다.
만약 고객사에서 일부 멤버만 사용하는 Bot을 개발해야 하는 경우, 고객사 서버에서 멤버에게 메시지 전송에 필요한 수신자 목록 관리 로직을 개발해야 합니다. 일부 멤버에게만 제공되는 Bot은 추후 카카오워크의 기본 기능으로 제공될 예정입니다.
# Bot과 대화하기 시나리오
Bot과 멤버가 대화를 진행하는 시나리오는 크게 다음과 같이 구분됩니다.
- [알림형](#알림형): Bot이 채팅방을 생성하여 멤버에게 대화를 먼저 시도
- [반응형](#반응형): 특정 버튼에 속성이 지정되어 있을 경우, 채팅방에서 멤버와 지속적인 대화 가능
## 알림형
Bot이 채팅방을 생성하고, 멤버에게 대화를 시도하는 과정은 다음과 같습니다.

**그림**. 알림형 시나리오
1. [Bot 생성 및 등록 요청](https://hackmd.io/GsKIY-NxT7efkXSe2PiTpw#Bot-생성-및-등록-요청): 고객사는 기획한 Bot([Bot 기획](https://hackmd.io/GsKIY-NxT7efkXSe2PiTpw#Bot-기획))을 개발하기 위해 카카오워크 확장플랫폼에 Bot 등록을 요청합니다.
2. [Bot 인증](https://hackmd.io/GsKIY-NxT7efkXSe2PiTpw#Bot-인증): 고객사는 등록한 Bot의 인증을 위해, Access Token을 발급받습니다.
3. [멤버 조회](https://hackmd.io/GsKIY-NxT7efkXSe2PiTpw#멤버-조회): 대화를 시작하고자 하는 멤버의 정보를 조회하고, `user_id`를 발급받습니다.
4. [채팅방 생성](https://hackmd.io/GsKIY-NxT7efkXSe2PiTpw#채팅방-생성): `user_id`를 이용하여 채팅방을 생성하고, `conversation_id`를 발급받습니다.
5. [메시지 전송](https://hackmd.io/GsKIY-NxT7efkXSe2PiTpw#메시지-전송): 채팅방에 메시지를 표시합니다.
## 반응형
Bot이 채팅방을 생성하여 멤버와 대화를 시작 후, 멤버의 반응에 따라서 대화를 계속 이어나가는 과정은 Modal을 이용한 방식으로 다음과 같습니다.

그림. 반응형 시나리오
1. Bot은 멤버에게 특정 액션을 수행할 수 있는 Button Block과 메시지를 전송합니다.
- 이 때, Button Block의 [action_type](https://hackmd.io/gLckEJddR8CUVX61RYJLBw#Action-Type)은 `call_modal`로 설정되어야 합니다.
2. 멤버가 메시지를 확인하고, 원하는 버튼을 클릭합니다.
3. 카카오워크 확장플랫폼은 Bot의 속성으로 사전에 지정된 Request URL로 이벤트 정보를 전달합니다.
4. 고객사 서버는 응답(Response)값에 Modal 블록 정보를 카카오워크 확장플랫폼으로 전달합니다.
5. 채팅방에 Modal이 표시됩니다.
6. 멤버가 정보를 입력하고, Action Button을 클릭합니다.
7. Bot의 속성에 설정된 Callback URL로 멤버가 작성한 정보를 전송합니다.
8. Callback URL로 전송이 완료되면, Modal View가 종료됩니다.
Bot 개발에 필요한 API 상세와 Block Kit을 사용하여 조합형 말풍선과 Modal을 구성하는 방법은 [Web API 레퍼런스](https://hackmd.io/tgmLXWGPSsaBywE2_hP44A)와 [Block Kit 구성 및 정책](https://hackmd.io/qOQEnYlvSxegmzOZlkWpfg)을 참고합니다.