Protocols/MSNP/MSNP14/Changes

From NINA Wiki
Jump to navigation Jump to search
MSNP Protocol
Version 14
OverviewChanges
Overview
IntroductionTermsClients
Reference
Error ListCommandsRelying Party SuiteSpotlife
Services
XMPPHTTP GatewayTabsActivities
Documentation
Development ToolsMSNP Grid
PolygamyURLs 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
IntroductionP2PObject DescriptorDisplay PicturesFile 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