Protocols/OSCAR/SNAC/ICBM CLIENT EVENT: Difference between revisions
No edit summary |
|||
Line 100: | Line 100: | ||
| Indicates that the user closed the IM window; can be an issue in multiple instance environments | | Indicates that the user closed the IM window; can be an issue in multiple instance environments | ||
|} | |} | ||
=== From Aleksandr Shutko: SNAC(04,14) ICBM__CLIENT_EVENT === | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0> | |||
<tr> | |||
<td> | |||
<br> | |||
This snac used by client and server for mini typing notification (MTN). Basically, | |||
when you begin typing something you send a "typing begun" message, then a few | |||
seconds later you send a "text typed" message, then after you actually | |||
send the message, you send a "no more text has been typed" message. You also send | |||
the "typing finished" message if you delete all the stuff you've typed.<br><br> | |||
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 [[Protocols/OSCAR/SNAC_04_02|SNAC(04,02)]]. | |||
Just set message flags bit4=1. Send and receive SNACs has the same type=0x14. | |||
Here is the known notification types list:<br><br> | |||
<font color=blue>0x0000</font> - typing finished sign<br> | |||
<font color=blue>0x0001</font> - text typed sign<br> | |||
<font color=blue>0x0002</font> - typing begun sign<br><br> | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9 > | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=55%>SNAC family</td> | |||
</tr> | |||
<tr> | |||
<td> 00 14</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC subtype</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>SNAC flags</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>SNAC request-id</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=169> 00 00 00 00<br> 00 00 00 00</td> | |||
<td width=5> </td> | |||
<td valign=top>qword</td> | |||
<td width=5> </td> | |||
<td width=55% valign=top>notification-id cookie</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>notification channel</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>screenname string length</td> | |||
</tr> | |||
<tr> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>string</td> | |||
<td> </td> | |||
<td>screenname string</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>notification type (see above)</td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br>Example SNAC dump with flap header: | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr> | |||
<td bgcolor=#E9E9E9> | |||
<font size=3><pre style="font-size: 13px"> | |||
2A 02 38 C2 00 1E 00 04 00 14 00 00 00 00 00 14 *.8............. | |||
00 00 00 00 00 00 00 00 00 01 07 36 32 31 38 38 ...........62188 | |||
39 35 00 02 95.. | |||
</pre></font> | |||
</td></tr></table> | |||
</td></tr></table> | |||
== ICBM SNACs == | == ICBM SNACs == | ||
{{Protocols/OSCAR/Foodgroups/ICBM/SNACs/Simple}} | {{Protocols/OSCAR/Foodgroups/ICBM/SNACs/Simple}} | ||
[[Category:With_Contrib]] | |||
[[Category:Stub]] | [[Category:Stub]] | ||
[[Category:AOL]] | [[Category:AOL]] |
Latest revision as of 04:42, 13 February 2021
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 |
From Aleksandr Shutko: SNAC(04,14) ICBM__CLIENT_EVENT
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 SNAC(04,02).
Just set message flags bit4=1. Send and receive SNACs has the same type=0x14.
Here is the known notification types list: 0x0000 - typing finished sign
|
Example SNAC dump with flap header:
|
ICBM SNACs
|