일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 도커 elk
- 도커 mysql
- 도커
- C언어
- mysql docker
- 알고리즘
- 자바
- 코딩
- 푸시푸시
- python
- 도커 시작하기
- mysql on docker
- 백준
- 데이터베이스
- nvidia docker
- MySQL
- 파이썬
- 데이트
- 스트림셋
- c++
- 앤서블 설치
- java
- streamsets 강의
- 클라우드
- 스트림셋이란?
- c
- ansible install
- 정보처리기사
- docker
- elk stack
- Today
- Total
리그캣의 개발놀이터
인턴 봇 - 최종 발표 본문
개요
현장 실습생들이 사용하는 ‘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. 개발 소요 일정
명령어 안내
사용 가능 명령어 확인(일정-도와줘)'팀 활동 > 인턴쉽' 카테고리의 다른 글
정규식 활용하기 (0) | 2018.01.23 |
---|---|
서비스 구현 계획서 - 데일리 봇 (0) | 2018.01.23 |
기획안 - daily bot 데일리봇 (챗봇) (0) | 2018.01.23 |
구글 드라이브 api 연동하기 (0) | 2018.01.23 |