WebAPI/WebTelephony: Difference between revisions

Jump to navigation Jump to search
Line 30: Line 30:


We can access the phone functionality simply through navigator.mozTelephony. Once we have a reference to that object, we can start placing and recieving calls by the API below.
We can access the phone functionality simply through navigator.mozTelephony. Once we have a reference to that object, we can start placing and recieving calls by the API below.
interface nsIDOMTelephony: nsIDOMEventTarget
{
  nsIDOMTelephonyCall dial(in DOMString number);
   
   
  attribute boolean muted;
  interface Telephony : EventTarget {
  attribute boolean speakerEnabled;
    /**
    * There are multiple telephony services in multi-sim architecture. We use
  // The call that is "active", i.e. receives microphone input and tones
    * |serviceId| to indicate the target telephony service. If not specified,
  // generated via startTone.
    * the implementation MUST use the default service.
  readonly attribute jsval active;
    *
    * Possible values of |serviceId| are 0 ~ (number of services - 1), which is
  // Array of all calls that are currently connected.
    * simply the index of a service. Get number of services by acquiring
  readonly attribute jsval calls;
    * |navigator.mozMobileConnections.length|.
    */
  readonly attribute nsIDOMTelephonyCallGroup conferenceGroup;
 
    // Promise<TelephonyCall>
  void startTone(in DOMString tone);
    Promise dial(DOMString number, optional unsigned long serviceId);
  void stopTone();
 
    // Promise<TelephonyCall>
  attribute nsIDOMEventListener onincoming;
    Promise dialEmergency(DOMString number, optional unsigned long serviceId);
  attribute nsIDOMEventListener oncallschanged;
 
};
    [Throws]
    void startTone(DOMString tone, optional unsigned long serviceId);
interface nsIDOMTelephonyCall: nsIDOMEventTarget
 
{
    [Throws]
  readonly attribute DOMString number;
    void stopTone(optional unsigned long serviceId);
 
  // "dialing", "alerting", "busy", "connecting", "connected", "disconnecting",
    [Throws]
  // "disconnected", "incoming", "holding", "held", "resuming"
    attribute boolean muted;
  readonly attribute DOMString state;
 
    [Throws]
  readonly attribute nsIDOMTelephonyCallGroup group;
    attribute boolean speakerEnabled;
 
  // functions to mediate a call.
    readonly attribute (TelephonyCall or TelephonyCallGroup)? active;
  void answer();
 
  void hangUp();
    // A call is contained either in Telephony or in TelephonyCallGroup.
  void hold();  
    readonly attribute CallsList calls;
  // Resuming a group automatically holds any other groups/calls
    readonly attribute TelephonyCallGroup conferenceGroup;
  void resume();  
 
    attribute EventHandler onincoming;
  attribute nsIDOMEventListener onstatechange;
    attribute EventHandler oncallschanged;
    attribute EventHandler onremoteheld;
  attribute nsIDOMEventListener ondialing;
    attribute EventHandler onremoteresumed;
  attribute nsIDOMEventListener onalerting;
  };
  attribute nsIDOMEventListener onbusy;
 
  attribute nsIDOMEventListener onconnecting;
  interface TelephonyCall : EventTarget {
  attribute nsIDOMEventListener onconnected;
    // Indicate which service the call comes from.
  attribute nsIDOMEventListener ondisconnecting;
    readonly attribute unsigned long serviceId;
  attribute nsIDOMEventListener ondisconnected;
 
  attribute nsIDOMEventListener onincoming;
    readonly attribute DOMString number;
  attribute nsIDOMEventListener onholding;  
 
  attribute nsIDOMEventListener onheld;  
    // In CDMA networks, the 2nd waiting call shares the connection with the 1st
  attribute nsIDOMEventListener onresuming;  
    // call. We need an additional attribute for the 2nd number.
    readonly attribute DOMString? secondNumber;
  // Fired whenever the .group attribute changes
 
  attribute nsIDOMEventListener ongroupchange;
    readonly attribute DOMString state;
};
 
    // The property "emergency" indicates whether the call number is an emergency
interface nsIDOMTelephonyCallGroup : nsIDOMEventTarget
    // number. Only the outgoing call could have a value with true and it is
{
    // available after dialing state.
  // Array of all calls that are currently in this group. The length
    readonly attribute boolean emergency;
  // of this array is never 1.
 
  readonly attribute jsval calls;
    // Indicate whether the call state can be switched between "connected" and
    // "held".
  // Add a call to the callgroup. call2 must not be specified if the
    readonly attribute boolean switchable;
  // callgroup isn't empty.
 
  // If the callgroup is empty both call and call2 must be specified,
    // Indicate whether the call can be added into TelephonyCallGroup.
  // and one of them must be in 'held' state and the other in
    readonly attribute boolean mergeable;
  // 'connected' state.
 
  // Neither call or call2 can be in 'disconnected' state.
    readonly attribute DOMError? error;
  void add(nsIDOMTelephonyCall call, optional nsIDOMTelephonyCall call2);
 
    readonly attribute TelephonyCallGroup? group;
  // Removes a call from the callgroup. If this leaves the callgroup with
 
  // just one call, then that last call is also removed from the callgroup.
    [Throws]
  void remove(nsIDOMTelephonyCall call);
    void answer();
    [Throws]
  void hold();
    void hangUp();
  // Resuming a group automatically holds any other groups/calls
    [Throws]
  void resume();  
    void hold();
    [Throws]
  // When this changes, the state of all contained calls changes at the same time
    void resume();
  readonly attribute DOMString state;
 
    attribute EventHandler onstatechange;
  attribute nsIDOMEventListener onstatechange;
    attribute EventHandler ondialing;
    attribute EventHandler onalerting;
  attribute nsIDOMEventListener onconnected;
    attribute EventHandler onconnecting;
  attribute nsIDOMEventListener onholding;
    attribute EventHandler onconnected;
  attribute nsIDOMEventListener onheld;
    attribute EventHandler ondisconnecting;
  attribute nsIDOMEventListener onresuming;
    attribute EventHandler ondisconnected;
    attribute EventHandler onholding;
  // Fires when the array in the 'calls' property changes.
    attribute EventHandler onheld;
  attribute nsIDOMEventListener oncallschanged;
    attribute EventHandler onresuming;
};
    attribute EventHandler onerror;
 
    // Fired whenever the group attribute changes.
    attribute EventHandler ongroupchange;
  };
 
  interface TelephonyCallGroup : EventTarget {
    readonly attribute CallsList calls;
 
    [Throws]
    void add(TelephonyCall call);
 
    [Throws]
    void add(TelephonyCall call, TelephonyCall secondCall);
 
    [Throws]
    void remove(TelephonyCall call);
 
    [Throws]
    void hold();
 
    [Throws]
    void resume();
 
    readonly attribute DOMString state;
 
    attribute EventHandler onstatechange;
    attribute EventHandler onconnected;
    attribute EventHandler onholding;
    attribute EventHandler onheld;
    attribute EventHandler onresuming;
    attribute EventHandler oncallschanged;
    attribute EventHandler onerror;
  };


=== Example ===
=== Example ===
Confirmed users
54

edits

Navigation menu