Agent Programs

A collection of programs are provided to handle messages for different kinds of mail participants. Currently, the following programs are provided:

Program

Purpose

imip_person.py

Maintain scheduling information on behalf of people

imip_person_outgoing.py

imip_resource.py

Act as an autonomous resource that can be reserved

For people, the role of the agent programs concerned is to construct a schedule that can be accessed via the management interface and to maintain a free/busy record for event scheduling purposes.

For resources, the role of the agent program concerned is also to maintain schedule and free/busy records, but also to act autonomously - that is, without manual intervention - and to respond to event invitations or booking requests according to policies defined in the configuration of the system.

Program Invocation

Since imip-agent is concerned with the integration of calendaring with e-mail, these programs are typically invoked by the mail system, although they may be invoked directly for testing and other purposes. Various options may be presented to the programs in order to modify their behaviour, and these are summarised when the --help option is given. For example:

imip_person.py --help

The mail configuration guide references configuration files that include example invocations of these programs. Generally, few options need to be specified, and as a result the programs will acquire their configuration from the installed configuration files.

One exception is the imip_person.py program that needs to be told whether it will deliver messages using LMTP with the -l option or using SMTP with the -L option. See the transports documentation for more information.

Program Responsibilities

The person agent programs or "handlers", imip_person.py and imip_person_outgoing.py are responsible for keeping the schedule of each participating calendar user up to date with the requests that are sent and received by that user. Their roles are limited to recording data along with a small amount of automation: they can be configured to reply to free/busy requests without requesting any intervention on the part of the user receiving such requests.

Such handlers may be enhanced to perform more tasks autonomously, so that certain requests might be dealt with automatically, according to policies defined by each user. See the use-cases guide for some potentially-implementable ideas.

Meanwhile, the resource handler, imip_resource.py, is responsible not only for maintaining a schedule for a resource, but it must also make scheduling decisions itself without human involvement. How it may behave is determined by a number of policies set in the preferences so that, for example, it may suggest alternative event periods when those requested in an invitation are unavailable.