1. 개요

     Messaging Module은 SMS, MMS, Email을 생성하고, 전송할 수 있는 API를 제공한다.
     MMS와 Email의 경우 첨부파일을 추가하거나 삭제하는 API와 수신자 목록 및 참조인 목록을
     제어할 수 있는 API도 제공된다.
2. Interface
     1) MessagingManager
          * Constants
             – INBOX_FOLDER : 메시지 수신함을 의미하는 상수값.
             – OUTBOX_FOLDER : 발신 예정 메시지을 의미하는 상수값.
             – SENT_FOLDER : 발신 메시지를 의미하는 상수값.
             – DRAFTS_FOLDER : 미발신 메시지를 의미하는 상수값.
          * Methods
             – createSMS (smsParams);
                SMS Object를 생성하는 함수로써 SMS의 내용과 수신자, 저장여부를 smsParams에 담아서 
                함수를 호출하면 그 결과로 생성된 SMS Object가 반환된다. 만약 smsParams의 구성요소 중
                부적절한 값이 포함되어 있을 경우 INVALID_ARGUMENT_ERROR를 발생시켜야 한다.
                정상적으로 만들어진 SMS는 Drafts Folder에 저장된다.
                Detailed SMS Parameters
                – body : SMS의 내용
                – recipients : SMS의 수신자
                – store : SMS를 발신함에 저장할 것인지 여부를 나타내는 boolean값.
                ex) var createdSMS = bondi.messaging.createSMS({recipients:”+34666666666″, body:”Hello from Boom”, 
                                                                                            store : false});
             – createMMS (mmsParams);
                MMS Object를 생성하는 함수로써 MMS의 내용과 수신자, 첨부파일, PLMN 주소, 저장여부를 
                mmsParams에 담아서 함수를 호출하면 그 결과로 생성된 MMS Object가 반환된다. 만약 mmsParams의
                구성요소 중 부적절한 값이 포함되어 있을 경우 INVALID_ARGUMENT_ERROR를 발생시켜야 한다.
                정상적으로 만들어진 MMS는 Drafts Folder에 저장된다.
                Detailed MMS Parameters
                – body : MMS의 내용
                – recipients : MMS의 수신자
                – store : MMS를 발신함에 저장할 것인지 여부를 나타내는 boolean값.
                – attachments : 첨부하려는 File의 Object
                ex) var files = getFiles();
                      var createdMMS = bondi.messaging.createMMS({recipients:”+3466666666″, body:”How are you doing?”,
                                                                                             attachments : files, store : false});
             – createEmail (emailParams);

                Email Object를 생성하는 함수로써 Email의 내용과 제목, 수신자, 첨부파일, 참조, 숨은참조, 저장여부를 
                emailParams에 담아서 함수를 호출하면 그 결과로 생성된 Email Object가 반환된다. 만약 emailParams의
                구성요소 중 부적절한 값이 포함되어 있을 경우 INVALID_ARGUMENT_ERROR를 발생시켜야 한다.
                정상적으로 만들어진 Email은 Drafts Folder에 저장된다.

                Detailed Email Parameters
                – from : E-mail의 발신자의 주소
                – to : E-mail의 수신자의 주소
                – cc : E-mail의 참조자
                – bcc : E-mail의 숨은 참조자
                – subject : E-mail의 제목
                – body : E-mail의 내용
                – attachments : E-mail에 첨부하려는 File의 Object
                – store : E-mail을 발신함에 저장할 것인지 여부를 나타내는 Boolean값.
                ex) var files = getFiles();
                      var createdEmail = bondi.messaging.createEmail({from : “shinest@ymail.com”,
                                                 to : “pedro@gmail.com”, cc:”pabasa@corp.vodaphone.es”, 
                                                 body : “How Are you??”, attachments : files, storea : false});
             – sendSMS (successCallback, errorCallback, sms);
                createSMS 함수를 이용해서 생성한 sms를 전송하는 함수, smsParam중 store의 값이 true로 
                설정되어 있을 경우 sms를 전송한 뒤 SENT_FOLDER에 전송한 메시지를 저장한다. 메시지 전송이
                정상적으로 완료되었을 경우 successCallback을 호출한다. 만약 Network 연결이 되어있지 않아
                메시지를 전송할 수 없는 경우에는 OUT_OF_COVERAGE_ERROR를 발생시킨다.

                ex) var createdSMS = bondi.messaging.createSMS({recipients:”+34666666666″, body:”Hello from Boom”, 
                                                                                            store : false});
                      function successCallback (response) {
                         alert(“SENT”);
                      }
                      function errorCallback (response) {
                         alert(“The following error code : ” + response.code);
                      }
                      bondi.messaging.sendSMS(successCallback, errorCallback, createdSMS);

             – sendMMS (successCallback, errorCallback, mms);

                createMMS 함수를 이용해서 생성한 mms를 전송하는 함수, mmsParam중 store의 값이 true로 
                설정되어 있을 경우 mms를 전송한 뒤 SENT_FOLDER에 전송한 메시지를 저장한다. 메시지 전송이
                정상적으로 완료되었을 경우 successCallback을 호출한다. 만약 Network 연결이 되어있지 않아
                메시지를 전송할 수 없는 경우에는 OUT_OF_COVERAGE_ERROR를 발생시킨다.

                ex) var files = getFiles();
                      var createdMMS = bondi.messaging.createMMS({recipients:”+3466666666″, body:”How are you doing?”,
                                                                                             attachments : files, store : false});
                      function successCallback (response) {
                         alert(“SENT”);
                      }
                      function errorCallback (response) {
                         alert(“The following error code : ” + response.code);
                      }
                      bondi.messaging.sendMMS(successCallback, errorCallback, createdMMS);


             – sendEmail (successCallback, errorCallback, email);

                createEmail 함수를 이용해서 생성한 email를 전송하는 함수, emailParam중 store의 값이 true로 
                설정되어 있을 경우 email를 전송한 뒤 SENT_FOLDER에 전송한 Email를 저장한다. Email전송이
                정상적으로 완료되었을 경우 successCallback을 호출한다. 만약 Network 연결이 되어있지 않아
                Email를 전송할 수 없는 경우에는 OUT_OF_COVERAGE_ERROR를 발생시킨다.

                ex) var files = getFiles();
                      var createdEmail = bondi.messaging.createEmail({from : “shinest@ymail.com”,
                                                 to : “pedro@gmail.com”, cc:”pabasa@corp.vodaphone.es”, 
                                                 body : “How Are you??”, attachments : files, storea : false});

                      function successCallback (response) {
                         alert(“SENT”);
                      }
                      function errorCallback (response) {
                         alert(“The following error code : ” + response.code);
                      }
                      bondi.messaging.sendMMS(successCallback, errorCallback, createdEmail);


             – getAvailableEmailAccounts (successCallback, errorCallback);
                단말기에 등록된 Email 발신자 주소록을 successCallback의 인자로 전달하여 Email을 생성할 때
                from Parameter로 사용할 수 있는 함수. 만약 단말기에 등록된 Email주소가 없다면 null을 인자로 
                받게 된다.
                ex) function successCallback (emailList) {
                         var email = bondi.messaging.createEmail({from : emailList[0]});
                      }
                      function errorCallback (response) {
                         alert (“The following error code : ” + response.code);
                      }
                      getAvailableEmailAccounts(successCallback, errorCallback);
     2) SMS
          * Read-Only Attributes
             – DOMString id : Message를 구분할 수 있는 Unique Identifier
             – Date datetime : 언제 Message를 받거나, 전송했는지를 나타내는 값
                                        폴더에 따라 다른 의미를 갖는다.
             – unsigned short folder : 어떤 폴더에 저장된 Message인지를 나타내는 값, 위치할 수 있는 폴더는 
                                                  INBOX, OUTBOX, SENT, DRAFTS로 나뉜다.
             – boolean read : 사용자가 Message를 확인했는지 여부를 나타내는 boolean값
          * Read/Write Attributes
             – DOMString body : Message의 본문 내용
             – boolean store : Message를 전송한 뒤 SENT_FOLDER에 저장할 것인지 여부를 나타내는 값
          * Methods
             – getProperty (propertyName);
                propertyName에 해당하는 property의 값을 반환하는 함수, 만약 지원하지 않는 property의 이름이
                인자로 입력될 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) var body = sms.getProperty(“body”);
             – setProperty (propertyName, propertyValue);
                propertyName에 해당하는 property의 값을 인자로 받은 propertyValue로 설정하는 함수, 만약 
                지원하지 않는 property의 이름이 인자로 입력되었거나, value의 Type이 적절하지 않을 경우
                INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) sms.setProperty(“body”, “Just arrived in Seoul”);
             – getRecipients ();
                SMS의 수신자로 등록된 List를 Array of String의 형태로 반환하는 함수.
                ex) var recipients = sms.getRecipients();
                      alert (recipients.length + ” number of recipients”);

             – getRecipient (index);
                index번지의 수신자의 전화번호를 반환하는 함수. 
                index가 숫자가 아니거나 범위를 벗어날 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) var recipients = sms.getRecipients(0);
                      alert (recipients + ” Recipients number”);

             – appendRecipient (phoneNumber);
                SMS의 수신자를 추가하는 함수.
                ex) var sms = bondi.messaging.createSMS(null);
                      sms.appendRecipient(“+346666666”);
             – clearRecipients ();
                SMS의 수신자로 등록되어있는 모든 List를 삭제하는 함수.
                ex) sms.clearRecipients();
     3) MMSSlide
          * Read/Write Attributes
             – unsigned long duration : Slide의 소요시간을 milliseconds단위로 나타낸 값.
             – File image : Image File을 포함하는 File Object로써 MMS에서 지원하는 Size보다 큰 경우,
                                  MMS_MESSAGE_SIZE_EXCEEDED_ERROR를 발생시키고, Slide가 Video를 
                                  포함할 경우 MMS_VIDEO_SLIDE_ERROR를 발생시킨다.
             – unsigned long imageBegin : Image가 Slide에서 사용되는 시점을 millisecond로 표현한다.
             – unsigned long imageEnd : Slide에서 Image사용을 끝내는 시점을 millisecond로 표현한다.
             – File audio : Audio File을 포함하는 File Object로써 MMS에서 지원하는 Size보다 큰 경우, 
                                 MMS_MESSAGE_SIZE_EXCEEDED_ERROR를 발생시키고, Slide가 Video를 
                                 포함할 경우 MMS_VIDEO_SLIDE_ERROR를 발생시킨다.
             – unsigned long audioBegin : Audio가 Slide에서 사용되는 시점을 millisecond로 표현한다.
             – unsigned long audioEnd : Slide에서 Audio사용을 끝내는 시점을 millisecond로 표현한다.
             – DOMString text : Slide에 나타내려는 문장
             – unsigned long textBegin : Text가 Slide에서 사용되는 시점을 millisecond로 표현한다.
             – unsigned long textEnd : Slide에서 Text사용을 끝내는 시점을 millisecond로 표현한다.
             – File video : Video File을 포함하는 File Object로써 MMS에서 지원하는 Size보다 큰 경우, 
                                 MMS_MESSAGE_SIZE_EXCEEDED_ERROR를 발생시키고, Slide가 Audio나
                                 Image를 포함할 경우 MMS_VIDEO_SLIDE_ERROR를 발생시킨다.
             – unsigned long videoBegin : Video가 Slide에서 사용되는 시점을 millisecond로 표현한다.
             – unsigned long videoEnd : Slide에서 Video사용을 끝내는 시점을 millisecond로 표현한다.
     4) MMS
          * Constants
             – MULTIPART_MIXED : MMS의 Type을 multipart/mixed로 구분하기 위해 사용되는 Constant
             – MULTIPART_RELATED : MMS의 Type을 multipart/related로 구분하기 위해 사용되는 Constant
          * Read-Only Attributes
             – DOMString id : Message를 구분할 수 있는 Unique Identifier
             – Date datetime : 언제 Message를 받거나, 전송했는지를 나타내는 값
                                        폴더에 따라 다른 의미를 갖는다.
             – unsigned short folder : 어떤 폴더에 저장된 Message인지를 나타내는 값, 위치할 수 있는 폴더는 
                                                  INBOX, OUTBOX, SENT, DRAFTS로 나뉜다.
             – boolean read : 사용자가 Message를 확인했는지 여부를 나타내는 boolean값
          * Read/Write Attributes
             – DOMString body : Message의 본문 내용
             – boolean store : Message를 전송한 뒤 SENT_FOLDER에 저장할 것인지 여부를 나타내는 값
             – DOMString subject : MMS Message의 내용
             – DOMString multipartMixedBody : multipart/mixed Type의 Messege의 Body에 포함된 내용
             – unsigned short messageType : multipart/mixed or miltipart/related
             – MMSSlideArray slides : Array of MMSSlide Object
          * Methods
             – getProperty (propertyName);
                propertyName에 해당하는 property의 값을 반환하는 함수, 만약 지원하지 않는 property의 이름이
                인자로 입력될 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                MMS의 Property로 지원하는 List는 아래와 같다.
                body, subject, recipients, store, id, read, folder, datetime, attachment
                ex) var body = mms.getProperty(“body”);
             – setProperty (propertyName, propertyValue);
                propertyName에 해당하는 property의 값을 인자로 받은 propertyValue로 설정하는 함수, 만약 
                지원하지 않는 property의 이름이 인자로 입력되었거나, value의 Type이 적절하지 않을 경우
                INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) mms.setProperty(“body”, “Just arrived in Seoul”);
             – getRecipients ();
                MMS의 수신자로 등록된 List를 Array of String의 형태로 반환하는 함수.
                ex) var recipients = mms.getRecipients();
                      alert (recipients.length + ” number of recipients”);

             – getRecipient (index);
                index번지의 수신자의 전화번호를 반환하는 함수. 
                index가 숫자가 아니거나 범위를 벗어날 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) var recipients = mms.getRecipients(0);
                      alert (recipients + ” Recipients number”);

             – appendRecipient (phoneNumber);
                MMS의 수신자를 추가하는 함수.
                ex) var mms = bondi.messaging.createMMS(null);
                      mms.appendRecipient(“+346666666”);
             – clearRecipients ();
                MMS의 수신자로 등록되어있는 모든 List를 삭제하는 함수.
                ex) mms.clearRecipients();
             – getAttachments();
                MMS의 첨부파일들을 Array of File의 형태로 반환하는 함수.
                ex) var attachments = mms.getAttachments();
  
             – getAttachment(index);
                MMS의 첨부파일 중 index번지에 해당하는 첨부파일을 얻어오는 함수.
                index가 숫자가 아니거나 범위를 벗어날 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) var attachment = mms.getAttachment(0);
             – appendAttachment(myAttachment);
                MMS에 첨부파일을 등록하는 함수로써 인자로 File Object를 전달한다.
                ex) mms.appendAttachment(file);
             – clearAttachment();
                MMS에 등록된 모든 첨부파일을 삭제하는 함수
                ex) mms.clearAttachments();
     5) Email
          * Read-Only Attributes
             – DOMString id : Email를 구분할 수 있는 Unique Identifier
             – Date datetime : 언제 Email를 받거나, 전송했는지를 나타내는 값
                                        폴더에 따라 다른 의미를 갖는다.
             – unsigned short folder : 어떤 폴더에 저장된 Email인지를 나타내는 값, 위치할 수 있는 폴더는 
                                                  INBOX, OUTBOX, SENT, DRAFTS로 나뉜다.
             – boolean read : 사용자가 Email를 확인했는지 여부를 나타내는 boolean값
          * Read/Write Attributes
             – DOMString from : 발신자의 Email 주소
             – DOMString  body : Email의 본문내용
             – boolean store : Email을 전송한 뒤 SENT 폴더에 저장할 것인지를 나타내는 boolean값
             – DOMString subject : Email의 제목
          * Methods
             – getProperty (propertyName);
                propertyName에 해당하는 property의 값을 반환하는 함수, 만약 지원하지 않는 property의 이름이
                인자로 입력될 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                Email의 Property로 지원하는 List는 아래와 같다.
                from, recipients, cc, bcc, subject, body, store, read, id, datetime, folder
                ex) var body = email.getProperty(“body”);
             – setProperty (propertyName, propertyValue);
                propertyName에 해당하는 property의 값을 인자로 받은 propertyValue로 설정하는 함수, 만약 
                지원하지 않는 property의 이름이 인자로 입력되었거나, value의 Type이 적절하지 않을 경우
                INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) email.setProperty(“body”, “Just arrived in Seoul”);
             – getToList();
                Email의 수신자 목록을 Array of String의 형태로 얻어오는 함수
.               ex) var recipients = email.getToList();
             – getTo(index);
                Email의 수신자 목록 중 index번지에 해당하는 수신자의 Email주소를 얻어오는 함수
                ex) var recipient = email.getTo(0);
             – getCCList();
                Email의 참조인 목록을 Array of String의 형태로 얻어오는 함수
                ex) var cclist = email.getCCList();
             – getCC(index);
                Email의 참조인 목록 중 index번지에 해당하는 참조인의 Email주소를 얻어오는 함수
                ex) var cc = email.getCC(0);
             – getBCCList();

                Email의 숨은참조인 목록을 Array of String의 형태로 얻어오는 함수
                ex) var bcclist = email.getBCCList();


             – getBCC(index);
                Email의 숨은참조인 목록 중 index번지에 해당하는 숨은참조인의 Email주소를 얻어오는 함수
                ex) var bcc = email.getBCC(0);

             – appendTo(emailAddress);

                인자로 넘겨주는 emailAddress를 Email의 수신자 목록에 추가시키는 함수
                만약 인자가 Email주소 형식에 어긋날 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) email.appendTo(“shinest@ymail.com”);

             – clearTo();

                Email의 수신자목록은 전부 삭제하는 함수
                ex) email.clearTo();

             – appendCC(emailAddress);

                인자로 넘겨주는 emailAddress를 Email의 참조인 목록에 추가시키는 함수
                만약 인자가 Email주소 형식에 어긋날 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) email.appendCC(“shinest@ymail.com”);

             – clearCC();

                Email의 참조인목록은 전부 삭제하는 함수
                ex) email.clearCC();

             – appendBCC(emailAddress);

                인자로 넘겨주는 emailAddress를 Email의 숨은참조인목록에 추가시키는 함수
                만약 인자가 Email주소 형식에 어긋날 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) email.appendㅠㅊ(“shinest@ymail.com”);


             – clearBCC();

                Email의 숨은참조인목록은 전부 삭제하는 함수
                ex) email.clearBCC();


             – getAttachments();
                Email의 첨부파일들을 Array of File의 형태로 반환하는 함수.
                ex) var attachments = email.getAttachments();
  
             – getAttachment(index);
                Email의 첨부파일 중 index번지에 해당하는 첨부파일을 얻어오는 함수.
                index가 숫자가 아니거나 범위를 벗어날 경우 INVALID_ARGUMENT_ERROR를 발생시킨다.
                ex) var attachment = email.getAttachment(0);
             – appendAttachment(myAttachment);
                Email에 첨부파일을 등록하는 함수로써 인자로 File Object를 전달한다.
                ex) email.appendAttachment(file);
             – clearAttachment();
                Email에 등록된 모든 첨부파일을 삭제하는 함수
                ex) email.clearAttachments();