Interface org.freedesktop.Telepathy.Channel.Type.Call.Draft

Interface Index (Compact) | Summary | Description | Methods | Signals | Properties | Handler Capability Tokens | Types

Methods

Ringing () nothing
Accept () nothing
Hangup (u: Reason, s: Detailed_Hangup_Reason, string: Message) nothing
AddContent (s: ContentName, u: ContentType) o: Content

Signals

ContentAdded (o: Content, u: ContentType)
ContentRemoved (o: Content)
CallStateChanged (u: CallState, u: CallFlags, (uus): CallStateReason, a{sv}: CallStateDetails)
CallMembersChanged (a{uu}: FlagsChanged, au: Removed)

Properties

Contents ao Read only
CallStateDetails a{sv} Read only
CallState u (Call_State) Read only
CallFlags u (Call_Flags) Read only
CallStateReason (uus) (Call_State_Reason) Read only
HardwareStreaming b Read only
CallMembers a{uu} (Call_Member_Map) Read only
InitialTransport s Read only
InitialAudio b Read only
InitialVideo b Read only
MutableContents b Read only

Handler Capability Tokens

org.freedesktop.Telepathy.Channel.Type.Call.Draft/gtalk-p2p
org.freedesktop.Telepathy.Channel.Type.Call.Draft/ice-udp
org.freedesktop.Telepathy.Channel.Type.Call.Draft/wlm-8.5
org.freedesktop.Telepathy.Channel.Type.Call.Draft/wlm-2009
org.freedesktop.Telepathy.Channel.Type.Call.Draft/video/h264 (etc.)

Types

Call_State Enum u
Call_State_Change_Reason Enum u
Call_Flags Flags u
Call_Member_Flags Flags u
Call_Member_Map Mapping a{uu}
Call_State_Reason Struct (uus)
WARNING: This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Do not include this interface in libraries that care about compatibility.
Added in 0.17.UNRELEASED. (as a draft)
Objects implementing this interface must also implement:

Description

A channel type for making audio and video calls.

A Call channel can have one or more Content.Draft objects, which represent the actual Media that forms the Call (e.g. an audio content and a video content).

Methods

(Permalink)

Ringing () → nothing

Indicate the local user is alerted about the incoming call.
(Permalink)

Accept () → nothing

Accept the incoming call. The self-handles callstate changes to include accepted.
(Permalink)

Hangup (u: Reason, s: Detailed_Hangup_Reason, string: Message) → nothing

Parameters

Request the ending of the call.
(Permalink)

AddContent (s: ContentName, u: ContentType) → o: Content

Parameters

  • ContentName — s
  • The suggested name of the content to add
  • ContentType — u (Media_Stream_Type)
  • The media type of the content to add

Returns

  • Content — o
  • Path to the created content

Signals

(Permalink)

ContentAdded (o: Content, u: ContentType)

Parameters

  • Content — o
  • The object path of the added content
  • ContentType — u (Media_Stream_Type)
  • The media type of the content which was added

Emitted when a new content is added to the call

(Permalink)

ContentRemoved (o: Content)

Parameters

  • Content — o
  • The content which was removed

Emitted when a contents is removed from a call

(Permalink)

CallStateChanged (u: CallState, u: CallFlags, (uus): CallStateReason, a{sv}: CallStateDetails)

Parameters

  • CallState — u (Call_State)
  • CallFlags — u (Call_Flags)
  • CallStateReason — (uus)
  • CallStateDetails — a{sv}

Emitted when the state of a contact on the call changed

(Permalink)

CallMembersChanged (a{uu}: FlagsChanged, au: Removed)

Parameters

Properties

Accessed using the org.freedesktop.DBus.Properties interface.
(Permalink)

Contents — ao

Read only

The list of Content.Draft objects that are part of this call. ChangeNotification happens via the ContentAdded and ContentRemoved signals.

(Permalink)

CallStateDetails — a{sv}

Read only
(Permalink)

CallState — u (Call_State)

Read only

Current state of this call

(Permalink)

CallFlags — u (Call_Flags)

Read only

Current state of this call

(Permalink)

CallStateReason — (uus) (Call_State_Reason)

Read only

The reason the call is in the state it is in :)

(Permalink)

HardwareStreaming — b

Read only

If this property is TRUE then all the media streaming is done by a specialized component If this is FALSE then the handler should handle the media streaming at least some parts itself.

A connection-manager might be intended for a specialized hardware device, which will take care of the audio streaming. (e.g. telepathy-yafono which uses GSM hardware which does the audio actual streaming for the call)

(Permalink)

CallMembers — a{uu} (Call_Member_Map)

Read only
A mapping from the remote contacts that are part of this call to flags discribing their status.
(Permalink)

InitialTransport — s

Read only

If set on a requested channel this indicates the transport that should be used for this call.

When implementing a voip gateway one wants the outgoing leg of the gatewayed to have the same transport as the incoming leg. This property allows the gateway to request a Call with the right transport from the CM.

(Permalink)

InitialAudio — b

Read only

If set to true in a channel request that will create a new channel, the connection manager should immediately attempt to establish an audio stream to the remote contact, making it unnecessary for the client to call AddContent.

If this property, or InitialVideo, is passed to EnsureChannel (as opposed to CreateChannel), the connection manager SHOULD ignore these properties when checking whether it can return an existing channel as suitable; these properties only become significant when the connection manager has decided to create a new channel.

If true on a requested channel, this indicates that the audio stream has already been requested and the client does not need to call RequestStreams, although it MAY still do so.

If true on an unrequested (incoming) channel, this indicates that the remote contact initially requested an audio stream; this does not imply that that audio stream is still active (as indicated by Contents).

This property is immutable (cannot change), and therefore SHOULD appear wherever immutable properties are reported, e.g. NewChannels signals.

This reduces D-Bus round trips.

Connection managers capable of signalling audio calls to contacts SHOULD include a channel class in RequestableChannelClasses with ChannelType Call.Draft and TargetHandleType = Contact in the fixed properties dictionary, and InitialAudio (and also InitialVideo, if applicable) in the allowed properties list. Clients wishing to discover whether a connection manager can signal audio and/or video calls SHOULD use this information.

Not all protocols support signalling video calls, and it would be possible (although unlikely) to have a protocol where only video, and not audio, could be signalled.

Connection managers that support the ContactCapabilities interface SHOULD represent the capabilities of receiving audio and/or video calls by including a channel class in a contact's capabilities with ChannelType = CAll in the fixed properties dictionary, and InitialAudio and/or InitialVideo in the allowed properties list. Clients wishing to discover whether a particular contact is likely to be able to receive audio and/or video calls SHOULD use this information.

Not all clients support video calls, and it would also be possible (although unlikely) to have a client which could only stream video, not audio.

Clients that are willing to receive audio and/or video calls SHOULD include the following among their channel classes if calling UpdateCapabilities (clients of a ChannelDispatcher SHOULD instead arrange for the ChannelDispatcher to do this, by including the filters in their HandlerChannelFilter properties):

  • { ChannelType = Call }
  • { ChannelType = Call, InitialAudio = true } if receiving calls with audio is supported
  • { ChannelType = Call, InitialVideo = true } if receiving calls with video is supported

Connection managers for protocols with capability discovery, like XMPP, need this information to advertise the appropriate capabilities for their protocol.

(Permalink)

InitialVideo — b

Read only

The same as InitialAudio, but for a video stream. This property is immutable (cannot change).

In particular, note that if this property is false, this does not imply that an active video stream has not been added, only that no video stream was active at the time the channel appeared.

This property is the correct way to discover whether connection managers, contacts etc. support video calls; it appears in capabilities structures in the same way as InitialAudio.

(Permalink)

MutableContents — b

Read only

If True, a stream of a different content type can be added after the Channel has been requested

If this property is missing, clients SHOULD assume that it is false, and thus that the channel's streams cannot be changed once the call has started.

If this property isn't present in the "allowed" set in any of the Call entries contact capabilities, then user interfaces MAY choose to show a separate "call" option for each class of call.

For example, once an audio-only Google Talk call has started, it is not possible to add a video stream; both audio and video must be requested at the start of the call if video is desired. User interfaces may use this pseudo-capability as a hint to display separate "Audio call" and "Video call" buttons, rather than a single "Call" button with the option to add and remove video once the call has started for contacts without this flag.

This property is immutable, and therefore SHOULD be announced in NewChannels, etc.

Handler Capability Tokens

Tokens representing capabilities that a Client.Handler can have.
(Permalink)

org.freedesktop.Telepathy.Channel.Type.Call.Draft/gtalk-p2p

The client can implement streaming for streams whose NATTraversal property is gtalk-p2p.

(Permalink)

org.freedesktop.Telepathy.Channel.Type.Call.Draft/ice-udp

The client can implement streaming for streams whose NATTraversal property is ice-udp.

(Permalink)

org.freedesktop.Telepathy.Channel.Type.Call.Draft/wlm-8.5

The client can implement streaming for streams whose NATTraversal property is wlm-8.5.

(Permalink)

org.freedesktop.Telepathy.Channel.Type.Call.Draft/wlm-2009

The client can implement streaming for streams whose NATTraversal property is wlm-2009.

(Permalink)

org.freedesktop.Telepathy.Channel.Type.Call.Draft/video/h264 (etc.)

The client supports media streaming with H264 (etc.).

This handler capability token is a one of a family of similar tokens: for any other audio or video codec whose MIME type is audio/subtype or video/subtype, a handler capability token of this form may exist (the subtype MUST appear in lower case in this context). Clients MAY support more codecs than they explicitly advertise support for; clients SHOULD explicitly advertise support for their preferred codec(s), and for codecs like H264 that are, in practice, significant in codec negotiation.

For instance, the XMPP capability used by the Google Video Chat web client to determine whether a client is compatible with it requires support for H264 video, so an XMPP connection manager that supports this version of Jingle should not advertise the Google Video Chat capability unless there is at least one installed client that declares that it supports video/h264 on Call channels.

For example, a client could advertise support for Speex, Theora and H264 by having three handler capability tokens, org.freedesktop.Telepathy.Channel.Type.Call.Draft/audio/speex, org.freedesktop.Telepathy.Channel.Type.Call.Draft/video/theora and org.freedesktop.Telepathy.Channel.Type.Call.Draft/video/h264, in its Capabilities property.

Clients MAY have media signalling abilities without explicitly supporting any particular codec, and connection managers SHOULD support this usage.

This is necessary to support gatewaying between two Telepathy connections, in which case the available codecs might not be known to the gatewaying process.

Types

Enum (Permalink)

Call_State — u

  • PendingInitiator (1)
  • The initiator hasn't accepted the call yet
  • PendingReceiver (2)
  • This receiver hasn't accepted the Call yet
  • Accepted (3)
  • The contact accepted this call
  • Ended (4)
  • The call has ended
Enum (Permalink)

Call_State_Change_Reason — u

  • Unknown (0)
  • We just don't know
  • UserRequested (1)
  • Change requested by the contact
  • UserRequested (1)
  • Change requested by the contact
Flags (Permalink)

Call_Flags — u

A set of flags representing call states.
  • Ringing (1)
  • The contact has been alerted about the call but has not responded (e.g. 180 Ringing in SIP).
  • Queued (2)
  • The contact is temporarily unavailable, and the call has been placed in a queue (e.g. 182 Queued in SIP, or call-waiting in telephony).
  • Held (4)
  • The call has been put on hold.
  • Forwarded (8)
  • The initiator of the call originally called a contact other than the current recipient of the call, but the call was then forwarded or diverted.
  • In_Progress (16)
  • Progress has been made in placing the outgoing call, but the contact may not have been made aware of the call yet (so the Ringing state is not appropriate). This corresponds to SIP's status code 183 Session Progress, and could be used when the outgoing call has reached a gateway, for instance.
  • Clearing (32)
  • This flag only occurs when the CallState is Ended. The call with this flag set has ended, but not all resources corresponding to the call have been freed yet. Depending on the protocol there might be some audible feedback while the clearing flag is set.
    In calls following the ITU-T Q.931 standard there is a period of time between the call ending and the underlying channel being completely free for re-use.
Flags (Permalink)

Call_Member_Flags — u

  • Ringing (1)
  • The call member is currently ringing.
  • Held (2)
  • The call member has put the call on hold.
Mapping (Permalink)

Call_Member_Map — a{uu}

A mapping from handles to their current state in the call.
Struct (Permalink)

Call_State_Reason — (uus)