+- ``startingCall`` - when the call is coming in, and the telephone rings
+- ``finishedCall`` - when the call has ended
+
+Furthermore you may decide which calls to log:
+
+- ``i`` - Log incoming calls only
+- ``o`` - Log outgoing calls only
+- ``io`` - Log both incoming and outgoing calls
+
+
+=======
+Plugins
+=======
+There are two types of plugins: Detailler and Logger.
+Detaillers load additional details to a call - e.g. a name - and loggers
+can do anything, e.g. write a log file or send a XMPP message.
+
+Detailler
+=========
+Plugins that fetch additional details to calls are named "detailler".
+
+CallMonitor_Detailler_LDAP
+--------------------------
+The plugin determines the name for a telephone number by looking up a
+LDAP directory.
+
+It retrieves the name of the caller for incoming calls, and the name
+of the telephonee for outgoing calls.
+
+It searches the following LDAP attributes:
+
+- ``companyPhone``
+- ``homePhone``
+- ``mobile``
+- ``otherPhone``
+- ``telephoneNumber``
+
+Example configuration::
+
+ $callMonitor->addDetailler(
+ new CallMonitor_Detailler_LDAP(
+ array(
+ 'host' => 'ldap.home.cweiske.de',
+ 'basedn' => 'ou=adressbuch,dc=cweiske,dc=de',
+ 'binddn' => 'cn=readonly,ou=users,dc=cweiske,dc=de',
+ 'bindpw' => 'readonly'
+ )
+ )
+ );
+
+
+CallMonitor_Detailler_OpenGeoDb
+-------------------------------
+The plugin determines the location (city) for a telephone number by
+checking the area code (prefix number) against a OpenGeoDB SQL database.
+
+If several locations share the same area code, the one with the most inhabitants
+is used.
+
+If you use this plugin, you need to run ``docs/opengeodb-create-my_orte.sql``
+on the OpenGeoDB database to create an indexed table with all relevant
+information needed by the plugin.
+
+Example configuration::
+
+ $callMonitor->addDetailler(
+ new CallMonitor_Detailler_OpenGeoDb(
+ 'mysql:host=dojo;dbname=opengeodb',
+ 'opengeodb-read',
+ 'opengeodb'
+ )
+ );
+
+
+Logger