Protocols/MSNP/MSNP14/Changes
MSNP Protocol |
Version 14 |
Overview • Changes |
Overview |
Introduction • Terms • Clients |
Reference |
Error List • Commands • Relying Party Suite • Spotlife |
Services |
XMPP • HTTP Gateway • Tabs • Activities |
Documentation |
Development Tools • MSNP Grid |
Polygamy • URLs used by MSN |
Documents |
Protocol Versions |
Version 21 |
Version 18 |
Version 16 |
Version 15 |
Version 14 |
Version 13 |
Version 12 |
Version 11 |
Version 9 |
Version 8 |
Version 2 |
MSNC |
Introduction • P2P • Object Descriptor • Display Pictures • File Transfer |
Scenarios |
Microsoft Messenger for Mac |
MSNP on WebTV (MSNTV) |
Login
A new header RouteInfo
is sent along the initial profile message:
ILN 41 NLN email@email.com 1 NICK 1615708204 %DPDATA% http://sec.yimg.com/i/us/nt/b/purpley.1.0.png
SOAP Data
When receiving SOAP data, there are some new fields. The type of Yahoo users is "Email" and instead of the address being in "PassportName" it is in "Email".
New member type:
<Member xsi:type="EmailMember"> <MembershipId>14</MembershipId> <Type>Email</Type> <State>Accepted</State> <Annotations> <Annotation> <Name>MSN.IM.BuddyType</Name> <Value>32:</Value> </Annotation> </Annotations> <Deleted>false</Deleted> <LastChanged>2006-07-15T07:21:26.83-07:00</LastChanged> <Changes /> <Email>someone@yahoo.com</Email> </Member>
New contact info for a Yahoo user:
<contactInfo> <emails> <ContactEmail> <contactEmailType>Messenger2</contactEmailType> <email>someone@yahoo.com</email> <isMessengerEnabled>true</isMessengerEnabled> <propertiesChanged /> </ContactEmail> </emails> <groupIds> <guid>28f97ef2-74a1-436a-b765-b3a79b74a8bf</guid> </groupIds> <contactType>Regular</contactType> <quickName>someone54</quickName> <IsPassportNameHidden>false</IsPassportNameHidden> <puid>0</puid> <CID>0</CID> <IsNotMobileVisible>false</IsNotMobileVisible> <isMobileIMEnabled>false</isMobileIMEnabled> <isMessengerUser>false</isMessengerUser> <isFavorite>false</isFavorite> <isSmtp>false</isSmtp> <hasSpace>false</hasSpace> <spotWatchState>NoDevice</spotWatchState> <birthdate>0001-01-01T00:00:00</birthdate> <primaryEmailType>ContactEmailPersonal</primaryEmailType> <PrimaryLocation>ContactLocationPersonal</PrimaryLocation> <PrimaryPhone>ContactPhonePersonal</PrimaryPhone> <IsPrivate>false</IsPrivate> <Gender>Unspecified</Gender> <TimeZone>None</TimeZone> </contactInfo>
Multiple networks
MSNP14 introduces support for IM between different types of networks. Each of these networks have an identifier, as described on Protocols/MSNP/MSNP12/Changes. We will refer to this type as the Network ID from now on.
New commands
UUM/UBM
UUM is, like all other UU* commands, sent by the client (and has a response). UBM is, like all other UB* commands, sent by the server. The payload seems to be the same as in the MSG command.
Abstract UUM syntax
UUM trid destination@mail.addr.ess networkid type length Header1: value1 Header2: value2 ...: ... HeaderN: valueN
body
Abstract UBM syntax
UBM source@mail.addr.ess networkid type length Header1: value1 Header2: value2 ...: ... HeaderN: valueN
body
Message types
Each UUM/UBM type matches with a MSG type. These values are:
1 : Text message 2 : TypingUser message 3 : Nudge message 4 : Not observed
Examples
All the TrIDs will be set to 0 here, but they may be nonzero in real cases. Note that UUM is a NAK-only command, and as such you should establish a timer of ~30s to determine whether a message was sent succesfully or not.
Alice, a MSN user (alice@live.com), types a message to Bob, a Yahoo user (bob@yahoo.com) :
UUM 0 bob@yahoo.com 32 2 87 MIME-Version: 1.0 Content-Type: text/x-msmsgscontrol TypingUser: alice@live.com
Alice then says "Hello Bob !" :
UUM 0 bob@yahoo.com 32 1 144 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 X-MMS-IM-Format: FN=Microsoft%20Sans%20Serif; EF=B; CO=0; CS=0; PF=22
Hello Bob !
Bob says "Hello, how are you ?" :
UBM bob@yahoo.com 32 1 143 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-MMS-IM-Format: FN=MS%20Shell%20Dlg; EF=; CO=0; CS=0; PF=0
Hello, how are you ?
Changed commands
UBX
The command is still sent by the server. The only change is the Network ID.
New syntax
UBX source@mail.addr.ess networkid length <PSM></PSM><CurrentMedia></CurrentMedia>
Examples
UBX example@live.com 1 67 <PSM>Hello from MSN</PSM><CurrentMedia></CurrentMedia>
UBX example@yahoo.com 32 69 <PSM>Hello from Yahoo</PSM><CurrentMedia></CurrentMedia>
UUN/UBN
They may have changed, but the new syntax isn't known yet.
Presence commands (ILN/NLN/FLN)
Probably these :
ILN trid status email@addr.ess networkid nickname clientid dpobj NLN status email@addr.ess networkid nickname clientid dpobj FLN email@addr.ess networkid
Where trid is the CHG/ADL transaction ID, clientid is the Protocols/MSNP/Client ID (also known as Capability Flag), and dpobj is the Display Picture Object Descriptor.
FLN
The FLN command (for when a buddy goes offline) may now be received even though a buddy is already offline. The server uses this mechanism to push the capabilities of contacts from other networks even though they are offline (mainly the Supports Page Mode Messaging bit is pushed).
RNG
XFR SB
The XFR SB and RNG commands now have an addition parameter at the end. This parameter, which can be either "0" or "1", indicates whether a client connected via HTTP can connect directly to the given IP ("1"), or if it should use the generic HTTP gateway ("0").
<<< XFR 32 SB 65.54.171.31:1863 CKI 1743299383.52212212.219110167 U messenger.msn.com 1\r\n
<<< RNG 1295917726 65.54.228.15:1863 CKI 104194101.9520122 email@domain.com Friendly%20Name U messenger.msn.com 1\r\n