– Kamailio SIP Server –

Database Tables for Presence Module

presentity

The table is used for storing PUBLISH messages information.

Keys Type Actions Description
username varchar(64) primary the presentity username
domain varchar(128) primary the presentity domain
event varchar(64) primary the only value it can take now is “presence”
etag varchar(64) primary the generated etag value for a new PUBLISH, contained in the Sip-if-Match header field for the next PUBLISH update messages from the same dialog
expires int the time at which the published information expires - Expires header field value + time()
received_time int the time at which the PUBLISH request was received
body text the xml body containing presence information
CREATE TABLE `presentity` (
  `username` varchar(64) NOT NULL,
  `domain` varchar(124) NOT NULL,
  `event` varchar(64) NOT NULL,
  `etag` varchar(64) NOT NULL,
  `expires` int(11) NOT NULL,
  `received_time` int(11) NOT NULL,
  `body` text NOT NULL,
  PRIMARY KEY  (`username`,`domain`,`event`,`etag`)
) ENGINE=MyISAM;

active-watchers

The table is used for storing the information about the dialog initiated by a Subscribe request, used for sending Notify with presence or presence.winfo information. The to and from from the names of the columns have the same meaning as in the Subscribe message.

Keys Type Actions Description
to_user varchar(64) the presentity's username
to_domain varchar(124) the presentity's domain
from_user varchar(64) the subscriber's/watcher's username
from_domain varchar(124) the watchers's domain
event varchar(64) it can be either “presence” or “presence.winfo”
event_idvarchar(128) the Event id parameter value
from_tag varchar(128) the tag value from the From header filed in the Subscribe message
to_tag varchar(128) the tag value from the To header filed in the Subscribe message
callid varchar(128) the Call-ID header field value
cseq int the current cseq value incremented each time a Notify is sent in the same dialog
contact varchar(128) the Contact header field value from the Subscribe message
record_route varchar(255) the Record-Route that should be included in Notify messages
expires int the time at which the subscription expires - Expires header field value + time()
staus varchar(32) the subscribtions status: “active”, “pending”, “terminated” or “waiting”
version int used for sending Notify for presence.winfo events ; incremented each time a new Notify is sent
CREATE TABLE `active_watchers` (
  `to_user` varchar(64) NOT NULL,
  `to_domain` varchar(128) NOT NULL,
  `from_user` varchar(64) NOT NULL,
  `from_domain` varchar(128) NOT NULL,
  `event` varchar(64) NOT NULL default 'presence',
  `event_id` varchar(64),
  `to_tag` varchar(128) NOT NULL,
  `from_tag` varchar(128) NOT NULL,
  `callid` varchar(128) NOT NULL,
  `cseq` int(11) NOT NULL,
  `contact` varchar(128) NOT NULL,
  `record_route` varchar(255),
  `expires` int(11) NOT NULL,
  `status` varchar(32) NOT NULL default 'pending',
  `version` int(11) default '0',
  PRIMARY KEY  (`from_tag`)
) ENGINE=MyISAM;

xcap_xml

The table is used for storing xcap files containing authorization information.

Keys Type Actions Description
username varchar(64) primary the presentity username
domain varchar(128) primary the presentity domain
xcap text the xcap file
doc_type varchar(64) primary the type of the xml doc
CREATE TABLE `xcap_xml` (
  `username` varchar(64) NOT NULL,
  `domain` varchar(128) NOT NULL,
  `xcap` text NOT NULL,
  `doc_type` int NOT NULL,
  PRIMARY KEY  (`username`,`domain`,`doc_type`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

- doc_type can have one of the following values:

1 - presence_rules;
2 - resource-list;
3 - rls-services;

watchers

This table is used for storing informations about acceptance for Subscribe messages for presence. The subscription state when sending a new notify is take from this table if it exists. Otherwise it takes a default value which is: 'pending' if the force_active parameter is set to 0 and 'active' if the parameter is not 0.

Keys Type Actions Description
p_user varchar(64) primary presentity username
p_domain varchar(128) primary presentity domain
w_user varchar(64) primary watcher username
w_domain varchar(128) primary watcher domain
subs_status varchar(64) the current subscription status
reason varchar(64) if the status is terminated this field records the reason that lead to this
inserted_time int(11) timestamp of insertion
CREATE TABLE `watchers` (
  `p_user` varchar(64) NOT NULL,
  `p_domain` varchar(128) NOT NULL,
  `w_user` varchar(64) NOT NULL,
  `w_domain` varchar(128) NOT NULL,
  `subs_status` varchar(64) NOT NULL,
  `reason` varchar(64),
  `inserted_time` int(11) NOT NULL,
  PRIMARY KEY  (`p_user`,`p_domain`,`w_user`,`w_domain`)
) ENGINE=MyISAM;