WebAPI/WebSMS: Difference between revisions
m (→Proposed API: SMSRequest has a result, not a message) |
(→Proposed API: make SmsRequest.result from delete returning a boolean telling if something has been actually deleted and change SmsRequest.delete type to any) |
||
Line 22: | Line 22: | ||
SmsRequest[] send(DOMString[] number, DOMString message); | SmsRequest[] send(DOMString[] number, DOMString message); | ||
unsigned short getNumberOfMessagesForText(in DOMString text); | unsigned short getNumberOfMessagesForText(in DOMString text); | ||
SMSRequest delete(in long id); | SMSRequest delete(in long id); // request.result == boolean | ||
SMSRequest delete(in SmsMessage message); | SMSRequest delete(in SmsMessage message); // request.result == boolean | ||
SMSRequest getMessage(in long id); // request.result == SMSMessage | SMSRequest getMessage(in long id); // request.result == SMSMessage | ||
SMSRequest getMessages(in SMSFilter filter, bool reverse); // request.result == SMSIterator | SMSRequest getMessages(in SMSFilter filter, bool reverse); // request.result == SMSIterator | ||
Line 37: | Line 37: | ||
attribute EventListener onsuccess; | attribute EventListener onsuccess; | ||
attribute EventListener onerror; | attribute EventListener onerror; | ||
attribute readonly | attribute readonly any? result; | ||
}; | }; | ||
Revision as of 12:41, 25 October 2011
Steps
In a first time, we want an API that allows to do a SMS Messaging application with similar features that the stock one.
Some advanced functionality might be added after. For example, a "before-sms-send" event that would allow preventing sending a SMS with .preventDefault().
MMS support will be considered later.
Status
You can find some patches here: bug 674725. They are implementing some parts of the proposed API except delete, get and SmsRequest. Also, SmsMessage isn't fully implemented. Those patches are still work in progress.
Proposed API
This API is work in progress and mostly reflect what is implemented and is going to be really soon. Some changes are going to happen. See the comments below each interfaces.
navigator.sms returns an object with the following interface:
interface SmsManager { SmsRequest send(DOMString number, DOMString message); SmsRequest[] send(DOMString[] number, DOMString message); unsigned short getNumberOfMessagesForText(in DOMString text); SMSRequest delete(in long id); // request.result == boolean SMSRequest delete(in SmsMessage message); // request.result == boolean SMSRequest getMessage(in long id); // request.result == SMSMessage SMSRequest getMessages(in SMSFilter filter, bool reverse); // request.result == SMSIterator };
Comments:
- Should use opaque objects as message-identifiers rather than longs?
interface SmsRequest { readonly attribute DOMString readyState; // "processing" or "done" readonly attribute DOMString? errorCode; attribute EventListener onsuccess; attribute EventListener onerror; attribute readonly any? result; };
interface SmsMessage { readonly attribute long id; readonly attribute boolean fromMe; // Terrible name! readonly attribute DOMString sender; readonly attribute DOMString receiver; readonly attribute DOMString body; readonly attribute Date timestamp; readonly attribute boolean read; };
Comments:
- Have an array of receiver?
- Add a status attribute that can be equals to SENT or RECEIVED?
- Merge sender/receiver and use the status attribute?
interface SmsFilter { Date startDate; Date endDate; DOMString[] numbers; DOMString body; boolean read; };
Comments:
- Add a type field that could be SMS or MMS;
- Maybe add a status field that could be SENT or RECEIVED?
- Can we make the body field better to allow AND/OR operations?
interface SmsIterator { readonly SmsFilter filter; readonly SMSMessage? message; void next(); };
In addition of these interfaces, there is a new event:
interface SmsEvent : Event { void initSmsEvent(in DOMString eventTypeArg, in boolean canBubbleArg, in boolean cancelableArg, in SmsMessage message); readonly attribute SmsMessage message; }
The SmsEvent is used for the following events:
smssent: happens on all window when a SMS is sent; smsdelivered: happens on all window when a SMS is delivered to the recipient; smsreceived: happens on all window when a SMS is received.
These events carry the SMS in event.message. A security story has to be defined for these events.