19
19
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>
21
21
<interface name="org.freedesktop.Telepathy.Channel">
23
<property name="ChannelType" type="s" tp:type="DBus_Interface"
24
access="read" tp:name-for-bindings="Channel_Type">
25
<tp:added version="0.17.7"/>
26
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
27
<p>The channel's type. This cannot change once the channel has
30
<p>For compatibility between older connection managers and newer
31
clients, if this is unavailable or is an empty string,
32
clients MUST use the result of calling
33
<tp:member-ref>GetChannelType</tp:member-ref>.</p>
36
The GetAll method lets clients retrieve all properties in one
37
round-trip, which is desirable.
40
<p>When requesting a channel, the request MUST specify a channel
41
type, and the request MUST fail if the specified channel type
42
cannot be supplied.</p>
50
<property name="Interfaces" tp:name-for-bindings="Interfaces"
51
type="as" tp:type="DBus_Interface[]" access="read">
52
<tp:added version="0.17.7"/>
53
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
54
<p>Extra interfaces provided by this channel. This SHOULD NOT include
55
the channel type and the Channel interface itself, and cannot
56
change once the channel has been created.</p>
58
<p>For compatibility between older connection managers and newer
59
clients, if this is unavailable, or if this is an empty list and
60
<tp:member-ref>ChannelType</tp:member-ref> is an empty string,
61
clients MUST use the result of calling
62
<tp:member-ref>GetInterfaces</tp:member-ref> instead. If this is an
63
empty list but ChannelType is non-empty, clients SHOULD NOT call
64
GetInterfaces; this implies that connection managers that implement
65
the ChannelType property MUST also implement the Interfaces property
69
The GetAll method lets clients retrieve all properties in one
70
round-trip, which is desirable.
73
<p>When requesting a channel with a particular value for this
74
property, the request must fail without side-effects unless the
75
connection manager expects to be able to provide a channel whose
76
interfaces include at least the interfaces requested.</p>
80
<property name="TargetHandle" type="u" access="read" tp:type="Handle"
81
tp:name-for-bindings="Target_Handle">
82
<tp:added version="0.17.7"/>
83
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
84
<p>The handle (a representation for the identifier) of the contact,
85
chatroom, etc. with which this handle communicates. Its type
86
is given by the <tp:member-ref>TargetHandleType</tp:member-ref>
89
<p>This is fixed for the lifetime of the channel, so channels which
90
could potentially be used to communicate with multiple contacts
91
(such as streamed media calls defined by their members, or ad-hoc
92
chatrooms like MSN switchboards) must have TargetHandleType set
93
to Handle_Type_None and TargetHandle set to 0.</p>
95
<p>Unlike in the telepathy-spec 0.16 API, there is no particular
96
uniqueness guarantee - there can be many channels with the same
97
(channel type, handle type, handle) tuple. This is necessary
98
to support conversation threads in XMPP and SIP, for example.</p>
100
<p>If this is present in a channel request, it must be nonzero,
101
<tp:member-ref>TargetHandleType</tp:member-ref>
102
MUST be present and not Handle_Type_None, and
103
<tp:member-ref>TargetID</tp:member-ref> MUST NOT be
106
<p>The channel that satisfies the request MUST either:</p>
109
<li>have the specified TargetHandle property; or</li>
110
<li>have <tp:member-ref>TargetHandleType</tp:member-ref> =
111
Handle_Type_None, TargetHandle = 0, and be configured such that
112
it could communicate with the specified handle in some other way
113
(e.g. have the requested contact handle in its Group
119
<property name="TargetID" tp:name-for-bindings="Target_ID"
120
type="s" access="read">
121
<tp:added version="0.17.9"/>
123
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
124
<p>The string that would result from inspecting the
125
<tp:member-ref>TargetHandle</tp:member-ref>
126
property (i.e. the identifier in the IM protocol of the contact,
127
room, etc. with which this channel communicates), or the empty
128
string if the TargetHandle is 0.</p>
131
<p>The presence of this property avoids the following race
135
<li>New channel C is signalled with target handle T</li>
136
<li>Client calls <tp:dbus-ref
137
namespace="org.freedesktop.Telepathy.Connection">InspectHandles</tp:dbus-ref>(CONTACT,
139
<li>Channel C closes, removing the last reference to handle T</li>
141
namespace="org.freedesktop.Telepathy.Connection">InspectHandles</tp:dbus-ref>(CONTACT,
142
[T]) returns an error</li>
146
<p>If this is present in a channel request,
147
<tp:member-ref>TargetHandleType</tp:member-ref>
148
MUST be present and not Handle_Type_None, and
149
<tp:member-ref>TargetHandle</tp:member-ref> MUST NOT be
150
present. The request MUST fail with error InvalidHandle, without
151
side-effects, if the requested TargetID would not be accepted by
152
<tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection">RequestHandles</tp:dbus-ref>.</p>
154
<p>The returned channel must be related to the handle corresponding
155
to the given identifier, in the same way as if TargetHandle
156
had been part of the request instead.</p>
159
<p>Requesting channels with a string identifier saves a round-trip
160
(the call to RequestHandles). It also allows the channel
161
dispatcher to accept a channel request for an account that is not
162
yet connected (and thus has no valid handles), bring the account
163
online, and pass on the same parameters to the new connection's
164
CreateChannel method.</p>
169
<property name="TargetHandleType" type="u" access="read"
170
tp:type="Handle_Type" tp:name-for-bindings="Target_Handle_Type">
171
<tp:added version="0.17.7"/>
172
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
173
<p>The type of <tp:member-ref>TargetHandle</tp:member-ref>.</p>
175
<p>If this is omitted from a channel request, connection managers
176
SHOULD treat this as equivalent to Handle_Type_None.</p>
178
<p>If this is omitted or is Handle_Type_None,
179
<tp:member-ref>TargetHandle</tp:member-ref> and
180
<tp:member-ref>TargetID</tp:member-ref> MUST be omitted from the
185
<method name="Close" tp:name-for-bindings="Close">
24
187
Request that the channel be closed. This is not the case until
25
the Closed signal has been emitted, and depending on the connection
188
the <tp:member-ref>Closed</tp:member-ref> signal has been emitted, and
189
depending on the connection
26
190
manager this may simply remove you from the channel on the server,
27
191
rather than causing it to stop existing entirely. Some channels
28
192
such as contact list channels may not be closed.
54
<method name="GetChannelType">
220
<method name="GetChannelType" tp:name-for-bindings="Get_Channel_Type">
221
<tp:deprecated version="0.17.7">Use the ChannelType
222
property if possible.</tp:deprecated>
55
223
<arg direction="out" type="s" tp:type="DBus_Interface">
56
224
<tp:docstring>The interface name</tp:docstring>
59
Returns the interface name for the type of this channel.
227
Returns the interface name for the type of this channel. Clients
228
SHOULD use the <tp:member-ref>ChannelType</tp:member-ref> property
229
instead, falling back to this method only if necessary.
232
The GetAll method lets clients retrieve all properties in one
62
<method name="GetHandle">
238
<method name="GetHandle" tp:name-for-bindings="Get_Handle">
239
<tp:deprecated version="0.17.7">Use the TargetHandleType
240
and TargetHandle properties if possible.</tp:deprecated>
63
241
<arg direction="out" type="u" tp:type="Handle_Type">
65
The handle type, or zero if this channel does not correspond to any
243
The same as TargetHandleType.
69
246
<arg direction="out" type="u" tp:type="Handle">
71
The handle, or zero if this channel does not correspond to any
248
The same as TargetHandle.
76
252
Returns the handle type and number if this channel represents a
77
253
communication with a particular contact, room or server-stored list, or
78
zero if it is transient and defined only by its contents.
254
zero if it is transient and defined only by its contents. Clients
255
SHOULD use the <tp:member-ref>TargetHandle</tp:member-ref> and
256
<tp:member-ref>TargetHandleType</tp:member-ref> properties instead,
257
falling back to this method only if necessary.
260
The GetAll method lets clients retrieve all properties in one
81
<method name="GetInterfaces">
266
<method name="GetInterfaces" tp:name-for-bindings="Get_Interfaces">
267
<tp:deprecated version="0.17.7">Use the Interfaces
268
property if possible.</tp:deprecated>
82
269
<arg direction="out" type="as" tp:type="DBus_Interface[]">
84
271
An array of the D-Bus interface names
88
275
Get the optional interfaces implemented by the channel.
276
Clients SHOULD use the <tp:member-ref>Interfaces</tp:member-ref>
277
property instead, falling back to this method only if necessary.
280
The GetAll method lets clients retrieve all properties in one
286
<property name="Requested" tp:name-for-bindings="Requested"
287
type="b" access="read">
288
<tp:added version="0.17.13">(as stable API)</tp:added>
289
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
290
<p>True if this channel was created in response to a local request,
292
<tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.RequestChannel</tp:dbus-ref>
294
<tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.Interface.Requests.CreateChannel</tp:dbus-ref>.</p>
297
<p>The idea of this property is to distinguish between "incoming"
298
and "outgoing" channels, in a way that doesn't break down when
299
considering special cases like contact lists that are automatically
300
created on connection to the server, or chatrooms that an
301
IRC proxy/bouncer like irssi-proxy or bip was already in.</p>
303
<p>The reason we want to make that distinction is that UIs for
304
things that the user explicitly requested should start up
305
automatically, whereas for incoming messages and VoIP calls we
306
should first ask the user whether they want to open the messaging
307
UI or accept the call.</p>
310
<p>If the channel was not explicitly requested (even if it was
311
created as a side-effect of a call to one of those functions,
312
e.g. because joining a Tube in a MUC context on XMPP implies
313
joining that MUC), then this property is false.</p>
315
<p>For compatibility with older connection managers, clients SHOULD
316
assume that this property is true if they see a channel announced
318
<tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.NewChannel</tp:dbus-ref>
319
signal with the suppress_handler parameter set to true.</p>
322
<p>In a correct connection manager, the only way to get such a
323
channel is to request it.</p>
326
<p>Clients MAY additionally assume that this property is false
327
if they see a channel announced by the NewChannel signal with the
328
suppress_handler parameter set to false.</p>
331
<p>This is more controversial, since it's possible to get that
332
parameter set to false by requesting a channel. However, there's
333
no good reason to do so, and we've deprecated this practice.</p>
335
<p>In the particular case of the channel dispatcher, the only
336
side-effect of wrongly thinking a channel is unrequested
337
is likely to be that the user has to confirm that they want to
338
use it, so it seems fairly harmless to assume in the channel
339
dispatcher that channels with suppress_handler false are
340
indeed unrequested.</p>
345
<property name="InitiatorHandle" type="u" tp:type="Contact_Handle"
346
access="read" tp:name-for-bindings="Initiator_Handle">
347
<tp:added version="0.17.13">(as stable API)</tp:added>
348
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
349
<p>The contact who initiated the channel. For channels requested by the
350
local user, this MUST be the value of
351
<tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.SelfHandle</tp:dbus-ref>
352
at the time the channel was created (i.e. not a channel-specific
356
<p>The careful wording about the self-handle is because the Renaming
357
interface can cause the return from Connection.GetSelfHandle to
358
change. It's something of a specification bug that we don't signal
359
this in the Connection interface yet.</p>
362
<p>For channels requested by a remote user, this MUST be their handle.
363
If unavailable or not applicable, this MUST be 0 (for instance,
364
contact lists are not really initiated by anyone in particular, and
365
it's easy to imagine a protocol where chatroom invitations can be
368
<p>For channels with the <tp:dbus-ref
369
namespace="org.freedesktop.Telepathy.Channel.Interface">Group</tp:dbus-ref>
370
interface, this SHOULD be the same
371
contact who is signalled as the "Actor" causing the self-handle
372
to be placed in the local-pending set.</p>
374
<p>This SHOULD NOT be a channel-specific handle, if possible.</p>
376
<p>It does not make sense for this property to be in channel
377
requests - the initiator will always be the local user - so it
378
MUST NOT be accepted.</p>
382
<property name="InitiatorID" type="s" access="read"
383
tp:name-for-bindings="Initiator_ID">
384
<tp:added version="0.17.13">(as stable API)</tp:added>
385
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
386
<p>The string that would result from inspecting the
387
<tp:member-ref>InitiatorHandle</tp:member-ref>
388
property (i.e. the initiator's identifier in the IM protocol).</p>
391
<p>The presence of this property avoids the following race
395
<li>New StreamedMedia channel C is signalled with initiator
397
<li>Client calls <tp:dbus-ref
398
namespace="org.freedesktop.Telepathy.Connection">InspectHandles</tp:dbus-ref>(CONTACT,
400
<li>Channel C closes, removing the last reference to handle I</li>
402
namespace="org.freedesktop.Telepathy.Connection">InspectHandles</tp:dbus-ref>(CONTACT,
403
[I]) returns an error</li>
404
<li>Client can indicate that a call was missed, but not who
409
<p>It does not make sense for this property to be in channel
410
requests - the initiator will always be the local user - so it
411
MUST NOT be accepted.</p>
91
415
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
92
416
<p>All communication in the Telepathy framework is carried out via channel
93
417
objects which are created and managed by connections. This interface must
94
418
be implemented by all channel objects, along with one single channel type,
95
such as Channel.Type.ContactList which represents a list of people (such
96
as a buddy list) or a Channel.Type.Text which represents a channel over
97
which textual messages are sent and received.</p>
420
namespace="org.freedesktop.Telepathy">Channel.Type.ContactList</tp:dbus-ref>
421
which represents a list of people (such as a buddy list) or a <tp:dbus-ref
422
namespace="org.freedesktop.Telepathy">Channel.Type.Text</tp:dbus-ref> which
423
represents a channel over which textual messages are sent and received.</p>
425
<p>Each Channel's object path MUST start with the object path of
426
its associated <tp:dbus-ref
427
namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>, followed
428
by '/'. There MAY be any number of additional object-path components,
429
which clients MUST NOT attempt to parse.</p>
432
<p>This ensures that Channel object paths are unique, even between
433
Connections and CMs, because Connection object paths are
434
guaranteed-unique via their link to the well-known bus name.</p>
436
<p>If all connection managers in use are known to comply with at least
437
spec version 0.17.10, then the Connection's object path can
438
even be determined from the Channel's without any additional
439
information, by taking the first 7 components.</p>
99
442
<p>Each channel may have an immutable handle associated with it, which
100
443
may be any handle type, such as a contact, room or list handle,
101
indicating that the channel is for communicating with that handle.
102
There can be at most one channel for each combination of
103
(channel type, handle type, handle) with nonzero handle type.</p>
105
<p>If a channel does not have a handle (an "anonymous channel"), it
444
indicating that the channel is for communicating with that handle.</p>
446
<p>If a channel does not have a handle (an "anonymous channel" with
447
Target_Handle = 0 and Target_Handle_Type = Handle_Type_None), it
106
448
means that the channel is defined by some other terms, such as it
107
449
may be a transient group defined only by its members as visible
108
through the Channel.Interface.Group interface. There can be any number
109
of anonymous channels of the same channel type.</p>
450
through the <tp:dbus-ref
451
namespace="org.freedesktop.Telepathy">Channel.Interface.Group</tp:dbus-ref>
111
454
<p>Other optional interfaces can be implemented to indicate other available
112
functionality, such as Channel.Interface.Group if the channel contains
113
a number of contacts, Channel.Interface.Password to indicate
114
that a channel may have a password set to require entry, and
115
Properties for extra data about channels which represent chat
116
rooms or voice calls. The interfaces implemented may not vary after the
117
channel's creation has been signalled to the bus (with the connection's
118
NewChannel signal).</p>
455
functionality, such as <tp:dbus-ref
456
namespace="org.freedesktop.Telepathy">Channel.Interface.Group</tp:dbus-ref>
457
if the channel contains a number of contacts, <tp:dbus-ref
458
namespace="org.freedesktop.Telepathy">Channel.Interface.Password</tp:dbus-ref>
459
to indicate that a channel may have a password set to require entry, and
461
namespace="org.freedesktop.Telepathy">Properties</tp:dbus-ref> for
462
extra data about channels which represent chat rooms or voice calls. The
463
interfaces implemented may not vary after the channel's creation has been
464
signalled to the bus (with the connection's <tp:dbus-ref
465
namespace="org.freedesktop.Telepathy.Connection">NewChannel</tp:dbus-ref>
120
468
<p>Specific connection manager implementations may implement channel types and
121
469
interfaces which are not contained within this specification in order to