Before starting… ---------------- Slixmpp is a library for using the XMPP protocol, so if you are not very familiar with the core XMPP concepts, here are a few that are essential to understand before diving in: Entities ~~~~~~~~ XMPP has **clients**, **servers**, and **components**. * Clients: user-facing XMPP software (Conversations, Gajim, Poezio…), or bots. They talk to servers. * Servers: XMPP servers (Prosody, Ejabberd, Openfire…). Clients connect to them and they connect to servers. * Components: Additional software on the server side that provides additional features. Slixmpp allows you to write clients and components easily, but we do not implement an XMPP server. JIDs ~~~~ A JID, for Jabber ID, is the address of an entity over XMPP and can have three primary forms: * ``server``, a **bare** JID without a user part, for components and servers. * ``user@server``, a **bare** JID with a user part. * ``user@server/resource``, a **full** JID including a client resource. Slixmpp provides a ``JID`` class for creating and validating those addresses easily. XEPs ~~~~ A XEP (for *XMPP Extension Protocol*) is a document standardizing XMPP features and interactions. This is the key to XMPP’s extensibility. Slixmpp implements a hefty number of those documents, and most of those are implemented as **plugins**, which will only be loaded at the developer’s request. Some of those plugins may require extra dependencies. Payloads ~~~~~~~~ There are three main types of payloads in XMPP, called **stanzas**, those are: * ````, containing a message to another entity, represented by the ``Message`` class. * ````, containing presence information, represented by the ``Presence`` class. * ````, containing a query (of type ``set`` or ``get``), which the remote entity must answer with another IQ having the same identifier (either with type ``error`` or ``result``). Represented by the ``Iq`` class. The identifier of a stanza is the ``id`` attribute of its top-level element, e.g. ````. An ``Iq`` must have an identifier. Getting Started (with examples) ------------------------------- .. toctree:: :maxdepth: 3 echobot sendlogout component presence muc scheduler iq