Re: About Telephony API

Thank you for your reply.
So let me be more specific... This is not valid WebIDL. In particular, I use
"struct", "enum" for undefined (yet) types.
First, consider the following grouping:

interface TelephonyAddress{
readonly attribute String DisplayName; //from any source
readonly attribute String AddressOfRecord; //empty string if unknown, incl.
interoperability and anonymity
readonly attribute String RoamingAddress; //or CareOfAddress? E.g. IP-based
for VoIP implementations, otherwise empty.
                                                                //Should be
MSRN in GSM, but unknown there
readonly attribute Boolean Anonymous; //or restricted, in ITU terms.
readonly attribute Boolean Verified; //do not specify by whom
}
//Maybe a local TAddress is also a factory for calls, similar to JTAPI?

Hence, common attributes for a call:

partial interface TelephonyCall{
 readonly attribute TelephonyAddress CallingParty;
 readonly attribute TelephonyAddress CalledParty;
 readonly attribute TelephonyAddress CallInitiator; //Call may be initiated
by a third party. This also covers "doctor" scenario discussed by stir WG at
IETF.
 readonly attribute enum Direction;
  //one of "outgoing", "incoming", "transit", "third-party", "internal",
"unknown"
  //Call may be exposed to a non-party, e.g. to an administrator of a PBX.
It is "transit". "Internal" is for symmetry.
  //I think it should be better to have the same State at both sides...
 readonly attribute sequence<ForwardingRecord> History; //see below
 attribute String Subject;
 attribute String? Bearer;
 //ISDN (and thus TAPI) uses this attribute to discriminate between "voice"
//and "data". For some implementations, it is invariable, as "analog" or
"IP".
 //If not defined by dialer, implementation chooses the best one.
 //TBD: what about bandwidth? Is it a separate attribute?
 //TBD: is the "Bearer" attribute mutable? Modify the call by some other
method?
 readonly attribute struct LowLevel;
 //another ISDN-specific attribute. Actual structure TBD as a separate
interface.
 attribute String HighLevel;
 //equivalent to MediaMode in TAPI. For IP, logical channels are used
instead.
 attribute LogicalChannel[] LogicalChannels; //See below. Useful only for
some implementations.
 readonly attribute struct AdviceOfCharge; //TBD
 attribute String ClosedUserGroup; //Number or GUID?
}

Some structures mentioned above:

interface ForwardingRecord{
 readonly attribute TelephonyAddress Forwarder;
 readonly attribute struct Reason;
 readonly attribute String? Timestamp;
}

interface LogicalChannel{
 readonly attribute String HighLevel; //for consistency. One of "audio",
"video", "fax", "chat" or few more.
 void hold(); //channel-specific.
 void resume();
//anything else? Direction (send,recv,both)?
}

Few more notes.
1. What does "Accept a call" mean? In TAPI, lineAccept really means "start
alerting". I suggest removing "accept" operation, and replacing it with two.
2. TAPI 2 has a concept of call "handover" between applications (e.g. a
voice mail application, a fax application, a terminal emulation
application). I think it is still useful for IP-based calls (esp. in
interworking).
3. "Holding" a call is local; other party may also hold the call on its side
or not.
4. As for conferencing, I'll write next time.

partial interface TelephonyCall{
 void answer();
 void startAlerting();
 void redirect(String to, struct reason);
 void blindTransfer(String to); //or combine these actions into one, 
depending on call state?
 void assistedTransfer(TelephonyCall consultation);
 Boolean handover(); //to another local application.
//If succeeds, the app no longer owns the call, and should not change its 
state (only listen to events).
 String park(); //returns code
}

Best wishes,
Anton Tveretin.

----- Original Message ----- 
From: "Kis, Zoltan" <zoltan.kis@intel.com>
To: "Anton Tveretin" <fas_vm@surguttel.ru>
Cc: <public-sysapps@w3.org>
Sent: Saturday, September 14, 2013 4:13 AM
Subject: Re: About Telephony API


> Hi Anton,
>
> Thank you for the interest in the Telephony API.
>
> On Thu, Sep 12, 2013 at 11:02 PM, Anton Tveretin <fas_vm@surguttel.ru>
> wrote:
>> I think telephony API should be something different.
>
> Please feel free to make a proposal, handling the existing use cases
> of the API, plus the use cases you would like to add.
> Or just add use cases. Any of these would be useful.
>
>> I think of a telephony
>> program (for a voice/fax modem, or ISDN) or a softphone (for VoIP), which
>> uses scripts to handle incoming calls. It may process calls automatically
>
> As far as I understand these are exactly the use cases for the
> Telephony API, adherent to existing telephony standards.
> In this version, voice call control is in the scope.
>
>> (e.g. receive faxes or files, or implement voice mail) or reject them,
>> using
>> caller, nature of the call, subject etc.
>
> When it comes to extra interfaces, the spec has been designed so that
> we can later include other than voice interfaces, too.
> Also, the API could already be creatively used for implementing other
> than usual user interactions on telephony events.
>
> Again, feel free to propose extensions, or alternative designs - these
> would illustrate your point more accurately.
>
>> Maybe I shouldn't address to this WG, as the thing is unrelated to the
>> Web
>> and W3C.
>
> Given the scope you depicted above (scripted handling of call events),
> I understood the thing actually was related to the Web and W3C. For
> clarifying the scope, please provide use cases and/or proposals :).
>
>> Obviously, such API must be fairly extended (Microsoft TAPI 2.2 is
>> somewhat
>> closer), with many call attributes, states, and methodes.
>
> This, or a related API can (and hopefully will) be extended to support
> all GSM/CDMA/(and later VoLTE, SIP, XMPP) features needed, and which
> are not visible yet in the API. As an example where future development
> may lead, see https://etherpad.mozilla.org/5AnQEPnpvI
> There have been many modem and telephony middleware implementations
> the editors have considered during the API design, so more specific
> questions may help clarifying where do you perceive having gaps in the
> API.
>
>> Also, I know there are PBXes that allow some kind of call control, but no
>> common API.
>
> Could you elaborate more on this point?
>
> Best regards,
> Zoltan
>
>> Sincerely yours, Anton Tveretin
>>
>>

Received on Monday, 30 September 2013 17:22:04 UTC