네이트온으로 쪽지 전달하기
요즘 많이 사용하는 방법으로는 게시판에 글이 등록되면 SMS로 문자가 오도록 하는 것이다.
간단하면서도 명료하고 실시간적이라는 장점이 있지만, 약간의 비용(?)이 든다는 단점도 있다.
그래서 실시간으로 알아야할 알림메세지가 있다면 sms 를 이용하지 않고 네이트온의 쪽지로 메세지가 오게 하고 싶었다.
물론 항상 네이트온을 켜놓고 있어야 한다는 경우가 가정이 되어야 한다.
참고로 나는 회사에서 업무로 네이트온을 메신저로 이용하기 때문에 항상 접속상태에 있다.
참 좋은 경우의 수이다.
예전에 네이트온 클론을 만들려고 하다가 도중에 그만 두었던 프로젝트가 있었는데,
그것을 그대로 이용하기로 했다.
네이트온 라이브러리가 만들어질 당시의 네이트온 프로토콜과 현재 프로토콜의 버전이 달라져 변경된 부분이 있었는데,
많지 않아 라이브러리를 조금 수정했다.
당시 친구목록 구현과 대화기능을 작업중이었는데, 친구목록은 그대로 이용하고 대화기능은 제거해버렸다.
그리고 이번에 쪽지 기능을 추가하였다.
원리는 간단하다.
가상의 봇계정을 하나 만든다. 그리고 이 봇에게 여러명의 친구를 등록시킨다.
외부에서 실시간으로 알림메세지가 발생하면 이 봇이 설치된 서버에 접속해 봇에게 메세지를 전달한다.
봇이 메세지를 받으면 해당 사용자에게 쪽지를 보내는 방식이다.
우선, 메신저를 실행시키고 로그인을 한다.
친구 추가 및 요청기능이 없기 때문에 미리 네이트온으로 계정을 모두 등록한 후 같은 계정으로 다시 로그인 한다.
이 봇은 보는바와 같이 아무런 기능이 없다. 대화를 요청해도 답이 없고 아무런 반응이 없다.
이제 메세지가 발생했을 경우, 이 봇이 설치된 메신저에 접속하여 특정한 메세지를 전달해보자.
아래는 샘플이다.
public class NateonMsgSendTest {
public static void main(String[] args) throws Exception{
String email = "hong@nate.com"; // 상대방 이메일 주소(로그인 아이디)
String msg = URLEncoder.encode("안녕하세요\r\n반갑 습니다.", "UTF-8");
Socket socket = new Socket("127.0.0.1", 5007);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
String protocol = "IMSG "+email+" "+msg;
dos.write(protocol.getBytes());
if(dos != null)
dos.close();
if(socket != null)
socket.close();
}
}
접속할 주소에 5007번으로 접속하여 메세지를 보낸다.
"IMSG "+email+" "+msg;
IMSG : 쪽지전송 프로토콜
email : 상대방 이메일주소(네이트온 로그인 아이디). 여러명에게 보낼 경우 콤마를 구분자로 붙여 보낸다.
msg : 메세지 (UTF-8로 된 문자열이며 URLEncode 하여 전송한다.)
위와 같이 메세지를 보내면 아래와 같이 쪽지가 도착한다.
항상 네이트온을 켜두는 경우에는 재미있게 사용할 것 같다.