# Table of contents:
# Introduction
CHG is a command introduced with MSNP2.
It is a Notification Server command, without either a request or response payload.
Changes your presence status, and sets your Client Capabilities and display picture's Object Reference in later MSNP versions.
# Client/Request
CHG TrID status {client-capabilities{:extended-client-capabilities}} {object-reference}
Where status can be any of the below:
NLN: OnlineBSY: BusyIDL: IdleBRB: Be Right BackAWY: Away (previously Away From Keyboard)PHN: On The PhoneLUN: Out To LunchHDN: Appear Offline (previously Invisible)FLN: Semi-offline. More on this below.
Where client-capabilities are your Client Capabilities. Optional. Added since MSNP8.
Where extended-client-capabilities are your Extended Client Capabilities.
Optional. Added since MSNP16.
Where object-reference is your display picture's Object Reference. Optional. Added since MSNP9.
You must set client-capabilities before setting an object-reference.
# Status explanations
All statuses except HDN and FLN will treat you as online.
Which means all users on your Allow List (AL) and Reverse List (RL)
will get all presence changes via the NLN command.
The statuses HDN and FLN will treat you as offline.
Which means all users on your Allow List (AL) and Reverse List (RL)
will get a FLN command instead of an NLN command.
Also, all attempts to create a Switchboard session will fail automatically,
Exclusive to the FLN state, you are put in a very reduced state where you can
only receive presence changes from other users and resynchronize your Lists.
You may be able to execute more commands, but doing so is Undefined Behaviour.
# Server/Response
CHG TrID status {client-capabilities{:extended-client-capabilities}} {object-reference}
The server may also send this command asynchronously (at any time) with the TrID set to 0.
# Examples
# Changing status to Online
C: CHG 1 NLN
S: CHG 1 NLN
# Changing status to Idle with Client Capabilities
This only works in MSNP8 and higher.
C: CHG 2 IDL 1
S: CHG 2 IDL 1
# Changing status to Busy with Client Capabilities and a Object Reference.
This only works in MSNP9 and higher.
NOTE: This has been line-broken.
Lines beginning with .. followed by a space are continuations of the previous line.
C: CHG 3 BSY 268435500 %3Cmsnobj%20Creator%3D%22example%40hotmail.com%22
.. %20Size%3D%2225235%22%20Type%3D%223%22
.. %20Location%3D%22uexA4DE.dat%22%20Friendly%3D%22AAA%3D%22
.. %20SHA1D%3D%22vP1ppB+xiFQ8ceZivRe0uCaYLIU%3D%22
.. %20SHA1C%3D%22DBRJPnGb+wBYawENkdor1bOdYUs%3D%22%2F%3E
S: CHG 3 BSY 268435500 %3Cmsnobj%20Creator%3D%22example%40hotmail.com%22
.. %20Size%3D%2225235%22%20Type%3D%223%22
.. %20Location%3D%22uexA4DE.dat%22%20Friendly%3D%22AAA%3D%22
.. %20SHA1D%3D%22vP1ppB+xiFQ8ceZivRe0uCaYLIU%3D%22
.. %20SHA1C%3D%22DBRJPnGb+wBYawENkdor1bOdYUs%3D%22%2F%3E
# Server asynchronously changes your status to Semi-offline.
S: CHG 0 FLN
# Invalid argument
NOTE: There is no defined behaviour for this command specifically.
C: CHG 4 HOT
Server disconnects client.
# Known changes
- MSNP8: Added optional Client Capabilities parameter (as parameter 2).
- MSNP9: Added optional Object Reference parameter (as parameter 3).
- MSNP16: Added Extended Client Capabilities support to the Client Capabilities parameter, delimited by a colon.