1. 개요

     BONDI CommunicationLog Module은 통화기록이나 메시지기록을 관리할 수 있는 API를 제공한다.
     통화기록은 부재중 통화, 발신 통화, 수신 통화로 분류되고, 메시지는 보낸 메시지와 받은 메시지, 
     미발신 메시지, 발신 예정 메시지로 분류된다. 사용자는 CommLog API를 이용하여 통화기록과 
     메시지의 Metadata를 얻어올 수 있고, 필요에 따라 Filtering Option을 적용할 수도 있다.
2. Interface
     1) CommLogManager
          * Constants
             – INBOX_FOLDER : 메시지 수신함을 의미하는 상수값.
             – OUTBOX_FOLDER : 발신 예정 메시지를 의미하는 상수값.
             – SENT_FOLDER : 발신 메시지를 의미하는 상수값.
             – DRAFT_FOLDER : 미발신 메시지를 의미하는 상수값.
             – MISSED_CALLS_FOLDER : 부재중 통화를 의미하는 상수값.
             – RECEIVED_CALLS_FOLDER : 수신된 통화목록을 의미하는 상수값.
             – INITIATED_CALLS_FOLDER : 발신된 통화목록을 의미하는 상수값.
          * Methods
             – getSMSLog (successCallback, errorCallback, messageFolders, filter);
                sms메시지 목록을 얻어오는 함수로써, messageFolders인자를 통해 메시지함을
                선택할 수 있고, filter인자를 통해 결과를 필터링 할 수 있다. 필터링은 Case Sensitive하게
                이루어지고, 하나 이상의 옵션이 설정될 경우 AND효과를 갖는다.
                successCallback : 작업을 정상적으로 종료할 때 호출되는 Callback
                errorCallback : 작업을 정상적으로 종료하지 못했을 때 호출되는 Callback
                선택할 수 있는 메시지함 : INBOX_FOLDER, OUTBOX_FOLDER, SENT_FOLDER,
                                                    DRAFT_FOLDER 이상 4종류가 있다.
                – Detailed Filtering Option
                   body : sms메시지안에 나오는 단어 또는 문장
                   recipients : sms메시지의 수신측 이름, Semicolon(;)을 구분자로 사용한다.
                   store : sms가 sent messages folder에 저장될 지 의미하는 값
                             true -> 지원하는 property를 getSMSSupportedPropertyKeys의 결과로 반환한다.
                ex) function successCallback (messages) {
                        var sms = messages[0];
                      }
                      function errorCallback () {
                      }
                      bondi.commlog.getSMSLog (successCallback, errorCallback, 
                                               {bondi.commlog.INBOX_FOLDER, bondi.commlog.OUTBOX_FOLDER}, 
                                               {Recipient : “+345555555555”, Body : “Huesca”});
             – getMMSLog (successCallback, errorCallback, messageFolders, filter);
             mms메시지 목록을 얻어올 수 있는 함수로써, messageFolders인자를 통해 메시지함을 
                선택할 수 있고, filter인자를 통해 결과를 필터링 할 수 있다. 필터링은 Case Sensitive하게
                이루어지고, 하나 이상의 옵션이 설정될 경우 AND효과를 갖는다.

                successCallback : 작업을 정상적으로 종료할 때 호출되는 Callback
                errorCallback : 작업을 정상적으로 종료하지 못했을 때 호출되는 Callback
                선택할 수 있는 메시지함 : INBOX_FOLDER, OUTBOX_FOLDER, SENT_FOLDER,
                                                    DRAFT_FOLDER 이상 4종류가 있다.
                – Detailed Filtering Option
                   body : mms메시지안에 나오는 단어 또는 문장
                   recipients : mms메시지의 수신측 이름, Semicolon(;)을 구분자로 사용한다.
                   store : sms가 sent messages folder에 저장될 지 의미하는 Boolean값.
                             true -> 지원하는 property를 getSMSSupportedPropertyKeys의 결과로 반환한다.
                   attachments : mms에 첨부된 file의 이름이나 경로값.
                ex) function successCallback (messages) {
                        var mms = messages[0];
                      }
                      function errorCallback () {
                      }
                      bondi.commlog.getMMSLog (successCallback, errorCallback, 
                                               {bondi.commlog.INBOX_FOLDER, bondi.commlog.OUTBOX_FOLDER}, 
                                               {Recipient : “+345555555555”, Body : “Huesca”});

             – getEmailLog (successCallback, errorCallback, messageFolders, filter);

             E-mail 목록을 얻어올 수 있는 함수로써, messageFolders인자를 통해 메시지함을 
                선택할 수 있고, filter인자를 통해 결과를 필터링 할 수 있다. 필터링은 Case Sensitive하게
                이루어지고, 하나 이상의 옵션이 설정될 경우 AND효과를 갖는다.

                successCallback : 작업을 정상적으로 종료할 때 호출되는 Callback
                errorCallback : 작업을 정상적으로 종료하지 못했을 때 호출되는 Callback
                선택할 수 있는 메시지함 : INBOX_FOLDER, OUTBOX_FOLDER, SENT_FOLDER,
                                                    DRAFT_FOLDER 이상 4종류가 있다.
                – Detailed Filtering Option
                   from : e-mail의 발신자주소로써 RFC5322 3.4규격을 따른다.
                   to : e-mail의 수신자주소로써 RFC5322 3.4규격을 따른다.
                   cc : e-mail의 참조인주소
                   bcc : e-mail의 숨겨진 참조인 주소
                   subject : e-mail의 제목에 나오는 문장을 검색할때 사용된다.
                   body : e-mail의 본문에 나오는 문장을 검색할때 사용된다.
                   attachments : e-mail에 첨부된 file의 이름이나 경로값.

                   store : sms가 sent messages folder에 저장될 지 의미하는 Boolean값.

                             true -> 지원하는 property를 getSMSSupportedPropertyKeys의 결과로 반환한다.

  
                ex) function successCallback (messages) {
                        var email = messages[0];
                      }
                      function errorCallback () {
                      }
                      bondi.commlog.getEmailLog (successCallback, errorCallback, 
                                               {bondi.commlog.INBOX_FOLDER, bondi.commlog.OUTBOX_FOLDER}, 
                                               {Recipient : “+345555555555”, Body : “Huesca”});


             – getCallLog (successCallback, errorCallback, messageFolders, filter);

             전화목록을 얻어올 수 있는 함수로써, messageFolders인자를 통해 메시지함을 
                선택할 수 있고, filter인자를 통해 결과를 필터링 할 수 있다. 필터링은 Case Sensitive하게
                이루어지고, 하나 이상의 옵션이 설정될 경우 AND효과를 갖는다.

                successCallback : 작업을 정상적으로 종료할 때 호출되는 Callback
                errorCallback : 작업을 정상적으로 종료하지 못했을 때 호출되는 Callback
                선택할 수 있는 메시지함 : INBOX_FOLDER, OUTBOX_FOLDER, SENT_FOLDER,
                                                    DRAFT_FOLDER 이상 4종류가 있다.
                – Detailed Filtering Option
                   phoneNumber : 수신자의 전화번호
                   startTime : 발신/수신/부재중 전화의 시작시간
                   duration : 통화의 지속시간을 초단위로 표현한 값
  
                ex) function successCallback (messages) {
                        var myCalls = messages[0];
                      }
                      function errorCallback () {
                      }
                      bondi.commlog.getCallsLog (successCallback, errorCallback, 
                                               {phoneNumber : “+3466666666”}); 


             – getSMSSupportedPropertyKeys ();
                SMS의 Property로 지원하는 값들을 Array of String의 형태로 반환하는 함수.
                ex) var attributes = bondi.commlog.getSMSSupportedPropertyKeys();

             – getMMSSupportedPropertyKeys ();
                MMS의 Property로 지원하는 값들을  Array of String의 형태로 반환하는 함수.
                ex) var attributes = bondi.commlog.getMMSSupportedPropertyKeys();

             – getEmailSupportedPropertyKeys
                Email의 Property로 지원하는 값들을 Array of String의 형태로 반환하는 함수.
                ex) var attributes = bondi.commlog.getEmailSupportedPropertyKeys();
             – getCallSupportedPropertyKeys
                Call Object의 Property로 지원하는 값들을 Array of String의 형태로 반환하는 함수.
                ex) var attributes = bondi.commlog.getCallSupportedPropertyKeys();
     2) Call
        * Read-Only Attributes
             – DOMString phoneNumber : Call Object를 나타내는 전화번호,  ex) phoneNumber : “+34555555555555”
             – Date startTime : 전화의 시작시간을 나타내는 Date Object
             – unsigned long duration : 통화시간을 초단위로 표현한 값
             – DOMString id : Call을 구분하는 Unique한 값
             – unsigned short folder : 어떤 BOX에 포함되는지 나타내는 값 (MISSED, RECEIVED, INITIATED)
– Communication Log 모듈은 전화기록/메시지목록/E-mail 목록등의 정보를 얻어오는 것을 목적으로 하며
   전화 또는 메시지의 발신과 수신을 목적으로 하지 않는다.