Client - Messages
|
Printable Version
|
Overview
Notification messages are used in MSN Messenger to notify you about a time-sensitive event, such as an incoming text message or a news item. Despite the name, it has nothing to do with the notification server. At present, it's used to receive notices from MSN Calendar and MSN Alerts, and to receive incoming messages from MSN Mobile. MSN Calendar became a fee-based service in May 2003, so our information about it is out of date.
A notification is a UTF-8 formatted XML document, so you may want to use a ready-made XML parsing library to process notifications. Some XML parsers are listed on the projects page. Unfortunately, some notifications are badly formatted - for example, URLs may contain bare & characters (which should be encoded as & ) and unescaped http:// s in the middle of URLs (which should be http%3a%2f%2f ). We assume these are bugs in the program that generated the notifications, but you should be aware of them and program defensively.
Not all notices have quite the same format, so you can write a single complex routine to handle all of them or separate simple routines to handle each one. Most of the variations affect parts of the message which are no longer useful once the message has been delivered (e.g. an e-mail address to send the message to if the principal is offline), and it's entirely possible that Microsoft will make other variations in future. The official client seems to use a single complex function, and you're recommended to as well.
So far, it appears that MSN Calendar, MSN Alerts, and MSN Mobile each use a different notification format - but it's entirely possible that MSN Calendar now uses the same format as MSN Alerts, because the information we have about that service is out-of-date. The ver attribute in the NOTIFICATION element seems to identify the format of a notification document, but the official client doesn't pay attention to this attribute, so this shouldn't be relied upon.
Notification formats
I have written Document Type Definitions for the individual MSN Calendar, MSN Alerts, and MSN Mobile formats, as well as a general one. Additionally, here are examples of each notification format. Variable parts are coloured red :
MSN Calendar
<NOTIFICATION ver="1" siteid="111100200 " siteurl="http://calendar.msn.com " id="1 ">\r\n
<TO pid="0x00060000 :0x81ee5a43 " name="example@passport.com " />\r\n
<MSG pri=" " id="1 ">\r\n
<ACTION url="/calendar/isapi.dll?request=action&operation=modify&objectID=1&uicode1=modifyreminder&locale=2052 "/>\r\n
<SUBSCR url="/calendar/isapi.dll?request=action&operation=modify&objectID=1&uicode1=modifyreminder&locale=2052 "/><CAT id="111100201 " />\r\n
<BODY lang="2052 " icon="/En/img/calendar.png ">\r\n
<TEXT>goto club 7. 2002 21:15 - 22:15 </TEXT>\r\n
</BODY>\r\n
</MSG>\r\n
</NOTIFICATION>\r\n
The unusual features of this notification type are:
- The
ver attribute of the NOTIFICATION element is set to "1".
- The
email attribute of the TO element is missing
- The
VIA and FROM elements are missing.
- The
ACTION element comes before the SUBSCR element
- There's a
CAT element
- The
BODY element has an icon attribute.
MSN Alerts
<NOTIFICATION ver="2" id="1342902633 " siteid="199999999 " siteurl="http://alerts.msn.com ">\r\n
<TO pid="0x0006BFFD :0x8582C0FB " name="example@passport.com "/>\r\n
<MSG pri="1 " id="1342902633 ">\r\n
<SUBSCR url="http://g.msn.com/3ALMSNTRACKING/199999999ToastChange?http://alerts.msn.com/Alerts/MyAlerts.aspx?strela=1 "/>\r\n
<ACTION url="http://g.msn.com/3ALMSNTRACKING/199999999ToastAction?http://alerts.msn.com/Alerts/MyAlerts.aspx?strela=1 "/>\r\n
<BODY lang="3076 " icon=" ">\r\n
<TEXT>utf8-encoded text </TEXT></BODY></MSG>\r\n
</NOTIFICATION>\r\n
The unusual features of this notification type are:
- The
ver attribute of the NOTIFICATION element is set to "2"
- The
email attribute of the TO element is missing
- The
VIA and FROM elements are missing.
- The
SUBSCR element comes before the ACTION element
- The
CAT element is missing
- The
BODY element has an icon attribute.
MSN Mobile
<NOTIFICATION id="0 " siteid="111100400 " siteurl="http://mobile.msn.com/ ">\r\n
<TO name="example@passport.com " pid="0x00037ffe :0x82f131c1 " email="example@passport.com ">\r\n
<VIA agent="mobile "/>\r\n
</TO>\r\n
<FROM pid="0x00037ffe:0x82f131c1 " name="example@passport.com "/>\r\n
<MSG pri="1 " id="0 ">\r\n
<ACTION url="2wayIM.asp "/>\r\n
<SUBSCR url="2wayIM.asp "/>\r\n
<CAT id="110110001 "/>\r\n
<BODY lang="2057 ">\r\n
<TEXT>Message </TEXT>\r\n
<EMAILTEXT>The following mobile instant message could not be delivered to you via Messenger because you were offline.\r\n
From: example@passport.com\r\n
Message: Message </EMAILTEXT>\r\n
</BODY>\r\n
</MSG>\r\n
</NOTIFICATION>\r\n
The unusual features of this notification type are:
- The
ver attribute of the NOTIFICATION element is missing.
- The
TO element has an email attribute.
- There are
VIA and FROM elements.
- The
ACTION element comes before the SUBSCR element
- There's a
CAT element
- The
icon attribute of the BODY element is missing.
- There's an
EMAILTEXT element
Explanation
We don't understand the purpose of some parts of the notification. Some parts are definitely not useful once the message has been delivered to the client (e.g. the TO element), so it may be that those parts we don't understand aren't useful either.
NOTIFICATION element
The NOTIFICATION element is the root element for notification documents.
- The optional
ver attribute is believed to identify the type of notification being used: it's missing in MSN Mobile, the value is 1 in MSN Calendar and the value is 2 in MSN Alerts.
- The required
id attribute is a number that uniquely identifies the notification being sent
- The required
siteid attribute is a number that uniquely identifies the website associated with the document
- The required
siteurl attribute is the URL of the website associated with the alert
TO element
The TO element specifies who the notification is being sent to.
- The required
pid attribute contains two values separated by colons: the values of MemberIdLow and MemberIdHigh from your initial profile
- The required
name attribute is your passport
- The optional
email attribute is (presumably) the e-mail address the alert will be sent to if you're offline
VIA element
The VIA element specifies the device this notification has been sent through. The (required) agent attribute has only been seen with a value of mobile , denoting a message sent through an MSN Mobile device.
FROM element
The FROM element specifies the principal that sent the notification.
- The required
pid attribute is identical to the pid attribute in the TO element, above
- The required
name attribute is the sender's passport
MSG element
The MSG element contains the message data.
- the required
pri attribute performs some unknown function
- The required
id attribute is a number that uniquely identifies the message. In practice, this is always identical to the id attribute in the NOTIFICATION element, above
ACTION element
The ACTION element contains part of the action URL (see below). The required url attribute is a relative or absolute URL. If it's a relative URL (i.e. it begins with "http://", "ftp://", "https://", etc.), you should add the siteurl attribute of the NOTIFICATION element to the front of this URL.
SUBSCR element
The SUBSCR element contains part of the subscription URL (see below). The required url attribute is a relative or absolute URL. If it's a relative URL (i.e. it begins with "http://", "ftp://", "https://", etc.), you should add the siteurl attribute of the NOTIFICATION element to the front of this URL.
CAT element
The CAT element performs some unknown function. The required id attribute is a number that performs some unknown function
BODY element
The BODY element contains the possible variants of the message that the principal could be sent.
- the required
lang attribute is a decimal number identifying the locale ID of the message text
- the required
icon attribute is a relative URL specifying an icon you might want to display alongside the message. It may be empty
TEXT and EMAILTEXT elements
These elements contain the actual message text to be sent. If the principal is on-line, the message in the TEXT element should be displayed. Otherwise, the message in the EMAILTEXT element will be sent to the address specified in the email attribute of the TO element.
How to use notifications
The product of a notification is a plaintext message, an action URL, a subscription URL, and (optionally) the sender's e-mail address. The "action" and "subscription" URLs are web addresses that the client should allow the user to visit. The action URL generally contains more information about the notification, while the subscription URL contains subscription options.
The TEXT element contains the message to be sent to the principal, and the name attribute of the FROM element contains the sender's e-mail address. The URLs are derived from several attributes.
Each URL is made up of the base URL derived from the SUBSCR or ACTION element, and the id attributes of the NOTIFICATION and MSG elements. The URL is made up by putting the values together like this: base_URL ¬ification_id=NOTIFICATION_id &message_id=MSG_id &agent=messenger .
For example, a site with a siteurl of http://mysite.com , an action URL of /script.asp , notification ID of 1 , and a message ID of 2 , the target URL would be http://mysite.com /script.asp ¬ification_id=1 &message_id=2 &agent=messenger .
|