Python으로 Slack 챗봇 시작하기

Yeonho Park
BotHub.Studio (ko)
Published in
6 min readSep 7, 2018

협업에 좋은 메신저 서비스 'Slack’!

BotHub.Studio 에 Slack 챗봇을 추가하는 방법을 알아보도록 하겠습니다.

Slack Bot 생성

1. 챗봇을 위한 Slack App 생성

새로운 챗봇을 만들기 위해서 Slack API 사이트에 접속하여 로그인 후 ‘Create New App’ 버튼 클릭합니다.

1) ‘App Name’ 부분에 챗봇이름을 넣어주고, 챗봇 소유팀을 ‘Development Slack Team’에서 선택해줍니다.

2) 입력과 선택이 완료되면, ‘Creat App’ 버튼을 클릭합니다.

2. Slack Bot User 생성

만든 Slack App에 봇 유저를 추가합니다.

1) Slack API설정 페이지에서 ‘Bot Users’ 탭을 선택합니다.

2) 추가하기 위해서 ‘Add a Bot User’ 버튼을 클릭합니다.

3) 챗봇이 항상 Online으로 보이도록 ‘Always Show My Bot as Online’을 활성화시켜줍니다.

4) 변경 내용을 저장하기 위해서 ‘Add a Bot User’ 버튼을 클릭합니다.

3. Slack 자격증명들을 BotHub.Studio에 등록

# 자격증명 조회

1) Setting메뉴에서 ‘Basic Information’ 탭을 선택합니다.

2) Client ID’, ‘Client Secret’, ‘Signing Secret’ 값들을 복사하여 붙여 놓을 준비를 합니다.

# 챗봇 연결

개발자를 위한 챗봇 호스팅 서비스, BotHub.Studio에 회원 가입을 한 후, 터미널에서 아래와 같이 실행하여 CLI 도구를 설치합니다.

$ pip install bothub-cli

계정 연결을 위해 configure 를 실행합니다.:

$ bothub configure

프로젝트 디렉토리를 생성합니다.:

$ mkdir MyBot
$ cd MyBot
$ bothub init

init 작업이 완료되면 기본 템플릿 코드가 생성됩니다:

| — bothub
| | — bot.py
| ` — __init__.py
| — bothub.yml
| — requirements.txt
` — tests

기본 템플릿 코드 중에서 bot.py 에는 유저의 메세지를 그대로 따라 말해주는 EchoBot 코드가 들어 있습니다.

Slack과 연결하기 위해서, 앞서 기록해두었던 정보들을 사용하여 아래 명령을 실행합니다:

$ bothub channel add slack --client-id=<client id> \
--client-secret=<client secret> \
--signing-secret=<signing secret>

명령 실행 후 출력되는 3개의 URL들은 추후 Slack App 설정페이지에서 사용되므로 기록해둡니다:

  • Event Subscriptions URL
  • Interactivity URL
  • Redirect URL

이제 서버로 기본 템플릿 프로젝트를 배포합니다:

$ bothub deploy

4. Slack App 설정

# OAuth 설정

1) Features메뉴에서 ‘OAuth & Permissions’ 탭 선택합니다.

2) ‘Add New Redirect URL’을 클릭하고, 위해서 기록해 두었던 'Redirect URL’을 복사해서 넣어줍니다.

3) ‘Add’버튼을 클릭 한 뒤, ‘Save URLs’버튼을 클릭하여 변경사항들을 저장해 줍니다.

# Event Subscriptions 설정

1) Features메뉴에서 ‘Event Subscriptions’ 탭을 선택합니다.

2) ‘Enable Events’ 을 활성화 시켜줍니다.

3) ‘Request URL’에 위해서 기록해 두었던 ’ ‘Event subscriptions URL’ 주소를 복사해서 넣어줍니다.

4) 'Subscribe to Bot Events’아래에 있는 ‘Add Bot User Event’ 버튼을 클리한 뒤 아래의 4개의 event를 찾아 추가해 줍니다.

  • message.im
  • message.groups
  • message.channels
  • im_created

5) 추가가 완료 되었으면, 'Save Changes’를 눌러 변경사항을 저장해 줍니다.

# Interactive Components 설정

1) Features메뉴에서 ‘Interactive Components’ 탭을 선택

2) ‘Interactivity’를 클릭하여 활성화해 줍니다.

2) ‘Request URL’에 위해서 기록해 두었던 ‘Interactivity URL’을 복사해서 넣어줍니다.

3) ‘Save Changes’버튼을 클릭하여 변경사항을 저장합니다.

5. Slack Bot을 팀에 설치

1) Settings메뉴의 ‘Manage Distribution’ 탭을 선택합니다.

2) 'Add to Slack’ 버튼을 클릭합니다.

3) 'Authorize’ 버튼을 클릭하면, Slack App이 속한 Team에 설치가 됩니다.

6. Slack Bot 테스트

Slack Workspace에 진입해보면 챗봇이 설치되어 있는 것을 확인 할 수 있으며, 챗봇을 채널로 초대하거나, 직접 챗봇을 선택하여 챗봇과 대화 할 수 있습니다.

(다른 Workspace에 Slack App을 설치하고자 한다면, ‘Share Your App with Other Workspaces’ 항목들을 확인 후 'Active Public Distribution’을 진행하면 됩니다.)

본 아티클 관련 문의는 BotHub.Studio Community를 통해 지원받으실 수 있습니다. 챗봇 도입 및 제휴 문의는 bothub@bothub.sutdio로 연락해주세요.

--

--