리그캣의 개발놀이터

인턴 봇 - 최종 발표 본문

팀 활동/인턴쉽

인턴 봇 - 최종 발표

리그캣 2018. 1. 23. 16:48

개요

현장 실습생들이 사용하는 ‘G suite’ ‘Slack’ 활용하여 OJT 문서와 일정을 효율적으로 공유하고 관리 있도록 하는 챗봇이다.

2. 개발 환경

         VMware Workstation Pro 12.1.0

         Ubuntu 16.04.1 (Linux Mint)

         putty.exe

              Python 3.4, Python-pip3, Python3-django 1.11.3

         Jetbrains PyCharm 2017.1.4

         git 1.7.5

         Softether VPN

3. 개발 내용

1)      일정 관리

        알림 기능

         내용

         출근 10:00 그날 일정을 알림

         일정 10 전에 알림

         일정 추가나 삭제될 해당 채팅방에 알림

         18:00 퇴근 30 전에 내일 일정 자동 출력

         구현 방법

         해당 구글 캘린더와 SLACK 자체를 연동하여 Push 알람을 받게끔 설정. 체크박스로 얼마든지 쉽게 구현슬랙 봇이 폴링 기법을 사용하여 시간을 지속해서 체크 지정한 시간이 되었을 내일 일정

         명령어 호출출력

         이슈

         해당 명령어를 호출할 채널의 이름이 필요하여 소스 안에서 해당 채널로 변경해 주어야

        일정 안내

         내용

         모든 일정 확인 (일정-모두)

         당일 일정 확인 (일정-오늘)

         내일 일정 확인 (일정-내일)

         구현 방법

         해당 명령어를 챗봇이 인식하고 명령어에 따라 해당하는 명령어를 unionCalendar.py에서 호출

         이슈

         함수 지향적으로 프로그램을 구현하기 번거로웠지만, 막상 구현하니 유지보수가 간단하다고 생각

        일정 추가

         내용

         새로운 일정 추가 [일정-추가 (-D|-d) 날짜 (-T|-t) 시작:시간~끝나는:시간 (-S:-s) 일정제목]

         구현방법

         해당 명령어를 챗봇이 인식하고 명령어에 따라 해당하는 명령어를 unionCalendar.py에서 호출

         날짜, 시작시각, 끝나는 시간은 일정한 포맷에 맞추어야 하므로 포맷을 맞추어주는 함수 따로 구현

         정규식을 사용하여 구현하여서 중간에 띄어쓰기나 대소문자가 바뀌어도 상관없음

         명령어 순서는 일치하여야 하며 하나라도 빠뜨릴 실행 되게 구현

         이슈

         일정을 추가할 참여자의 이메일이 필요하므로 소스 안에 미리 각자의 이메일 기재 필요

         인턴 일정이 정도 제한, 날짜 기재 만이 오히려 효율적일 것으로 예상하여 기재는 없앰

        일정 삭제

         내용

         기존 일정 삭제 [일정-삭제 (-D|-d) 날짜 (-S:-s) 일정제목]

         구현방법

         해당 명령어를 챗봇이 인식하고 명령어에 따라 해당하는 명령어를 unionCalendar.py에서 호출

         일정에 해당하는 Id 갖고 있어야 해당 일정을 지울 있어. 일정 제목으로 해당 id 뽑아내는 함수를 따로 구현

         정규식을 사용하여 구현 하여서 중간에 띄어쓰기나 대소문자가 바뀌어도 상관 없음

         해당 날짜에 해당하는 제목의 일정이 없으면 구현이 안되게 개발

         명령어 순서는 일치하여야 하며 하나라도 빠뜨릴 실행안되게 구현

         이슈

         같은 같은 제목의 일정이 있으면 for문을 돌리기 때문에 마지막 일정 하나만 없어짐

         후에 시간과 같이 지정해서 제거를 시키던지, 한꺼번에 여러개의 일정을 제거할 있는 명령어 구현 필요하다 생각함

2)      OJT

        OJT 문서 검색

         내용

         구글 드라이브 API 연동

         전체 텍스트 키워드 선별

         채널, DM 모두 호용

         구현 방법

         구글 개발자 등록 Drive 프로젝트 생성, 등록

         드라이브 ID 통하여 OJT 문서에 접근

         정규식을 활용하여 사용자가 원하는 데이터 선별

         스레드를 통한 사용자 메시지 처리, 전송

         로드 밸런서를 통하여 병목 현상 방지, 성능 향상

         이슈

         정규식 표현은 단위로 처리하기에 태그 단위로 나눈 내용을 검색하고 자료구조 저장

         스레드는 CPU 부하를 높이지만 Request 대한 Response만을 기다리는 코드로 최소화

         로드 밸런서와 가상 인스턴스는 AWS 사용

4. 시스템 구성도


5. 개발 소요 일정



7. 시연

1)      OJT

2)      일정 관리

알림 기능

출근후 10:00 그날 일정 알림


일정 10분전 알림


명령어 안내

사용 가능 명령어 확인(일정-도와줘)


'팀 활동 > 인턴쉽' 카테고리의 다른 글

정규식 활용하기  (0) 2018.01.23
서비스 구현 계획서 - 데일리 봇  (0) 2018.01.23
기획안 - daily bot 데일리봇 (챗봇)  (0) 2018.01.23
구글 드라이브 api 연동하기  (0) 2018.01.23
Comments