ID
|
Origin
|
Name
|
Foodgroup
|
Service
|
Status
|
Version
|
0x0004, 0x0014
|
Any
|
ICBM__CLIENT_EVENT
|
Unspecified
|
BOS
|
Active
|
1.25
|
This SNAC is sent as a control message, sent by a client to inform the recipient of an event, or by the host informing of an event.
At this time the only events defined are NONE, TYPED, and TYPING. The client should send events only after receiving a message that indicates events are desired. This is another SNAC that is both sent and received by the client.
Foodgroup
|
uint16 (word)
|
00 04
|
Subgroup
|
uint16 (word)
|
00 14
|
Flags
|
uint16 (word)
|
00 00
|
Request ID
|
uint32 (dword)
|
00 00 00 00
|
SNAC Data
WinAIM5 and MacAIM support a sort of mini typing notification (MTN) that does not require a direct connection. Basically, when you begin typing something you send a "begin typing" message, then a few seconds later you send a "text has been typed" message, then after you actually send the message, you send a "no more text has been typed" message. You also send the "no more text has been typed" message if you delete all the stuff you've typed.
Remote clients know that your client supports MTN because the server appends an empty type 0x000b TLV to all outgoing IMs. You tell the server you want this TLV appended when you send the 0x0004/0x0002 SNAC. Flags should be 0x0000 000b.
Length
|
Description
|
8 bytes
|
Unknown (all 0s)
|
2 bytes
|
Unknown (0x0001). I'm guessing this means this contains data pertaining to mini typing notification.
|
1 byte
|
Length L of the follow
|
L bytes
|
The screen name of the person who sent this ICBM.
|
2 bytes
|
The type of typing notification message.
- 0x0000 - Typing finished
- 0x0001 - Text typed
- 0x0002 - Typing begun
|
Name
|
Type
|
Notes
|
cookie
|
ICBM Cookie
|
Opaque data generated by conversation initiator and used to link up the conversation and errors
|
channel
|
uint16 (word)
|
[Class: ICBM__CHANNELS] Channel the message is on
|
username
|
string08
|
Destination username when sending and the source username when received
|
event
|
uint16 (word)
|
[Class: ICBM__EVENTS] What event is happening
|
Class: ICBM__EVENTS
These are the codes used in the CLIENT_EVENT SNAC.
Name
|
Value
|
Notes
|
ICBM__EVENT_NONE
|
0x00
|
Default state; only sent if the user was typing but erased the message
|
ICBM__EVENT_TYPED
|
0x01
|
Indicates that the user was typing but has stopped for at least 2 seconds
|
ICBM__EVENT_TYPING
|
0x02
|
Indicates the message is being actively composed; only send once when switching to this state, do NOT send for every character
|
ICBM__EVENT_RESERVED
|
0x03
|
Reserved
|
ICBM__EVENT_CLOSED
|
0x0F
|
Indicates that the user closed the IM window; can be an issue in multiple instance environments
|
ICBM SNACs
SNAC List
Subgroup
|
Origin
|
Name
|
0x0001
|
Any
|
ICBM__ERR
|
This is the error SNAC for the ICBM foodgroup.
|
0x0002
|
Client
|
ICBM__ADD_PARAMETERS
|
This SNAC is typically sent prior to sending the OSERVICE__CLIENT_ONLINE so that the host is properly initialized with the clients' preferences.
|
0x0003
|
Client
|
ICBM__DEL_PARAMETERS
|
These are the delete all parameters for a given channel.
|
0x0004
|
Client
|
ICBM__PARAMETER_QUERY
|
This SNAC requests ICBM parameters from the host.
|
0x0005
|
Host
|
ICBM__PARAMETER_REPLY
|
This SNAC is sent by the host in response to a ICBM__PARAMETER_QUERY.
|
0x0006
|
Client
|
ICBM__CHANNEL_MSG_TOHOST
|
This is the basic inter-client message after which the group was named (Inter-Client Basic Messages).
|
0x0007
|
Host
|
ICBM__CHANNEL_MSG_TOCLIENT
|
This is the ICBM__CHANNEL_MSG_TOHOST after it has been reformatted by the host and sent to the destination client.
|
0x0008
|
Client
|
ICBM__EVIL_REQUEST
|
This requests that the specified user is sent an EVIL notification.
|
0x0009
|
Host
|
ICBM__EVIL_REPLY
|
The reply tells the requester, the sender of an ICBM__EVIL_REQUEST SNAC, how much EVIL, if any, was applied to the recipient.
|
0x000A
|
Host
|
ICBM__MISSED_CALLS
|
When the host is unable to send one or more messages to the client, the host sends this SNAC to the client to let it know that it missed some messages ("calls").
|
0x000B
|
Any
|
ICBM__CLIENT_ERR
|
This error notice is one of the few SNACs that can be sent to the host and received by a client.
|
0x000C
|
Host
|
ICBM__HOST_ACK
|
This SNAC is sent by the host upon receipt of any ICBM__CHANNEL_MSG_TOHOST which includes the optional ICBM__TLV_TAGS_REQUEST_HOST_ACK TLV.
|
0x000D
|
NCD
|
ICBM__SIN_STORED
|
This is not currently documented. Want to contribute?
|
0x000E
|
NCD
|
ICBM__SIN_LIST_QUERY
|
This is not currently documented. Want to contribute?
|
0x000F
|
NCD
|
ICBM__SIN_LIST_REPLY
|
This is not currently documented. Want to contribute?
|
0x0010
|
Client
|
ICBM__SIN_RETRIEVE
|
This requests ICBM__CHANNEL_MSG_TOCLIENT messages be generated for each of the stored ICBMs. Any message retrieved is deleted.
|
0x0011
|
NCD
|
ICBM__SIN_DELETE
|
This is not currently documented. Want to contribute?
|
0x0012
|
NCD
|
ICBM__NOTIFY_REQUEST
|
This is not currently documented. Want to contribute?
|
0x0013
|
NCD
|
ICBM__NOTIFY_REPLY
|
This is not currently documented. Want to contribute?
|
0x0014
|
Any
|
ICBM__CLIENT_EVENT
|
This SNAC is sent as a control message, sent by a client to inform the recipient of an event, or by the host informing of an event.
|
0x0017
|
Host
|
ICBM__SIN_REPLY
|
The host successfully processed the request to retrieve all the offline messages.
|
|