WebAPI/WebVoicemail/Multi-SIM

From MozillaWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Proposal: WebVoicemail API for Multi-SIM

Currently B2G supports a single SIM architecture. This proposal wants to extend MozVoicemail API to support multi-SIMs. The basic concept is the same as Telephony/MobileMessage API. I.e., we have a central object for dispatching events, so that API users could just listen to a single event source for different sim cards/services. User could get the voicemail status or voicemail number of a service by specifying the service Id. If user didn't apply a Id, the platform will just use the default Id.

Web API

interface MozVoicemail : EventTarget
{
  /**
   * The current voicemail status of a specified service, or null when the
   * status is unknown
   */
  [Throws]
  MozVoicemailStatus getStatus(optional unsigned long serviceId);

  /**
   * The voicemail box dialing number of a specified service, or null if one
   * wasn't found
   */
  [Throws]
  DOMString getNumber(optional unsigned long serviceId);

  /**
   * The display name of the voicemail box dialing number, or null if one
   * The display name of the voicemail box dialing number of a specified service,
   * or null if one wasn't found
   */
  [Throws]
  DOMString getDisplayName(optional unsigned long serviceId);

  /**
   * The current voicemail status has changed
   */
  attribute EventHandler onstatuschanged;
};
Compared to the single-SIM version, we add only one attribute to nsIDOMMozVoicemailStatus.
The new  attribute is used to indicate of which service the voicemail status.
In addition, we remove a numeric constant by following W3C WebAPI design style.

interface nsIDOMMozVoicemailStatus : nsISupports
{
  const unsigned long serviceId; /* New attribute */
  
  /**
   * Whether or not there are messages waiting in the voicemail box
   */
  readonly attribute boolean hasMessages;
  /**
   * The total message count. Some voicemail indicators will only specify that
   * messages are waiting, but not the actual number. In that case, the value
   * of messageCount will be MESSAGE_COUNT_UNKNOWN (-1).
   *
   * Logic for a voicemail notification might look something like:
   * if (status.hasMessages) {
   *   // show new voicemail notification
   *   if (status.messageCount > 0) {
   *     // add a label for the message count
   *   }
   * } else {
   *   // hide the voicemail notification
   * }
   */
  readonly attribute long messageCount;
  /**
   * Return call number received for this voicemail status, or null if one
   * wasn't provided.
   */
  readonly attribute DOMString returnNumber;
  /**
   * Displayable return call message received for this voicemail status, or null
   * if one wasn't provided.
   */
  readonly attribute DOMString returnMessage;
};

Use Case

  • Current B2G:
   var voicemail = navigator.mozVoicemail;
   var number = voicemail.number;
   var name = voicemail.displayName;
   var status = voicemail.status;
  • Multi-SIM:
   var voicemail = navigator.mozVoicemail; // Same as current usage.

   var serviceId = 1;
   var number = voicemail.getNumber(serviceId);
   var name = voicemail.getDisplayName(serviceId);
   var status = voicemail.getStatus(serviceId);

   // User can use the default id.
   number = voicemail.getNumber();
   name = voicemail.getDisplayName();
   status = voicemail.getStatus();