This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
org.freedesktop.Telepathy.ConnectionManager
org.freedesktop.Telepathy.Connection
org.freedesktop.Telepathy.Connection.Interface.Aliasing
org.freedesktop.Telepathy.Connection.Interface.Avatars
org.freedesktop.Telepathy.Connection.Interface.Capabilities
org.freedesktop.Telepathy.Connection.Interface.Presence
org.freedesktop.Telepathy.Connection.Interface.Renaming
org.freedesktop.Telepathy.Channel
org.freedesktop.Telepathy.Channel.FUTURE
org.freedesktop.Telepathy.Channel.Type.ContactList
org.freedesktop.Telepathy.Channel.Type.StreamedMedia
org.freedesktop.Telepathy.Channel.Type.RoomList
org.freedesktop.Telepathy.Channel.Type.Text
org.freedesktop.Telepathy.Channel.Type.Tubes
org.freedesktop.Telepathy.Channel.Interface.CallMerging
org.freedesktop.Telepathy.Channel.Interface.CallState
org.freedesktop.Telepathy.Channel.Interface.ChatState
org.freedesktop.Telepathy.Channel.Interface.DeliveryReporting.DRAFT
org.freedesktop.Telepathy.Channel.Interface.DTMF
org.freedesktop.Telepathy.Channel.Interface.Group
org.freedesktop.Telepathy.Channel.Interface.Hold
org.freedesktop.Telepathy.Channel.Interface.HTML.DRAFT
org.freedesktop.Telepathy.Channel.Interface.Password
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling
org.freedesktop.Telepathy.Channel.Interface.Messages.DRAFT
org.freedesktop.Telepathy.Media.SessionHandler
org.freedesktop.Telepathy.Media.StreamHandler
org.freedesktop.Telepathy.Properties
org.freedesktop.Telepathy.AccountManager
org.freedesktop.Telepathy.Account
org.freedesktop.Telepathy.ChannelHandler
A D-Bus service which allows connections to be created. The manager processes are intended to be started by D-Bus service activation.
For service discovery, each Telepathy connection manager must have a connection manager name (see Connection_Manager_Name for syntax).
The connection manager must then provide a well-known bus name of
org.freedesktop.Telepathy.ConnectionManager.cmname
where cmname is its connection manager name. If it makes sense
to start the connection manager using D-Bus service activation, it
must register that well-known name for service activation by installing
a .service file.
Clients can list the running connection managers by calling the ListNames method on the D-Bus daemon's org.freedesktop.DBus interface and looking for names matching the above pattern; they can list the activatable connection managers by calling ListActivatableNames, and they should usually combine the two lists to get a complete list of running or activatable connection managers.
When the connection manager is running, it must have an object
implementing the ConnectionManager interface at the object path
/org/freedesktop/Telepathy/ConnectionManager/cmname
.
Connection managers' capabilities can be determined dynamically by calling their ListProtocols method, then for each protocol of interest, calling GetParameters to discover the required and optional parameters. However, since it is inefficient to activate all possible connection managers on the system just to find out what they can do, there is a standard mechanism to store static information about CMs in ".manager files".
To look up a connection manager's supported protocols, clients
should search the data directories specified by
the
freedesktop.org XDG Base Directory Specification ($XDG_DATA_HOME,
defaulting to $HOME/.local/share if unset, followed by
colon-separated paths from $XDG_DATA_DIRS, defaulting to
/usr/local/share:/usr/share if unset) for the first file named
telepathy/managers/cmname.manager
that can be
read without error. This file has the same syntax as a
freedesktop.org Desktop Entry file.
Clients must still support connection managers for which no
.manager
file can be found, which they can do by activating
the connection manager and calling its methods; the
.manager
file is merely an optimization. Connection managers
whose list of protocols can change at any time (for instance, via
a plugin architecture) should not install a .manager
file.
For each protocol name proto that would be returned by
ListProtocols, the .manager file contains a group
headed [Protocol proto]
. For each parameter
p that would be returned by GetParameters(proto), the
.manager file contains a key param-p
with a value
consisting of a D-Bus signature (a single complete type), optionally
followed by a space and a space-separated list of flags. The supported
flags are:
required
, corresponding to
Conn_Mgr_Param_Flag_Requiredregister
, corresponding
to Conn_Mgr_Param_Flag_Registersecret
, corresponding
to Conn_Mgr_Param_Flag_SecretThe group may also contain a key default-p
whose value is a string form of the default value for the parameter.
If this key exists, it sets the default, and also sets the flag
Conn_Mgr_Param_Flag_Has_Default. The default value is formatted
according to the D-Bus signature as follows:
Currently, no other D-Bus signatures are allowed to have default values,
but clients parsing the .manager file MUST ignore defaults
that they cannot parse, and treat them as if the
default-p
key was not present at all.
It is not required that a connection manager be able to support multiple protocols, or even multiple connections. When a connection is made, a service name where the connection object can be found is returned. A manager which can only make one connection may then remove itself from its well-known bus name, causing a new connection manager to be activated when somebody attempts to make a new connection.
Changed in version 0.17.2: Prior to version 0.17.2, support for CMs with no .manager file was not explicitly required.
proto
-
s
(Protocol)a(susv)
(Param_Spec[])org.freedesktop.Telepathy.Error.NotImplemented
as
(Protocol[])Request a Connection object representing a given account on a given protocol with the given parameters. The method returns the bus name and the object path where the new Connection object can be found, which should have the status of Connection_Status_Disconnected, to allow signal handlers to be attached before connecting is started with the Connect method.
In order to allow Connection objects to be discovered by new clients,
the object path and well-known bus name must be of the form
/org/freedesktop/Telepathy/Connection/cmname/proto/account
and
org.freedesktop.Telepathy.Connection.cmname.proto.account
where:
Clients MUST NOT attempt to parse the account part of the bus name. Connection managers MAY use any unique string for this part.
The parameters which must and may be provided in the parameters dictionary can be discovered with the GetParameters method. These parameters, their types, and their default values may be cached in files so that all available connection managers do not need to be started to discover which protocols are available.
To request values for these parameters from the user, a client must have prior knowledge of the meaning of the parameter names, so the following well-known names and types should be used where appropriate:
Every successful RequestConnection call will cause the emission of a NewConnection signal for the same newly created connection. The requester can use the returned object path and service name independently of the emission of that signal. In that case this signal emission is most useful for, e.g. other processes that are monitoring the creation of new connections.
proto
-
s
(Protocol)parameters
-
a{sv}
(String_Variant_Map)s
(DBus_Bus_Name)o
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotImplemented
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.InvalidArgument
bus_name
-
s
(DBus_Bus_Name)object_path
-
o
proto
-
s
(Protocol)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Changed in version 0.17.1: Prior to version 0.17.1, the allowed characters were not specified
An instant messaging protocol. It must consist only of ASCII letters, digits and hyphen/minus signs (U+002D "-"), and must start with a letter. Where possible, this SHOULD be chosen from the following well-known values:
Changed in version 0.17.1: Prior to version 0.17.1, the allowed characters were not specified
Conn_Mgr_Param_Flag_Required = 1
Conn_Mgr_Param_Flag_Register = 2
Conn_Mgr_Param_Flag_Has_Default = 4
Conn_Mgr_Param_Flag_Secret = 8
This parameter should be considered private or secret; for instance, clients should store it in a "password safe" like gnome-keyring or kwallet, omit it from debug logs, and use a text input widget that hides the value of the parameter.
(Clients that support older connection managers may also treat any parameter whose name contains "password" as though it had this flag.)
Added in version 0.17.2.
In bindings that need a separate name, arrays of Param_Spec should be called Param_Spec_List.
Name
-
s
Flags
-
u
(Conn_Mgr_Param_Flags)Signature
-
s
(DBus_Signature)Default_Value
-
v
This models a connection to a single user account on a communication service. Its basic capability is to provide the facility to request and receive channels of differing types (such as text channels or streaming media channels) which are used to carry out further communication.
As well as the methods and signatures below, arbitrary interfaces may be provided by the Connection object to represent extra connection-wide functionality, such as the Connection.Interface.Presence for receiving and reporting presence information, and Connection.Interface.Aliasing for connections where contacts may set and change an alias for themselves. These interfaces can be discovered using GetInterfaces after the connection, has been established and must not change subsequently at runtime.
Contacts, rooms, and server-stored lists (such as subscribed contacts, block lists, or allow lists) on a service are all represented by immutable handles, which are unsigned non-zero integers which are valid only for the lifetime of the connection object, and are used throughout the protocol where these entities are represented, allowing simple testing of equality within clients.
Zero as a handle value is sometimes used as a "null" value to mean the absence of a contact, room, etc.
Handles have per-type uniqueness, meaning that every (handle type, handle number) tuple is guaranteed to be unique within a connection and that a handle alone (without its type) is meaningless or ambiguous. Connection manager implementations should reference count these handles to determine if they are in use either by any active clients or any open channels, and may deallocate them when this ceases to be true. Clients may request handles of a given type and name with the RequestHandles method, inspect the entity name of handles with the InspectHandles method, keep handles from being released with HoldHandles, and notify that they are no longer storing handles with ReleaseHandles.
org.freedesktop.Telepathy.Error.NotAvailable
as
(DBus_Interface[])org.freedesktop.Telepathy.Error.Disconnected
s
(Protocol)u
(Contact_Handle)org.freedesktop.Telepathy.Error.Disconnected
u
(Connection_Status)Notify the connection manger that your client is holding a copy of handles which may not be in use in any existing channel or list, and were not obtained by using the RequestHandles method. For example, a handle observed in an emitted signal, or displayed somewhere in the UI that is not associated with a channel. The connection manager must not deallocate a handle where any clients have used this method to indicate it is in use until the ReleaseHandle method is called, or the clients disappear from the bus.
Note that HoldHandles is idempotent - calling it multiple times is equivalent to calling it once. If a handle is "referenced" by several components which share a D-Bus unique name, the client should perform reference counting internally, and only call ReleaseHandles when none of the cooperating components need the handle any longer.
handle_type
-
u
(Handle_Type)handles
-
au
(Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.InvalidHandle
handle_type
-
u
(Handle_Type)handles
-
au
(Handle[])as
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.InvalidHandle
a(osuu)
(Channel_Info[])org.freedesktop.Telepathy.Error.Disconnected
handle_type
-
u
(Handle_Type)handles
-
au
(Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.NotAvailable
Request a channel satisfying the specified type and communicating with the contact, room, list etc. indicated by the given handle_type and handle. The handle_type and handle may both be zero to request the creation of a new, empty channel, which may or may not be possible, depending on the protocol and channel type.
On success, the returned channel will always be of the requested type (i.e. implement the requested channel-type interface).
If a new, empty channel is requested, on success the returned channel will always be an "anonymous" channel for which the type and handle are both zero.
If a channel to a contact, room etc. is requested, on success, the returned channel may either be a new or existing channel to the requested entity (i.e. its GetHandle() returns the requested handle type and handle), or a newly created "anonymous" channel associated with the requested handle in some implementation-specific way.
For example, for a contact handle, the returned channel might be "anonymous", but implement the groups interface and have the requested contact already present among the members.
If the request cannot be satisfied, an error is raised and no channel is created.
type
-
s
(DBus_Interface)handle_type
-
u
(Handle_Type)handle
-
u
(Handle)suppress_handler
-
b
o
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotImplemented
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.Channel.Banned
org.freedesktop.Telepathy.Error.Channel.Full
org.freedesktop.Telepathy.Error.Channel.InviteOnly
handle_type
-
u
(Handle_Type)names
-
as
au
(Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
object_path
-
o
channel_type
-
s
(DBus_Interface)handle_type
-
u
(Handle_Type)handle
-
u
(Handle)suppress_handler
-
b
If true, the channel was requested by a client that intends to present it to the user itself (i.e. it passed suppress_handler=TRUE to the RequestChannel method), so no other handler should be launched.
If false, either the channel was created due to incoming information from the service, or the channel was requested by a local client that does not intend to handle the channel itself (a typical use-case is an address-book viewer that does not itself implement chat or VoIP functionality, starting a channel that will be handled by the same user interface that would handle incoming channels).
Clients MUST NOT assume that only incoming channels will have this flag set to false.
status
-
u
(Connection_Status)reason
-
u
(Connection_Status_Reason)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Handle_Type_None = 0
Handle_Type_Contact = 1
Handle_Type_Room = 2
Handle_Type_List = 3
Handle_Type_Group = 4
Connection_Status_Connected = 0
Connection_Status_Connecting = 1
Connection_Status_Disconnected = 2
Connection_Status_Reason_None_Specified = 0
Connection_Status_Reason_Requested = 1
Connection_Status_Reason_Network_Error = 2
Connection_Status_Reason_Authentication_Failed = 3
Connection_Status_Reason_Encryption_Error = 4
Connection_Status_Reason_Name_In_Use = 5
Connection_Status_Reason_Cert_Not_Provided = 6
Connection_Status_Reason_Cert_Untrusted = 7
Connection_Status_Reason_Cert_Expired = 8
Connection_Status_Reason_Cert_Not_Activated = 9
Connection_Status_Reason_Cert_Hostname_Mismatch = 10
Connection_Status_Reason_Cert_Fingerprint_Mismatch = 11
Connection_Status_Reason_Cert_Self_Signed = 12
Connection_Status_Reason_Cert_Other_Error = 13
In bindings that need a separate name, arrays of Channel_Info should be called Channel_Info_List.
Channel
-
o
Channel_Type
-
s
(DBus_Interface)Handle_Type
-
u
(Handle_Type)Handle
-
u
(Handle)Implementations of this interface must also implement:
An interface on connections to support protocols where contacts have an alias which they can change at will. Provides a method for the user to set their own alias, and a signal which should be emitted when a contact's alias is changed or first discovered.
On connections where the user is allowed to set aliases for contacts and store them on the server, the GetAliasFlags method will have the CONNECTION_ALIAS_FLAG_USER_SET flag set, and the SetAliases method may be called on contact handles other than the user themselves.
Aliases are intended to be used as the main displayed name for the contact, where available.
u
(Connection_Alias_Flags)org.freedesktop.Telepathy.Error.Disconnected
contacts
-
au
(Contact_Handle[])as
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.InvalidHandle
aliases
-
a{us}
(Alias_Map)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.PermissionDenied
aliases
-
a(us)
(Alias_Pair[])Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Connection_Alias_Flag_User_Set = 1
The aliases of contacts on this connection may be changed by the user of the service, not just by the contacts themselves. This is the case on Jabber, for instance.
It is possible that aliases can be changed by the contacts too - which alias takes precedence is not defined by this specification, and depends on the server and/or connection manager implementation.
This flag only applies to the aliases of "globally valid" contact handles. At this time, clients should not expect to be able to change the aliases corresponding to any channel-specific handles. If this becomes possible in future, a new flag will be defined.
In bindings that need a separate name, arrays of Alias_Pair should be called Alias_Pair_List.
Handle
-
u
(Contact_Handle)Alias
-
s
Handle
-
u
(Contact_Handle)Alias
-
s
Implementations of this interface must also implement:
An interface for requesting avatars for contacts on a given connection, receiving notification when avatars are changed, and publishing your own avatar.
Avatars are identified by a unique (per contact) token which represents a hash or timestamp (depending on the protocol) of the contacts' avatar data. An empty token means that an avatar has not been set for this contact, and a changed token implies the contact's avatar has changed, but the strings should otherwise be considered opaque by clients.
A client should use GetKnownAvatarTokens to request the tokens for the avatars of all the contacts it is interested in when it connects. The avatars can then be requested using RequestAvatars for the contacts. Clients should bind to the AvatarChanged signal and request a new copy of the avatar when a contacts' avatar token changes. Clients should cache the token and data of each contact's avatar between connections, to avoid repeatedly retrieving the same avatar.
To publish an avatar, a client should use SetAvatar to provide an image which meets the requirements returned by the GetAvatarRequirements function. On some protocols the avatar is stored on the server, so setting the avatar is persistent, but on others it is transferred via a peer to peer mechanism, so needs to be set every connection. Hence, on every connection, clients should inspect the avatar token of the connection's self handle, and set the avatar if it is an empty string (and may optionally replace it if the token corresponds to a different avatar).
To remove the published avatar on protocols which have persistent avatars, a client should use the ClearAvatar method. This method can safely be used even if there is no avatar for this connection.
as
q
q
q
q
u
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NotAvailable
contacts
-
au
(Contact_Handle[])as
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NotAvailable
contacts
-
au
(Contact_Handle[])a{us}
(Avatar_Token_Map)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NotAvailable
contact
-
u
(Contact_Handle)ay
s
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NotAvailable
contacts
-
au
(Contact_Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidHandle
avatar
-
ay
mime_type
-
s
s
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NotAvailable
Added in version 0.15.0.
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
contact
-
u
(Contact_Handle)new_avatar_token
-
s
contact
-
u
(Contact_Handle)token
-
s
avatar
-
ay
type
-
s
Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Handle
-
u
(Contact_Handle)Token
-
s
Implementations of this interface must also implement:
An interface for connections where it is possible to know what channel types may be requested before the request is made to the connection object. Each capability represents a commitment by the connection manager that it will ordinarily be able to create a channel when given a request with the given type and handle.
Capabilities can pertain to a certain contact handle, representing activities such as having a text chat or a voice call with the user, or can be on the connection itself (where the handle will be zero), where they represent the ability to create channels for chat rooms or activities such as searching and room listing. The activities are represented by the D-Bus interface name of the channel type for that activity.
The generic capability flags are defined by Connection_Capability_Flags.
In addition, channel types may have type specific capability flags of their own, which are described in the documentation for each channel type.
This interface also provides for user interfaces notifying the connection manager of what capabilities to advertise for the user. This is done by using the AdvertiseCapabilities method, and deals with the interface names of channel types and the type specific flags pertaining to them which are implemented by available client processes.
Used by user interfaces to indicate which channel types they are able to handle on this connection. Because these may be provided by different client processes, this method accepts channel types to add and remove from the set already advertised on this connection. The type of advertised capabilities (create versus invite) is protocol-dependent and hence cannot be set by the this method. In the case of a client adding an already advertised channel type but with new channel type specific flags, the connection manager should simply add the new flags to the set of advertised capabilities.
Upon a successful invocation of this method, the CapabilitiesChanged signal will be emitted for the user's own handle (as returned by GetSelfHandle) the by the connection manager to indicate the changes that have been made. This signal should also be monitored to ensure that the set is kept accurate - for example, a client may remove capabilities or type specific capability flags when it exits which are still provided by another client.
add
-
a(su)
(Capability_Pair[])remove
-
as
(DBus_Interface[])a(su)
(Capability_Pair[])org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.Disconnected
handles
-
au
(Contact_Handle[])a(usuu)
(Contact_Capability[])org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.PermissionDenied
caps
-
a(usuuuu)
(Capability_Change[])Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Connection_Capability_Flag_Create = 1
Connection_Capability_Flag_Invite = 2
In bindings that need a separate name, arrays of Capability_Pair should be called Capability_Pair_List.
Channel_Type
-
s
(DBus_Interface)Type_Specific_Flags
-
u
In bindings that need a separate name, arrays of Contact_Capability should be called Contact_Capability_List.
Handle
-
u
(Contact_Handle)Channel_Type
-
s
(DBus_Interface)Generic_Flags
-
u
(Connection_Capability_Flags)Type_Specific_Flags
-
u
In bindings that need a separate name, arrays of Capability_Change should be called Capability_Change_List.
Handle
-
u
(Contact_Handle)Channel_Type
-
s
(DBus_Interface)Old_Generic_Flags
-
u
(Connection_Capability_Flags)New_Generic_Flags
-
u
(Connection_Capability_Flags)Old_Type_Specific_Flags
-
u
New_Type_Specific_Flags
-
u
Implementations of this interface must also implement:
This interface is for services which have a concept of presence which can be published for yourself and monitored on your contacts. Telepathy's definition of presence is based on that used by the Galago project (see http://www.galago-project.org/).
Presence on an individual (yourself or one of your contacts) is modelled as a last activity time along with a set of zero or more statuses, each of which may have arbitrary key/value parameters. Valid statuses are defined per connection, and a list of them can be obtained with the GetStatuses method.
Each status has an arbitrary string identifier which should have an agreed meaning between the connection manager and any client which is expected to make use of it. The following well-known values (in common with those in Galago) should be used where possible to allow clients to identify common choices:
As well as these well-known status identifiers, every status also has a numerical type value chosen from ConnectionPresenceType which can be used by the client to classify even unknown statuses into different fundamental types.
These numerical types exist so that even if a client does not understand the string identifier being used, and hence cannot present the presence to the user to set on themselves, it may display an approximation of the presence if it is set on a contact.
The dictionary of variant types allows the connection manager to exchange further protocol-specific information with the client. It is recommended that the string (s) argument 'message' be interpreted as an optional message which can be associated with a presence status.
If the connection has a 'subscribe' contact list, PresenceUpdate signals should be emitted to indicate changes of contacts on this list, and should also be emitted for changes in your own presence. Depending on the protocol, the signal may also be emitted for others such as people with whom you are communicating, and any user interface should be updated accordingly.
On some protocols, RequestPresence may only succeed on contacts on your 'subscribe' list, and other contacts will cause a PermissionDenied error. On protocols where there is no 'subscribe' list, and RequestPresence succeeds, a client may poll the server intermittently to update any display of presence information.
status
-
s
parms
-
a{sv}
(String_Variant_Map)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.PermissionDenied
contacts
-
au
(Contact_Handle[])presence
-
a{u(ua{sa{sv}})}
(Contact_Presences)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.NotAvailable
a{s(ubba{ss})}
(Status_Spec_Map)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
status
-
s
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.InvalidArgument
contacts
-
au
(Contact_Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NotAvailable
time
-
u
(Unix_Timestamp)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotImplemented
statuses
-
a{sa{sv}}
(Multiple_Status_Map)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.PermissionDenied
presence
-
a{u(ua{sa{sv}})}
(Contact_Presences)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Connection_Presence_Type_Unset = 0
Connection_Presence_Type_Offline = 1
Connection_Presence_Type_Available = 2
Connection_Presence_Type_Away = 3
Connection_Presence_Type_Extended_Away = 4
Connection_Presence_Type_Hidden = 5
Connection_Presence_Type_Busy = 6
Added in version 0.17.0.
Arrays of Last_Activity_And_Statuses don't generally make sense.
Last_Activity
-
u
(Unix_Timestamp)Statuses
-
a{sa{sv}}
(Multiple_Status_Map)Arrays of Status_Spec don't generally make sense.
Type
-
u
(Connection_Presence_Type)May_Set_On_Self
-
b
Exclusive
-
b
Parameter_Types
-
a{ss}
(String_String_Map)Status
-
s
Parameters
-
a{sv}
(String_Variant_Map)Contact
-
u
(Contact_Handle)Presence
-
(ua{sa{sv}})
(Last_Activity_And_Statuses)Identifier
-
s
Spec
-
(ubba{ss})
(Status_Spec)This interface is not well-tested and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.
Implementations of this interface must also implement:
An interface on connections to support protocols where the unique identifiers of contacts can change. Because handles are immutable, this is represented by a pair of handles, that representing the old name, and that representing the new one.Request that the user's own identifier is changed on the server. If successful, a Renamed signal will be emitted for the current "self handle" as returned by GetSelfHandle.
It is protocol-dependent how the identifier that's actually used will be derived from the supplied identifier; some sort of normalization might take place.
name
-
s
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.PermissionDenied
Emitted when the unique identifier of a contact on the server changes.
Any channels associated with the contact's original handle will continue to be to that handle, and so are no longer useful (unless the contact renames back, or another contact connects with that unique ID). Clients may open a similar channel associated with the new handle to continue communicating with the contact.
For example, if a GUI client associates text channels with chat windows, it should detach the old channel from the chat window, closing it, and associate a channel to the new handle with the same window.
If the contact's old handle is in any of the member lists of a channel which has the groups interface, it will be removed from the channel and the new handle will be added. The resulting MembersChanged signal must be emitted after the Renamed signal; the reason should be RENAMED.
The handles may be either general-purpose or channel-specific. If the original handle is general-purpose, the new handle must be general-purpose; if the original handle is channel-specific, the new handle must be channel-specific in the same channel.
original
-
u
(Contact_Handle)new
-
u
(Contact_Handle)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
All communication in the Telepathy framework is carried out via channel objects which are created and managed by connections. This interface must be implemented by all channel objects, along with one single channel type, such as Channel.Type.ContactList which represents a list of people (such as a buddy list) or a Channel.Type.Text which represents a channel over which textual messages are sent and received.
Each channel may have an immutable handle associated with it, which may be any handle type, such as a contact, room or list handle, indicating that the channel is for communicating with that handle.
If a channel does not have a handle (an "anonymous channel" with Target_Handle = 0 and Target_Handle_Type = Handle_Type_None), it means that the channel is defined by some other terms, such as it may be a transient group defined only by its members as visible through the Channel.Interface.Group interface.
Other optional interfaces can be implemented to indicate other available functionality, such as Channel.Interface.Group if the channel contains a number of contacts, Channel.Interface.Password to indicate that a channel may have a password set to require entry, and Properties for extra data about channels which represent chat rooms or voice calls. The interfaces implemented may not vary after the channel's creation has been signalled to the bus (with the connection's NewChannel signal).
Specific connection manager implementations may implement channel types and interfaces which are not contained within this specification in order to support further functionality. To aid interoperability between client and connection manager implementations, the interfaces specified here should be used wherever applicable, and new interfaces made protocol-independent wherever possible. Because of the potential for 3rd party interfaces adding methods or signals with conflicting names, the D-Bus interface names should always be used to invoke methods and bind signals.
Changed in version 0.17.7: Previously we guaranteed that, for any handle type other than Handle_Type_None, and for any channel type and any handle, there would be no more than one channel with that combination of channel type, handle type and handle. This guarantee has now been removed in order to accommodate features like message threads.
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotImplemented
org.freedesktop.Telepathy.Error.NotAvailable
Deprecated since version 0.17.7. Use the ChannelType property if possible.
s
(DBus_Interface)Deprecated since version 0.17.7. Use the TargetHandleType and TargetHandle properties if possible.
u
(Handle_Type)u
(Handle)Deprecated since version 0.17.7. Use the Interfaces property if possible.
as
(DBus_Interface[])Interface has no Telepathy properties.
Accessed using the org.freedesktop.DBus.Properties interface.
ChannelType
- s
(DBus_Interface), read-onlyThe channel's type. This cannot change once the channel has been created.
For compatibility between older connection managers and newer clients, if this is unavailable or is an empty string, clients MUST use the result of calling GetChannelType.
Added in version 0.17.7.
Interfaces
- as
(DBus_Interface[]), read-onlyExtra interfaces provided by this channel. This SHOULD NOT include the channel type and the Channel interface itself, and cannot change once the channel has been created.
For compatibility between older connection managers and newer clients, if this is unavailable, or if this is an empty list and ChannelType is an empty string, clients MUST use the result of calling GetInterfaces instead. If this is an empty list but ChannelType is non-empty, clients SHOULD NOT call GetInterfaces; this implies that connection managers that implement the ChannelType property MUST also implement the Interfaces property correctly.
Added in version 0.17.7.
TargetHandle
- u
(Handle), read-onlyThe handle (a representation for the identifier) of the contact, chatroom, etc. with which this handle communicates. Its type is given by the TargetHandleType property.
This is fixed for the lifetime of the channel, so channels which could potentially be used to communicate with multiple contacts (such as streamed media calls defined by their members, or ad-hoc chatrooms like MSN switchboards) must have TargetHandleType set to Handle_Type_None and TargetHandle set to 0.
Unlike in the telepathy-spec 0.16 API, there is no particular uniqueness guarantee - there can be many channels with the same (channel type, handle type, handle) tuple. This is necessary to support conversation threads in XMPP and SIP, for example.
Added in version 0.17.7.
TargetHandleType
- u
(Handle_Type), read-onlyAdded in version 0.17.7.
This interface is a staging area for future Channel functionality and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.
This interface contains functionality which we intend to incorporate into the Channel interface in future. It should be considered to be conceptually part of the core Channel interface, but without API or ABI guarantees.
If we add new functionality to the Channel interface, libraries that use generated code (notably telepathy-glib) will have it as part of their ABI forever, meaning we can't make incompatible changes. By using this interface as a staging area for future Channel functionality, we can try out new properties, signals and methods as application-specific extensions, then merge them into the core Channel interface when we have enough implementation experience to declare them to be stable.
The name is by analogy to Python's __future__
pseudo-module.
Interface has no methods.
Interface has no signals.
Interface has no Telepathy properties.
Accessed using the org.freedesktop.DBus.Properties interface.
TargetID
- s
, read-onlyAdded in version 0.17.7. (in Channel.FUTURE pseudo-interface)
InitiatorHandle
- u
(Contact_Handle), read-onlyThe contact who initiated the channel. For channels requested by the local user, this MUST be the same thing as would be returned by Connection.GetSelfHandle() at the time the channel was created.
The careful wording about the self-handle is because the Renaming interface can cause the return from Connection.GetSelfHandle to change. It's something of a specification bug that we don't signal this in the Connection interface yet.
For channels requested by a remote user, this MUST be their handle. If unavailable or not applicable, this MUST be 0 (for instance, contact lists are not really initiated by anyone in particular, and it's easy to imagine a protocol where chatroom invitations can be anonymous).
For channels with the Group interface, this SHOULD be the same contact who is signalled as the "Actor" causing the self-handle to be placed in the local-pending set.
This SHOULD NOT be a channel-specific handle, if possible.
It does not make sense for this property to be passed to the RequestChannels method on Channel.Interface.Requests.
Added in version 0.17.7. (in Channel.FUTURE pseudo-interface)
InitiatorID
- s
, read-onlyThe string that would result from inspecting the InitiatorHandle property (i.e. the initiator's identifier in the IM protocol).
The presence of this property avoids the following race condition:
It does not make sense for this property to be passed to the RequestChannels method on Channel.Interface.Requests.
Added in version 0.17.7. (in Channel.FUTURE pseudo-interface)
Implementations of this interface must also implement:
A channel type for representing a list of people on the server which is not used for communication. This is intended for use with the interface Channel.Interface.Group for managing buddy lists and privacy lists on the server. This channel type has no methods because all of the functionality it represents is available via the group interface.
There are currently two types of contact list: HANDLE_TYPE_LIST is a "magic" server-defined list, and HANDLE_TYPE_GROUP is a user-defined contact group.
For server-defined lists like the subscribe list, singleton instances of this channel type should be created by the connection manager at connection time if the list exists on the server, or may be requested by using the appropriate handle. These handles can be obtained using RequestHandles with a handle type of HANDLE_TYPE_LIST and one of the following identifiers:
These contact list channels may not be closed.
For user-defined contact groups, instances of this channel type should be created by the connection manager at connection time for each group that exists on the server. New, empty groups can be created by calling RequestHandles with a handle type of HANDLE_TYPE_GROUP and with the name set to the human-readable UTF-8 name of the group.
User-defined groups may be deleted by closing the channel, but only if the group is already empty. Closing a channel to a non-empty group is not allowed; its members must be set to the empty set first.
On some protocols (e.g. XMPP) empty groups are not represented on the server, so disconnecting from the server and reconnecting might cause empty groups to vanish.
Interface has no methods.
Interface has no signals.
Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Implementations of this interface must also implement:
A channel that can send and receive streamed media such as audio or video. Provides a number of methods for listing and requesting new streams, and signals to indicate when streams have been added, removed and changed status.
Channels of this type are expected to provide the Group interface and be "anonymous" (have no associated handle). To make a media call to a contact, clients should request a new, empty streamed media channel, then call AddMembers to add the contact to the channel. The local user should be in the group's members, while the contact should be absent from the channel until a call is made, appear in "remote pending" from when the call is attempted until the call is accepted, then move to the group's members.
Similarly, incoming calls should be signalled as having handle type 0 and handle 0. The remote contact should be in the group's members, with the local user in the "local pending" members; to accept the call, AddMembers can be used to move the local user to the group's members.
In general this should be used in conjunction with the MediaSignalling interface to exchange connection candidates and codec choices with whichever component is responsible for the streams. However, in certain applications where no candidate exchange is necessary (eg the streams are handled by specialised hardware which is controlled directly by the connection manager), the signalling interface can be omitted and this channel type used simply to control the streams.
a(uuuuuu)
(Media_Stream_Info[])streams
-
au
(Stream_ID[])org.freedesktop.Telepathy.Error.InvalidArgument
Request a change in the direction of an existing stream. In particular, this might be useful to stop sending media of a particular type, or inform the peer that you are no longer using media that is being sent to you.
Depending on the protocol, streams which are no longer sending in either direction should be removed and a StreamRemoved signal emitted. Some direction changes can be enforced locally (for example, BIDIRECTIONAL -> RECEIVE can be achieved by merely stopping sending), others may not be possible on some protocols, and some need agreement from the remote end. In this case, the MEDIA_STREAM_PENDING_REMOTE_SEND flag will be set in the StreamDirectionChanged signal, and the signal emitted again without the flag to indicate the resulting direction when the remote end has accepted or rejected the change.
stream_id
-
u
stream_direction
-
u
(Media_Stream_Direction)org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
Request that streams be established to exchange the given types of media with the given member. In general this will try and establish a bidirectional stream, but on some protocols it may not be possible to indicate to the peer that you would like to receive media, so a send-only stream will be created initially. In the cases where the stream requires remote agreement (eg you wish to receive media from them), the StreamDirectionChanged signal will be emitted with the MEDIA_STREAM_PENDING_REMOTE_SEND flag set, and the signal emitted again with the flag cleared when the remote end has replied.
Changed in version 0.17.2: It is valid to use a handle which is neither a current nor pending member in this channel's Group interface. If so, that handle will be added to the remote-pending set only when an attempt has actually been made to contact them. For further call-state notification, use the CallState interface, if supported. This usage was not allowed in spec versions below 0.17.2.
contact_handle
-
u
(Contact_Handle)types
-
au
(Media_Stream_Type[])a(uuuuuu)
(Media_Stream_Info[])org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
stream_id
-
u
contact_handle
-
u
(Contact_Handle)stream_type
-
u
(Media_Stream_Type)stream_id
-
u
stream_direction
-
u
(Media_Stream_Direction)pending_flags
-
u
(Media_Stream_Pending_Send)stream_id
-
u
errno
-
u
message
-
s
stream_id
-
u
stream_id
-
u
stream_state
-
u
(Media_Stream_State)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Media_Stream_Type_Audio = 0
Media_Stream_Type_Video = 1
Media_Stream_State_Disconnected = 0
Media_Stream_State_Connecting = 1
Media_Stream_State_Connected = 2
Media_Stream_Direction_None = 0
Media_Stream_Direction_Send = 1
Media_Stream_Direction_Receive = 2
Media_Stream_Direction_Bidirectional = 3
Media_Stream_Pending_Local_Send = 1
Media_Stream_Pending_Remote_Send = 2
Channel_Media_Capability_Audio = 1
Channel_Media_Capability_Video = 2
Channel_Media_Capability_NAT_Traversal_STUN = 4
Channel_Media_Capability_NAT_Traversal_GTalk_P2P = 8
In bindings that need a separate name, arrays of Media_Stream_Info should be called Media_Stream_Info_List.
Identifier
-
u
(Stream_ID)Contact
-
u
(Contact_Handle)Type
-
u
(Media_Stream_Type)State
-
u
(Media_Stream_State)Direction
-
u
(Media_Stream_Direction)Pending_Send_Flags
-
u
(Media_Stream_Pending_Send)Implementations of this interface must also implement:
A channel type for listing named channels available on the server. Once the ListRooms method is called, it emits signals for rooms present on the server, until you Close this channel. In some cases, it may not be possible to stop the deluge of information from the server. This channel should be closed when the room information is no longer being displayed, so that the room handles can be freed.
This channel type may be implemented as a singleton on some protocols, so clients should be prepared for the eventuality that they are given a channel that is already in the middle of listing channels. The ListingRooms signal, or GetListingRooms method, can be used to check this.
b
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.PermissionDenied
Emitted when information about rooms on the server becomes available. The array contains the room handle (as can be passed to the RequestChannel method with HANDLE_TYPE_ROOM), the channel type, and a dictionary containing further information about the room as available. The following well-known keys and types are recommended for use where appropriate:
rooms
-
a(usa{sv})
(Room_Info[])listing
-
b
Interface has no Telepathy properties.
Accessed using the org.freedesktop.DBus.Properties interface.
Server
- s
, read-onlyIn bindings that need a separate name, arrays of Room_Info should be called Room_Info_List.
Handle
-
u
(Room_Handle)Channel_Type
-
s
(DBus_Interface)Info
-
a{sv}
(String_Variant_Map)Implementations of this interface must also implement:
A channel type for sending and receiving messages in plain text, with no formatting. In future specifications, channels for sending and receiving messages that can be reduced to plain text (i.e. formatted text) should also have this type.
When a message is received, an identifier is assigned and a Received signal emitted, and the message placed in a pending queue which can be inspected with ListPendingMessages. A client which has handled the message by showing it to the user (or equivalent) should acknowledge the receipt using the AcknowledgePendingMessage method, and the message will then be removed from the pending queue. Numeric identifiers for received messages may be reused over the lifetime of the channel.
Each message has an associated 'type' value, which should be one of the values allowed by ChannelTextMessageType.
Each message also has a flags value, which is a bitwise OR of the flags given in ChannelTextMessageFlags.
Sending messages can be requested using the Send method, which will return successfully and emit the Sent signal when the message has been delivered to the server, or return an error with no signal emission if there is a failure. If a message is sent but delivery of the message later fails, this is indicated with the SendError signal.
On protocols where additional contacts cannot be invited into a one-to-one chat, or where a one-to-one chat is just a series of individual personal messages rather than being represented by some object on the server (i.e. most protocols), one-to-one chats should be represented by a Text channel with handle type CONTACT.
Named chat rooms whose identity can be saved and used again later (IRC channels, Jabber MUCs) are expected to be represented by Text channels with handle type ROOM and the Group interface; they should usually also have the Properties interface.
Unnamed, transient chat rooms defined only by their members (e.g. on MSN) are expected to be represented by Text channels with handle type 0, handle 0, the Group interface, and optionally the Properties interface.
On protocols where a conversation with a user is actually just a nameless chat room starting with exactly two members, to which more members can be invited, calling RequestChannel with type Text and handle type CONTACT should continue to succeed, but may return a channel with handle type 0, handle 0, the group interface, and the local and remote contacts in its members.
ids
-
au
(Message_ID[])org.freedesktop.Telepathy.Error.InvalidArgument
au
(Channel_Text_Message_Type[])clear
-
b
a(uuuuus)
(Pending_Text_Message[])type
-
u
(Channel_Text_Message_Type)text
-
s
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.PermissionDenied
id
-
u
timestamp
-
u
(Unix_Timestamp)sender
-
u
(Contact_Handle)type
-
u
(Channel_Text_Message_Type)flags
-
u
(Channel_Text_Message_Flags)text
-
s
Signals that an outgoing message has failed to send. The error will be one of the values from ChannelTextSendError.
This signal should only be emitted for messages for which Sent has already been emitted and Send has already returned success.
Changed in version 0.17.3: older spec versions claimed that SendError was emitted instead of Sent, rather than in addition to Sent. However, the 0.17.3+ semantics were what we'd always actually implemented.
error
-
u
(Channel_Text_Send_Error)timestamp
-
u
(Unix_Timestamp)type
-
u
(Channel_Text_Message_Type)text
-
s
timestamp
-
u
(Unix_Timestamp)type
-
u
(Channel_Text_Message_Type)text
-
s
Accessed using the Telepathy Properties interface.
anonymous
-
b
invite-only
-
b
limit
-
u
limited
-
b
moderated
-
b
name
-
s
description
-
s
password
-
s
password-required
-
b
persistent
-
b
private
-
b
subject
-
s
subject-contact
-
u
subject-timestamp
-
u
Interface has no D-Bus core properties.
Channel_Text_Send_Error_Unknown = 0
Channel_Text_Send_Error_Offline = 1
Channel_Text_Send_Error_Invalid_Contact = 2
Channel_Text_Send_Error_Permission_Denied = 3
Channel_Text_Send_Error_Too_Long = 4
Channel_Text_Send_Error_Not_Implemented = 5
Channel_Text_Message_Type_Normal = 0
Channel_Text_Message_Type_Action = 1
Channel_Text_Message_Type_Notice = 2
Channel_Text_Message_Type_Auto_Reply = 3
Channel_Text_Message_Type_Delivery_Report = 4
Channel_Text_Message_Flag_Truncated = 1
Channel_Text_Message_Flag_Non_Text_Content = 2
The incoming message contained non-text content which cannot be represented by this interface, but has been signalled in the Messages interface.
Connection managers SHOULD only set this flag if the non-text content appears to be relatively significant (exactly how significant is up to the implementor). The intention is that if this flag is set, clients using this interface SHOULD inform the user that part of the message was not understood.
In bindings that need a separate name, arrays of Pending_Text_Message should be called Pending_Text_Message_List.
Identifier
-
u
(Message_ID)Unix_Timestamp
-
u
(Unix_Timestamp)Sender
-
u
(Contact_Handle)Message_Type
-
u
(Channel_Text_Message_Type)Flags
-
u
(Channel_Text_Message_Flags)Text
-
s
Implementations of this interface must also implement:
A "tube" is a mechanism for arbitrary data transfer. Two types of data transfer are currently specified: D-Bus messages, and streams of bytes. Each tube has a service name, which is a string specifying the kind of communication that takes place over it, and a dictionary of arbitrary parameters. Tube parameters are commonly used for bootstrap information such as usernames and passwords. Each tube is identified by a locally unique identifier.
The Tubes channel type may be requested for handles of type HANDLE_TYPE_CONTACT and HANDLE_TYPE_ROOM.
Stream tubes specify listening addresses using pairs of parameters with signature 'u', 'v', where the integer 'u' is a member of Socket_Address_Type and the v is dependent on the type of address.
a{uau}
(Supported_Socket_Map)A mapping from address types (members of Socket_Address_Type) to arrays of access-control type (members of Socket_Access_Control) that the connection manager supports for stream tubes with that address type. For simplicity, if a CM supports offering a particular type of tube, it is assumed to support accepting it.
A typical value for a host without IPv6 support:
{ Socket_Address_Type_IPv4: [Socket_Access_Control_Localhost, Socket_Access_Control_Port, Socket_Access_Control_Netmask], Socket_Address_Type_Unix: [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials] }
If stream tubes are not supported, this will be an empty dictionary.
au
(Tube_Type[])a(uuusa{sv}u)
(Tube_Info[])service
-
s
parameters
-
a{sv}
(String_Variant_Map)u
(Tube_ID)org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.NotImplemented
service
-
s
parameters
-
a{sv}
(String_Variant_Map)A dictionary of properties for the new tube; the allowable keys, types and values are defined by the service. Connection managers must support the value being any primitive (non-container) D-Bus type, or a byte array 'ay'.
These should usually be the same key-value pairs specified for use in the DNS-SD TXT record for that service.
address_type
-
u
(Socket_Address_Type)address
-
v
access_control
-
u
(Socket_Access_Control)access_control_param
-
v
u
(Tube_ID)org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.NotImplemented
id
-
u
(Tube_ID)address
-
s
org.freedesktop.Telepathy.Error.InvalidArgument
id
-
u
(Tube_ID)address_type
-
u
(Socket_Address_Type)access_control
-
u
(Socket_Access_Control)access_control_param
-
v
address
-
v
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotImplemented
id
-
u
(Tube_ID)org.freedesktop.Telepathy.Error.InvalidArgument
id
-
u
(Tube_ID)s
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
id
-
u
(Tube_ID)a(us)
(DBus_Tube_Member[])org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
id
-
u
(Tube_ID)address_type
-
u
(Socket_Address_Type)address
-
v
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
id
-
u
(Tube_ID)initiator
-
u
(Contact_Handle)type
-
u
(Tube_Type)service
-
s
parameters
-
a{sv}
(String_Variant_Map)state
-
u
(Tube_State)id
-
u
(Tube_ID)state
-
u
(Tube_State)id
-
u
(Tube_ID)id
-
u
(Tube_ID)added
-
a(us)
(DBus_Tube_Member[])removed
-
au
(Contact_Handle[])id
-
u
(Tube_ID)handle
-
u
(Contact_Handle)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Tube_Type_DBus = 0
An ordered reliable transport, for transporting D-Bus traffic.
For each D-Bus tube, the connection manager listens on a D-Bus server address, as detailed in the D-Bus specification. On this address, it emulates a bus upon which each tube participant appears as an endpoint.
The objects and interfaces which are expected to exist on the emulated bus depend on the well-known name; typically, either the participant who initiated the tube is expected to export the same objects/interfaces that would be exported by a service of that name on a bus, or all participants are expected to export those objects/interfaces.
In a multi-user context (Handle_Type_Room) the tube behaves like the D-Bus bus daemon, so participants can send each other private messages, or can send broadcast messages which are received by everyone in the tube (including themselves). Each participant has a D-Bus unique name; connection managers must prevent participants from sending messages with the wrong sender unique name, and should attempt to avoid participants receiving messages not intended for them.
In a 1-1 context (Handle_Type_Contact) the tube behaves like a peer-to-peer D-Bus connection - arbitrary D-Bus messages with any sender and/or destination can be sent by each participant, and each participant receives all messages sent by the other participant.
Tube_Type_Stream = 1
A transport for ordered, reliable data transfer, similar to SOCK_STREAM sockets.
When accepting a Stream Unix tube, a new listening local socket is created. Each time the client connects to this socket, the connection manager of the initiator of the tube opens a new connection to its local socket. Both sides can then use this pair of sockets to communicate together.
Tube_State_Local_Pending = 0
Tube_State_Remote_Pending = 1
Tube_State_Open = 2
Socket_Address_Type_Unix = 0
Socket_Address_Type_Abstract_Unix = 1
Socket_Address_Type_IPv4 = 2
Socket_Address_Type_IPv6 = 3
Socket_Access_Control_Localhost = 0
Socket_Access_Control_Port = 1
Socket_Access_Control_Netmask = 2
Socket_Access_Control_Credentials = 3
The connecting process must send a single zero (NUL) byte when it first connects, which is not considered to be part of the data stream. If the operating system uses sendmsg() with SCM_CREDS or SCM_CREDENTIALS to pass credentials over sockets, the connecting process must do so if possible; if not, it must still send the byte.
The listening process will disconnect the connection unless it can determine by OS-specific means that the connecting process has the same user ID as the listening process.
The associated variant must be ignored.
In bindings that need a separate name, arrays of Tube_Info should be called Tube_Info_List.
Identifier
-
u
(Tube_ID)Initiator
-
u
(Contact_Handle)Type
-
u
(Tube_Type)Service
-
s
Parameters
-
a{sv}
(String_Variant_Map)State
-
u
(Tube_State)In bindings that need a separate name, arrays of DBus_Tube_Member should be called DBus_Tube_Member_List.
Handle
-
u
(Contact_Handle)Unique_Name
-
s
(DBus_Unique_Name)Arrays of Socket_Address_IPv4 don't generally make sense.
Address
-
s
Port
-
q
Arrays of Socket_Address_IPv6 don't generally make sense.
Address
-
s
Port
-
q
Arrays of Socket_Netmask_IPv4 don't generally make sense.
Address
-
s
Prefix_Length
-
y
Arrays of Socket_Netmask_IPv6 don't generally make sense.
Address
-
s
Prefix_Length
-
y
Address_Type
-
u
(Socket_Address_Type)Access_Control
-
au
(Socket_Access_Control[])This interface is not yet API-stable and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.
Implementations of this interface must also implement:
Interface for streamed media channels that can be merged and split in the same sort of way as in GSM or PBX telephony.
Added in version 0.17.1.
Other
-
o
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
Contact
-
u
(Contact_Handle)Channel
-
o
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.NotAvailable
Interface has no signals.
Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Implementations of this interface must also implement:
An interface for streamed media channels that can indicate call progress or call states. The presence of this interface is no guarantee that call states will actually be signalled (for instance, SIP implementations are not guaranteed to generate status 180 Ringing, so a call can be accepted without the Ringing flag ever having been set).Added in version 0.17.2.
States
-
a{uu}
(Channel_Call_State_Map)contact
-
u
(Contact_Handle)state
-
u
(Channel_Call_State_Flags)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Channel_Call_State_Ringing = 1
Channel_Call_State_Queued = 2
Channel_Call_State_Held = 4
Contact
-
u
(Contact_Handle)State
-
u
(Channel_Call_State_Flags)Implementations of this interface must also implement:
state
-
u
(Channel_Chat_State)org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.InvalidArgument
contact
-
u
(Contact_Handle)state
-
u
(Channel_Chat_State)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Channel_Chat_State_Gone = 0
Channel_Chat_State_Inactive = 1
Channel_Chat_State_Active = 2
Channel_Chat_State_Paused = 3
Channel_Chat_State_Composing = 4
This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.
Implementations of this interface must also implement:
This interface extends the Text and Messages interfaces with improved sent-message status reporting.
This interface replaces Text.SendError, adding support for protocols where the message content is not echoed back to the sender on failure. It also adds support for receiving positive acknowledgements, and uses the Messages queue for state-recovery (ensuring that incoming delivery reports are not lost if there is not currently a process handling them).
If this interface and the Messages interface are both present, clients that support it SHOULD listen for the MessageReceived signal to get delivery reports, and ignore the SendError signal on the Text interface.
Delivery reports appear as messages of type Channel_Text_Message_Type_Delivery_Report in the Text and Messages interfaces. The message in the Text interface SHOULD have the Non_Text_Content flag.
Whenever a message of type Channel_Text_Message_Type_Delivery_Report is signalled for a delivery error report, Channel.Type.Text.SendError SHOULD also be emitted; whenever Channel.Type.Text.SendError is emitted by a channel which supports this interface, a message of type Channel_Text_Message_Type_Delivery_Report MUST also be emitted.
The corresponding message in the Messages interface MUST contain "headers" for the delivery report, as specified below, in its first Message_Part.
An identifier for the message to which this delivery report refers. MUST NOT be an empty string. Omitted if not available.
Clients may match this against the token produced by the SendMessage method and MessageSent signal on the Messages interface. A status report with no token could match any sent message, and a sent message with an empty token could match any status report. If multiple sent messages match, clients SHOULD use some reasonable heuristic.
The message content, as defined by the Messages interface. Omitted if no content is available. Content MAY have been truncated, message parts MAY have been removed, and message parts MAY have had their content removed (i.e. the message part metadata is present, but the 'content' key is not).
Unlike in the Messages interface, content not visible in the value for this key cannot be retrieved by another means, so the connection manager SHOULD be more aggressive about including (possibly truncated) message content in the 'content' key.
The second and subsequent Message_Part dictionaries, if present, are a human-readable report from the IM service.
It is an error for this interface to appear on channels of type other than Text, or on Text channels without the Messages interface. Clients MUST recover from this error by ignoring the presence of the DeliveryReporting interface.
Some example delivery reports in a Python-like syntax (in which arrays are indicated by [a, b] and dictionaries by {k1: v1, k2: v2}) follow.
b9a991bd-8845-4d7f-a704-215186f43bb4
for an unknown
reason[{ # header 'interface': 'org.freedesktop.Telepathy.Channel.Interface.DeliveryReporting', 'message-sender': 123, 'message-type': Channel_Text_Message_Type_Delivery_Report, 'delivery-status': Delivery_Status_Permanently_Failed, 'delivery-token': 'b9a991bd-8845-4d7f-a704-215186f43bb4', } # no body ]
[{ # header 'interface': 'org.freedesktop.Telepathy.Channel.Interface.DeliveryReporting', 'message-sender': 123, 'message-type': Channel_Text_Message_Type_Delivery_Report, 'delivery-status': Delivery_Status_Temporarily_Failed, 'delivery-error': Channel_Text_Send_Error_Offline, 'delivery-echo': [{ # header of original message 'message-sender': 1, 'message-sent': 1210067943, }, { # body of original message 'type': 'text/plain', 'content': 'Hello, world!', }] ], # no body ]
b9a991bd-8845-4d7f-a704-215186f43bb4
to a contact
with handle 123, but that handle represents a contact who does not
actually exist[{ # header 'interface': 'org.freedesktop.Telepathy.Channel.Interface.DeliveryReporting', 'message-sender': 123, 'message-type': Channel_Text_Message_Type_Delivery_Report, 'delivery-status': Delivery_Status_Permanently_Failed, 'delivery-error': Channel_Text_Send_Error_Invalid_Contact, 'delivery-token': 'b9a991bd-8845-4d7f-a704-215186f43bb4', 'delivery-echo': [{ # header of original message 'message-sender': 1, 'message-sent': 1210067943, }, { # body of original message 'type': 'text/plain', 'content': 'Hello, world!', }] ], }, { # message from server (alternative in English) 'alternative': '404', 'type': 'text/plain', 'lang': 'en', 'content': 'I have no contact with that name', }, { # message from server (alternative in German) 'alternative': '404'. 'type': 'text/plain', 'lang': 'de', 'content', 'Ich habe keinen Kontakt mit diesem Namen', } ]
b9a991bd-8845-4d7f-a704-215186f43bb4
[{ # header 'interface': 'org.freedesktop.Telepathy.Channel.Interface.DeliveryReporting', 'message-sender': 123, 'message-type': Channel_Text_Message_Type_Delivery_Report, 'delivery-status': Delivery_Status_Delivered, 'delivery-token': 'b9a991bd-8845-4d7f-a704-215186f43bb4', } # no body ]
Added in version 0.17.5. (draft version, not API-stable)
Request that a delivery report is sent for the specified pending incoming message. Delivery reports cannot currently be sent for messages that have already been acknowledged.
The only use-case I can see for delivery reports on non-pending messages is a "read receipt" like in email's RFC 3798. Delivery reports on non-pending messages will also need a more complex API.
If they turn out to be needed, we can add a method like SendDeliveryReportByContent(aa{sv}: message) and add a flag to Delivery_Reporting_Support_Flags indicating that this method is implemented.
Clients SHOULD NOT attempt to send delivery reports that are not indicated to be supported using the DeliveryReportingSupport property.
Clients MUST NOT attempt to send delivery reports using the SendMessage method in the Messages API, and connection managers MUST NOT allow this to be done.
Messages
-
au
(Message_ID[])Status
-
u
(Delivery_Status)Reason
-
u
(Channel_Text_Send_Error)org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.NotImplemented
Interface has no signals.
Interface has no Telepathy properties.
Accessed using the org.freedesktop.DBus.Properties interface.
DeliveryReportingSupport
- u
(Delivery_Reporting_Support_Flags), read-onlyDelivery_Status_Unknown = 0
Delivery_Status_Delivered = 1
Delivery_Status_Temporarily_Failed = 2
Delivery_Status_Permanently_Failed = 3
Delivery_Reporting_Support_Flag_Receive_Failures = 1
Delivery_Reporting_Support_Flag_Receive_Successes = 2
Delivery_Reporting_Support_Flag_Send_Failures = 4
Delivery_Reporting_Support_Flag_Send_Successes = 8
Implementations of this interface must also implement:
An interface that gives a Channel the ability to send DTMF events over audio streams which have been established using the StreamedMedia channel type. The event codes used are in common with those defined in RFC4733, and are listed in the DTMF_Event enumeration.stream_id
-
u
(Stream_ID)event
-
y
(DTMF_Event)org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
stream_id
-
u
(Stream_ID)org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
Interface has no signals.
Interface has no Telepathy properties.
Interface has no D-Bus core properties.
DTMF_Event_Digit_0 = 0
DTMF_Event_Digit_1 = 1
DTMF_Event_Digit_2 = 2
DTMF_Event_Digit_3 = 3
DTMF_Event_Digit_4 = 4
DTMF_Event_Digit_5 = 5
DTMF_Event_Digit_6 = 6
DTMF_Event_Digit_7 = 7
DTMF_Event_Digit_8 = 8
DTMF_Event_Digit_9 = 9
DTMF_Event_Asterisk = 10
DTMF_Event_Hash = 11
DTMF_Event_Letter_A = 12
DTMF_Event_Letter_B = 13
DTMF_Event_Letter_C = 14
DTMF_Event_Letter_D = 15
Implementations of this interface must also implement:
Interface for channels which have multiple members, and where the members of the channel can change during its lifetime. Your presence in the channel cannot be presumed by the channel's existence (for example, a channel you may request membership of but your request may not be granted).
This interface implements three lists: a list of current members, and two lists of local pending and remote pending members. Contacts on the remote pending list have been invited to the channel, but the remote user has not accepted the invitation. Contacts on the local pending list have requested membership of the channel, but the local user of the framework must accept their request before they may join. A single contact should never appear on more than one of the three lists. The lists are empty when the channel is created, and the MembersChanged signal should be emitted when information is retrieved from the server, or changes occur.
Addition of members to the channel may be requested by using AddMembers. If remote acknowledgement is required, use of the AddMembers method will cause users to appear on the remote pending list. If no acknowledgement is required, AddMembers will add contacts to the member list directly. If a contact is awaiting authorisation on the local pending list, AddMembers will grant their membership request.
Removal of contacts from the channel may be requested by using RemoveMembers. If a contact is awaiting authorisation on the local pending list, RemoveMembers will refuse their membership request. If a contact is on the remote pending list but has not yet accepted the invitation, RemoveMembers will rescind the request if possible.
It should not be presumed that the requester of a channel implementing this interface is immediately granted membership, or indeed that they are a member at all, unless they appear in the list. They may, for instance, be placed into the remote pending list until a connection has been established or the request acknowledged remotely.
If the local user joins a Group channel whose members or other state cannot be discovered until the user joins (e.g. many chat room implementations), the connection manager should ensure that the channel is, as far as possible, in a consistent state before adding the local contact to the members set; until this happens, the local contact should be in the remote-pending set. For instance, if the connection manager queries the server to find out the initial members list for the channel, it should leave the local contact in the remote-pending set until it has finished receiving the initial members list.
If the protocol provides no reliable way to tell whether the complete initial members list has been received yet, the connection manager should make a best-effort attempt to wait for the full list (in the worst case, waiting for a suitable arbitrary timeout) rather than requiring user interfaces to do so on its behalf.
Invite all the given contacts into the channel, or accept requests for channel membership for contacts on the pending local list.
A message may be provided along with the request, which will be sent to the server if supported. See the CHANNEL_GROUP_FLAG_MESSAGE_ADD and CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT flags to see in which cases this message should be provided.
Attempting to add contacts who are already members is allowed; connection managers must silently accept this, without error.
contacts
-
au
(Contact_Handle[])message
-
s
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.Channel.Full
org.freedesktop.Telepathy.Error.Channel.InviteOnly
org.freedesktop.Telepathy.Error.Channel.Banned
Deprecated since version 0.17.6. Use GetAll on the D-Bus Properties D-Bus interface to get properties including Members, RemotePendingMembers and LocalPendingMembers instead, falling back to this method and GetLocalPendingMembers if necessary.
au
(Contact_Handle[])au
(Contact_Handle[])au
(Contact_Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
Deprecated since version 0.17.6. Use GetAll on the D-Bus Properties D-Bus interface to get properties including GroupFlags instead, falling back to this method if necessary.
u
(Channel_Group_Flags)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
Deprecated since version 0.17.6. Clients should use the HandleOwners property and HandleOwnersChanged signal if Channel_Group_Flag_Properties is present.
handles
-
au
(Contact_Handle[])au
(Contact_Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.InvalidArgument
Deprecated since version 0.17.6. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present.
au
(Contact_Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
Added in version 0.15.0.
Deprecated since version 0.17.6. Use the LocalPendingMembers property, if Channel_Group_Flag_Properties is present.
a(uuus)
(Local_Pending_Info[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
Deprecated since version 0.17.6. Use the Members property, if Channel_Group_Flag_Properties is present.
au
(Contact_Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
Deprecated since version 0.17.6. Use the RemotePendingMembers property, if Channel_Group_Flag_Properties is present.
au
(Contact_Handle[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
Deprecated since version 0.17.6. Clients should retrieve the SelfHandle property using GetAll instead, if Channel_Group_Flag_Properties is present.
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
contacts
-
au
(Contact_Handle[])message
-
s
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.InvalidHandle
contacts
-
au
(Contact_Handle[])message
-
s
reason
-
u
(Channel_Group_Change_Reason)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.InvalidHandle
org.freedesktop.Telepathy.Error.InvalidArgument
Added in version 0.17.6. This signal should not be relied on unless Channel_Group_Flag_Properties is present.
Added
-
a{uu}
(Handle_Owner_Map)Removed
-
au
(Contact_Handle[])Added in version 0.17.6. This signal should not be relied on unless Channel_Group_Flag_Properties is present.
Self_Handle
-
u
(Contact_Handle)added
-
u
(Channel_Group_Flags)removed
-
u
(Channel_Group_Flags)Emitted when contacts join any of the three lists (members, local pending or remote pending) or when they leave any of the three lists. There may also be a message from the server regarding this change, which may be displayed to the user if desired.
All channel-specific handles that are mentioned in this signal MUST be represented in the value of the HandleOwners property. In practice, this will mean that HandleOwnersChanged is emitted before emitting a MembersChanged signal in which channel-specific handles are added, but that it is emitted after emitting a MembersChanged signal in which channel-specific handles are removed.
message
-
s
added
-
au
(Contact_Handle[])removed
-
au
(Contact_Handle[])local_pending
-
au
(Contact_Handle[])remote_pending
-
au
(Contact_Handle[])actor
-
u
(Contact_Handle)reason
-
u
(Channel_Group_Change_Reason)Interface has no Telepathy properties.
Accessed using the org.freedesktop.DBus.Properties interface.
GroupFlags
- u
(Channel_Group_Flags), read-onlyAdded in version 0.17.6. For backwards compatibility, clients should fall back to calling GetGroupFlags if Channel_Group_Flag_Properties is not present.
HandleOwners
- a{uu}
(Handle_Owner_Map), read-onlyAdded in version 0.17.6.
LocalPendingMembers
- a(uuus)
(Local_Pending_Info[]), read-onlyAdded in version 0.17.6. If Channel_Group_Flag_Properties is not present, clients should fall back to using the deprecated GetLocalPendingMembersWithInfo method, or fall back from that to the deprecated GetAllMembers method.
Members
- au
(Contact_Handle[]), read-onlyAdded in version 0.17.6. If Channel_Group_Flag_Properties is not set, fall back to calling GetAllMembers.
RemotePendingMembers
- au
(Contact_Handle[]), read-onlyAdded in version 0.17.6. If Channel_Group_Flag_Properties is not set, fall back to calling GetAllMembers.
SelfHandle
- u
(Contact_Handle), read-onlyAdded in version 0.17.6. For backwards compatibility, clients should fall back to calling GetSelfHandle if Channel_Group_Flag_Properties is not present.
Channel_Group_Change_Reason_None = 0
Channel_Group_Change_Reason_Offline = 1
Channel_Group_Change_Reason_Kicked = 2
Channel_Group_Change_Reason_Busy = 3
Channel_Group_Change_Reason_Invited = 4
Channel_Group_Change_Reason_Banned = 5
Channel_Group_Change_Reason_Error = 6
Channel_Group_Change_Reason_Invalid_Contact = 7
Channel_Group_Change_Reason_No_Answer = 8
Channel_Group_Change_Reason_Renamed = 9
Channel_Group_Change_Reason_Permission_Denied = 10
Channel_Group_Change_Reason_Separated = 11
If members are removed with this reason code, the change is because the group has split into unconnected parts which can only communicate within themselves (e.g. netsplits on IRC use this reason code).
If members are added with this reason code, the change is because unconnected parts of the group have rejoined. If this channel carries messages (e.g. Text or Tubes channels) applications must assume that the contacts being added are likely to have missed some messages as a result of the separation, and that the contacts in the group are likely to have missed some messages from the contacts being added.
Note that from the added contacts' perspective, they have been in the group all along, and the contacts we indicate to be in the group (including the local user) have just rejoined the group with reason Separated. Application protocols in Tubes should be prepared to cope with this situation.
Channel_Group_Flag_Can_Add = 1
Channel_Group_Flag_Can_Remove = 2
Channel_Group_Flag_Can_Rescind = 4
Channel_Group_Flag_Message_Add = 8
Channel_Group_Flag_Message_Remove = 16
Channel_Group_Flag_Message_Accept = 32
Channel_Group_Flag_Message_Reject = 64
Channel_Group_Flag_Message_Rescind = 128
Channel_Group_Flag_Channel_Specific_Handles = 256
The members of this group have handles which are specific to this channel, and are not valid as general-purpose handles on the connection. Depending on the channel, it may be possible to call GetHandleOwners to find the owners of these handles, which should be done if you wish to eg subscribe to the contact's presence.
Connection managers must ensure that any given handle is not simultaneously a general-purpose handle and a channel-specific handle.
Channel_Group_Flag_Only_One_Group = 512
Channel_Group_Flag_Handle_Owners_Not_Available = 1024
Channel_Group_Flag_Properties = 2048
In bindings that need a separate name, arrays of Local_Pending_Info should be called Local_Pending_Info_List.
To_Be_Added
-
u
(Contact_Handle)Actor
-
u
(Contact_Handle)Reason
-
u
(Channel_Group_Change_Reason)Message
-
s
Channel_Specific_Handle
-
u
(Contact_Handle)Global_Handle
-
u
(Contact_Handle)Implementations of this interface must also implement:
Interface for channels where you may put the channel on hold. This only makes sense for channels where you are streaming media to or from the members.
If you place a channel on hold, this indicates that you do not wish to be sent media streams by any of its members and will be ignoring any media streams you continue to receive. It also requests that the connection manager free up any resources that are only needed for an actively used channel (e.g. in a GSM or PBX call, it will be necessary to place an active call on hold before you can start another call).
Changed in version 0.17.4: first API-stable version
HoldState
-
u
(Local_Hold_State)Reason
-
u
(Local_Hold_State_Reason)Request that the channel be put on hold (be instructed not to send any media streams to you) or be taken off hold.
If the connection manager can immediately tell that the requested state change could not possibly succeed, this method SHOULD return the NotAvailable error. If the requested state is the same as the current state, this method SHOULD return successfully without doing anything.
Otherwise, this method SHOULD immediately set the hold state to Local_Hold_State_Pending_Hold or Local_Hold_State_Pending_Unhold (as appropriate), emitting HoldStateChanged if this is a change, and return successfully.
The eventual success or failure of the request is indicated by a subsequent HoldStateChanged signal, changing the hold state to Local_Hold_State_Held or Local_Hold_State_Unheld.
If the channel has multiple streams, and the connection manager succeeds in changing the hold state of one stream but fails to change the hold state of another, it SHOULD attempt to revert all streams to their previous hold states.
The following state transitions SHOULD be used, where appropriate:
Hold
-
b
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.NotAvailable
HoldState
-
u
(Local_Hold_State)Reason
-
u
(Local_Hold_State_Reason)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Local_Hold_State_Unheld = 0
Local_Hold_State_Held = 1
Local_Hold_State_Pending_Hold = 2
Local_Hold_State_Pending_Unhold = 3
Local_Hold_State_Reason_None = 0
Local_Hold_State_Reason_Requested = 1
Local_Hold_State_Reason_Resource_Not_Available = 2
This interface is unfinished and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.
Implementations of this interface must also implement:
This interface extends the Messages interface to support capability discovery, so clients can decide what subset of HTML is supported.
(However, the capability discovery mechanism has not been written yet, so this interface MUST NOT be used. It exists only to indicate what direction we intend to go in.)
XMPP supports all of XHTML-IM, and SIP (at least theoretically) supports all of XHTML. However, many protocols are more limited - for instance, in MSN you can only set font properties for a whole message at a time. We should not mislead users into thinking they can send MSN messages where individual words are emphasized.
If this interface is present, clients MAY send XHTML formatted text in message parts with type "text/html", and SHOULD interpret "text/html" message parts received in reply.
Client authors SHOULD pay careful attention to the security considerations in XEP-0071, "XHTML-IM", to avoid exposing client users to security risks. Clients MUST NOT assume that connection managers will filter messages to remove unsafe HTML.
Connection managers are the components in Telepathy that are most likely to be exploitable by a remote attacker to run malicious code (since they are network-facing), so any filtering that the CM does might be subverted.
To avoid misleading users, clients SHOULD only present UI for the subset of HTML that is indicated to be supported by this interface. It follows that clients SHOULD NOT send unsupported markup to the connection manager. However, even if the connection manager cannot send arbitrary XHTML, it MUST cope gracefully with being given arbitrary XHTML by a client.
Connection managers should be lenient in what they receive.
Clients MUST NOT send HTML that is not well-formed XML, but connection managers MAY signal HTML that is malformed or invalid. Clients SHOULD attempt to parse messages as XHTML, but fall back to using a permissive "tag-soup" HTML parser if that fails. (FIXME: or should the presence of this interface imply that the CM fixes up "text/html" to be XHTML? In practice that would result in all the CMs having to link against libxml2 or something... the rationale above no longer applies here, since dropping a malformed message is "safe")
Added in version 0.17.5. (draft version, not API-stable)
Interface has no methods.
Interface has no signals.
Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Implementations of this interface must also implement:
Interface for channels that may have a password set that users need to provide before being able to join, or may be able to view or change once they have joined the channel.
The GetPasswordFlags method and the associated PasswordFlagsChanged signal indicate whether the channel has a password, whether the user must now provide it to join, and whether it can be viewed or changed by the user.
u
(Channel_Password_Flags)org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
password
-
s
b
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.NetworkError
org.freedesktop.Telepathy.Error.InvalidArgument
added
-
u
(Channel_Password_Flags)removed
-
u
(Channel_Password_Flags)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Channel_Password_Flag_Provide = 8
Implementations of this interface must also implement:
An interface for signalling a channel containing synchronised media sessions which can contain an arbitrary number of streams. The negotiation interface is based closely around the API of the Farsight library (http://farsight.sourceforge.net/). This in turn is based upon the IETF MMusic ICE drafts where connections are established by signalling potential connection candidates to the peer until a usable connection is found, and codecs are negotiated with an SDP-style offer and answer. However, the principles should be applicable to other media streaming methods and the API re-used without difficulty.a(os)
(Media_Session_Handler_Info[])Session_Handler
-
o
Session_Type
-
s
(Media_Session_Type)Accessed using the Telepathy Properties interface.
nat-traversal
-
s
A string indicating the NAT traversal techniques employed by the streams within this channel. Can be protocol-specific values, but the following values should be used if appropriate:
stun-server
-
s
stun-port
-
q
gtalk-p2p-relay-token
-
s
Interface has no D-Bus core properties.
In bindings that need a separate name, arrays of Media_Session_Handler_Info should be called Media_Session_Handler_Info_List.
Session_Handler
-
o
Media_Session_Type
-
s
(Media_Session_Type)This interface is experimental and is likely to cause havoc to your API/ABI if bindings are generated. Don't include it in libraries that care about compatibility.
Implementations of this interface must also implement:
This interface extends the Text interface to support more general messages, including:
It also provides a hook for improved sent message status notification, to be used by the DeliveryReporting interface.
Although this specification supports formatted (rich-text) messages with unformatted alternatives, implementations SHOULD NOT attempt to send formatted messages until the Telepathy specification has also been extended to cover capability discovery for message formatting.
If this interface is present, clients that support it SHOULD listen for the MessageSent and MessageReceived signals, and ignore the Sent and Received signal on the Text interface (which are guaranteed to duplicate signals from this interface).
Added in version 0.17.5. (draft version, not API-stable)
Submit a message to the server for sending. If this method returns successfully, the message has been submitted to the server and the MessageSent signal is emitted. A corresponding Sent signal on the Text interface MUST also be emitted.
If this method fails, message submission to the server has failed and no signal on this interface (or the Text interface) is emitted.
Message
-
aa{sv}
(Message_Part[])Flags
-
u
(Message_Sending_Flags)s
(Sent_Message_Token)org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NetworkError
Message_ID
-
u
(Message_ID)Parts
-
au
Content
-
a{uv}
The content of the requested parts. The keys in this mapping are positions in the array of message parts; the values are either of type 's' or 'ay' (UTF-8 text string, or byte array), following the same rules as for the value of the 'content' key in the Message_Part mappings.
If the one of the requested part numbers was greater than zero but referred to a part that had no content (i.e. it had no 'type' key or no 'content' key), it is simply omitted from this mapping; this is not considered to be an error condition.
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NetworkError
Content
-
aa{sv}
(Message_Part[])Message_Token
-
s
(Sent_Message_Token)Message_IDs
-
au
(Message_ID[])Message
-
aa{sv}
(Message_Part[])Interface has no Telepathy properties.
Accessed using the org.freedesktop.DBus.Properties interface.
SupportedContentTypes
- as
, read-onlyMessagePartSupportFlags
- u
(Message_Part_Support_Flags), read-onlyPendingMessages
- aaa{sv}
(Message_Part[][]), read-onlyAn opaque token used to identify sent messages. As a special case, the empty string indicates that there is no particular identification for a message.
CM implementations SHOULD use an identifier expected to be unique, such as a UUID, if possible.
Some protocols can only track a limited number of sent messages in a small message-ID space. As a result, clients MUST NOT assume that message tokens will not be re-used, and SHOULD use some reasonable heuristic to assign delivery reports to messages, such as matching on message content or timestamp (if available), or assuming that the delivery report refers to the most recent message with that ID.
This is a hook for the DeliveryReporting interface, to avoid having to introduce a SendMultiPartMessageAndReturnToken method in that interface.
Flags indicating the level of support for message parts on this channel. They are designed such that setting more flags always implies that the channel has more capabilities.
It is assumed that messages containing a textual message body (only), like the messages the Text interface was designed for, are always supported.
There is no flag indicating support for alternatives. This is because the SendMessage implementation can always accept messages containing alternatives, even if the underlying protocol does not, by deleting all alternatives except the first (most preferred) that is supported.
Message_Part_Support_Flag_Data_Only = 1
Message_Part_Support_Flag_One_Attachment = 2
Message_Part_Support_Flag_Multiple_Attachments = 4
Message_Sending_Flag_Report_Delivery = 1
Part of a message's content. In practice, this mapping never appears in isolation - messages are represented by a list of Message_Part mappings.
An example of how a message might look, in a Python-like syntax:
[ { 'message-sender': 42, 'message-sent': 1210067943, 'message-received': 1210067947, 'message-type': 0, 'pending-message-id': 437, }, { 'alternative': 'main', 'type': 'text/html', 'content': 'Here is a photo of my cat:<br />' + '<img src="cid:catphoto" alt="lol!" />' + '<br />Isn't it cute?', }, { 'alternative': 'main', 'type': 'text/plain', 'content': 'Here is a photo of my cat:\n[IMG: lol!]\nIsn't it cute?', }, { 'identifier': 'catphoto', 'type': 'image/jpeg', 'size': 101000, 'needs-retrieval': True, }, ]
The first part of the message contains "headers" which refer to the entire message.
It is an error for a connection manager to put keys referring to the message as a whole in the second or subsequent Message_Part, but clients MUST recover from this error by ignoring these keys in the second and subsequent parts.
Well-known keys for the message as a whole, and the corresponding value types, include:
The second and subsequent parts contain the message's content, including plain text, formatted text and/or attached files.
In any group of parts with the same non-empty value for the "alternative" key (which represent alternative versions of the same content), more faithful versions of the intended message MUST come before less faithful versions (note that this order is the opposite of MIME "multipart/alternative" parts). Clients SHOULD display the first alternative that they understand.
Clients SHOULD present all parts that are not redundant alternatives in the order they appear in this array, possibly excluding parts that are referenced by another displayed part. It is implementation-specific how the parts are presented to the user.
This allows CMs to assume that all parts are actually shown to the user, even if they are not explicitly referenced - we do not yet recommend formatted text, and there is no way for plain text to reference an attachment since it has no concept of markup or references. This also forces clients to do something sensible with messages that consist entirely of "attachments", with no "body" at all.
For instance, when displaying the above example, a client that understands the HTML part should display the JPEG image once, between the two lines "Here is a photo of my cat:" and "Isn't it cute?"; it may additionally present the image in some way for a second time, after "Isn't it cute?", or may choose not to.
A client that does not understand HTML, displaying the same message, should display the plain-text part, followed by the JPEG image.
Well-known keys for the second and subsequent parts, and the corresponding value types, include:
If present, this part of the message is an alternative for all other parts with the same value for "alternative". Clients SHOULD only display one of them (this is expected to be used for XHTML messages in a future version of this specification).
If omitted, this part is not an alternative for any other part.
Parts of a message MAY reference the group of alternatives as a whole (i.e. a reference to whichever of them is chosen) by treating this identifier as if it were the MIME Content-ID of a multipart/alternative part, and using the cid: URI scheme.
The MIME type of this part. See the documentation for ReceivedMessage for notes on the special status of "text/plain" parts.
Connection managers MUST NOT signal parts without a 'type' key; if a protocol provides no way to determine the MIME type, the connection manager is responsible for guessing it, but MAY fall back to "text/plain" for text and "application/octet-stream" for non-text.
Clients MUST ignore parts without a 'type' key, which are reserved for future expansion.
It is an error for a connection manager to put these keys in the first Message_Part, but clients MUST be able to recover from this error by ignoring these keys in the first part.
In bindings that need a separate name, arrays of Message_Part should be called Message_Part_List.
Key
-
s
Value
-
v
errno
-
u
message
-
s
stream_handler
-
o
id
-
u
media_type
-
u
(Media_Stream_Type)direction
-
u
(Media_Stream_Direction)Interface has no Telepathy properties.
Interface has no D-Bus core properties.
codec_id
-
u
errno
-
u
(Media_Stream_Error)message
-
s
native_candidate_id
-
s
remote_candidate_id
-
s
candidate_id
-
s
transports
-
a(usuussduss)
(Media_Stream_Handler_Transport[])codecs
-
a(usuuua{ss})
(Media_Stream_Handler_Codec[])codecs
-
a(usuuua{ss})
(Media_Stream_Handler_Codec[])state
-
u
(Media_Stream_State)codecs
-
a(usuuua{ss})
(Media_Stream_Handler_Codec[])Added in version 0.17.3.
Held
-
b
Added in version 0.17.3.
candidate_id
-
s
transports
-
a(usuussduss)
(Media_Stream_Handler_Transport[])candidate_id
-
s
native_candidate_id
-
s
remote_candidate_id
-
s
remote_candidates
-
a(sa(usuussduss))
(Media_Stream_Handler_Candidate[])codecs
-
a(usuuua{ss})
(Media_Stream_Handler_Codec[])playing
-
b
sending
-
b
event
-
y
Emitted when the connection manager wishes to place the stream on hold (so the streaming client should free hardware or software resources) or take the stream off hold (so the streaming client should reacquire the necessary resources).
When placing a channel's streams on hold, the connection manager SHOULD notify the remote contact that this will be done (if appropriate in the protocol) before it emits this signal.
It is assumed that relinquishing a resource will not fail. If it does, the call is probably doomed anyway.
When unholding a channel's streams, the connection manager SHOULD emit this signal and wait for success to be indicated via HoldState before it notifies the remote contact that the channel has been taken off hold.
This means that if a resource is unavailable, the remote contact will never even be told that we tried to acquire it.
Added in version 0.17.3.
Held
-
b
Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Media_Stream_Error_Unknown = 0
Media_Stream_Error_EOS = 1
Media_Stream_Base_Proto_UDP = 0
Media_Stream_Base_Proto_TCP = 1
Media_Stream_Transport_Type_Local = 0
Media_Stream_Transport_Type_Derived = 1
Media_Stream_Transport_Type_Relay = 2
In bindings that need a separate name, arrays of Media_Stream_Handler_Candidate should be called Media_Stream_Handler_Candidate_List.
Name
-
s
Transports
-
a(usuussduss)
(Media_Stream_Handler_Transport[])In bindings that need a separate name, arrays of Media_Stream_Handler_Transport should be called Media_Stream_Handler_Transport_List.
Component_Number
-
u
IP_Address
-
s
Port
-
u
Protocol
-
u
(Media_Stream_Base_Proto)Subtype
-
s
Profile
-
s
Preference_Value
-
d
Transport_Type
-
u
(Media_Stream_Transport_Type)Username
-
s
Password
-
s
In bindings that need a separate name, arrays of Media_Stream_Handler_Codec should be called Media_Stream_Handler_Codec_List.
Codec_ID
-
u
Name
-
s
Media_Type
-
u
(Media_Stream_Type)Clock_Rate
-
u
Number_Of_Channels
-
u
Parameters
-
a{ss}
(String_String_Map)Interface for channels and other objects, to allow querying and setting properties. ListProperties returns which properties are valid for the given channel, including their type, and an integer handle used to refer to them in GetProperties, SetProperties, and the PropertiesChanged signal. The values are represented by D-Bus variant types, and are accompanied by flags indicating whether or not the property is readable or writable.
Each property also has a flags value to indicate what methods are available. This is a bitwise OR of PropertyFlags values.
properties
-
au
(Property_ID[])a(uv)
(Property_Value[])An array of structs containing:
org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.PermissionDenied
a(ussu)
(Property_Spec[])Takes an array of (identifier, value) pairs containing desired values to set the given properties. In the case of any errors, no properties will be changed. When the changes have been acknowledged by the server, the PropertiesChanged signal will be emitted.
All properties given must have the PROPERTY_FLAG_WRITE flag, or PermissionDenied will be returned. If any variants are of the wrong type, NotAvailable will be returned. If any given property identifiers are invalid, InvalidArgument will be returned.
properties
-
a(uv)
(Property_Value[])org.freedesktop.Telepathy.Error.Disconnected
org.freedesktop.Telepathy.Error.InvalidArgument
org.freedesktop.Telepathy.Error.NotAvailable
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.NetworkError
properties
-
a(uv)
(Property_Value[])An array of structs containing:
The array should contain only properties whose values have actually changed.
properties
-
a(uu)
(Property_Flags_Change[])An array of structs containing:
The array should contain only properties whose flags have actually changed.
Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Property_Flag_Read = 1
Property_Flag_Write = 2
In bindings that need a separate name, arrays of Property_Spec should be called Property_Spec_List.
Property_ID
-
u
name
-
s
signature
-
s
(DBus_Signature)Flags
-
u
(Property_Flags)In bindings that need a separate name, arrays of Property_Flags_Change should be called Property_Flags_Change_List.
Property_ID
-
u
New_Flags
-
u
In bindings that need a separate name, arrays of Property_Value should be called Property_Value_List.
Identifier
-
u
(Property_ID)Value
-
v
The account manager is a central service used to store account details.
The current account manager is defined to be the process that owns the well-known bus name org.freedesktop.Telepathy.AccountManager on the session bus. This process must export an /org/freedesktop/Telepathy/AccountManager object with the AccountManager interface.
Added in version 0.17.2.
Connection_Manager
-
s
(Connection_Manager_Name)Protocol
-
s
(Protocol)Display_Name
-
s
Parameters
-
a{sv}
Account
-
o
org.freedesktop.Telepathy.Error.NotImplemented
org.freedesktop.Telepathy.Error.InvalidArgument
Account
-
o
Account
-
o
Valid
-
b
Interface has no Telepathy properties.
Accessed using the org.freedesktop.DBus.Properties interface.
Interfaces
- as
, read-onlyValidAccounts
- ao
, read-onlyInvalidAccounts
- ao
, read-onlyAn Account object encapsulates the necessary details to make a Telepathy connection.
Accounts are uniquely identified by object path. The object path
of an Account MUST take the form
/org/freedesktop/Telepathy/Account/cm/proto/acct
, where:
This API avoids specifying the "profiles" used in Mission Control 4.x or the "presets" that have been proposed to replace them. An optional interface will be provided for AM implementations that want to provide presets.
There is deliberately no functionality here for opening channels; we intend to provide that in the channel dispatcher.
Other missing features which would be better in their own interfaces:
Added in version 0.17.2.
Changed in version 0.17.6: moved the Avatar property to a separate interface
org.freedesktop.Telepathy.Error.PermissionDenied
Set
-
a{sv}
Unset
-
as
org.freedesktop.Telepathy.Error.PermissionDenied
org.freedesktop.Telepathy.Error.InvalidArgument
Properties
-
a{sv}
Interface has no Telepathy properties.
Accessed using the org.freedesktop.DBus.Properties interface.
Interfaces
- as
, read-onlyDisplayName
- s
, read/writeIcon
- s
, read/writeValid
- b
, read-onlyEnabled
- b
, read/writeThis property gives the users the possibility to prevent an account from being used. This flag does not change the validity of the account.
A disabled account can never be put online.
Use cases:
The AccountManager SHOULD allow this property to be set on invalid accounts, but MUST NOT attempt to put invalid accounts online even if they become Enabled.
There doesn't seem to be any good reason not to allow this.
Nickname
- as
, read/writeParameters
- a{sv}
, read-onlyA map from connection manager parameter names (as in the ConnectionManager interface) to their values. This property includes only those parameters that are stored for this account, and SHOULD only include those parameters that the user has explicitly set.
This property cannot be altered using Set() - use UpdateParameters instead.
AutomaticPresence
- (uss)
(Account_Presence), read/writeThe presence status that this account should have if it is brought online.
Setting this property MUST NOT actually change the account's status until the next time it is (re)connected for some reason.
The Connection_Presence_Type in the structure SHOULD NOT be Offline or Unset.
ConnectAutomatically
- b
, read/writeConnection
- s
, read-onlyConnectionStatus
- u
, read-onlyConnectionStatusReason
- u
, read-onlyCurrentPresence
- (uss)
(Account_Presence), read-onlyRequestedPresence
- (uss)
(Account_Presence), read/writeThe requested presence for this account. When this is changed, the account manager should attempt to manipulate the connection manager to make CurrentPresence match RequestedPresence as closely as possible. It should not be saved to any sort of persistent storage.
When the account manager automatically connects an account, it must signal this by setting the RequestedPresence to the same thing as the AutomaticPresence.
NormalizedName
- s
, read-onlyThe normalized user ID of the local user on this account (i.e. the string returned when the InspectHandle method is called on the result of GetSelfHandle() for an active connection).
It is unspecified whether this user ID is globally unique.
As currently implemented, IRC user IDs are only unique within the same IRCnet. On some saner protocols, the user ID includes a DNS name which provides global uniqueness.
If this value is not known yet (which will always be the case for accounts that have never been online), it will be an empty string.
It is possible that this value will change if the connection manager's normalization algorithm changes, although this SHOULD be avoided.
It's not always completely clear what normalization algorithm should be used; for instance, in Gabble, we currently use JIDs, but it would also have been reasonable to use xmpp URIs.
Arrays of Account_Presence don't generally make sense.
Type
-
u
(Connection_Presence_Type)Status
-
s
Message
-
s
An interface exported by client applications which are able to handle incoming channels.
Added in version 0.17.0.
Added in version 0.17.0.
Bus_Name
-
s
(DBus_Bus_Name)Connection
-
o
Channel_Type
-
s
(DBus_Interface)Channel
-
o
Handle_Type
-
u
(Handle_Type)Handle
-
u
(Handle)Interface has no signals.
Interface has no Telepathy properties.
Interface has no D-Bus core properties.
Key
-
s
Value
-
v
Key
-
s
Value
-
s
org.freedesktop.Telepathy.ConnectionManager
org.freedesktop.Telepathy.Connection
org.freedesktop.Telepathy.Connection.Interface.Aliasing
org.freedesktop.Telepathy.Connection.Interface.Avatars
org.freedesktop.Telepathy.Connection.Interface.Capabilities
org.freedesktop.Telepathy.Connection.Interface.Presence
org.freedesktop.Telepathy.Connection.Interface.Renaming
org.freedesktop.Telepathy.Channel
org.freedesktop.Telepathy.Channel.FUTURE
org.freedesktop.Telepathy.Channel.Type.ContactList
org.freedesktop.Telepathy.Channel.Type.StreamedMedia
org.freedesktop.Telepathy.Channel.Type.RoomList
org.freedesktop.Telepathy.Channel.Type.Text
org.freedesktop.Telepathy.Channel.Type.Tubes
org.freedesktop.Telepathy.Channel.Interface.CallMerging
org.freedesktop.Telepathy.Channel.Interface.CallState
org.freedesktop.Telepathy.Channel.Interface.ChatState
org.freedesktop.Telepathy.Channel.Interface.DeliveryReporting.DRAFT
org.freedesktop.Telepathy.Channel.Interface.DTMF
org.freedesktop.Telepathy.Channel.Interface.Group
org.freedesktop.Telepathy.Channel.Interface.Hold
org.freedesktop.Telepathy.Channel.Interface.HTML.DRAFT
org.freedesktop.Telepathy.Channel.Interface.Password
org.freedesktop.Telepathy.Channel.Interface.MediaSignalling
org.freedesktop.Telepathy.Channel.Interface.Messages.DRAFT
org.freedesktop.Telepathy.Media.SessionHandler
org.freedesktop.Telepathy.Media.StreamHandler
org.freedesktop.Telepathy.Properties
org.freedesktop.Telepathy.AccountManager
org.freedesktop.Telepathy.Account
org.freedesktop.Telepathy.ChannelHandler
Account_Presence
- ( u, s, s )
Alias_Map
- a{ u → s }
Alias_Pair
- ( u, s )
Avatar_Token_Map
- a{ u → s }
Capability_Change
- ( u, s, u, u, u, u )
Capability_Pair
- ( s, u )
Channel_Call_State_Flags
- uChannel_Call_State_Map
- a{ u → u }
Channel_Chat_State
- uChannel_Group_Change_Reason
- uChannel_Group_Flags
- uChannel_Info
- ( o, s, u, u )
Channel_Media_Capabilities
- uChannel_Password_Flags
- uChannel_Text_Message_Flags
- uChannel_Text_Message_Type
- uChannel_Text_Send_Error
- uConn_Mgr_Param_Flags
- uConnection_Alias_Flags
- uConnection_Capability_Flags
- uConnection_Manager_Name
- sConnection_Presence_Type
- uConnection_Status
- uConnection_Status_Reason
- uContact_Capability
- ( u, s, u, u )
Contact_Handle
- uContact_Presences
- a{ u → (ua{sa{sv}}) }
DBus_Bus_Name
- sDBus_Interface
- sDBus_Signature
- sDBus_Tube_Member
- ( u, s )
DBus_Unique_Name
- sDTMF_Event
- yDelivery_Reporting_Support_Flags
- Delivery_Status
- Group_Handle
- uHandle
- uHandle_Owner_Map
- a{ u → u }
Handle_Type
- uLast_Activity_And_Statuses
- ( u, a{sa{sv}} )
List_Handle
- uLocal_Hold_State
- uLocal_Hold_State_Reason
- uLocal_Pending_Info
- ( u, u, u, s )
Media_Session_Handler_Info
- ( o, s )
Media_Session_Type
- sMedia_Stream_Base_Proto
- uMedia_Stream_Direction
- uMedia_Stream_Error
- uMedia_Stream_Handler_Candidate
- ( s, a(usuussduss) )
Media_Stream_Handler_Codec
- ( u, s, u, u, u, a{ss} )
Media_Stream_Handler_Transport
- ( u, s, u, u, s, s, d, u, s, s )
Media_Stream_Info
- ( u, u, u, u, u, u )
Media_Stream_Pending_Send
- uMedia_Stream_State
- uMedia_Stream_Transport_Type
- uMedia_Stream_Type
- uMessage_ID
- uMessage_Part
- a{ s → v }
Message_Part_Support_Flags
- Message_Sending_Flags
- Multiple_Status_Map
- a{ s → a{sv} }
Param_Spec
- ( s, u, s, v )
Pending_Text_Message
- ( u, u, u, u, u, s )
Property_Flags
- uProperty_Flags_Change
- ( u, u )
Property_ID
- uProperty_Spec
- ( u, s, s, u )
Property_Value
- ( u, v )
Protocol
- sRoom_Handle
- uRoom_Info
- ( u, s, a{sv} )
Sent_Message_Token
- sSocket_Access_Control
- uSocket_Address_IPv4
- ( s, q )
Socket_Address_IPv6
- ( s, q )
Socket_Address_Type
- uSocket_Netmask_IPv4
- ( s, y )
Socket_Netmask_IPv6
- ( s, y )
Status_Spec
- ( u, b, b, a{ss} )
Status_Spec_Map
- a{ s → (ubba{ss}) }
Stream_ID
- uString_String_Map
- a{ s → s }
String_Variant_Map
- a{ s → v }
Supported_Socket_Map
- a{ u → au }
Tube_ID
- uTube_Info
- ( u, u, u, s, a{sv}, u )
Tube_State
- uTube_Type
- uUnix_Timestamp
- u