presence
— Peer presence bookkeeping¶
This module provides a PresenceClient
service to track the presence
of peers, no matter whether they are in the roster or not.
New in version 0.4.
-
class
aioxmpp.
PresenceClient
(client, **kwargs)[source]¶ The presence service tracks all incoming presence information (this does not include subscription management stanzas, as these are handled by
aioxmpp.roster
). It is independent of the roster, as directed presence is independent of the roster and still needs to be tracked accordingly.No method to send directed presence is provided; it would basically just take a stanza and enqueue it in the clients stream, thus being a mere wrapper around
send()
, without any benefit.The service provides access to presence information summarized by bare JID or for each full JID individually. An index over the resources of a bare JID is available.
If an error presence is received for a JID, it replaces all known presence information. It is returned for all queries, no matter for which resource the query is. As soon as a non-error presence is received for any resource of the bare JID, the error is cleared.
-
get_most_available_stanza
(peer_jid)[source]¶ Obtain the stanza describing the most-available presence of the contact.
- Parameters
peer_jid (
aioxmpp.JID
) – Bare JID of the contact.- Return type
- Returns
The presence stanza of the most available resource or
None
if there is no available resource.
The “most available” resource is the one whose presence state orderest highest according to
PresenceState
.If there is no available resource for a given peer_jid,
None
is returned.
-
get_peer_resources
(peer_jid)[source]¶ Return a dict mapping resources of the given bare peer_jid to the presence state last received for that resource.
Unavailable presence states are not included. If the bare JID is in a error state (i.e. an error presence stanza has been received), the returned mapping is empty.
-
get_stanza
(peer_jid)[source]¶ Return the last presence received for the given bare or full peer_jid. If the last presence was unavailable, the return value is
None
, as if no presence was ever received.If no presence was ever received for the given bare JID,
None
is returned.
On presence changes of peers, signals are emitted:
-
signal
on_bare_available
(stanza)¶ Fires when the first resource of a peer becomes available.
Fires when the last resource of a peer becomes unavailable or enters error state.
-
signal
on_available
(full_jid, stanza)¶ Fires when a resource becomes available at full_jid. The stanza which caused the availability is handed over as second argument.
This signal always fires after
on_bare_available()
.
-
signal
on_changed
(full_jid, stanza)¶ Fires when a the presence of the resource at full_jid changes, but does not become unavailable or available. The stanza which caused the change is handed over as second argument.
Fires when the resource at full_jid becomes unavailable, with the stanza causing the unavailability as second argument.
This signal always fires before
on_bare_unavailable()
.Note
If the resource became unavailable due to an error, the full_jid will not match the
from_
attribute of the stanza, as the error is coming from the bare JID.
The three signals
on_available()
,on_changed()
andon_unavailable()
never fire for the same stanza.New in version 0.4.
Changed in version 0.8: This class was formerly known as
aioxmpp.presence.Service
. It is still available under that name, but the alias will be removed in 1.0.-
-
class
aioxmpp.
PresenceServer
(client, **kwargs)[source]¶ Manage the presence broadcast by the client.
The
PresenceServer
manages broadcasting and re-broadcasting the presence of the client as needed.The presence state is initialised to an unavailable presence. Unavailable presences are not emitted when the stream is established.
Presence information:
-
state
¶ The currently set presence state (as
aioxmpp.PresenceState
) which is broadcast when the client connects and when the presence is re-emitted.This attribute cannot be written. It does not reflect the actual presence seen by others. For example when the client is in fact offline, others will see unavailable presence no matter what is set here.
-
status
¶ The currently set textual presence status which is broadcast when the client connects and when the presence is re-emitted.
This attribute cannot be written. It does not reflect the actual presence seen by others. For example when the client is in fact offline, others will see unavailable presence no matter what is set here.
-
priority
¶ The currently set priority which is broadcast when the client connects and when the presence is re-emitted.
This attribute cannot be written. It does not reflect the actual presence seen by others. For example when the client is in fact offline, others will see unavailable presence no matter what is set here.
-
make_stanza
()[source]¶ Create and return a presence stanza with the current settings.
- Returns
Presence stanza
- Return type
Changing/sending/watching presence:
-
set_presence
(state, status={}, priority=0)[source]¶ Change the presence broadcast by the client.
- Parameters
state (
aioxmpp.PresenceState
) – New presence state to broadcastpriority (
int
) – New priority for the resource
- Returns
Stanza token of the presence stanza or
None
if the presence is unchanged or the stream is not connected.- Return type
If the client is currently connected, the new presence is broadcast immediately.
status must be either a string or something which can be passed to the
dict
constructor. If it is a string, it is wrapped into a dict using{None: status}
. The mapping must mapLanguageTag
objects (orNone
) to strings. The information will be used to generate internationalised presence status information. If you do not need internationalisation, simply use the string version of the argument.
-
resend_presence
()[source]¶ Re-send the currently configured presence.
- Returns
Stanza token of the presence stanza or
None
if the stream is not established.- Return type
Note
set_presence()
automatically broadcasts the new presence if any of the parameters changed.
-
signal
on_presence_changed
()¶ Emits after the presence has been changed in the
PresenceServer
.
-
signal
on_presence_state_changed
(new_state)¶ Emits after the presence state has been changed in the
PresenceServer
.This signal does not emit if other parts of the presence (such as priority or status texts) change, while the presence state itself stays the same.
New in version 0.8.
-
-
class
aioxmpp.presence.
Service
¶ Alias of
PresenceClient
.Deprecated since version 0.8: The alias will be removed in 1.0.