O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Slackbot with Python

1.010 visualizações

Publicada em

장고걸스 10월 멜팅팟 세미나 발표 자료입니다. 파이썬으로 간단한 슬랙봇 만들기에 대한 슬라이드입니다.

Publicada em: Software
  • Seja o primeiro a comentar

Slackbot with Python

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

×