The subject disclosure relates generally to messaging, and more particularly to methods and systems for automatically updating contact information in a contact list in a messaging system, for example an email system or short message service system.
Contact lists in messaging systems are known. For example, an email application can enable a user to maintain a list of family, friends and business associates, along with their contact information, such as email addresses, phone numbers, residential addresses and the like. Short message service (SMS) or “texting” applications can provide a similar capability. A contact list enables a user to quickly and conveniently look up and contact a listed person or organization, without the delay and possible expense, for example, of reference to a directory service.
Naturally, contact information changes from time to time, making it necessary to update a contact list accordingly. An update may be disseminated, for example, by a user who has a change in his contact information and needs to convey the change to those on his contact list. Conventional techniques for updating a contact list can entail inefficiencies and undue effort. For example, one way of propagating updates is to do so manually. That is, a user might simply email or otherwise send a message containing the update information to everyone on his contact list, individually and one at a time. However, especially for a long contact list, this approach could be laborious and error-prone. Moreover, the sender could not be sure that the receiver was noticing and applying the updated information
In view of the above, automated techniques for updating contact information have been developed. However, conventional automated techniques suffer disadvantages. For example, one known technique requires subscribing to a service that uses a server to poll contacts on a contact list to request update information. This approach, in addition to incurring the cost of the subscription, has the further drawback that recipients on the contact list may be unresponsive, for example because they are too busy or distracted by other matters.
In consideration of the foregoing, innovation in automatically updating contact information is called for.
The following presents a simplified summary of the subject innovation in order to provide a basic understanding of some aspects described herein. This summary is not an extensive overview of the disclosed subject matter. It is intended to neither identify key or critical elements of the disclosed subject matter nor delineate the scope of the subject innovation. Its sole purpose is to present some concepts of the disclosed subject matter in a simplified form as a prelude to the more detailed description that is presented later.
According to aspects of the subject innovation, methods and systems for automatically updating contact information in a messaging system can automatically associate an indicator with a message, to indicate that the message contains contact information. The indicator can be automatically detected by a message receiving component. Based on detecting the indicator, the message receiving component can automatically extract the contact information and apply it to a contact database, such as a contact list or “address book.”
In embodiments, the indicator can be a command tag that is associated with the message. For example, the command tag can be appended to a message body. The command tag can have a value assigned to it to indicate that the message contains contact information. The message receiving component can detect the command tag and determine its value. If the value of the command tag indicates that the message contains contact information, the message receiving component can extract the contact information from the message. The message receiving component can apply the extracted contact information to the contact information database to update the contact information database.
According to further aspects of the subject innovation, a message composing component can receive user commands, data and the like, and interactively display information and perform other operations relating to a messaging application. For example, the message composing component can receive an input from a user specifying that a message to be sent is a “Contact Update” type of message. Based on receiving the input, the message composing component can prompt the user for contact information, and set the value of the command tag indicate that the message contains contact information. The message composing component can send the message including the contact information and the command tag to the message receiving component.
The message receiving component can receive and process the message. In processing the message, the message receiving component can detect the command tag and determine its value. The message receiving component can receive user commands, data and the like, and interactively display information and perform other operations relating to a messaging application. For example, if the message receiving component determines that the command tag indicates that the message includes contact information, the message receiving component can extract the contact information and display it to a user. The message receiving component can further prompt the user to indicate whether or not to accept the message, based, for example, on whether or not the user recognizes and/or trusts the message sender.
Additionally or alternatively, the message receiving component can automatically process the message without user intervention. For example, the message receiving component can apply a validation test to the message, to determine whether to apply the contact information to the contact database. For example, the message receiving component can compare an identifier of a message sender to entries on a contact list. If the identifier matches an entry on the contact list, the message receiving component can accept the message and apply the contact information to the contact database. Otherwise, the message receiving component can reject or discard the message.
According to still further aspects of the subject innovation, the command tag can be multi-valued and multi-purposed. For example, a first value of the command tag can indicate that the message contains contact information and is to be processed as described above. A second or other value of the command tag can indicate that the message contains one or more commands, additionally or alternatively to contact information, to be performed by the message receiving component.
To the accomplishment of the foregoing and related ends, the innovation, then, comprises the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative embodiments of the innovation. These embodiments can be indicative, however, of but a few of the various ways in which the principles of the innovation can be employed. Other objects, advantages, and novel features of the innovation will become apparent from the following detailed description of the innovation when considered in conjunction with the drawings.
Various non-limiting embodiments are further described with reference to the accompanying drawings in which:
As utilized in this application, the terms “component,” “system,” “interface,” and the like are intended to refer to a computer-related entity, either hardware, software (e.g., in execution), and/or firmware. For example, a component can be a process running on a processor, a processor, an object, an executable, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and a component can be localized on one computer and/or distributed between two or more computers.
The subject innovation is described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the subject innovation. It may be evident, however, that the subject innovation may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the subject innovation.
Referring now to
Typically, the sending message composing component 101 is physically separate from the receiving message receiving component 102. For example, in an illustrative embodiment, discussed in more detail further on with reference to
It should further be appreciated, as additionally illustrated and described further on with reference to
As shown in
As shown in
Referring now to
The display 101.11 can further include options to select other types of commands, and based on the selection, the message composing component 101 can automatically set a value of the command tag 103.2 to indicate that the message 103 contains the other type of command or commands.
The user can fill in some or all of the requested contact information in the dialog boxes of the user interface component 101.1. The message composing component 101 can then construct a message 103 including the contact information and the command tag 103.2 indicating that the message 103 includes contact information 103.3. The user can then select a “Send” or “Transmit” option, for example (not shown), to send the message 103 to the message receiving component 102.
The command tag 103.2 can, for example, be appended to an end of the message body 103.1, although the subject innovation is not limited with respect to a location or format of the command tag 103.2. Alternatively, the command tag 103.2 can be in a message header or trailer or other part of the message, or can precede or follow the message in a separate message or other form of communication, or an indication that the message contains contact information can be otherwise signaled to the message receiving component 102. The command tag 103.2 can be binary valued; that is, take one of two possible values, such as “1” or “0”, “high” or “low”, or “on” or “off”. For example, a “1”, “high” or “on” value for the command tag 103.2 can indicate that the message 103 includes contact information, while a “0”, “low” or “off” value for the command tag 103.2 can indicate that the message 103 does not contain contact information. However, the command tag 103.2 need not be binary-valued, and could instead, for example, include character data or data in another format. The command tag 103.2 can be configured so that it is not visible, for example, in a screen display of the message 103, while still being detectable and readable by the message receiving component 102.
In embodiments, the command tag 103.2 can be multi-valued, e.g., have more than two values, and act as a multi-purpose command tag. For example, a first value assigned the command tag 103.2, such as “1” or “CU” can indicate that the message 103 is a “Contact Update” type of message as described above, and that the message receiving component 102 should process the message 103 accordingly. A second or other value, such as “2” or “Cmd” can indicate that the message should receive different processing. For example, the second value can indicate that the message 103 includes, alternatively or in addition to contact information, a command for the message receiving component 102 to perform some predetermined operation or operations, such as launching a browser or configuring a system locally.
For example, the message body 103.1 can contain a URL, and the command tag value can instruct the receiving component 102 to automatically launch the URL in a browser. Additionally or alternatively, for example, the message body 103.1 can contain one or more time zone settings, and the command tag value can instruct the message receiving component 102 to apply the time zone settings to a local communication and computing device, such as a communication and computing device configured with the message receiving component 102. Further, additionally or alternatively, for example, the message body 103.1 can contain one or more shell commands, and the command tag value can instruct the message receiving component 102 to launch the one or more shell commands.
Based on detecting the second or other value, the message receiving component 103 can, for example, extract the command from the message body 103.1 and execute it or otherwise perform the indicated operation or operations. In embodiments, the command can be encoded into the value of the command tag 103.2, and need not be extracted from the message body 103.1. For example, a value of “2” assigned to the command tag 103.2 can instruct the message receiving component 102 to “perform Operation X,” a value of “3” assigned to the command tag 103.2 can instruct the message receiving component to “perform Operation Y,” and the like.
As described previously, the message receiving component 102 can read, analyze, parse or otherwise process the message 103. In particular, the message receiving component 102 can detect the presence of the command tag 103.2 and determine its value. If the value of the command tag 103.2 indicates that the message 103 contains contact information, the message reading component 102 can extract the contact information from the message 103. For example, the contact information can be in a body 103.1 of the message 103, and the message receiving component 102 can parse the body 103.1 to extract the contact information.
The message receiving component 102 can, for example, be configured to be compatible with the message composing component 101, in such a way that the message receiving component 102 can recognize the message 103 as a “Contact Update” type of message, based on the value assigned to the command tag 103.2, or as a message containing another command of some kind, and process the message 103 accordingly. Additionally or alternatively, the message receiving component 102 can include a generalized functionality enabling it to parse messages of disparate formats to detect and extract contact information and/or one or more commands therein, based on a signal that a message contains contact information and/or one or more commands.
Referring now to
Because some message content can be harmful or malicious, the user interface component 102.1 can further apply a validation test to the received message 103, for security purposes, for example. The validation test can, for example, include prompting a recipient for a response to indicate whether to accept the message or not. For example, the display 102.11 can include a prompt such as “CONTINUE? Y/N” as shown. If the recipient replies “Y” (as in “yes, continue to process the message”), the message receiving component 102 can apply the contact information to a contact database such as contact database 401, or execute another command as indicated by the command tag 103.2. On the other hand, if the recipient replies “N” (as in “no, do not continue to process the message”), the message receiving component 102 can reject or discard the message. The recipient user might base his decision on whether to accept or reject the message based, for example, on whether he recognizes and/or trusts the sender.
The validation test need not be explicit or require user intervention as described above. For example, the message 103 can be either accepted or rejected without user intervention, based on predetermined criteria automatically applied by the message receiving component 102. The predetermined criteria can include, for example, whether or not the sender is on a contact list of the recipient. That is, the message receiving component 102 can automatically compare an identifier of a sender of a received message 103 against a list of entries in a contact list, and if the identifier of the sender is on the list, automatically apply the received contact information to the corresponding sender on the contact list. If the sender is not on the list, the message receiving component 102 can reject or discard the message 103.
The criteria can further include, for example, a “trust level.” More specifically, one or more message senders can be each be associated with a specified “trust level.” The one or more message senders can correspond, for example, to contacts in the contact database, and the trust levels can be assigned to respective contacts in the contact database. If the trust level corresponding to the sender of a message is set at or above a given predetermined threshold, the message can be automatically accepted and processed without user intervention. If, on the other hand, the trust level corresponding to the sender of the message is below a given predetermined threshold, the message can be rejected or discarded, or the user can be prompted to indicate whether to accept the message.
The trust level can be adjustable by a user. For example, the trust level can be graphically represented by the user interface component 102.1 as a sliding-scale or graduated setting or control, capable of being manipulated by an input device such as a keyboard or mouse to designate or adjust the trust level. Further, artificial intelligence based systems (e.g., explicitly and/or implicitly trained classifiers) can be employed in connection with performing inference and/or probabilistic determinations and/or statistical-based determinations regarding whether or not to accept a message, as described in more detail further on.
As described above, the message receiving component 102 can be I configured to recognize a “Contact Update” message generated by a message component 101 and process it accordingly. However, some (e.g., legacy) applications on a receiving side of a messaging system may not have the functionality to recognize a command tag 103.2 in a message. Accordingly, the message composing component 101 can be configured so that a “Contact Update” message that it creates is readable/parseable by conventional message receiving applications, so that contact information in the message can be legibly displayed by a receiving application in a conventional manner.
Referring now to
Referring to
Referring to
Referring to
If the validation test is passed (“YES” branch of block 1203), the message receiving component can extract the contact information, as shown in block 1204, and apply the contact information to a contact database, as shown in block 1205. If the validation test is not passed (“NO” branch of block 1203), the message receiving component can reject the message, as shown in block 1206.
Referring to
Referring to
Referring to
If the validation test is passed (“YES” branch of block 1503), the message receiving component can execute a command corresponding to the value of the command tag, as shown in block 1504. If the validation test is not passed (“NO” branch of block 1503), the message receiving component can reject the message, as shown in block 1505.
A sending device, such as device 1601 or 1603, can be configured with a message composing component 101 as described above. The sending communication device 1601 or 1603 can compose a message 103 according to any or all of the methodologies described above, and transmit the message 103 via the communication framework 1605 a receiving device 1602 or 1604. The receiving device 1602 or 1604 can be configured with a message receiving component 102 as described above. The receiving device 1602 or 1604 can receive the message 103 and process the message according to any or all of the methodologies described above. Of course, each of the communication and computing devices 1601, 1602, 1603 and 1604 can be configured with both the message composing component 101 and the message receiving component 102, and thus both create, send, receive and process messages in accordance with the above. The message composing component 101 and message receiving component 102 can include or be a component of or interface with an email application and or SMS application, and the message 103 can be an email message or an SMS message, for example. The communication framework 1605 can comprise wired and wireless channels and networks, including, for example, the Internet or World-Wide Web, an SMS, a second generation (2G) Global System for Mobile Communications (GSM) network, a code division multiple access (CDMA) network, or a third generation (3G) mobile network.
In more detail, the communication framework 1605 can support wired network connections (e.g., daisy chains, system busses, intranets, wide area networks (WANs), local area networks (LANs), . . . ), wireless network connections (e.g., daisy chains, system busses, intranets, wide area networks (WANs), local area networks (LANs), . . . ), or combinations thereof, for communicatively coupling devices 1301-1304.
Referring to
Receiving communication and computing devices 1602 and 1604 can each correspond to a contact on the contact list 1701. The receiving communication and computing devices 1602 and 1604 can each be configured with a message receiving component 102, and can receive and process the message 103 in accordance with the foregoing description. Thus, in one illustrative application, both a sending user and a receiving user can conveniently and with little effort synchronize contact information.
With reference to
The system bus 1818 can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), Firewire (IEEE 1494), and Small Computer Systems Interface (SCSI).
The system memory 1816 can include volatile memory 1820 and nonvolatile memory 1822. The basic input/output system (BIOS), containing basic routines to transfer information between elements within the computer 1812, such as during start-up, can be stored in nonvolatile memory 1822. By way of illustration, and not limitation, nonvolatile memory 1822 can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), or flash memory. Volatile memory 1820 can include random access memory (RAM), which can act as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), Rambus direct RAM (RDRAM), direct Rambus dynamic RAM (DRDRAM), and Rambus dynamic RAM (RDRAM).
Computer 1812 can also include removable/non-removable, volatile/non-volatile computer storage media.
It is to be appreciated that
A user can enter commands or information into the computer 1812 through input device(s) 1836. Input devices 1836 can include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices can connect to the processing unit 1814 through the system bus 1818 via interface port(s) 1838. Interface port(s) 1838 can include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) 1840 can use some of the same type of ports as input device(s) 1836. Thus, for example, a USB port may be used to provide input to computer 1812, and to output information from computer 1812 to an output device 1840. Output adapter 1842 can be provided to illustrate that there are some output devices 1840 like monitors, speakers, and printers, among other output devices 1840, which require special adapters. The output adapters 1842 can include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device 1840 and the system bus 1818. It should be noted that other devices and/or systems of devices can provide both input and output capabilities such as remote computer(s) 1844.
Computer 1812 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 1844. The remote computer(s) 1844 can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer 1812. For purposes of brevity, only a memory storage device 1846 is illustrated with remote computer(s) 1844. Remote computer(s) 1844 can be logically connected to computer 1812 through a network interface 1848 and then physically connected via communication connection 1850. Network interface 1848 can encompass wire and/or wireless communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token Ring and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
Communication connection(s) 1850 refers to the hardware/software employed to connect the network interface 1848 to the bus 1818. While communication connection 1850 is shown for illustrative clarity inside computer 1812, it can also be external to computer 1812. The hardware/software necessary for connection to the network interface 1848 includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.
As noted above, artificial intelligence based systems (e.g., explicitly and/or implicitly trained classifiers) can be employed in connection with performing inference and/or probabilistic determinations and/or statistical-based determinations as in accordance with one or more aspects of the disclosed subject matter as described herein. As used herein, the term “inference,” “infer” or variations in form thereof refers generally to the process of reasoning about or inferring states of the system, environment, and/or user from a set of observations as captured through events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines . . . ) can be employed in connection with performing automatic and/or inferred action in connection with the disclosed subject matter.
In particular and in regard to the various functions performed by the above described components, devices, circuits, systems and the like, the terms (including a reference to a “means”) used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., a functional equivalent), even though not structurally equivalent to the disclosed structure, which performs the function in the herein illustrated exemplary aspects of the innovation. In this regard, it will also be recognized that the innovation includes a system as well as a machine-readable (e.g., computer-readable) medium having computer-executable instructions for performing the acts and/or events of the various methods of the innovation.
In addition, while a particular feature of the innovation may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the terms “includes,” and “including” and variants thereof are used in either the detailed description or the claims, these terms are intended to be inclusive in a manner similar to the term “comprising.”
What has been described above includes examples of aspects of the disclosed subject matter. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the disclosed subject matter, but one of ordinary skill in the art will recognize that many further combinations and permutations of the disclosed subject matter are possible. Accordingly, the disclosed subject matter is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims.