Method and system of integrating instant messaging with other computer programs
Claim Score by NHIP
Abstract
Described is a system and method by which client programs such as desktop applications can use instant messaging functionality. An application program interface is provided that allows a client program (e.g., an application program) to interact with an instant messaging infrastructure, such as via event calls to initiate conversations, send messages and/or obtain presence information. This enables other programs to create new user experiences that integrate the messaging infrastructure, such as displaying presence, or enabling instant messages to be sent from within an application program. Document collaboration is also facilitated, by allowing users to send instant messages (or the document) to other users, including sending an instant message directly to a user associated with a specific comment or change to the document.

Term
Term ended
Projected expiry passed 30 June 2026, 0.2 years ago.
- Priority and filed
- Published
- Projected expiry
- Today
38 claims: 3 independent, 35 dependent
- 1Broadest claimClaim Score 90, very broad(NHIP)In a computing environment, a method comprising:providing an interface to an instant messaging program;and allowing client programs to access at least some instant messaging functionality via the interface.
- 22In a computing environment having an instant messaging server, a system comprising:a running client program;an instant messaging component having an interface that allows the client program to access instant messaging functionality, including initiating an instant messaging conversation from within the client program.
- 32At least one computer-readable medium having computer-executable instructions which when executed perform steps, comprising:registering a client program with an instant messaging component;initiating an instant messaging conversation from within the client program by communicating with the instant messaging component;and receiving information at the client program via communication back from the instant messaging component.
Independent claims3
87 paragraphs in 5 sections, as filed
FIELD OF THE INVENTION
0001The invention relates generally to computing systems, and more particularly to instant messaging on a computer system.
BACKGROUND
0002Instant messaging is a communications service that enables one user to communicate text in real time over the Internet to and from another user. Typically, the instant messaging service allows each a user to build a private list of other users, and for each listed user, provides an alert whenever another user on that private list is online. An instant messaging session may then be initiated.
0003While instant messaging applications are generally free, standalone programs used for simple chat-like communications, other real-time communication scenarios could benefit from having instant messaging communications. For example, enterprise personnel and others computer users such as students could benefit from being able to seamlessly communicate instant messages while working with other application programs. At present, however, instant messaging programs are independent of any other programs. What is needed is a way for other programs to access instant messaging functionality in a manner that benefits users who work in various real-time communication scenarios.
SUMMARY OF THE INVENTION
0004Briefly, the present invention is directed towards a system and method that provide application and other programs (e.g., operating system components) with access to an instant messenger service's functionality. In one implementation, an instant messaging program is separated into a user interface component by which users may send instant messages in a more traditional manner, and a background component (e.g., a daemon process) in which much of the communication-related structure and functionality of the instant messaging service is provided. An application programming interface allows programs to work with the background component, allowing instant messaging functionality to be integrated with other programs on a computer system. Further, the background component communicates integration data with other programs, allowing an application to richly interact with the instant messenger service.
0005In one implementation, an application programming interface (or interfaces) supports a primary client (e.g., the user interface application) that fully interacts with the messenger service, and one or more secondary clients (e.g., a word processor program). This secondary client can expose the contact list, and can also take advantage of complete instant messaging functionality, such as by launching the instant messenger user interface component and sending the user to the interface. In this implementation, the various components and client programs may communicate via a defined set of AppleEvents. Further, the background application is also responsible for communicating integration data with other select applications. These AppleEvents thus define the API that allows rich interaction with the Messenger service.
0006The various clients thus communicate with the messenger background component through the API set, and may also provide callback data to the messenger background component. Actions that client programs may perform via this API set include determining when the user signs in or signs out, and obtaining the instant messaging contact list, obtaining presence information as to who else is online, and so forth. Other operations that the client programs can perform include changing a stored password, changing the online status and changing the familiar name. Further, the client programs may initiate an instant message conversation with another user, obtain a list of currently online users (buddies), and initiate invitations to allow application sharing, remote control, gaming, and so forth. New functionality may be added to the messenger component and/or messenger user interface component, such as to add contacts from the messenger program.
0007The present invention thus allows an application (or suite of applications) to become an instant message hub by allowing users to communicate in real-time, based on presence information (e.g., which other users are signed in). Instant messaging access from programs may be provided in various ways, such as via an icon. Further, document collaboration using instant messaging is facilitated, such as by allowing a user to send an instant message or document to another user identified in a interlineations markup balloon.
0008Other advantages will become apparent from the following detailed description when taken in conjunction with the drawings, in which:
BRIEF DESCRIPTION OF THE DRAWINGS
0009<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram generally representing a computer system into which the present invention may be incorporated;
0010<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram generally representing an architecture that allows external clients to integrate with a messaging infrastructure, in accordance with various aspects of the present invention;
0011<figref idref="DRAWINGS">FIGS. 3A-3C</figref> comprise alternative architectures that allow external clients to integrate with a messaging infrastructure, in accordance with various aspects of the present invention;
0012<figref idref="DRAWINGS">FIG. 4</figref> is a is a screen shot showing how a client program can access instant messenger functionality in accordance with various aspects of the present invention;
0013<figref idref="DRAWINGS">FIG. 5</figref> is a screen shot showing an alternative way in which a client program can access instant messenger functionality in accordance with various aspects of the present invention;
0014<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram representing logic for enabling an instant messenger icon in accordance with various aspects of the present invention; and
0015<figref idref="DRAWINGS">FIG. 7</figref> is a flow diagram representing logic for enabling an instant messenger icon from a markup balloon in accordance with various aspects of the present invention.
DETAILED DESCRIPTION
0000Exemplary Operating Environment
0016<figref idref="DRAWINGS">FIG. 1</figref> illustrates an example of a suitable computing system environment on which the invention may be implemented. The computing system environment is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment <b>100</b> be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment.
0017The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
0018The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
0019With reference to <figref idref="DRAWINGS">FIG. 1</figref>, an exemplary system for implementing the invention includes a general purpose computing device in the form of a computer <b>110</b>. Components of the computer <b>110</b> may include, but are not limited to, a processing unit <b>120</b> containing one ore more processors, a system memory <b>130</b>, and a bus structure (e.g., memory controller/bus bridge) <b>135</b> that couples various system components including the system memory to the processing unit <b>120</b>. The bus structure <b>135</b> and/or other bus bridge mechanisms <b>138</b> may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus, and/or PCI-X.
0020The computer <b>110</b> typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer <b>110</b> and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the computer <b>110</b>. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer-readable media.
0021The system memory <b>130</b> includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and random access memory (RAM). A boot ROM <b>142</b>, containing the basic routines that help to transfer information between elements within computer <b>110</b>, such as during start-up, may be independently coupled to the system, as shown in <figref idref="DRAWINGS">FIG. 1</figref>. The memory typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by the processing unit <b>120</b>. By way of example, and not limitation, examples include a host operating system, a guest operating system, application programs, other program modules and program data.
0022The computer <b>110</b> may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, <figref idref="DRAWINGS">FIG. 1</figref> illustrates a hard disk drive <b>148</b> and interface <b>149</b> that reads from or writes to non-removable, nonvolatile magnetic media, an optical disk drive <b>155</b> and interface <b>156</b> that reads from or writes to a removable, nonvolatile optical disk such as a CD-ROM or DVD-ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, USB drives, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
0023The drives and their associated computer storage media, discussed above and illustrated in <figref idref="DRAWINGS">FIG. 1</figref>, provide storage of computer-readable instructions, data structures, program modules and other data for the computer <b>110</b>. For example, the hard disk drive <b>148</b> may store the host and guest operating systems, application programs, other program modules and program data. Note that these components may be the same as or different from those loaded in the memory <b>130</b>, although they are typically different instances.
0024A user may enter commands and information into the computer <b>110</b> through input devices such as a keyboard <b>162</b> and pointing device <b>163</b> (e.g., a mouse), and/or via other well-known input means including a tablet, electronic digitizer, microphone, trackball or touch pad. Other input devices not shown in <figref idref="DRAWINGS">FIG. 1</figref> may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit <b>120</b> through a wired and/or wireless input interface <b>165</b> that is coupled to the system such as via an I/O device and disk controller <b>170</b>, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB) port <b>172</b> and its controller <b>173</b>. Other mechanisms that may be connected to the controller <b>170</b> include a power controller <b>177</b>.
0025A monitor <b>180</b> or other type of display device is also connected to the system bus <b>121</b> via an interface, such as a video interface <b>181</b>. The monitor <b>180</b> may also be integrated with a touch-screen panel or the like. Note that the monitor and/or touch screen panel can be physically coupled to a housing in which the computing device <b>110</b> is incorporated, such as in a tablet-type personal computer. In addition, computers such as the computing device <b>110</b> may also include other peripheral output devices such as speakers <b>190</b> connected via audio circuitry <b>191</b> and/or audio jacks <b>192</b> and/or a printer, which may be connected through an output peripheral interface or the like.
0026The computer <b>110</b> may operate in a networked environment using logical connections to one or more remote computers, which may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer <b>110</b>. Such networks include a local area network (LAN) and a wide area network (WAN), which may be accessed via a modem <b>194</b> and modem interface <b>195</b> and/or an Ethernet interface <b>196</b> and jack <b>197</b> and/or, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
0000Instant Messaging for Other Programs
0027The present invention is generally directed towards a system and method by which various application programs and other programs (such as operating system components) can integrate with an instant messaging service. As will be understood, numerous ways to implement the present invention are feasible, and only some of the alternatives are described herein. For instance, many of the examples herein will be described with reference to a Macintosh-based operating system and architecture, using AppleEvents as a communication protocol. However, the present invention is not limited to any alternative described herein, nor is it limited to particular architecture, operating environment, platform and/or operating system. Rather, the present invention provides benefits and advantages in computing in general.
0028As represented in <figref idref="DRAWINGS">FIG. 2</figref>, there is shown an example architecture <b>200</b> in which a messenger service has been separated into two components, namely a messenger background component <b>202</b>, which may comprise a daemon process, and a messenger user interface (UI) component <b>204</b>. A first API (application programming interface) set <b>206</b> interfaces the messenger background component <b>202</b> with the messenger UI component <b>204</b>; traditionally, there has been no such separation.
0029In general, the messenger background component <b>202</b> is responsible for interfacing with a remote messenger server <b>208</b>, while the UI component <b>204</b> allows the user to interact with the messenger service. In essence, the user need not know about the separation, and, for example, may work with the UI component <b>204</b> and not recognize any difference from conventional standalone instant messaging systems. As can be readily appreciated, which functions are performed by the messenger background component <b>202</b> and which are performed by the messenger UI component <b>204</b> is somewhat arbitrary, except for efficiency purposes and avoiding duplication.
0030In one implementation, the messenger background component <b>202</b> and the UI component <b>204</b> communicate via a defined set of AppleEvents, that is, the set of AppleEvents defines the first API set <b>206</b>. It is understood, however, that any other protocols and/or ways to interface between components, including providing a library of function calls, providing defined methods, providing defined web service messages, and so forth are equivalent. For example, the components can be implemented in an object model, in which clients call object methods, or in a web services environment, in which a client calls a web service, with SOAP/XML (Simple Object Access Protocol/extensible Markup Language) messages exchanged. Some of these other alternatives are shown in <figref idref="DRAWINGS">FIGS. 3A-3C</figref>; e.g., in <figref idref="DRAWINGS">FIG. 3A</figref> there is shown background, UI and client objects <b>302</b>, <b>304</b> and <b>310</b>, respectively, while in <figref idref="DRAWINGS">FIG. 3B</figref> there is shown a single messenger object <b>320</b> with internal UI methods and data and some methods and data exposed to other clients <b>330</b>. <figref idref="DRAWINGS">FIG. 3C</figref> shows a web services environment, in which instant message functionality is accomplished via communications exchanged between a web service client <b>350</b>, a messenger web service <b>342</b> and a messenger UI web service <b>344</b>. For purposes of simplicity herein, the present invention will be primarily described with reference to <figref idref="DRAWINGS">FIG. 2</figref>, generally using AppleEvents for communications. In accordance with an aspect of the present invention, the messenger background component <b>202</b> may be accessed by other client programs <b>210</b> that are aware of the messenger background component <b>202</b>. Such programs may include application programs such as word processing programs, spreadsheet programs, web browsers, email programs, suites (such as Microsoft® Office) and/or project management programs. Other programs such as operating system components, utilities, debugging programs and so on may also interface with the messenger background component <b>202</b>. To this end, a second API set <b>212</b> is provided. As described below, the messenger background component <b>202</b> is also responsible for communicating integration data to the other programs <b>210</b>. In general, each program <b>210</b> represents a client that wants to start sessions with other users, wherein a session may be an instant message session (chat) or a file transfer. Other types of sessions, such as “app invites,” are feasible.
0031In one implementation, the messenger UI component <b>204</b> comprises a primary client that can fully interact with the messenger background component <b>202</b>. In general, the first API set <b>206</b> allows the messenger UI component <b>204</b> to perform any actions that a standalone program's user interface can perform, as if there was not any separation. The secondary client program or programs can interact with the messenger background component <b>202</b>, but generally have a more limited interaction. The second API set <b>210</b> may thus be a subset of the first API set <b>206</b>.
0032In general and as described below, the clients <b>210</b> communicate with the messenger background component <b>202</b> through the API set <b>212</b>, and may also provide callbacks to the messenger background component <b>202</b>. Actions that the other clients <b>210</b> may perform via the second API set <b>212</b> include determining when the user signs in or signs out, and obtaining the instant messaging contact list, obtaining presence information as to who else is online, and so forth. Further, the other clients <b>210</b> may take advantage of other instant messaging functionality by launching the messenger user interface component <b>204</b> and sending the user to the user interface component <b>204</b>, e.g., by transferring focus to a window of the user interface component <b>204</b>. Alternatively, the program could provide its own user interface, such as a dialog box or the like, or host the user interface component <b>204</b>. In another alternative, a client program <b>210</b> could send messages and data on its own via the messenger background component <b>202</b>, without invoking the user interface component <b>204</b>.
0033The operations that the client programs <b>210</b> can perform include sign-in/sign-out, changing a stored password, changing the online status and changing the familiar name. Further, the client programs may initiate an instant message conversation with another user, obtain a list of currently online users (buddies), and initiate invitations to allow application sharing, remote control, gaming, and so forth.
0034To this end, the client programs communicate with the messenger background component <b>202</b>, which may be accomplished in various ways in alternative implementations. For example, one way (in a suitable environment) is via AppleEvents, that is, while the messenger component <b>202</b> is running, the messenger component <b>202</b> can receive AppleEvents from the other client programs <b>210</b>. Further, the messenger component <b>202</b> may export functions, e.g., instead of sending AppleEvents, the clients may map the exported functions and call them as if they were in a library. A shared library solution is similar to the exported functions, but cannot work without a background application running.
0035Exporting functions is straightforward from the client program's perspective, since the client program does not need to construct and send events, but rather simply calls functions as if part of a library. However, every application runs in its own address space, leading to problems. For example, consider two clients, A and B, which use the messenger component's API <b>212</b>. If client A decides to change the user's friendly name, the new name will be stored in some variable local to client's A address space; not only client B will never see this change, but neither will the messenger component <b>202</b>. Shared memory may be used to store relevant information, however this does not solve the problem completely, since every client (as well as the messenger component <b>202</b>) will need to be pooling the shared memory checking for changes. Further, the shared memory implementation depends on the underlying platform. Note that a shared library solution has similar issues, but needs to have an application running to receive messages from the server, and thus is a less desirable solution.
0036Thus, a combination of events and function calls is one suitable implementation, e.g., while the APIs are implemented using AppleEvents, an additional shared library may be created to translate function calls to corresponding AppleEvents. At the same time, this shared library may contain functions that capture the AppleEvents sent by the messenger component <b>202</b> and translate them into callbacks in the client programs <b>210</b>. As a result, for example, automation scripts may use AppleEvents, while client programs such as a browser may use the shared library without needed to understand the underlying mechanism.
0037In any event, the underlying events model will generally be described herein. For example, when a client program wants to use instant messaging functionality, the client may send a “RegisterApplication” event. The messenger component <b>202</b> maintains a list of registered clients, and sends appropriate AppleEvents back when some relevant property has changed. In one particular implementation, the messenger program's contact list is stored in a local cache that is filled the first time the client program calls the “GetContact” function, and will be updated each time a callback comes from the messenger component. This contact list can be stored using the structures described below.
0038The messenger background component <b>202</b> sends different events to the client programs, including callbacks as described below.
0039Note that some new functionality may be added to the client application <b>210</b> as a result of integration with the messenger component <b>202</b>. One examples of this includes adding contacts, which may launch the messenger user interface component <b>204</b>, and provide an empty “Add Contact” wizard as if the user had chosen the “Add a Contact . . . ” option in the messenger user interface component <b>204</b>. For such an implementation, the “by email” dialog may be started to pre-populate the e-mail address edit box with the selected address. Sending attachments (files) may be accomplished by calling the code that starts file transfers, as when dragging and dropping a file in the contact table. Viewing instant messaging history for a contact is another enhancement.
0040To use functionality from a client program <b>210</b>, during a sign-in process, a message request launches the messenger user interface component <b>204</b> and behaves as if the user had selected “Sign In . . . ” from the user interface main menu. That results in signing in automatically if the password is saved, or asking the user to enter the password (and any related data) if not saved. The client can also obtain sign-in status, e.g., a current implementation of “GetSignInStatus” receives an email address and evaluates the status of that logon user. The functionality may respond with the current user's status.
0041Data structures are provided to store the instant messenger contact list, as set forth in the tables below: <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="161PT" align="left" /><thead><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>typedef struct</entry></row><row><entry /><entry>{</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="98PT" align="left" /><tbody valign="top"><row><entry /><entry> Str255</entry><entry>stEmail;</entry></row><row><entry /><entry> UniChar</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="161PT" align="left" /><tbody valign="top"><row><entry /><entry> rgwchFriendlyName[256];</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="98PT" align="left" /><tbody valign="top"><row><entry /><entry> UInt32</entry><entry>status;</entry></row><row><entry /><entry> Boolean</entry><entry>fBlocked;</entry></row><row><entry /><entry> uchar</entry><entry>unused[3];</entry></row><row><entry /><entry>} IMsgrContact;</entry></row><row><entry /><entry namest="OFFSET" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0042To represent the contact list: <tables id="TABLE-US-00002" num="2"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="OFFSET" colwidth="49PT" align="left" /><colspec colname="1" colwidth="63PT" align="left" /><colspec colname="2" colwidth="105PT" align="left" /><thead><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="2" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>typedef struct</entry><entry /></row><row><entry /><entry>{</entry></row><row><entry /><entry> SInt32</entry><entry>cch;</entry></row><row><entry /><entry> IMsgrContact</entry><entry>*pcContacts;</entry></row><row><entry /><entry>} IMsgrContactList;</entry></row><row><entry /><entry namest="OFFSET" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0043In this manner, the present invention thus allows an application (or suite of applications) to become a central communications hub by allowing users to communicate in real-time, based on presence information (e.g., which other users are signed in). In other words, any program may offer presence and instant messaging capabilities, whereby instant messaging becomes a highly-useful communication option along the lines of telephone and e-mail. For example, the option to send an instant message may be presented alongside user interface entry points that were previously e-mail only. Further, new entry points will allow users to obtain messenger information of other users (“buddy” information) such as to display a username and online/offline status, and access messenger-specific functionality including sign-in to messenger, add contact to messenger, send and instant message and view recent instant messenger conversations. Note that at present, email-based contacts and messenger buddies comprise distinct lists that are not managed together, but these may be merged based on the present invention, e.g., the buddy list (or different buddy lists) may be a subset of at least one contacts list.
0044Instant messaging access may be provided in a number of ways. For example, a messenger icon may be provided on an appropriate application toolbar such as a reviewing toolbar, such that that when the icon is clicked, the program provides a dropdown menu or the like that lists any online buddies. These options allow the user to either initiate an instant message session or send the document for review via the messenger's file transfer capabilities. Other mechanisms can be used to access instant messaging options, such as right-clicking at an appropriate location, pressing a keyboard key combination, and any other suitable way to instruct the program that instant messaging is desired, e.g., clicking on a pop-up notification shown within the program that indicates that another user has signed in.
0045By way of example, <figref idref="DRAWINGS">FIG. 4</figref> shows a screenshot <b>400</b> of a word processing program in which an instant messenger icon <b>402</b> is provided in a toolbar. As represented in <figref idref="DRAWINGS">FIG. 5</figref>, clicking this icon <b>402</b> may, for example, result in a dropdown menu <b>502</b>, which may have a submenu <b>506</b> comprising the buddy list with current status information. Thus, the instant messenger icon may be used to list online buddies, from which the user may initiate an instant messaging session or send the document (the one currently being edited) for review via messenger's file transfer feature.
0046In accordance with another aspect of the present invention, there is provided a mechanism to facilitate document collaboration using instant messaging. For example, word processing programs are on example of a by which programs that may be used in collaborative environments, with a document shared among one or more originators and reviewers. One way to maintain the integrity of a document is to track which user made which changes, so that anyone reviewing the edited document can trace specific changes back to their originators. To this end, interlineations <b>404</b> (<figref idref="DRAWINGS">FIG. 4</figref>), or markup balloons, represent document changes that are shown in a manner that does not obscure the original document.
0047The present invention may be used to integrate applications and instant messaging by incorporating document sharing directly into the workflow, without having to leave the program. More particularly, a markup balloon contains an originator/reviewer label. By connecting this label to an instant message address, the present invention can provide a direct way for a user to communicate with another user via instant messaging. In one implementation, in documents with many markup balloons, having the <Originator/Reviewer Name> and <Type of Change:> highlighted in the beginning of their respective balloon body parts allows for more effective navigation.
0048Quick and seamless collaboration between users via instant messaging, when working on a shared document, is accomplished by having a button <b>406</b> that appears on the comment or change bubbles that provides access to an instant message conversation. To this end, the name of the user who created the bubble is taken (from the Word document), and the user looked up in a contact list, locating an instant messaging address when available. If an instant messaging address is available, this button will be enabled and will allow the user to launch an instant messaging conversation. In one implementation, the button is only enabled if there is an exact user name match and as long as there are no name conflicts.
0049The general logic of an “Author-to-IM-contact matching” is represented in <figref idref="DRAWINGS">FIG. 6</figref>, where the author name is looked up in a contacts for a matching display name at step <b>602</b>, and evaluated for a match at step <b>604</b>. If that succeeds, it is used. Otherwise, if the author name looks like an email address as tested via step <b>606</b>, an attempt is made try to match it against the messenger buddy list at step <b>608</b>; if that succeeds as evaluated at step <b>610</b>, it is used.
0050If exactly one contact is found at step <b>612</b>, the instant messaging address is looked up at step <b>614</b> (if there is no instant messaging address, the email address is used). That contact is then looked up in the messenger list (step <b>616</b>). If found and the user is online (step <b>618</b>), the button (e.g., <b>406</b> of <figref idref="DRAWINGS">FIG. 4</figref>) is enabled.
0051In one particular implementation represented in <figref idref="DRAWINGS">FIG. 7</figref>, the comment bubble code is enabled by obtaining the user name for the current bubble, (step <b>700</b>) which is found in a ABX.pxstzBubbleAuthor field. A function named use FGetContactNameRange is used at step <b>704</b> to determine if the author has contact information. Note that this function allows the mechanism to determine if there is exactly one match for the name at step <b>706</b>; if more matches are found, the button will be disabled because this implementation supports only a single match. This call also uses a cached list of contacts, providing performance benefits.
0052Step <b>708</b> represents obtaining the instant messaging address information for that contact, using email if no instant messaging address is explicitly specified. Step <b>710</b> looks up that instant messaging address in the messenger list. If it exists with the appropriate online status (step <b>712</b>), the button will be operational via step <b>714</b>.
0000Programming Interface
0053The exported functionality is divided into four parts, with the “basic functionality” comprising an enhancement of what other messenger services support. The basic functionality allows the client to sign-in/out, get/set user properties and open a preferences dialog. Two other parts, “Contacts” and “Groups” allow the client to manage contacts and groups, respectively, generally by adding, removing and getting properties such as name or status. A “Sessions” part allows the client to register in order to receive callbacks from the messenger component <b>202</b>, and initiate sessions with other users to send messages, files, and so forth. This part also implements lock and key functionality, that is, functions and those which require the API to be “unlocked” verify that the calling program is authentic, in order to avoid third party applications faking AppIds and making the messenger component <b>202</b> believe it is another client that unlocked the interface. This may be accomplished by checking the process identifier of the AppleEvent sender.
0000Basic Functionaity
0000<ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0054"> Sign in/out </li><li id="ul0002-0002" num="0055"> Get/set sign in name </li><li id="ul0002-0003" num="0056"> Get sign in status </li><li id="ul0002-0004" num="0057"> Get/set friendly name </li><li id="ul0002-0005" num="0058"> Get MSN Messenger version </li><li id="ul0002-0006" num="0059"> Show preferences </li><li id="ul0002-0007" num="0060"> Get Hotmail count </li><li id="ul0002-0008" num="0061"> Send Instant message </li><li id="ul0002-0009" num="0062"> Send file </li><li id="ul0002-0010" num="0063"> Send Hotmail </li></ul></li></ul>
0064Callbacks <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0065"> On sign in/out </li><li id="ul0004-0002" num="0066"> On status change </li><li id="ul0004-0003" num="0067"> On friendly name change </li><li id="ul0004-0004" num="0068"> On Hotmail count change </li></ul></li></ul>
0069Notes that to have callbacks, RegisterApplication and UnRegisterApplication or the like may be provided (e.g., in the “Sessions” section).
0000Contacts
0000<ul id="ul0005" list-style="none"><li id="ul0005-0001" num="0000"><ul id="ul0006" list-style="none"><li id="ul0006-0001" num="0070"> Get contact count </li><li id="ul0006-0002" num="0071"> Start add contact </li><li id="ul0006-0003" num="0072"> Remove a contact </li><li id="ul0006-0004" num="0073"> Get contact properties (sign-in name, friendly name, sign-in status block/page status) </li><li id="ul0006-0005" num="0074"> Block/unblock contact </li><li id="ul0006-0006" num="0075"> View instant message history </li><li id="ul0006-0007" num="0076"> Get whole contact list </li></ul></li></ul>
0077Callbacks <ul id="ul0007" list-style="none"><li id="ul0007-0001" num="0000"><ul id="ul0008" list-style="none"><li id="ul0008-0001" num="0078"> On add/remove contact </li><li id="ul0008-0002" num="0079"> On contact property changed <br /> Groups </li><li id="ul0008-0003" num="0080"> Get group count </li><li id="ul0008-0004" num="0081"> Add a new group </li><li id="ul0008-0005" num="0082"> Remove a group </li><li id="ul0008-0006" num="0083"> Rename a group </li><li id="ul0008-0007" num="0084"> Get/set group name </li><li id="ul0008-0008" num="0085"> Get whole group list </li><li id="ul0008-0009" num="0086"> Move/Copy contact between groups </li><li id="ul0008-0010" num="0087"> Remove contact from group </li></ul></li></ul>
0088Callbacks <ul id="ul0009" list-style="none"><li id="ul0009-0001" num="0000"><ul id="ul0010" list-style="none"><li id="ul0010-0001" num="0089"> On add/remove group </li><li id="ul0010-0002" num="0090"> On group name changed </li><li id="ul0010-0003" num="0091"> On contact moved/copied </li><li id="ul0010-0004" num="0092"> On contact removed from group <br /> Sessions </li><li id="ul0010-0005" num="0093"> Register/unregister application </li><li id="ul0010-0006" num="0094"> Get lock status </li><li id="ul0010-0007" num="0095"> Request/responde challenge </li></ul></li></ul>
0096Callbacks <ul id="ul0011" list-style="none"><li id="ul0011-0001" num="0000"><ul id="ul0012" list-style="none"><li id="ul0012-0001" num="0097"> On challenge </li><li id="ul0012-0002" num="0098"> On result </li><li id="ul0012-0003" num="0099"> On enable </li></ul></li></ul>
0100In one implementation, a generic method is used that reads “event descriptions” from a static table. These event descriptions contain the event number, the type for each parameter, and the function/method to call after getting the parameters. As a result, adding new functionality to the API is straightforward, and is performed by adding a new entry to the table, without having to use the main method or add methods to get the parameters from an AppleEvent. Note that the opposite may be done to implement callbacks, e.g., by including in the code functions or methods equivalent to the callbacks. Each of these methods will generate an AppleEvent and send it to the client application. Note that these two sets of APIs may be reused when implementing a Messenger Shared Library to be loaded by the client program. Callbacks require locating the proper places to add calls to the equivalent functions, e.g., if an application requests to change the user friendly name, the messenger component <b>202</b> receives the event, inform the server, updates the messenger interface and then calls back other clients to inform them of the new name.
0101Clients may also use version control in order to verify which APIs are implemented in the version of the messenger component that is running. Calling an IMsgr_Version function will return a major and a minor version number, by which the client may verify compatibility. Additionally, when introducing new APIs in subsequent versions, the new corresponding functions in the shared library may check for the messenger component version and return a “function not implemented” error.
0102In one implementation, the code contains an AppleEvent dictionary stored in an aedt resource, which specifies the translation between FOUR_CHAR_CODE and integer event IDs. This resource is contained in the file BMMSApp.rsrc.
0103An event related data structure is shown below, where N is the maximum number of parameters allowed in an event or function: <ul id="ul0013" list-style="none"><li id="ul0013-0001" num="0000"><ul id="ul0014" list-style="none"><li id="ul0014-0001" num="0104"> EventDescription=<AENumber, FunctionPointer, ParamType1, ParamType2, . . . , ParamTypeN, NULL>. </li></ul></li></ul>
0105In one implementation, the number is three, with the structure implemented in a series of macros that automatically generate functions that read each of the parameters from an AppleEvent and store them into variables; to later call an implementation function that takes them as input parameters. The table contains AENumber and FunctionPointer in each record.
0106IMsgrSessionManager is a class that is basically a list of registered programs; registering assigns an identifier to the program and adds it to the list, while unregistering removes the specified program. There is only one session manager: <ul id="ul0015" list-style="none"><li id="ul0015-0001" num="0000"><ul id="ul0016" list-style="none"><li id="ul0016-0001" num="0107"> Application=<AppId, Name, Lock> <br /> where AppId is an identifier for the application, such as the operating system process ID, and Lock is the object that handles the lock and key status of the application. </li></ul></li></ul>
0108The following describe an internal AppleEvents implementation, which is use to communicate; for events except IMsgrSessionManager_RegisterApplication, IMsgrSessionManager_UnRegisterApplication, and IMsgr_GetVersion, if the Application is not registered to Messenger App, nothing will be done and an error returned.
0109The events will have class id “Rmsg”, <tables id="TABLE-US-00003" num="3"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>Basic functionality</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_SignIn</entry></row><row><entry>Try to sign in using the email and password provided in the message.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Msg0</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MemA</entry><entry>Char</entry><entry>Email address</entry></row><row><entry /><entry>MpwD</entry><entry>Char</entry><entry>User password</entry></row><row><entry /><entry>Mchk</entry><entry>Long</entry><entry>Checksum (not used, must be</entry></row><row><entry /><entry /><entry /><entry>0)</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12101</entry><entry>User already signed in</entry></row><row><entry /><entry>−12102</entry><entry>Cannot access preferences file</entry></row><row><entry /><entry>−12103</entry><entry>Already signing in/signing out</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_AutoSignIn</entry></row><row><entry>Will try to sign in using the default credentials stored in the preference</entry></row><row><entry>file.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Masi</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>None</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12101</entry><entry>User already signed in</entry></row><row><entry /><entry>−12102</entry><entry>Cannot access preferences file</entry></row><row><entry /><entry>−12103</entry><entry>Already signing in/signing out</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_SignOut</entry></row><row><entry>Try to sign out.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Msg1</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>None</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row><row><entry /><entry>−12102</entry><entry>Cannot access preferences file</entry></row><row><entry /><entry>−12103</entry><entry>Signing in/already signing out</entry></row><row><entry /><entry>−12106</entry><entry>Checksum does not match</entry></row><row><entry /><entry>−12107</entry><entry>Email doesn't match currently signed in</entry></row><row><entry /><entry /><entry>user</entry></row><row><entry /><entry>−12108</entry><entry>Password doesn't match currently signed in</entry></row><row><entry /><entry /><entry>user</entry></row><row><entry /><entry>−12109</entry><entry>User selected cancel in the quit alert</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_ShowSignInDialog</entry></row><row><entry>Show the sign in dialog.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MVsi</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>None</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12101</entry><entry>User already signed in</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_GetSignInName</entry></row><row><entry>Get the current user's email address.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGsn</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>Char</entry><entry>Email address of the signed in user</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_SetDefaultSignInName</entry></row><row><entry>Set the default sign-in user's email address stored in Messenger's local</entry></row><row><entry>preferences.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MSsn</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Msin</entry><entry>Char</entry><entry>Email address</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>(OSErr)</entry><entry>cannot write preferences file</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_SetPassword</entry></row><row><entry>Changes the default password stored in messenger's local preferences.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Msg3</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MemA</entry><entry>Char</entry><entry>Email address</entry></row><row><entry /><entry>MpwD</entry><entry>Char</entry><entry>User password</entry></row><row><entry /><entry>Mchk</entry><entry>Long</entry><entry>Checksum (not used, must be</entry></row><row><entry /><entry /><entry /><entry>0)</entry></row><row><entry /><entry>MnpW</entry><entry>Char</entry><entry>New password</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row><row><entry /><entry>−12106</entry><entry>Checksum does not match</entry></row><row><entry /><entry>−12107</entry><entry>Email doesn't match currently signed in</entry></row><row><entry /><entry /><entry>user</entry></row><row><entry /><entry>−12108</entry><entry>Password doesn't match currently signed in</entry></row><row><entry /><entry /><entry>user</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_GetStatus</entry></row><row><entry>Get the current user's online status.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGst</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>UInt32</entry><entry>Online status.</entry></row><row><entry /><entry /><entry>‘FLN’: offline</entry></row><row><entry /><entry /><entry>‘NLN’: online</entry></row><row><entry /><entry /><entry>‘HDN’: hidden</entry></row><row><entry /><entry /><entry>‘BSY’: busy</entry></row><row><entry /><entry /><entry>‘IDL’: idle</entry></row><row><entry /><entry /><entry>‘BRB’: be right back</entry></row><row><entry /><entry /><entry>‘AWY’: away</entry></row><row><entry /><entry /><entry>‘PHN’: on the phone</entry></row><row><entry /><entry /><entry>‘LUN’: out to lunch</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_SetStatus</entry></row><row><entry>Changes the current user's online status.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Msg4</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MemA</entry><entry>Char</entry><entry>Email address</entry></row><row><entry /><entry>MpwD</entry><entry>Char</entry><entry>User password</entry></row><row><entry /><entry>Mchk</entry><entry>Long</entry><entry>Checksum (not used, must be</entry></row><row><entry /><entry /><entry /><entry>0)</entry></row><row><entry /><entry>MnsT</entry><entry>Uint32</entry><entry>New status</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row><row><entry /><entry>−12106</entry><entry>Checksum does not match</entry></row><row><entry /><entry>−12107</entry><entry>Email doesn't match currently signed in</entry></row><row><entry /><entry /><entry>user</entry></row><row><entry /><entry>−12108</entry><entry>Password doesn't match currently signed in</entry></row><row><entry /><entry /><entry>user</entry></row><row><entry /><entry>−12110</entry><entry>Status same as requested</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_GetFriendlyName</entry></row><row><entry>Get the current user's email address.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGbn</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>Unicode text</entry><entry>Buddy friendly name</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_SetFriendlyName</entry></row><row><entry>Changes the current user's buddy name.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Msg2</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MemA</entry><entry>Char</entry><entry>Email address</entry></row><row><entry /><entry>MpwD</entry><entry>Char</entry><entry>User password</entry></row><row><entry /><entry>Mchk</entry><entry>Long</entry><entry>Checksum (not used, must be</entry></row><row><entry /><entry /><entry /><entry>0)</entry></row><row><entry /><entry>MnnM</entry><entry>Unicode text</entry><entry>New friendly name</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row><row><entry /><entry>−12106</entry><entry>Checksum does not match</entry></row><row><entry /><entry>−12107</entry><entry>Email doesn't match currently signed in</entry></row><row><entry /><entry /><entry>user</entry></row><row><entry /><entry>−12108</entry><entry>Password doesn't match currently signed in</entry></row><row><entry /><entry /><entry>user</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_Preferences</entry></row><row><entry>Brings up the preferences dialog</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Pref</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>None</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_GetVersion</entry></row><row><entry>Returns Messenger's version number.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Mver</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>Char</entry><entry>Version number (currently 3.0)</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_GetSignInStatus</entry></row><row><entry>Get the current sign-in status for the specified user.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGss</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MemA</entry><entry>Char</entry><entry>Email address</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>Uint32</entry><entry>Signed in/Not signed in/Signing in or</entry></row><row><entry /><entry /><entry>out</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_GetAnySignInStatus</entry></row><row><entry>Get the current sign-in status for the current user.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGAs</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>UInt32</entry><entry>Signed in/Not signed in/Signing in or</entry></row><row><entry /><entry /><entry>out</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_GetUnreadEmailCount</entry></row><row><entry>Get the current count of Hotmail's inbox unread messages.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MUEC</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>Uint32</entry><entry>Email count</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_ShowContactWindow</entry></row><row><entry>Show the main window and bring it to the front.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCWn</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>None</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><tbody valign="top"><row><entry>Callbacks</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgr_OnSignIn</entry></row><row><entry>Sent when sign-in process finishes successfully or failing.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Masi</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MBoo</entry><entry>Boolean</entry><entry>Did the process finish</entry></row><row><entry /><entry /><entry /><entry>successfully</entry></row><row><entry /><entry>Mrtn</entry><entry>SInt16</entry><entry>Error code if sign-in</entry></row><row><entry /><entry /><entry /><entry>failed</entry></row><row><entry /><entry>MEMs</entry><entry>Str255</entry><entry>Error description if sign-</entry></row><row><entry /><entry /><entry /><entry>in failed</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgr_OnSignOut</entry></row><row><entry>Sent when a user logged off successfully.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="175PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Msg1</entry></row><row><entry>Parameters</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgr_OnMyFriendlyNamechange</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Msg3</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MnnM</entry><entry>Unicode text</entry><entry>New friendly name</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgr_OnMyStatusChange</entry></row><row><entry>Sent when the user online status is changed successfully.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Msg4</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MnsT</entry><entry>UInt32</entry><entry>New user status</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgr_OnNewEmail</entry></row><row><entry>Sent when a new email message is received by Hotmail.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MNEm</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mfrn</entry><entry>Unicode text</entry><entry>Sender's friendly name</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgr_OnUnreadEmailChange</entry></row><row><entry>Sent when Hotmail's inbox unread email message count changes.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MUEC</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MEmC</entry><entry>Long Integer</entry><entry>New unread email count</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgr_OnQuit</entry></row><row><entry>Sent when the Messenger Daemon is quitting.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="175PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Mqui</entry></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0110<tables id="TABLE-US-00004" num="4"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Contacts</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContacts_Count</entry></row><row><entry>Get the number of contacts on messenger's contact list</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCCo</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>Long</entry><entry>Number of contacts</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContacts_GetItem</entry></row><row><entry>Get the ID of the contact at the specified index</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCIt</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mind</entry><entry>Long</entry><entry>Index for the contact</entry></row><row><entry /><entry /><entry /><entry>inside the contacts list</entry></row><row><entry>Return value</entry><entry>Char</entry><entry>Contact ID</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Invalid index</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContacts_Add</entry></row><row><entry>Brings up the add contact dialog to add contacts in the default group.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCAd</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>None</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContacts_Remove</entry></row><row><entry>Remove a contact from all the groups</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCRm</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact ID to be removed.</entry></row><row><entry /><entry /><entry /><entry>Returned by</entry></row><row><entry /><entry /><entry /><entry>IMsgrContacts_GetItem.</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Invalid Contact ID</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContacts_GetList</entry></row><row><entry>Get the contact list.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCGL</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>AEDescList</entry><entry>AEDescList of AERecord, where each</entry></row><row><entry /><entry /><entry>record represents a contact.Each AERecord</entry></row><row><entry /><entry /><entry>contains:</entry></row><row><entry /><entry /><entry>Char: sign-in name</entry></row><row><entry /><entry /><entry>Unicode text: friendly name</entry></row><row><entry /><entry /><entry>UInt16: status</entry></row><row><entry /><entry /><entry>Boolean: blocked?</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContacts_ImportContactList</entry></row><row><entry>Add the contacts specified in the list.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCIL</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>IDsc</entry><entry>AERecord</entry><entry>The record contains:</entry></row><row><entry /><entry /><entry /><entry>XML (Char): XML string</entry></row><row><entry /><entry /><entry /><entry>containing the contacts as</entry></row><row><entry /><entry /><entry /><entry>in a ctt file</entry></row><row><entry /><entry /><entry /><entry>Mgnm (Unicode text):</entry></row><row><entry /><entry /><entry /><entry>optional group name</entry></row><row><entry /><entry /><entry /><entry>fPCt (Boolean): preserve</entry></row><row><entry /><entry /><entry /><entry>the contacts already in the</entry></row><row><entry /><entry /><entry /><entry>group</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>USer not signed in</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContact_GetSignInName</entry></row><row><entry>Gets the contact's email address.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCSN</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>Char</entry><entry>Contact's email address</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id is invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContact_GetFriendlyName</entry></row><row><entry>Gets the contact's friendly name.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCFN</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>Unicode text</entry><entry>Contact's friendly name</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id is invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContact_GetStatus</entry></row><row><entry>Gets the contact's status.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCSt</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>Uint32</entry><entry>Contact's status (see IMsgr_GetStatus)</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id is invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContact_CanPage</entry></row><row><entry>Check if the user can page this contact.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCCP</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>Boolean</entry><entry>Contact's page status</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id is invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContact_GetBlocked</entry></row><row><entry>Check if the user decided to block this contact.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCGB</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>Boolean</entry><entry>Contact's block status</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id is invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContact_SetBlocked</entry></row><row><entry>Try to set the blocked status for a contact.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCSB</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry>MBoo</entry><entry>Boolean</entry><entry>New block status</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id is invalid</entry></row><row><entry /><entry>−12200</entry><entry>Block/unblock failed (current user not</entry></row><row><entry /><entry /><entry>signed in or user canceled in the dialog)</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContact_AddToList</entry></row><row><entry>Bring up the add contact dialog and prepopulate the email field with the</entry></row><row><entry>specified address</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCAL</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>User not signed in</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrContact_ViewIMHistory</entry></row><row><entry>Show instant message history for the specified contact.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MVHi</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>User not signed in</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0111<tables id="TABLE-US-00005" num="5"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Callbacks</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrContacts_OnAdd</entry></row><row><entry>Sent when a new contact is added to the buddy list.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="84PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MAdc</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MCRc</entry><entry>AERecord</entry><entry>Full contact information as</entry></row><row><entry /><entry /><entry /><entry>in IMsgrContacts_GetList</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrContacts_OnRemove</entry></row><row><entry>Sent when a contact is removed from the buddy list.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="84PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MRmC</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrContact_OnFriendlyNameChange</entry></row><row><entry>Sent when a contact's friendly name changed.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="84PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCFN</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry>Mfrn</entry><entry>Unicode text</entry><entry>New friendly name</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrContact_OnStatusChange</entry></row><row><entry>Sent when a contact's status changed.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="84PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCSt</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry>Mstt</entry><entry>UInt32</entry><entry>New contact's status</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrContact_OnPagerChange</entry></row><row><entry>Sent when a contact's pager status changed.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="84PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCCP</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry>MBoo</entry><entry>Boolean</entry><entry>New pager status</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrContact_OnBlockedChange</entry></row><row><entry>Sent when a contact's blocked status changed.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="49PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="84PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MCGB</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry>MBoo</entry><entry>Boolean</entry><entry>New blocked status</entry></row><row><entry namest="1" nameend="4" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0112<tables id="TABLE-US-00006" num="6"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Groups</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroups_Count</entry></row><row><entry>Get the number of groups on messenger's contact list</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGCo</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>Long</entry><entry>Number of groups</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroups_GetItem</entry></row><row><entry>Get the ID of the contact at the specified index</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGIt</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mind</entry><entry>Long</entry><entry>Index for the group inside</entry></row><row><entry /><entry /><entry /><entry>the groups list</entry></row><row><entry>Return value</entry><entry>Long</entry><entry>Group ID</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12111</entry><entry>Invalid index</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroups_Create</entry></row><row><entry>Get the ID of the contact at the specified index</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGCr</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgnm</entry><entry>Char</entry><entry>Name to be given to the</entry></row><row><entry /><entry /><entry /><entry>group</entry></row><row><entry>Return value</entry><entry>none</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroups_Remove</entry></row><row><entry>Get the ID of the contact at the specified index</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGRm</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgid</entry><entry>Long</entry><entry>Group ID to be removed.</entry></row><row><entry /><entry /><entry /><entry>Returned by</entry></row><row><entry /><entry /><entry /><entry>IMsgrGroups_GetItem.</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12111</entry><entry>Invalid group ID</entry></row><row><entry /><entry>−12112</entry><entry>Group cannot be removed because it is not</entry></row><row><entry /><entry /><entry>empty</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroups_RemoveNamedGroup</entry></row><row><entry>Get the ID of the contact at the specified index</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGRN</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgnm</entry><entry>Unicode</entry><entry>Name of the group to be</entry></row><row><entry /><entry /><entry>string</entry><entry>removed</entry></row><row><entry /><entry>fPCt</entry><entry>Boolean</entry><entry>Preserve contacts</entry></row><row><entry /><entry>QIET</entry><entry>Boolean</entry><entry>Don't show any dialogs</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>User not signed in</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroups_GetList</entry></row><row><entry>Get the group list.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGGL</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>AEDescList</entry><entry>AEDescList of AERecord, where each</entry></row><row><entry /><entry /><entry>record represents a contact.Each AERecord</entry></row><row><entry /><entry /><entry>contains:</entry></row><row><entry /><entry /><entry>SInt32: service type</entry></row><row><entry /><entry /><entry>Long: group ID</entry></row><row><entry /><entry /><entry>Unicode text: group name</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroup_GetName</entry></row><row><entry>Get group name</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGNm</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgid</entry><entry>long</entry><entry>Group ID whose name we</entry></row><row><entry /><entry /><entry /><entry>want to get Returned by</entry></row><row><entry /><entry /><entry /><entry>IMsgrGroups_GetItem.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>Unicode text</entry><entry>Group name</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12111</entry><entry>Group ID invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroup_SetName</entry></row><row><entry>Rename a group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGRn</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgid</entry><entry>Long</entry><entry>Group ID to be renamed.</entry></row><row><entry /><entry /><entry /><entry>Returned by</entry></row><row><entry /><entry /><entry /><entry>IMsgrGroups_GetItem.</entry></row><row><entry /><entry>Mgnm</entry><entry>Unicode text</entry><entry>New group name</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12111</entry><entry>Group ID invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroup_MoveContact</entry></row><row><entry>Move a contact from one group to another</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGMv</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgif</entry><entry>long</entry><entry>Group ID containing the</entry></row><row><entry /><entry /><entry /><entry>contact</entry></row><row><entry /><entry>Mgid</entry><entry>Long</entry><entry>Group ID where we want to</entry></row><row><entry /><entry /><entry /><entry>move the contact</entry></row><row><entry /><entry>Mcid</entry><entry>Char</entry><entry>Contact ID we want to move</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact ID invalid</entry></row><row><entry /><entry>−12111</entry><entry>Group ID invalid</entry></row><row><entry /><entry>−12113</entry><entry>Contact is not included in original group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroup_CopyContact</entry></row><row><entry>Copy a contact to another group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGCp</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgid</entry><entry>Long</entry><entry>Group ID where we want to</entry></row><row><entry /><entry /><entry /><entry>copy the contact</entry></row><row><entry /><entry>Mcid</entry><entry>Char</entry><entry>Contact ID we want to copy</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact ID invalid</entry></row><row><entry /><entry>−12111</entry><entry>Group ID invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroup_RemoveContact</entry></row><row><entry>Remove a contact from the specified group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGRC</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgid</entry><entry>Long</entry><entry>Group ID where we want to</entry></row><row><entry /><entry /><entry /><entry>remove the contact from</entry></row><row><entry /><entry>Mcid</entry><entry>Char</entry><entry>Contact ID we want to</entry></row><row><entry /><entry /><entry /><entry>remove</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact ID invalid</entry></row><row><entry /><entry>−12111</entry><entry>Group ID invalid</entry></row><row><entry /><entry>−12113</entry><entry>Contact is not included in group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrGroup_ContainsContact</entry></row><row><entry>Check if the group contains a contact</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="42PT" align="left" /><colspec colname="4" colwidth="91PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MGCC</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mgid</entry><entry>Long</entry><entry>Group ID where we want to</entry></row><row><entry /><entry /><entry /><entry>search for the contact</entry></row><row><entry /><entry>Mcid</entry><entry>Char</entry><entry>Contact ID we want to find</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>Boolean</entry><entry>Boolean value specifying if the contact is</entry></row><row><entry /><entry /><entry>included in the group or not</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12105</entry><entry>Contact ID invalid</entry></row><row><entry /><entry>−12111</entry><entry>Group ID invalid</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0113<tables id="TABLE-US-00007" num="7"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Callbacks</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry>DMsgrGroups_OnAdd</entry></row><row><entry /><entry>Sent when a group is added</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="5"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="77PT" align="left" /><tbody valign="top"><row><entry /><entry>Event ID</entry><entry>MGCr</entry><entry /><entry /></row><row><entry /><entry>Parameters</entry></row><row><entry /><entry /><entry>Mgid</entry><entry>Long</entry><entry>Group Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry>DMsgrGroups_OnRemove</entry></row><row><entry /><entry>Sent when a group is removed</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="5"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="77PT" align="left" /><tbody valign="top"><row><entry /><entry>Event ID</entry><entry>MGRm</entry><entry /><entry /></row><row><entry /><entry>Parameters</entry></row><row><entry /><entry /><entry>Mgid</entry><entry>Long</entry><entry>Group Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry>DMsgrGroup_OnNamechange</entry></row><row><entry /><entry>Sent when a group name changes</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="5"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="77PT" align="left" /><tbody valign="top"><row><entry /><entry>Event ID</entry><entry>MGRn</entry><entry /><entry /></row><row><entry /><entry>Parameters</entry></row><row><entry /><entry /><entry>Mgid</entry><entry>Long</entry><entry>Group Id</entry></row><row><entry /><entry /><entry>Mgnm</entry><entry>Unicode text</entry><entry>Group name</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry>DMsgrGroup_OnContactMove</entry></row><row><entry /><entry>Sent when a contact is moved from one group to another</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="5"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="77PT" align="left" /><tbody valign="top"><row><entry /><entry>Event ID</entry><entry>MGMv</entry><entry /><entry /></row><row><entry /><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry /><entry>Mgif</entry><entry>Long</entry><entry>Group Id the contact is</entry></row><row><entry /><entry /><entry /><entry /><entry>moved from</entry></row><row><entry /><entry /><entry>Mgid</entry><entry>Long</entry><entry>Group Id the contact is</entry></row><row><entry /><entry /><entry /><entry /><entry>moved to</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry>DMsgrGroup_OnContactCopy</entry></row><row><entry /><entry>Sent when a contact is copied from one group to another</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="5"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="77PT" align="left" /><tbody valign="top"><row><entry /><entry>Event ID</entry><entry>MGCp</entry><entry /><entry /></row><row><entry /><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry /><entry>Mgid</entry><entry>Long</entry><entry>Group Id the contact is</entry></row><row><entry /><entry /><entry /><entry /><entry>copied to</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><tbody valign="top"><row><entry /><entry>DMsgrGroup_OnContactRemove</entry></row><row><entry /><entry>Sent when a contact is removed from a group</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="5"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="35PT" align="left" /><colspec colname="3" colwidth="49PT" align="left" /><colspec colname="4" colwidth="77PT" align="left" /><tbody valign="top"><row><entry /><entry>Event ID</entry><entry>MGRC</entry><entry /><entry /></row><row><entry /><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry /><entry>Mgid</entry><entry>Long</entry><entry>Group Id</entry></row><row><entry /><entry namest="OFFSET" nameend="4" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0114<tables id="TABLE-US-00008" num="8"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Sessions</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrSessionManager_RegisterApplication</entry></row><row><entry>Register an application with messenger so that it can receive callback</entry></row><row><entry>notifications.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><colspec colname="4" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MReg</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mapp</entry><entry>Char</entry><entry>Application Id</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="147PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12300</entry><entry>Session manager not created yet</entry></row><row><entry /><entry>−12301</entry><entry>Application already registered</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrSessionManager_RegisterAndRetain</entry></row><row><entry>Register an application with messenger so that it can receive callback</entry></row><row><entry>notifications. Additional flag specifying if the client retains the Messenger</entry></row><row><entry>Daemon running.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><colspec colname="4" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MRgR</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mapp</entry><entry>Char</entry><entry>Application ID</entry></row><row><entry /><entry>Mkrn</entry><entry>Boolean</entry><entry>Keep running (retain</entry></row><row><entry /><entry /><entry /><entry>Daemon)</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="42PT" align="left" /><colspec colname="3" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12300</entry><entry>Session manager not created yet</entry></row><row><entry /><entry>−12301</entry><entry>Application already registered</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrSessionManager_UnRegisterApplication</entry></row><row><entry>UnRegister an application with messenger so that it will no longer receive</entry></row><row><entry>callback notifications.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="147PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MUnr</entry><entry /></row><row><entry>Parameters</entry><entry>None</entry></row><row><entry>Return value</entry><entry>None</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12300</entry><entry>Session manager not created yet</entry></row><row><entry /><entry>−12302</entry><entry>Application is not registered</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrLock_Status</entry></row><row><entry>Get the lock & key status.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><colspec colname="4" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MLgs</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mapp</entry><entry>Char</entry><entry>Application Id</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="147PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>SInt16</entry><entry>Lock & key status</entry></row><row><entry /><entry /><entry>1: Locked</entry></row><row><entry /><entry /><entry>2: Tying to unlock</entry></row><row><entry /><entry /><entry>3: Unlocked</entry></row><row><entry /><entry /><entry>4: Unlock failed</entry></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12302</entry><entry>Application is not registered</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrLock_RequestChallenge</entry></row><row><entry>Request a challenge from the server.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><colspec colname="4" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MLrc</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mapp</entry><entry>Char</entry><entry>Application Id</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="147PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12302</entry><entry>Application is not registered</entry></row><row><entry /><entry>−12304</entry><entry>Already tried to unlock and failed</entry></row><row><entry /><entry>−12305</entry><entry>Already trying to unlock</entry></row><row><entry /><entry>−12306</entry><entry>Already unlocked</entry></row><row><entry /><entry>−12307</entry><entry>Server doesn't support lock & key</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgrLock_SendResponse</entry></row><row><entry>Send the lock&key response to the server.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><colspec colname="4" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MLsr</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mapp</entry><entry>Char</entry><entry>Application Id</entry></row><row><entry /><entry>MLSt</entry><entry>Char</entry><entry>Response string</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="147PT" align="left" /><tbody valign="top"><row><entry>Return value</entry><entry>None</entry><entry /></row><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12302</entry><entry>Application is not registered</entry></row><row><entry /><entry>−12304</entry><entry>Already tried to unlock and failed</entry></row><row><entry /><entry>−12305</entry><entry>Already trying to unlock</entry></row><row><entry /><entry>−12306</entry><entry>Already unlocked</entry></row><row><entry /><entry>−12307</entry><entry>Server doesn't support lock & key</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_InstantMessage</entry></row><row><entry>Initiate a chat session with the contact with the Contact id.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><colspec colname="4" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MSim</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="147PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row><row><entry /><entry>−12104</entry><entry>Current user isn't online</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id invalid</entry></row><row><entry /><entry>−12300</entry><entry>Session manager not created yet</entry></row><row><entry /><entry>−12302</entry><entry>Application is not registered</entry></row><row><entry /><entry>−12309</entry><entry>Interface is locked</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_SendMail</entry></row><row><entry>Send an email to the contact specified</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><colspec colname="4" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MShm</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="147PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row><row><entry /><entry>−12104</entry><entry>Current user isn't online</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id invalid</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>IMsgr_SendFile</entry></row><row><entry>Transfer a file to the contact specified</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><colspec colname="4" colwidth="112PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>MSFl</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mcid</entry><entry>Char</entry><entry>Contact Id</entry></row><row><entry /><entry>Mfss</entry><entry>URL</entry><entry>File to send</entry></row><row><entry>Return value</entry><entry>None</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="left" /><colspec colname="3" colwidth="147PT" align="left" /><tbody valign="top"><row><entry>Error codes</entry><entry> 0</entry><entry>Succeeded</entry></row><row><entry /><entry>−12100</entry><entry>No user currently signed in</entry></row><row><entry /><entry>−12104</entry><entry>Current user isn't online</entry></row><row><entry /><entry>−12105</entry><entry>Contact Id invalid</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0115<tables id="TABLE-US-00009" num="9"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Callbacks</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrLock_OnChallenge</entry></row><row><entry>Sent to all registered applications when received a challenge string from</entry></row><row><entry>the server.</entry></row><row><entry>And sent to the challenge requester when the request failed to go through.</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="21PT" align="left" /><colspec colname="3" colwidth="28PT" align="left" /><colspec colname="4" colwidth="126PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Mloc</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>MLSt</entry><entry>Char</entry><entry>Challenge string</entry></row><row><entry /><entry>Mrtn</entry><entry>Sint16</entry><entry>OSErr or</entry></row><row><entry /><entry /><entry /><entry>0: Succeed</entry></row><row><entry /><entry /><entry /><entry>12303: Request failed to go through</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrLock_OnResult</entry></row><row><entry>Sent to unlock requester</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="21PT" align="left" /><colspec colname="3" colwidth="28PT" align="left" /><colspec colname="4" colwidth="126PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Mlor</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mboo</entry><entry>Boolean</entry><entry>Unlock succeed?</entry></row><row><entry /><entry>Mrtn</entry><entry>Sint16</entry><entry>OSErr or</entry></row><row><entry /><entry /><entry /><entry>0: Succeed</entry></row><row><entry /><entry /><entry /><entry>12303: Request failed to go through</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><tbody valign="top"><row><entry>DMsgrLock_OnEnable</entry></row><row><entry>Sent to unlock requester</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="4"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="21PT" align="left" /><colspec colname="3" colwidth="28PT" align="left" /><colspec colname="4" colwidth="126PT" align="left" /><tbody valign="top"><row><entry>Event ID</entry><entry>Mloe</entry><entry /><entry /></row><row><entry>Parameters</entry><entry>Mboo</entry><entry>Boolean</entry><entry>Unlock succeed?</entry></row><row><entry namest="1" nameend="4" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0116The following are the exposed functions: <tables id="TABLE-US-00010" num="10"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><thead><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>OSErr IMsgr_Preferences( );</entry></row><row><entry /><entry>OSErr IMsgr_SignIn(Str255, Str255, long);</entry></row><row><entry /><entry>OSErr IMsgr_SignOut( );</entry></row><row><entry /><entry>OSErr IMsgr_SetFriendlyName(Str255, Str255, long, UniStr255);</entry></row><row><entry /><entry>OSErr IMsgr_SetPassword(Str255, Str255, long, Str255);</entry></row><row><entry /><entry>OSErr IMsgr_SetStatus(Str255, Str255, long, UInt32);</entry></row><row><entry /><entry>OSErr IMsgr_GetVersion(Str255);</entry></row><row><entry /><entry>OSErr IMsgr_AutoSignIn( );</entry></row><row><entry /><entry>OSErr IMsgr_ShowSignInDialog( );</entry></row><row><entry /><entry>OSErr IMsgr_GetSignInName(Str255);</entry></row><row><entry /><entry>OSErr IMsgr_SetDefaultSignInName(Str255);</entry></row><row><entry /><entry>OSErr IMsgr_GetFriendlyName(UniStr255);</entry></row><row><entry /><entry>OSErr IMsgr_GetStatus(UInt32*);</entry></row><row><entry /><entry>OSErr IMsgr_InstantMessage(Str255);</entry></row><row><entry /><entry>OSErr IMsgr_SendFile(Str255, FSSpec, Boolean);</entry></row><row><entry /><entry>OSErr IMsgr_SendMail(Str255);</entry></row><row><entry /><entry>OSErr IMsgr_GetSignInStatus(Str255,UInt32*);</entry></row><row><entry /><entry>OSErr IMsgr_GetAnySignInStatus(UInt32*);</entry></row><row><entry /><entry>OSErr IMsgr_GetUnreadEmailCount(long*);</entry></row><row><entry /><entry>OSErr IMsgr_ShowContactWindow( );</entry></row><row><entry /><entry>OSErr IMsgrContacts_Count(long*);</entry></row><row><entry /><entry>OSErr IMsgrContacts_GetItem(long,Str255);</entry></row><row><entry /><entry>OSErr IMsgrContacts_Add( );</entry></row><row><entry /><entry>OSErr IMsgrContacts_Remove(Str255);</entry></row><row><entry /><entry>OSErr IMsgrContacts_GetList (AEDescList*);</entry></row><row><entry /><entry>OSErr IMsgrContacts_ImportContactList(AERecord);</entry></row><row><entry /><entry>OSErr IMsgrContact_GetSignInName(Str255,Str255);</entry></row><row><entry /><entry>OSErr IMsgrContact_GetFriendlyName(Str255,UniStr255);</entry></row><row><entry /><entry>OSErr IMsgrContact_GetStatus(Str255,UInt32*);</entry></row><row><entry /><entry>OSErr IMsgrContact_CanPage(Str255,Boolean*);</entry></row><row><entry /><entry>OSErr IMsgrContact_GetBlocked(Str255,Boolean*);</entry></row><row><entry /><entry>OSErr IMsgrContact_SetBlocked(Str255, Boolean);</entry></row><row><entry /><entry>OSErr IMsgrContact_AddToList(Str255);</entry></row><row><entry /><entry>OSErr IMsgrContact_ViewIMHistory(Str255);</entry></row><row><entry /><entry>OSErr IMsgrGroups_Count(long*);</entry></row><row><entry /><entry>OSErr IMsgrGroups_GetItem(long, long*);</entry></row><row><entry /><entry>OSErr IMsgrGroups_Create(Str255);</entry></row><row><entry /><entry>OSErr IMsgrGroups_Remove(long);</entry></row><row><entry /><entry>OSErr IMsgrGroups_RemoveNamedGroup(UniStr255, Boolean,</entry></row><row><entry /><entry>Boolean);</entry></row><row><entry /><entry>OSErr IMsgrGroups_GetList(AEDescList*);</entry></row><row><entry /><entry>OSErr IMsgrGroup_GetName(long,UniStr255);</entry></row><row><entry /><entry>OSErr IMsgrGroup_SetName(long, UniStr255);</entry></row><row><entry /><entry>OSErr IMsgrGroup_MoveContact(Str255, long, long);</entry></row><row><entry /><entry>OSErr IMsgrGroup_CopyContact(Str255, long);</entry></row><row><entry /><entry>OSErr IMsgrGroup_RemoveContact(Str255, long);</entry></row><row><entry /><entry>OSErr IMsgrGroup_ContainsContact(Str255,long,Boolean*);</entry></row><row><entry /><entry>OSErr IMsgrSession_RegisterApplication(Str255 stAppID,</entry></row><row><entry /><entry>CallbackFunctions cb);</entry></row><row><entry /><entry>OSErr IMsgrSessionManager_RegisterAppAndRetain( Str255,</entry></row><row><entry /><entry>CallbackFunctions, Boolean);</entry></row><row><entry /><entry>OSErr IMsgrSessionManager_UnRegisterApplication( );</entry></row><row><entry /><entry>OSErr IMsgrLock_Status(SInt16*);</entry></row><row><entry /><entry>OSErr IMsgrLock_RequestChallenge( );</entry></row><row><entry /><entry>OSErr IMsgrLock_SendResponse(Str255);</entry></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0117The CallbackFunctions structure contains the pointers to the handlers for each of the desired callback events. The pointer should be NULL if the application does not want to handle the corresponding type of event. <tables id="TABLE-US-00011" num="11"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>typedef struct {</entry></row><row><entry> OSErr (*pfnMsgrOnSignIn) ( );</entry></row><row><entry> OSErr (*pfnMsgrOnSignOut) ( );</entry></row><row><entry> OSErr (*pfnMsgrOnBuddyNameChange) (UniStr255);</entry></row><row><entry> OSErr (*pfnMsgrOnStatusChange) (UInt32);</entry></row><row><entry> OSErr (*pfnMsgrOnUnreadEmailChange) (long);</entry></row><row><entry> OSErr (*pfnMsgrOnQuit) ( );</entry></row><row><entry> OSErr (*pfnContactsOnAdd) (Str255);</entry></row><row><entry> OSErr (*pfnContactsOnRemove) (Str255);</entry></row><row><entry> OSErr (*pfnContactOnFriendlyNameChange) (Str255,UniStr255);</entry></row><row><entry> OSErr (*pfnContactOnStatusChange) (Str255,UInt32);</entry></row><row><entry> OSErr (*pfnContactOnPagerChange) (Str255,Boolean);</entry></row><row><entry> OSErr (*pfnContactOnBlockedChange) (Str255,Boolean);</entry></row><row><entry> OSErr (*pfnGroupsOnAdd) (long);</entry></row><row><entry> OSErr (*pfnGroupsOnRemove) (long);</entry></row><row><entry> OSErr (*pfnGroupOnNameChange) (long,Str255);</entry></row><row><entry> OSErr (*pfnGroupOnContactMove) (Str255,long,long);</entry></row><row><entry> OSErr (*pfnGroupOnContactCopy) (Str255,long);</entry></row><row><entry> OSErr (*pfnGroupOnContactRemove) (Str255,long);</entry></row><row><entry> OSErr (*pfnLockOnChallenge) (SInt16,Str255);</entry></row><row><entry> OSErr (*pfnLockOnResult) (SInt16,Boolean);</entry></row><row><entry> OSErr (*pfnLockOnEnable) (Boolean);</entry></row><row><entry>} CallbackFunctions;</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
Internal Apple Events Interface
0118As described above, the functionality was divided into two different components, which communicate using an internal AppleEvents interface comprised of messages. These messages basically respond to the following situations:
0119From the ServerApp to the Up: <ul id="ul0017" list-style="none"><li id="ul0017-0001" num="0000"><ul id="ul0018" list-style="none"><li id="ul0018-0001" num="0120"> Start logon/logoff </li><li id="ul0018-0002" num="0121"> Signed in/out </li><li id="ul0018-0003" num="0122"> Logon user status changed </li><li id="ul0018-0004" num="0123"> Show sign-in dialog </li><li id="ul0018-0005" num="0124"> Logon user friendly name changed </li><li id="ul0018-0006" num="0125"> Logon user rename failed </li><li id="ul0018-0007" num="0126"> Show add contact dialog </li><li id="ul0018-0008" num="0127"> Add contact to list </li><li id="ul0018-0009" num="0128"> Remove contact from list </li><li id="ul0018-0010" num="0129"> Contact online status </li><li id="ul0018-0011" num="0130"> Contact add/remove failure </li><li id="ul0018-0012" num="0131"> Contact allowed/blocked </li><li id="ul0018-0013" num="0132"> Allow/block contact failed </li><li id="ul0018-0014" num="0133"> Import contact list </li><li id="ul0018-0015" num="0134"> Group added </li><li id="ul0018-0016" num="0135"> Add group failed </li><li id="ul0018-0017" num="0136"> Group removed </li><li id="ul0018-0018" num="0137"> Group renamed </li><li id="ul0018-0019" num="0138"> Contact copied/moved to group </li><li id="ul0018-0020" num="0139"> Contact removed from group </li><li id="ul0018-0021" num="0140"> Begin IM/send file </li><li id="ul0018-0022" num="0141"> Contact started a chat with you </li><li id="ul0018-0023" num="0142"> Open IM window </li><li id="ul0018-0024" num="0143"> View IM history </li><li id="ul0018-0025" num="0144"> Show contact window </li><li id="ul0018-0026" num="0145"> Show preferences </li><li id="ul0018-0027" num="0146"> Preferences changed </li><li id="ul0018-0028" num="0147"> Hotmail count </li><li id="ul0018-0029" num="0148"> Hotmail count changed/new mail </li><li id="ul0018-0030" num="0149"> Notification received </li><li id="ul0018-0031" num="0150"> New URLs from server </li><li id="ul0018-0032" num="0151"> Client application update </li><li id="ul0018-0033" num="0152"> System messages </li><li id="ul0018-0034" num="0153"> Disconnected from the server </li><li id="ul0018-0035" num="0154"> Error message from the server </li><li id="ul0018-0036" num="0155"> Network connection lost </li></ul></li></ul>
0156From the UIApp to the ServerApp <ul id="ul0019" list-style="none"><li id="ul0019-0001" num="0000"><ul id="ul0020" list-style="none"><li id="ul0020-0001" num="0157"> UIApp has launched </li><li id="ul0020-0002" num="0158"> UIApp is quitting </li><li id="ul0020-0003" num="0159"> Start logon </li><li id="ul0020-0004" num="0160"> Cancel logon </li><li id="ul0020-0005" num="0161"> Logoff </li><li id="ul0020-0006" num="0162"> Is logged on?</li><li id="ul0020-0007" num="0163"> Get logon user info </li><li id="ul0020-0008" num="0164"> Change logon user friendly name </li><li id="ul0020-0009" num="0165"> Set logon user status </li><li id="ul0020-0010" num="0166"> Set/get next logon user </li><li id="ul0020-0011" num="0167"> Edit logon user page properties </li><li id="ul0020-0012" num="0168"> Set logon user save/delete log properties </li><li id="ul0020-0013" num="0169"> Set logon user spam preferences </li><li id="ul0020-0014" num="0170"> Set/get preferences </li><li id="ul0020-0015" num="0171"> Get group/contact lists </li><li id="ul0020-0016" num="0172"> Add contact </li><li id="ul0020-0017" num="0173"> Batch add users </li><li id="ul0020-0018" num="0174"> Remove a contact </li><li id="ul0020-0019" num="0175"> Allow/block contact </li><li id="ul0020-0020" num="0176"> Batch block/unblock contacts </li><li id="ul0020-0021" num="0177"> Send hotmail to contact </li><li id="ul0020-0022" num="0178"> Send recruitment mail </li><li id="ul0020-0023" num="0179"> Page contact </li><li id="ul0020-0024" num="0180"> Upload contact properties </li><li id="ul0020-0025" num="0181"> Add a group </li><li id="ul0020-0026" num="0182"> Remove a group </li><li id="ul0020-0027" num="0183"> Rename a group </li><li id="ul0020-0028" num="0184"> Copy/move contact to group </li><li id="ul0020-0029" num="0185"> Remove user from group </li><li id="ul0020-0030" num="0186"> Expand/collapse group </li><li id="ul0020-0031" num="0187"> Get inbox count </li><li id="ul0020-0032" num="0188"> Forget Hotmail messages </li><li id="ul0020-0033" num="0189"> Get chat connection </li><li id="ul0020-0034" num="0190"> Request URL from server </li></ul></li></ul>
0191As can be seen from the foregoing detailed description, there is provided a method and system for integrating instant messaging with other computer programs. Instant messaging can thus be used in many real-time scenarios without leaving a running program, such as when collaborating on documents. The method and system thus provide significant advantages and benefits needed in contemporary computing.
0192While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.
Contents5
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US12182503B2 | Cited by | United States of America | Search report |
| US8904356B2 | Cited by | United States of America | Applicant |
| US7861175B2 | Cited by | United States of America | Search report |
| US2008081698A1 | Cited by | United States of America | Pre-grant |
| US8443421B2 | Cited by | United States of America | Applicant |
| US8224901B2 | Cited by | United States of America | Applicant |
| US9266024B2 | Cited by | United States of America | Applicant |
| US8464161B2 | Cited by | United States of America | Applicant |
| CN110933653A | Cited by | China | Search report |
| US2008209417A1 | Cited by | United States of America | Pre-grant |
| US2014074925A1 | Cited by | United States of America | Pre-grant |
| CN105446803A | Cited by | China | Search report |
| US8713112B2 | Cited by | United States of America | Search report |
| US2014316907A1 | Cited by | United States of America | Pre-grant |
| US8677250B2 | Cited by | United States of America | Applicant |
| US2006080590A1 | Cited by | United States of America | Pre-grant |
| US8468203B2 | Cited by | United States of America | Applicant |
| CN108762728A | Cited by | China | Search report |
| US2010174799A1 | Cited by | United States of America | Pre-grant |
| WO2014008783A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2017199633A1 | Cited by | United States of America | Search report |
| US2006150085A1 | Cited by | United States of America | Pre-grant |
| JP2015527651A | Cited by | Japan | Search report |
| US2014344720A1 | Cited by | United States of America | Pre-grant |
| US11150781B2 | Cited by | United States of America | Search report |
| CN102055732A | Cited by | China | Search report |
| US2006031560A1 | Cited by | United States of America | Pre-grant |
| US11316818B1 | Cited by | United States of America | Search report |
| US2006069989A1 | Cited by | United States of America | Pre-grant |
| US8756577B2 | Cited by | United States of America | Applicant |
| US2009112985A1 | Cited by | United States of America | Pre-grant |
| US7617234B2 | Cited by | United States of America | Applicant |
| US8996985B1 | Cited by | United States of America | Search report |
| US7752224B2 | Cited by | United States of America | Applicant |
| WO2011056289A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2008227540A1 | Cited by | United States of America | Pre-grant |
| US2006195777A1 | Cited by | United States of America | Pre-grant |
| US12231382B2 | Cited by | United States of America | Applicant |
| US8762862B2 | Cited by | United States of America | Search report |
| WO2022028198A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US8806438B2 | Cited by | United States of America | Applicant |
| US10419374B1 | Cited by | United States of America | Search report |
| US9197588B2 | Cited by | United States of America | Search report |
| US2006069987A1 | Cited by | United States of America | Pre-grant |
| US8954500B2 | Cited by | United States of America | Search report |
| US2007061382A1 | Cited by | United States of America | Pre-grant |
| US2009307612A1 | Cited by | United States of America | Pre-grant |
| US2009307604A1 | Cited by | United States of America | Pre-grant |
| US7945590B2 | Cited by | United States of America | Applicant |
| US8161106B2 | Cited by | United States of America | Applicant |
| US2014095638A1 | Cited by | United States of America | Pre-grant |
| US2009307605A1 | Cited by | United States of America | Pre-grant |
| US2009172475A1 | Cited by | United States of America | Pre-grant |
| EP2497032A4 | Cited by | European Patent Office (EPO) | Search report |
| US7668873B2 | Cited by | United States of America | Search report |
| US8808091B2 | Cited by | United States of America | Search report |
| US2006195783A1 | Cited by | United States of America | Pre-grant |
| US10204086B1 | Cited by | United States of America | Applicant |
| US7814214B2 | Cited by | United States of America | Search report |
| US2012117541A1 | Cited by | United States of America | Pre-grant |
| US8850397B2 | Cited by | United States of America | Applicant |
| US10419374B1 | Cited by | United States of America | Search report |
| US2008104612A1 | Cited by | United States of America | Pre-grant |
| US2009177744A1 | Cited by | United States of America | Pre-grant |
| US2009307598A1 | Cited by | United States of America | Pre-grant |
| US8990775B2 | Cited by | United States of America | Search report |
| US9009673B2 | Cited by | United States of America | Applicant |
| US8239461B2 | Cited by | United States of America | Applicant |
| US9411709B2 | Cited by | United States of America | Applicant |
| US2016216947A1 | Cited by | United States of America | Pre-grant |
| US7730394B2 | Cited by | United States of America | Applicant |
| US2006242235A1 | Cited by | United States of America | Pre-grant |
| US11669674B1 | Cited by | United States of America | Applicant |
| US7512619B2 | Cited by | United States of America | Search report |
| US2006239234A1 | Cited by | United States of America | Pre-grant |
| TWI487340B | Cited by | Taiwan Province of China | Examiner |
| US7991128B2 | Cited by | United States of America | Applicant |
| US8341532B2 | Cited by | United States of America | Applicant |
| US8671393B2 | Cited by | United States of America | Applicant |
| US2009037775A1 | Cited by | United States of America | Pre-grant |
| US11316818B1 | Cited by | United States of America | Pre-grant |
| US2009248868A1 | Cited by | United States of America | Pre-grant |
| US9245300B2 | Cited by | United States of America | Search report |
| US8739127B2 | Cited by | United States of America | Applicant |
| US8543926B2 | Cited by | United States of America | Applicant |
| US2007174273A1 | Cited by | United States of America | Pre-grant |
| US2011145333A1 | Cited by | United States of America | Pre-grant |
| US2007067324A1 | Cited by | United States of America | Pre-grant |
| US8972945B2 | Cited by | United States of America | Applicant |
| US8656360B2 | Cited by | United States of America | Applicant |
| US9509731B2 | Cited by | United States of America | Search report |
| US2017199633A1 | Cited by | United States of America | Search report |
| US9272210B2 | Cited by | United States of America | Applicant |
| US2002178087A1 | Cites | United States of America | Pre-grant |
| US2004024822A1 | Cites | United States of America | Pre-grant |
| US2005044152A1 | Cites | United States of America | Pre-grant |
| US2005080852A1 | Cites | United States of America | Pre-grant |
| US7194516B2 | Cites | United States of America | Pre-grant |
2 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 91629704 | United States of America | A | |
| US20040916297 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2006036692A1 | United States of America | A1 | |
| US7451186B2 | United States of America | B2 |
39 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Correspondence Address ChangeC.ADB | C.ADB | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Reasons for AllowanceREAS | REAS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Withdraw Flagged for 5/25W525 | W525 | |
| Flagged for 5/25F525 | F525 | |
| Correspondence Address ChangeC.AD | C.AD | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Is Now CompleteCOMP | COMP | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Cleared by L&R (LARS)L128 | L128 | |
| Referred to Level 2 (LARS) by OIPE CSRL198 | L198 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS |
Numbers
- Publication
- 20060036692
- Publication, DOCDB
- 2006036692
- Publication, EPODOC
- US2006036692
- Application
- 10916297
- Application, DOCDB
- 91629704
- Application, EPODOC
- US20040916297
Titles
- English
- Method and system of integrating instant messaging with other computer programs
Patent term adjustment
- A delay
- +779 daysthe office missed an examination deadline
- Applicant delay
- −90 days
- Net adjustment
- 689 days
Classification
- CPC, 3
- G06Q10/107
- H04L51/04
- H04L51/046
- IPC, 1
- G06F15 16
- USPC, 1
- 709206000