Question


How can Unified Messaging Message Waiting Indicator (MWI) notifications be sent over SIP?

Cause


The IMC_Subscribe custom server for Unified Messaging allows MWI notifications to be sent from UM over SIP using the SIP "Subscribe/Notify" mechanism which is a subset of RFC 3265 (Session Initiation Protocol Specific Event Notification).

Answer


Operation


SIP Subscribe and Notify messages are sent/received using the same Blueworx Voice Response SIP signalling process as is used to send and receive normal SIP call messages. This means that, unless configured otherwise, the BVR SIP signalling process sends and receives messages over port 5060 using TCP or UDP as configured in the BVR "System Configuration for SIP Signalling" system parameter group.

The SIP signalling process is only active and able to process subscribe/notify messages if at least one VoIP/SIP trunk is enabled.

At the SIP interface, IMC_Subscribe works as follows:


- When a user first registers with the SIP network or switch, a SIP Subscribe message is sent to Unified Messaging containing the subscriber ID and a session expiry time.

- The Subscribe message Request Header contains the ID in the numeric user part to be subscribed to, for example, for the request header SUBSCRIBE sip:1014@9.20.142.60:5060 SIP/2.0, the subscriber ID is assumed to be 1014. All other SIP headers are handled in the usual way e.g. to route responses back to the remote endpoint wishing to be notified of MWI state changes.

- In response to this message (assuming that the subscriber ID is valid), WebSphere Voice Response/Unified Messaging returns a SIP 200 OK message, followed by a SIP Notify message containing the number of new and saved messages in that subscriber's mailbox. The following is an example of the body of the Notify message for a subscriber 3001@192.168.0.1 who has one new and two saved voice messages:
Messages-Waiting: yes
Message-Account: sip:3001@192.168.0.1
   Voicemail : 1/2

- If there are no messages in the subscriber's mailbox, the following is an example of what would be send in the Notify body:
Messages-Waiting: no
Message-Account: sip:3001@192.168.0.1

- Whenever the number and/or status of messages in a mailbox changes, a SIP Notify is sent with a body indicating the new mailbox content.
- Subscription to the requested subscriber ID automatically expires after the Expiry time in the initial Subscribe request. To continue subscription, a new Subscribe message with an updated Expiry time must be sent.

- A Subscription can be terminated by sending (into UM) a SIP Subscribe message with a zero expiry time.

IMC_Subscribe is shipped with the custom server in the default inactive state (not running). When IMC_Subscribe is started, it kills the MWISERVER custom server (if running) to take over the role of MWI Notification. This means that multiple types of MWI notification, for example, SMDI and SIP cannot coexist on the same machine at the same time.


Installation

IMC_Subscribe uses a new DB2 table named subscription to record subscriptions. Before using IMC_Subscribe, this table must be created in the DB2 database using the supplied script create-db-table.sh.  To use this script, do the following:

  1. Become dtuser
  2. cd to $CUR_DUR/ca/IMC_Subscribe_dir
  3. Type create-db-table.sh

    You should see some messages confirming that the subscription table has been successfully created.
    Note that the -d option when used with create-db-table.sh deletes the subscription table from DB2.


Internal tracing
                                      
     Tracing is done to file $OAM_LOG_PATH/IMC_Subscribe.log

Tracing Levels (set from the .ini file)

1 Errors only

2 Errors and warnings

3 Errors, warnings and basic trace

4 Errors, warnings, basic and info trace

5 Errors, warnings, basic, info and debug trace

Use a SIGUSR1 signal to decrease trace level, SIGUSR2 to increase.



Initialization Parameters
 
Initialization parameters are taken from $CUR_DIR/ca/ini/IMC_MessageCenter.ini. Possible values are as follows:

LoggingLevel Integer value 1 through 5, with a default of 3
DBCheckInterval Integer value in seconds, with a default of 2

RunOnServer yes or no, with a default of yes

RunOnClient yes or no, with a default of yes

Example SIP Sequences
 
Following are examples of SIP Subscribe/Notify sequences for MWI notification.

Unified Messaging sends initial subscription for subscriber 1014

SUBSCRIBE sip:1014@9.20.142.60:5060 SIP/2.0
via: SIP/2.0/UDP 9.20.142.58;branch=z9hG4bK80176619-521c-dd11-b923-e864744c9623
from: <sip:9.20.142.58>;tag=101e150c
to: "New User1014"<sip:1014@9.20.142.60>
call-id: 80176619-521c-dd11-b921-a6e7251726a2
cseq: 1 SUBSCRIBE
timestamp: 1210350284
date: Fri, 09 May 2008 16:24:44 GMT
Max-Forwards: 70
contact: <sip:3ComCallProcessor@9.20.142.58>
expires: 3600
event: message-summary
user-agent: 3Com VCX 7210 IP CallProcessor/v7.2.72
content-length: 0

Unified Messaging receives 200 OK response to initial subscribe

SIP/2.0 200 OK
From: <sip:9.20.142.58>;tag=101e150c
Call-ID: 80176619-521c-dd11-b921-a6e7251726a2
CSeq: 1 SUBSCRIBE
Via: SIP/2.0/UDP 9.20.142.58;branch=z9hG4bK80176619-521c-dd11-b923-e864744c9623
To: "New User1014" <sip:1014@9.20.142.60>;tag=4eed9f014-9.20.142.60
Content-Length: 0
Max-Forwards: 70
Contact: "New User1014" <sip:1014@9.20.142.60:5060;transport=UDP>

Unified Messaging Sends initial Notify when no messages in mailbox

NOTIFY sip:3ComCallProcessor@9.20.142.58 SIP/2.0
To: <sip:9.20.142.58>;tag=101e150c
From: "New User1014" <sip:1014@9.20.142.60>;tag=4eed9f014-9.20.142.60
Content-Type: application/simple-message-summary
Content-Length: 45
Call-ID: 80176619-521c-dd11-b921-a6e7251726a2
Max-Forwards: 70
CSeq: 28973 NOTIFY
Via: SIP/2.0/UDP 9.20.142.60:5060;branch=z9hG4bK6b1791a157441-9.20.142.60
Contact: "New User1014" <sip:1014@9.20.142.60:5060;transport=UDP>
Subscription-State: active
Event: message-summary

Messages-Waiting: no
Message-Account: 1014

Unified Messaging receives 200 OK response to Notify

SIP/2.0 200 OK
via: SIP/2.0/UDP 9.20.142.60:5060;branch=z9hG4bK6b1791a157441-9.20.142.60
from: "New User1014"<sip:1014@9.20.142.60>;tag=4eed9f014-9.20.142.60
to: <sip:9.20.142.58>;tag=101e150c
call-id: 80176619-521c-dd11-b921-a6e7251726a2
cseq: 28973 NOTIFY
date: Fri, 09 May 2008 16:24:44 GMT
contact: <sip:3ComCallProcessor@9.20.142.58>
event: message-summary
user-agent: 3Com VCX 7210 IP CallProcessor/v7.2.72
subscription-state: active
content-length: 0

Unified Messaging receives subscription with expiry time of zero to terminate subscription

SUBSCRIBE sip:1014@9.20.142.60:5060 SIP/2.0
via: SIP/2.0/UDP 9.20.142.58;branch=z9hG4bK809ef91c-521c-dd11-b927-b191eb320677
from: <sip:9.20.142.58>;tag=e45c1bfc
to: "New User1014"<sip:1014@9.20.142.60>
call-id: 80176619-521c-dd11-b921-a6e7251726a2
cseq: 2 SUBSCRIBE
timestamp: 1210350289
date: Fri, 09 May 2008 16:24:49 GMT
Max-Forwards: 70
contact: <sip:3ComCallProcessor@9.20.142.58>
expires: 0
event: message-summary
user-agent: 3Com VCX 7210 IP CallProcessor/v7.2.72
content-length: 0

Unified Messaging sends 200 OK response to Subscribe

SIP/2.0 200 OK
From: <sip:9.20.142.58>;tag=e45c1bfc
Call-ID: 80176619-521c-dd11-b921-a6e7251726a2
CSeq: 2 SUBSCRIBE
Via: SIP/2.0/UDP 9.20.142.58;branch=z9hG4bK809ef91c-521c-dd11-b927-b191eb320677
To: "New User1014" <sip:1014@9.20.142.60>;tag=4eed9f014-9.20.142.60
Content-Length: 0
Max-Forwards: 70
Contact: "New User1014" <sip:1014@9.20.142.60:5060;transport=UDP>

Example of Initial Notify (send by UM) if mailbox not empty 

NOTIFY sip:3ComCallProcessor@9.20.142.58 SIP/2.0
To: <sip:9.20.142.58>;tag=101d77ec
From: "New User1014" <sip:1014@9.20.142.60>;tag=28a930e16-9.20.142.60
Content-Type: application/simple-message-summary
Content-Length: 60
Call-ID: 8033b427-521c-dd11-b929-9b092b30c505
Max-Forwards: 70
CSeq: 28368 NOTIFY
Via: SIP/2.0/UDP 9.20.142.60:5060;branch=z9hG4bK3f5b34f5179813-9.20.142.60
Contact: "New User1014" <sip:1014@9.20.142.60:5060;transport=UDP>
Subscription-State: active
Event: message-summary

Messages-Waiting: yes
Message-Account: 1014
Voicemail: 2/0

Example of Notify (sent by UM) during subscription when mailbox becomes empty

NOTIFY sip:3ComCallProcessor@9.20.142.58 SIP/2.0
To: <sip:9.20.142.58>;tag=101d77ec
From: "New User1014" <sip:1014@9.20.142.60>;tag=28a930e16-9.20.142.60
Content-Type: application/simple-message-summary
Content-Length: 45
Call-ID: 8033b427-521c-dd11-b929-9b092b30c505
Max-Forwards: 70
CSeq: 28369 NOTIFY
Via: SIP/2.0/UDP 9.20.142.60:5060;branch=z9hG4bK5dc25fc6189f4d-9.20.142.60
Contact: "New User1014" <sip:1014@9.20.142.60:5060;transport=UDP>
Subscription-State: active
Event: message-summary

Messages-Waiting: no
Message-Account: 1014