4. ● Template
○ Base Template
■ HTTP 통신을 위한 기본 Template
○ EventTemplate
■ TeamUp Event API를 담당
○ Oauth2Template
■ TeamUp Oauth2 연동을 담당
○ EdgeTemplate
■ TeamUp 메시지 송/수신 등 행위 담당
● TokenManager
○ Oauth2Template로부터 갱신된 Token 정보를
저장 및 반환
● Message Service
○ Edge Template를 사용하는 서비스
메시지 송/수신
5. ● Event
○ TeamUpEventSensor
■ TeamUP API로부터 수신된 이벤트를
Queue에 담는 역할
○ EventQueue
■ TeamUp Event Queue
○ TaskRunner
■ 일정 시간을 주기로 EventQueue에 쌓인
하나의 이벤트를 하나의 Thread로
실행시킴.
● DispatcherBrain
○ Event를 구현부로 Dispatch하며, 구현부에서
작성된 결과를 역할(Message, Feed, Emoticon 등)
에 맞도록 TeamUp API에 전송
메시지 송/수신
7. BASE
● BrainRequest
○ DispatcherBrain에서는 TeamUp으로부터 받은
정보를 BrainRequest로 가공하여 구현체로 전송
● BrainFacotry
○ Annotaion 기반으로 구현체를 저장
○ DisPatcherBrain은 BrainFactory로부터 구현체를
꺼내 Dispatch
● BaseBrain
○ 기능목록,이모티콘 등 기본 기초 기능을
구현해놓은 구현체
● KnowledgeBrain
○ 학습 기능을 구현해놓은 구현체
8. BrainFactory
BrainFactory는 @Brain, @BrainCell 어노테이션을 Reflection 탐색하여 구현체를 Map에 저장
@Brain ● Class에 선언 가능
● 해당 Class가 구현체 기능들을 모아놓은
Class임을 선언
● Spring의 @Controller와 비슷
● Request Type으로 COMMON과 API를
갖을 수 있음
○ COMMON : 코드 내에 직접 기능을
구현하는 구현체
○ API : 외부 API를 통해 기능을
수신하는 구현체
9. BrainFactory
BrainFactory는 @Brain, @BrainCell 어노테이션을 Reflection 탐색하여 구현체를 Map에 저장
@BrainCell
● Method에 선언 가능
● Bot 하나의 명령어에 대한 구현체
● Key
○ 명령어
● explain
○ 기능에 대한 설명
● example
○ 기능 실행 예시
● type으로 MESSAGE, FEED, EMOTICON을
갖을 수 있음
○ MESSAGE
■ 팀업 메시지
○ FEED
■ 팀업 피드
○ EMOTICON
■ 이모티콘
● min(AOP 사용)
○ 명령어 외 최소 파라미터 갯수(공백 spilit)