Protocols/OSCAR/SNAC/ICBM CLIENT EVENT: Difference between revisions
No edit summary |
|||
Line 20: | Line 20: | ||
== SNAC Data == | == 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. | |||
{| border="1" | |||
! 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 | |||
|} | |||
{| class="wikitable" | {| class="wikitable" |
Revision as of 11:06, 23 March 2020
OSCAR Protocol |
Introduction • Terms • Clients |
Basic |
Datatypes • FLAP • SNAC • TLV |
UUIDs • Errors • Tool IDs |
Host Interaction |
Rate Limits • Migration • Messages |
Other Services |
ADMIN • ADVERT • ALERT |
BART • BOS • BUCP • CHAT |
CHAT_NAV |
Tutorials |
Sign On • BART • Rendezvous |
ICBM • Locate • Buddies |
Foodgroups |
OSERVICE (0x0001) |
LOCATE (0x0002) |
BUDDY (0x0003) |
ICBM (0x0004) |
ADVERT (0x0005) |
INVITE (0x0006) |
ADMIN (0x0007) |
POPUP (0x0008) |
PD (0x0009) |
USER_LOOKUP (0x000A) |
STATS (0x000B) |
TRANSLATE (0x000C) |
CHAT_NAV (0x000D) |
CHAT (0x000E) |
ODIR (0x000F) |
BART (0x0010) |
FEEDBAG (0x0013) |
ICQ (0x0015) |
BUCP (0x0017) |
ALERT (0x0018) |
PLUGIN (0x0022) |
UNNAMED_FG_24 (0x0024) |
MDIR (0x0025) |
ARS (0x044A) |
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.
SNAC Header
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.
|
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
|