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.
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.
The GET request for mailbox state has two parameters, passed as conventional name=value pairs in the request query string:
identity element for that user is in
the credentials (user@domain).
message-summary
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].
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.
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
(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).