= 메신저 == 개요 Knox Portal에서 제공하는 메신저 관련 Rest API 를 이용한 연계 서비스 제공 === Knox REST API 연계 서비스 신청 Knox REST API 연계 서비스 신청은 <<_knox_rest_api_연계_서비스_신청,Knox REST API 연계 서비스 신청>> 항목을 참조한다. === Knox Rest 메신저 연계 설정 메일, 결재 Knox Rest API 연계와 마찬가지로 연계를 위한 사전 준비가 되었다면, knox.properties 에 메신저 관련 설정이 되어 있는지 확인한다. .knox.properties [source,properties] ---- knox.messenger.contact-service=/messenger/contact/api/v1.0 knox.messenger.msgctx-service=/messenger/msgctx/api/v1.0 knox.messenger.message-service=/messenger/message/api/v1.0 ---- === Knox 메신저 연계 서비스 REST를 통해서 메신저와 연계하는 서비스로 주요 메서드는 KnoxMessengerService 인터페이스에 정의되어 있다. [source, java] ---- public interface KnoxMessengerService { /** * 디바이스 ID 조회 : 사용자 ID 와 맵핑되는 단말의 ID 값 * @return 디바이스 ID */ String getDeviceId(); /** * 메시지 암호화 키 조회 : 메시지를 암호화하기 위한 키 값 * @param deviceId 디바이스 ID * @return 메시지 암호화 키 */ String getKey(String deviceId); /** * Knox Potal login ID를 이용하여 Knox Messenger 수신자들을 조회한다. * @param deviceId 디바이스 ID * @param singleIds 수신자 Knox ID 리스트 * @return Knox Messenger 수신자 ID 리스트 */ List getUserIds(String deviceId, List singleIds); /** * 공지 메시지를 발신할 대화방이 없는 경우 신규 대화방 생성을 요청한다. * @param deviceId 디바이스 ID * @param key 암호화 키 * @param userIds Knox Messenger 수신자 ID 리스트 * @return 대화방 생성 요청 응답 결과 */ Map createChatroom(String deviceId, String key, List userIds); /** * Message 서버 API 에서 필요한 암호화된 바디를 만들기 위한 function * @param key - msgCtx 를 통해 전달받은 key 값 * @param body - 암호화 해야 될 String * @return 암호화된 String */ String encrypt(String key, String body); /** * Response 로 전달된 암호화 body 를 복호화 하기 위한 function
* 암호화의 역순으로 Base64 복호화 -> AES256 복호화 * @param body - 암호화 되어 있는 body * @return 복호화된 response String */ String decrypt(String body); /** * 신규 생성한 대화방 또는 기존에 사용중인 대화방에 공지 메시지를 발송한다. * @param deviceId 디바이스 ID * @param key 암호화 키 * @param chatroomId 생성된 대화방 ID * @param chatMsg 메시지 내용 * @return 메시지 발신 요청 응답 결과 */ Map chat(String deviceId, String key, String chatroomId, String chatMsg); } ---- 자세한 API 스펙은 Swagger API 문서의 knox-messenger-controller 항목을 참고한다.