SlideShare uma empresa Scribd logo
1 de 31
Slack Bot With Python
김 중 현(Kim Joong Hyeon)
Table of contents
- Introduce Go
- Slack Bot Example : Echobot Go
- Slack Bot : More Functions Go
Introduce Myself
평범한 자바 웹 개발자로 1년 조금 넘게 일했습니다.
우연히 파이썬의 매력을 알게 되어 공부하고 있습니다.
아직 파이썬을 접한 지는 얼마 되지 않았습니다.
E-mail : karis0222@gmail.com
Github : https://github.com/karis0222
Introduce 몇 가지 필요한 내용들을 간략하게
소개하겠습니다.
What is Bot?
“봇(bot)은 인간이 하는 행동을 흉내내도록 만들어진 프로그램을 의미한다.”
- 출처 : 위키피디아 ‘인터넷 봇’ 문서 중
https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7_%EB%B4%
87
웹 크롤러, 챗봇 등이 봇의 범주에 해당됩니다.
Why Slack?
슬랙(Slack)은 개발자들이 상당히 많이 사용하는 메신저 플랫폼입니다.
요즘에는 개발자가 아닌 사용자(기획자, 디자이너 등...)도 많습니다.
다양한 Integration이 지원됩니다.
API가 훌륭합니다.
Slack API
https://api.slack.com/ : 슬랙 API 페이지.
Web API, Events API, RTM(Real Time Messaging) API...
저는 RTM API를 사용하여 슬랙 봇을 만들어 보겠습니다.
RTM API는 웹 소켓 기반으로, 실시간 메시지 송수신 API입니다.
Websocket
“WebSocket은 ws 프로토콜을 기반으
로 클라이언트와 서버 사이에 지속적
인 완전 양방향 연결 스트림을 만들어
주는 기술입니다.”
- 출처 : MDN 번역 문서
https://developer.mozilla.org/ko/docs/WebSockets/Writ
ing_WebSocket_client_applications
- 이미지 출처 : http://java.sys-con.com/node/1315473
Slack Bot
Example : Echobot
사용자가 보낸 메시지를 그대로 따
라하는 에코봇을 만들어 봅시다.
Flow
1. 개발환경 구성 및 슬랙 봇 API 토큰 발급.
2. https://slack.com/api/rtm.start : RTM 세션을 시작하기 위해 토큰 정보를 보내
고 웹소켓 URL을 응답 받음.
3. 위에서 응답 받은 웹소켓 URL을 통해 RTM 세션 시작하여 메시지 수신.
4. 봇이 자신에게 온 메시지인지 판단 후 응답 메시지 송신.
Development Environment
저의 개발환경은 다음과 같습니다.
운영체제 : 윈도우10
파이썬 : 3.4 버전
통합개발환경 : Pycharm Community Edition
가상환경을 구성하고자 virtualenv를 사용했습니다.
API 테스트를 위해 구글 크롬의 앱 중 하나인 Postman도 사용했습니다.
Using Libraries
requests : 인간친화적인 http 클라이언트 라이브러리.
websockets : 웹 소켓 라이브러리.
asyncio : 비동기 IO 및 코루틴 지원 라이브러리.
json : JSON 포맷 데이터 핸들링 라이브러리(기본 내장).
pip install requests websockets asyncio
Slack Bot API Token
Slack Bot API Token
Slack Bot API Token
우리에게 필요한 것은 바로 이 API 토큰
입니다.
Slack Bot Echo Example
1. https://slack.com/api/rtm.start : RTM 세션을 시작하기 위해 토큰 정보를 보내
고 웹소켓 URL을 응답 받음.
https://github.com/karis0222/python-slackbot/blob/master/src/echobot.py
Slack Bot Echo Example
@asyncio.coroutine(async)…?
yield from(await)…?
run_until_complete…?
시간 관계상 자세한 설명은 생략하
겠습니다.
Slack Bot Echo Example
1. 수신 데이터를 JSON
으로 변환
2. 봇 자신에게 온 메시
지인지 판단
3. 메시지 내용 추출
4. 응답 메시지 송신
Slack Bot :
More Functions
조금 더 많은 기능을 제공하는 슬랙
봇을 만들어 봅시다.
So, What do you want do?
슬랙 봇이 무엇을 해주길 원하세요?
I want...
이 곳의 날씨를 알려주세요.
이 곳의 위치를 알려주세요.
이 문장을 번역해주세요.
[@봇이름 명령어 “파라미터”]의 형태로 만들어보고자 합니다.
상황을 가정해봅시다
한참 장고 개발 중이던 개발자 K모씨는 개발자 동료로부터 강남구청에서 만나자
는 메시지를 받았습니다. 강남구청의 위치를 알고 싶어요. 마침 슬랙이 켜져있네
요?
1. 웹 브라우저를 켜고 -> 네이버에 접속해서 -> 네이버 지도 서비스로 들어간 후
-> “강남구청”을 검색한다.
2. 슬랙봇에게 지도 “강남구청”이라고 명령 -> 슬랙봇이 보내준 링크를 클릭한다.
여러분은 어떤 방법이 더 맘에 드시나요?
I want to know the location of a place
국내 지도 검색은 네이버 지도 서비스를 사용하겠습니다.
요청 URL은 “http://map.naver.com/?query=검색어&type=SITE_1” 의 형태입니다.
@봇이름 /지도 “인자”
사실은 지역 검색 API를 사용하려고 했으나, 지역 검색 API로는 장소를 화면으로
보여줄 수가 없었습니다… 그래서 지도 API를 사용하려고 했으나, 지도 API는 장
소를 검색할 수 있는 기능이 없고요… 두 가지를 함께 사용하려고 했으나, 지도
API로 화면을 보여주려면 별도의 페이지를 제공해야 하더군요…
I want to know the weather of a place
공공데이터포털에서 기상청이 제공하는 오픈 API 중 “동네예보조회” API 사용.
일단 특별시, 광역시와 도에 대해서만 구현해보겠습니다.
@봇이름 /날씨 “서울”
분명 API 인증키를 발급 받았으나 하루가 지나야 인증이 제대로 됩니다…
왜 그런건지는 저도 잘 모르겠어요...
I want a translation of this sentence
구글 번역 서비스 사용.
일단 영->한 번역만 해보겠습니다.
@봇이름 /번역 “hello, world!”
왜? Google Translate API를 사용하지 않죠?
Google Translate API는 무료가 아닙니다…
Show Video
잠시 짧은 시연 영상을 보여드리겠습
니다.
https://youtu.be/Ts7eFh8oM1s
How?
Pre
Process
Parse
Message
Route
Commands
Slack API
Run
Command
Process
Code...
https://github.com/karis0222/python-slackbot
다운로드 하셔도 좋고,
git clone https://github.com/karis0222/python-slackbot.git
git clone 하셔도 좋습니다.
코드는 계속 개선할 예정입니다.
My mistake...
슬랙 봇 API 토큰을 Github
에 올리면 슬랙에서 귀신같
이 알아내고 해당 토큰을 폐
기합니다. 제가 그런 실수를
저질렀네요…
결론은…
슬랙, 대단합니다!
And more...
장고 웹 애플리케이션과 연동해보는 것도 좋습니다.
AWS의 Lambda, Azure의 Function에 코드만 올려두고 서버리스(Serverless)로 구
성해도 되겠죠?
자연어 처리가 가능하시면, 챗봇(Chatbot)을 만들어보실 수도 있습니다.
Q&A
Thanks, Everyone

Mais conteúdo relacionado

Mais procurados

Dialogflow로 카카오톡 챗봇 만들기
Dialogflow로 카카오톡 챗봇 만들기Dialogflow로 카카오톡 챗봇 만들기
Dialogflow로 카카오톡 챗봇 만들기deepseaswjh
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Kyoung Up Jung
 
쉽게 쓰여진 Django
쉽게 쓰여진 Django쉽게 쓰여진 Django
쉽게 쓰여진 DjangoTaehoon Kim
 
chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806juneyoungdev
 
Hoodpub 기술 발표
Hoodpub 기술 발표Hoodpub 기술 발표
Hoodpub 기술 발표Hyun-min Choi
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)성일 한
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu Son
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Kyoung Up Jung
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기Kyoung Up Jung
 
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법HyeonJeong Jo
 
테스트가 뭐예요?
테스트가 뭐예요?테스트가 뭐예요?
테스트가 뭐예요?Kyoung Up Jung
 
[D2CAMPUS]JavaScript 다시 시작하기
[D2CAMPUS]JavaScript 다시 시작하기[D2CAMPUS]JavaScript 다시 시작하기
[D2CAMPUS]JavaScript 다시 시작하기NAVER D2
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?Sang-ho Choi
 
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼Cheol Kang
 

Mais procurados (20)

Dialogflow로 카카오톡 챗봇 만들기
Dialogflow로 카카오톡 챗봇 만들기Dialogflow로 카카오톡 챗봇 만들기
Dialogflow로 카카오톡 챗봇 만들기
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
쉽게 쓰여진 Django
쉽게 쓰여진 Django쉽게 쓰여진 Django
쉽게 쓰여진 Django
 
chatbot-seminar-1806
chatbot-seminar-1806chatbot-seminar-1806
chatbot-seminar-1806
 
Hoodpub 기술 발표
Hoodpub 기술 발표Hoodpub 기술 발표
Hoodpub 기술 발표
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
플라스크 템플릿
플라스크 템플릿플라스크 템플릿
플라스크 템플릿
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기
 
IRECIPE BOT
IRECIPE BOTIRECIPE BOT
IRECIPE BOT
 
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
왓슨 컨버세이션으로 챗봇 만들기 ! WCS 활용법
 
테스트가 뭐예요?
테스트가 뭐예요?테스트가 뭐예요?
테스트가 뭐예요?
 
[D2CAMPUS]JavaScript 다시 시작하기
[D2CAMPUS]JavaScript 다시 시작하기[D2CAMPUS]JavaScript 다시 시작하기
[D2CAMPUS]JavaScript 다시 시작하기
 
Django beginning
Django beginningDjango beginning
Django beginning
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
 
Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
 
챗봇 스터디
챗봇 스터디챗봇 스터디
챗봇 스터디
 

Destaque

Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020D.CAMP
 
20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기Kim Sungdong
 
챗봇 개발을 위한 네이버 랩스 api
챗봇 개발을 위한 네이버 랩스 api챗봇 개발을 위한 네이버 랩스 api
챗봇 개발을 위한 네이버 랩스 apiNAVER D2
 
마인즈랩 회사소개서 V2.3_한국어버전
마인즈랩 회사소개서 V2.3_한국어버전마인즈랩 회사소개서 V2.3_한국어버전
마인즈랩 회사소개서 V2.3_한국어버전Taejoon Yoo
 
AlphaYak :: Artificially Intelligent Pharmacist Chatbot
AlphaYak :: Artificially Intelligent Pharmacist ChatbotAlphaYak :: Artificially Intelligent Pharmacist Chatbot
AlphaYak :: Artificially Intelligent Pharmacist Chatbotnadohyun
 
open api seminar
open api seminaropen api seminar
open api seminarNamhoon Kim
 
Chat bot making process using Python 3 & TensorFlow
Chat bot making process using Python 3 & TensorFlowChat bot making process using Python 3 & TensorFlow
Chat bot making process using Python 3 & TensorFlowJeongkyu Shin
 
크리티커스 미디어오늘 컨퍼런스 슬라이드
크리티커스 미디어오늘 컨퍼런스 슬라이드크리티커스 미디어오늘 컨퍼런스 슬라이드
크리티커스 미디어오늘 컨퍼런스 슬라이드Kisoo Kim
 
코노랩스(최재훈 CTO)_AI Startup D.PARTY_20161020
코노랩스(최재훈 CTO)_AI Startup D.PARTY_20161020코노랩스(최재훈 CTO)_AI Startup D.PARTY_20161020
코노랩스(최재훈 CTO)_AI Startup D.PARTY_20161020D.CAMP
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016Taehoon Kim
 
Djangogirls 11 seminar
Djangogirls 11 seminarDjangogirls 11 seminar
Djangogirls 11 seminar명서 강
 
Python으로 한자검색 텔레그램 봇 개발 후기
Python으로 한자검색 텔레그램 봇 개발 후기Python으로 한자검색 텔레그램 봇 개발 후기
Python으로 한자검색 텔레그램 봇 개발 후기DaeHyun Sung
 
사업발표 가슬
사업발표 가슬사업발표 가슬
사업발표 가슬minwoo
 
Club# in CJ Cheiljedang
Club# in CJ CheiljedangClub# in CJ Cheiljedang
Club# in CJ Cheiljedang지현 박
 
시나브로 Django 발표
시나브로 Django 발표시나브로 Django 발표
시나브로 Django 발표명서 강
 
Engine project tool
Engine project toolEngine project tool
Engine project tooltalron
 
DjangoGirls Seoul | Django Study: Django Model-View-Template
DjangoGirls Seoul | Django Study: Django Model-View-TemplateDjangoGirls Seoul | Django Study: Django Model-View-Template
DjangoGirls Seoul | Django Study: Django Model-View-TemplateJunbum Lee
 
트위터 봇 개발 후기
트위터 봇 개발 후기트위터 봇 개발 후기
트위터 봇 개발 후기종빈 오
 

Destaque (20)

Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
 
20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기
 
챗봇 개발을 위한 네이버 랩스 api
챗봇 개발을 위한 네이버 랩스 api챗봇 개발을 위한 네이버 랩스 api
챗봇 개발을 위한 네이버 랩스 api
 
마인즈랩 회사소개서 V2.3_한국어버전
마인즈랩 회사소개서 V2.3_한국어버전마인즈랩 회사소개서 V2.3_한국어버전
마인즈랩 회사소개서 V2.3_한국어버전
 
AlphaYak :: Artificially Intelligent Pharmacist Chatbot
AlphaYak :: Artificially Intelligent Pharmacist ChatbotAlphaYak :: Artificially Intelligent Pharmacist Chatbot
AlphaYak :: Artificially Intelligent Pharmacist Chatbot
 
open api seminar
open api seminaropen api seminar
open api seminar
 
Chat bot making process using Python 3 & TensorFlow
Chat bot making process using Python 3 & TensorFlowChat bot making process using Python 3 & TensorFlow
Chat bot making process using Python 3 & TensorFlow
 
Django View Part 1
Django View Part 1Django View Part 1
Django View Part 1
 
크리티커스 미디어오늘 컨퍼런스 슬라이드
크리티커스 미디어오늘 컨퍼런스 슬라이드크리티커스 미디어오늘 컨퍼런스 슬라이드
크리티커스 미디어오늘 컨퍼런스 슬라이드
 
코노랩스(최재훈 CTO)_AI Startup D.PARTY_20161020
코노랩스(최재훈 CTO)_AI Startup D.PARTY_20161020코노랩스(최재훈 CTO)_AI Startup D.PARTY_20161020
코노랩스(최재훈 CTO)_AI Startup D.PARTY_20161020
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
 
Djangogirls 11 seminar
Djangogirls 11 seminarDjangogirls 11 seminar
Djangogirls 11 seminar
 
Python으로 한자검색 텔레그램 봇 개발 후기
Python으로 한자검색 텔레그램 봇 개발 후기Python으로 한자검색 텔레그램 봇 개발 후기
Python으로 한자검색 텔레그램 봇 개발 후기
 
사업발표 가슬
사업발표 가슬사업발표 가슬
사업발표 가슬
 
Club# in CJ Cheiljedang
Club# in CJ CheiljedangClub# in CJ Cheiljedang
Club# in CJ Cheiljedang
 
4차 산업혁명의 시작, 초등학생도 코딩 배워요!
4차 산업혁명의 시작, 초등학생도 코딩 배워요!4차 산업혁명의 시작, 초등학생도 코딩 배워요!
4차 산업혁명의 시작, 초등학생도 코딩 배워요!
 
시나브로 Django 발표
시나브로 Django 발표시나브로 Django 발표
시나브로 Django 발표
 
Engine project tool
Engine project toolEngine project tool
Engine project tool
 
DjangoGirls Seoul | Django Study: Django Model-View-Template
DjangoGirls Seoul | Django Study: Django Model-View-TemplateDjangoGirls Seoul | Django Study: Django Model-View-Template
DjangoGirls Seoul | Django Study: Django Model-View-Template
 
트위터 봇 개발 후기
트위터 봇 개발 후기트위터 봇 개발 후기
트위터 봇 개발 후기
 

Semelhante a Slackbot with Python

비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표Hong Min Kim
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스WebFrameworks
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineeringYoungSu Son
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for AppspressoKTH, 케이티하이텔
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업NAVER D2
 
비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초Gihyo Joshua Jang
 
카카오 봇 플랫폼 소개
카카오 봇 플랫폼 소개카카오 봇 플랫폼 소개
카카오 봇 플랫폼 소개if kakao
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작Changwon Choe
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, VueGunhee Lee
 
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...Amazon Web Services Korea
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.sung ki choi
 
API 개념
API 개념API 개념
API 개념Herren
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1bingoori
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들Sewon Ann
 
Ready~ Action! on Google
Ready~ Action! on GoogleReady~ Action! on Google
Ready~ Action! on GoogleLee WonJae
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게Sungju Jin
 

Semelhante a Slackbot with Python (20)

비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
Portfolio
PortfolioPortfolio
Portfolio
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
 
비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초
 
카카오 봇 플랫폼 소개
카카오 봇 플랫폼 소개카카오 봇 플랫폼 소개
카카오 봇 플랫폼 소개
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue
 
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습  가이드 ::  윤석찬 (AWS 테크에반젤...
서버리스(Serverless)를 위한 Zombie Microservices Workshop 실습 가이드 :: 윤석찬 (AWS 테크에반젤...
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
 
API 개념
API 개념API 개념
API 개념
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들
 
지하철알리미 공모전경험담 및 팁 (이민석)
지하철알리미 공모전경험담 및 팁 (이민석)지하철알리미 공모전경험담 및 팁 (이민석)
지하철알리미 공모전경험담 및 팁 (이민석)
 
Ready~ Action! on Google
Ready~ Action! on GoogleReady~ Action! on Google
Ready~ Action! on Google
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게
 

Slackbot with Python

  • 1. Slack Bot With Python 김 중 현(Kim Joong Hyeon)
  • 2. Table of contents - Introduce Go - Slack Bot Example : Echobot Go - Slack Bot : More Functions Go
  • 3. Introduce Myself 평범한 자바 웹 개발자로 1년 조금 넘게 일했습니다. 우연히 파이썬의 매력을 알게 되어 공부하고 있습니다. 아직 파이썬을 접한 지는 얼마 되지 않았습니다. E-mail : karis0222@gmail.com Github : https://github.com/karis0222
  • 4. Introduce 몇 가지 필요한 내용들을 간략하게 소개하겠습니다.
  • 5. What is Bot? “봇(bot)은 인간이 하는 행동을 흉내내도록 만들어진 프로그램을 의미한다.” - 출처 : 위키피디아 ‘인터넷 봇’ 문서 중 https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7_%EB%B4% 87 웹 크롤러, 챗봇 등이 봇의 범주에 해당됩니다.
  • 6. Why Slack? 슬랙(Slack)은 개발자들이 상당히 많이 사용하는 메신저 플랫폼입니다. 요즘에는 개발자가 아닌 사용자(기획자, 디자이너 등...)도 많습니다. 다양한 Integration이 지원됩니다. API가 훌륭합니다.
  • 7. Slack API https://api.slack.com/ : 슬랙 API 페이지. Web API, Events API, RTM(Real Time Messaging) API... 저는 RTM API를 사용하여 슬랙 봇을 만들어 보겠습니다. RTM API는 웹 소켓 기반으로, 실시간 메시지 송수신 API입니다.
  • 8. Websocket “WebSocket은 ws 프로토콜을 기반으 로 클라이언트와 서버 사이에 지속적 인 완전 양방향 연결 스트림을 만들어 주는 기술입니다.” - 출처 : MDN 번역 문서 https://developer.mozilla.org/ko/docs/WebSockets/Writ ing_WebSocket_client_applications - 이미지 출처 : http://java.sys-con.com/node/1315473
  • 9. Slack Bot Example : Echobot 사용자가 보낸 메시지를 그대로 따 라하는 에코봇을 만들어 봅시다.
  • 10. Flow 1. 개발환경 구성 및 슬랙 봇 API 토큰 발급. 2. https://slack.com/api/rtm.start : RTM 세션을 시작하기 위해 토큰 정보를 보내 고 웹소켓 URL을 응답 받음. 3. 위에서 응답 받은 웹소켓 URL을 통해 RTM 세션 시작하여 메시지 수신. 4. 봇이 자신에게 온 메시지인지 판단 후 응답 메시지 송신.
  • 11. Development Environment 저의 개발환경은 다음과 같습니다. 운영체제 : 윈도우10 파이썬 : 3.4 버전 통합개발환경 : Pycharm Community Edition 가상환경을 구성하고자 virtualenv를 사용했습니다. API 테스트를 위해 구글 크롬의 앱 중 하나인 Postman도 사용했습니다.
  • 12. Using Libraries requests : 인간친화적인 http 클라이언트 라이브러리. websockets : 웹 소켓 라이브러리. asyncio : 비동기 IO 및 코루틴 지원 라이브러리. json : JSON 포맷 데이터 핸들링 라이브러리(기본 내장). pip install requests websockets asyncio
  • 13. Slack Bot API Token
  • 14. Slack Bot API Token
  • 15. Slack Bot API Token 우리에게 필요한 것은 바로 이 API 토큰 입니다.
  • 16. Slack Bot Echo Example 1. https://slack.com/api/rtm.start : RTM 세션을 시작하기 위해 토큰 정보를 보내 고 웹소켓 URL을 응답 받음. https://github.com/karis0222/python-slackbot/blob/master/src/echobot.py
  • 17. Slack Bot Echo Example @asyncio.coroutine(async)…? yield from(await)…? run_until_complete…? 시간 관계상 자세한 설명은 생략하 겠습니다.
  • 18. Slack Bot Echo Example 1. 수신 데이터를 JSON 으로 변환 2. 봇 자신에게 온 메시 지인지 판단 3. 메시지 내용 추출 4. 응답 메시지 송신
  • 19. Slack Bot : More Functions 조금 더 많은 기능을 제공하는 슬랙 봇을 만들어 봅시다.
  • 20. So, What do you want do? 슬랙 봇이 무엇을 해주길 원하세요? I want... 이 곳의 날씨를 알려주세요. 이 곳의 위치를 알려주세요. 이 문장을 번역해주세요. [@봇이름 명령어 “파라미터”]의 형태로 만들어보고자 합니다.
  • 21. 상황을 가정해봅시다 한참 장고 개발 중이던 개발자 K모씨는 개발자 동료로부터 강남구청에서 만나자 는 메시지를 받았습니다. 강남구청의 위치를 알고 싶어요. 마침 슬랙이 켜져있네 요? 1. 웹 브라우저를 켜고 -> 네이버에 접속해서 -> 네이버 지도 서비스로 들어간 후 -> “강남구청”을 검색한다. 2. 슬랙봇에게 지도 “강남구청”이라고 명령 -> 슬랙봇이 보내준 링크를 클릭한다. 여러분은 어떤 방법이 더 맘에 드시나요?
  • 22. I want to know the location of a place 국내 지도 검색은 네이버 지도 서비스를 사용하겠습니다. 요청 URL은 “http://map.naver.com/?query=검색어&type=SITE_1” 의 형태입니다. @봇이름 /지도 “인자” 사실은 지역 검색 API를 사용하려고 했으나, 지역 검색 API로는 장소를 화면으로 보여줄 수가 없었습니다… 그래서 지도 API를 사용하려고 했으나, 지도 API는 장 소를 검색할 수 있는 기능이 없고요… 두 가지를 함께 사용하려고 했으나, 지도 API로 화면을 보여주려면 별도의 페이지를 제공해야 하더군요…
  • 23. I want to know the weather of a place 공공데이터포털에서 기상청이 제공하는 오픈 API 중 “동네예보조회” API 사용. 일단 특별시, 광역시와 도에 대해서만 구현해보겠습니다. @봇이름 /날씨 “서울” 분명 API 인증키를 발급 받았으나 하루가 지나야 인증이 제대로 됩니다… 왜 그런건지는 저도 잘 모르겠어요...
  • 24. I want a translation of this sentence 구글 번역 서비스 사용. 일단 영->한 번역만 해보겠습니다. @봇이름 /번역 “hello, world!” 왜? Google Translate API를 사용하지 않죠? Google Translate API는 무료가 아닙니다…
  • 25. Show Video 잠시 짧은 시연 영상을 보여드리겠습 니다. https://youtu.be/Ts7eFh8oM1s
  • 27. Code... https://github.com/karis0222/python-slackbot 다운로드 하셔도 좋고, git clone https://github.com/karis0222/python-slackbot.git git clone 하셔도 좋습니다. 코드는 계속 개선할 예정입니다.
  • 28. My mistake... 슬랙 봇 API 토큰을 Github 에 올리면 슬랙에서 귀신같 이 알아내고 해당 토큰을 폐 기합니다. 제가 그런 실수를 저질렀네요… 결론은… 슬랙, 대단합니다!
  • 29. And more... 장고 웹 애플리케이션과 연동해보는 것도 좋습니다. AWS의 Lambda, Azure의 Function에 코드만 올려두고 서버리스(Serverless)로 구 성해도 되겠죠? 자연어 처리가 가능하시면, 챗봇(Chatbot)을 만들어보실 수도 있습니다.
  • 30. Q&A