Since March 10, 2003 - Version 2.1
hypothetic.org

MSN Messenger Protocol

Switchboard - Participants

Back To Normal Layout

Inviting Principals

A principal cannot enter a switchboard session without being invited by a current participant. Any participant, not just the creator of the session, can invite other principals. There is no known limit on the number of principals in a switchboard session, but it is most likely greater than 30. There used to be a limit of five.

You can invite the same principal into several switchboards - for example, to chat in one switchboard and transfer a file in another. However, the official client will attempt to handle all of the sessions in a single window, which can lead to confusing results. If you have more than one session to choose between, you should always send messages to the session you last received a message in.

CAL

To invite a principal into a switchboard session, send the CAL command to the switchboard. It should have a TrID and the account name of the principal you wish to invite as the first parameter.

If successful, the server will respond with another CAL with the same TrID, the string RINGING as the first parameter, and the session ID of this switchboard session as the second parameter. Note that this is only an acknowledgement that you invited the principal - the principal has not joined the session yet. That comes later with the JOI command. Also, the session ID is not important to the client, and it will be the same for every principal invited.

There are several things that can go wrong with the CAL command:

Below are some examples of using the CAL command:

>>> CAL 2 name_123@hotmail.com\r\n

<<< CAL 2 RINGING 11752013\r\n

>>> CAL 3 nonexistent@passport.com\r\n

<<< 217 3\r\n

>>> CAL 4 offline@passport.com\r\n

<<< 217 4\r\n

>>> CAL 5 @@a\r\n

<<< 208 5\r\n

>>> CAL 5 blocking_you@passport.com\r\n

<<< 216 5\r\n

>>> CAL 5 blocking_you@passport.com\r\n
<<< 216 5\r\n
>>> CAL 5 blocking_you@passport.com\r\n
<<< 216 5\r\n
>>> CAL 5 blocking_you@passport.com\r\n
<<< 216 5\r\n
>>> CAL 5 blocking_you@passport.com\r\n
<<< 216 5\r\n
>>> CAL 5 blocking_you@passport.com\r\n
<<< 216 5\r\n
>>> CAL 5 blocking_you@passport.com\r\n
<<< 713 5\r\n

Only the person sending the CAL will see the outgoing CAL and the incoming CAL or errors. When the specified principal actually joins the session, every principal will receive a JOI.

JOI

If the CAL was successful, the specified principal will receive the RNG command from the NS. If they connect to the switchboard and authenticate, they will be part of the switchboard session. When that happens, every principal in the session (excluding the principal that just joined) will be sent the JOI command.

The JOI command has no TrID. The first parameter is the account name of the principal that just entered the session. The second parameter is the URL-encoded display name of the principal that just entered the session. Below is an example:

<<< JOI name_123@hotmail.com Name_123\r\n

Leaving a Switchboard Session

To leave a switchboard session, a client should send the OUT command with no TrID and no parameters. The switchboard will close the connection and remove you from the session. Disconnecting without sending an OUT command has the same effect. Below is an example of using the OUT command:

>>> OUT\r\n

<o> Switchboard Closes Connection

When a participant leaves a switchboard session, all other principals in the session (if there are any left) will receive the BYE command with no TrID and the account name of the principal that left as the first parameter. Below is an example:

<<< BYE example@passport.com\r\n

Idle Sessions

If you are the only participant in a switchboard session (either because you haven't invited anyone yet or because everyone left), the switchboard will close the connection after five minutes of being alone. No command will be sent from the server before closing the connection.

If you are in a 2 person switchboard session, and no commands are sent from either principal for five minutes, the switchboard will send the BYE command to both principals showing that the other principal left and it will immediately close the connection. However, this BYE command has an additional parameter after the account name that says 1, showing that the switchboard was closed due to idleness. Below is an example:

<<< BYE example@passport.com 1\r\n

<o> Switchboard Closes Connection

The situation in a 3 or more person session is similar to that in a 2 person session, except that the idle duration is 15 minutes and you will only receive one BYE from one participant (randomly selected).

Official Client

Whenever someone using the official closes a message window that's attached to an open switchboard, it will disconnect from the switchboard. The official client will tell you when a principal leaves a switchboard with three or more participants, but it will not tell you in a switchboard with only 2 participants.

Relation to Notification Server

Because the integration between switchboard servers and the notification server is not very tight, a principal can log off of the NS and still be connected to one or more switchboards. When the official client logs out of MSN Messenger, it will send OUT to every active switchboard and then send OUT to the NS.

Copyright ©2002-2004 to Mike Mintz.
<http://www.mikemintz.com/>