sipXpbx Message Waiting Indication Interface

Last Modified: 2004-11-30 15:46:45-0500


The sipXpublisher MwiPlugin provides support for the message waiting indication package [1]; in order to do so, it must be integrated with the actual voice mail application. This document describes how this integration is accomplished.

There is signalling in both directions between the MwiPlugin and the voice mail system. This signalling takes the form of HTTP GET requests and responses.

Initial Mailbox State

When a SIP UA (phone) requests a subscription to the MWI package, the sipstatus server authenticates the SIP SUBSCRIBE request for the MwiPlugin and checks to see that the identity has the required permission (by default "Voicemail"). If these checks pass, then the MwiPlugin requests the mailbox state from the voicemail application by sending an HTTP GET request to the voicemail system. The URL for this request is configured in the status-plugin.xml.in file in the voicemail-cgi-url element. Note that any variables (of the form "${variable-name}) in this file will be substituted at system startup time with the values in config.defs.

Status Request Parameters

The GET request for mailbox state has two parameters, passed as conventional name=value pairs in the request query string:

identity
The user identity whose mailbox status is requested. This is whatever the identity element for that user is in the credentials (user@domain).
eventtype
The fixed value message-summary

Status Response

The status response should have the HTTP Content-Type application/simple-message-summary. The formal definition of that content type can be found in [RFC3842].

For SIPxchange version 2.4 and earlier

Pingtel SIPxchange 2.4 and earlier used an earlier version of the event package definition, and the format of the body is slightly different. For those versions, the response body should be:

Messages-Waiting: { "yes" | "no" }
Voice-Message: new/old (new-urgent/old-urgent)

where new,old,new-urgent, and old-urgent are integer values for the number of available messages of each type.

Status Update Notices

When the status of the mailbox for a user changes, the voicemail system must signal that change to the MwiPlugin by making an HTTP GET request. The URL is

http://status-server-host:port/cgi/StatusEvent.cgi
status-server-host
the dns name or ip address of the status server
port
the port number that the status server is listening on (see below)

(the path part is hardcoded and should not be). The only required query string parameter is identity (as above), and the request must have a body constructed in the same way as the status response above. (Yes, a body on a GET is unusual, but is not forbidden - this should have been a POST, but it isn't)

The port on which sipXpublisher will listen for the status update notice "request" is configured on the MwiPlugin side in sipxstatus/status-config.vm; the SIP_STATUS_HTTPS_PORT or SIP_STATUS_HTTP_PORT. If an HTTPS port is configured, then the HTTP port is not used - in order to use HTTP, you must set the HTTPS port to 0 (zero).


References

  1. RFC 3842 A Message Summary and Message Waiting Indication Event Package for the Session Initiation Protocol (SIP)