Dynamic generation of group lists for a communication device using tags

Systems and methods are described for dynamically generating one or more group lists as a sub-group of the contact list by assigning tags to contacts in a contact list. A user may define one or more tags for contacts in the contact list to generate a tag list in addition to the contact list. The tags indicate additional attributes of the contact that cannot be included in the contact list. To dynamically generate the group list, the user enters list criteria, and the tag list is searched to identify which of the contacts in the contact list has tags that match the list criteria. The contacts having tags that match the list criteria are combined into a group list which the user may then access to initiate communication with those contacts, or store for later use.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention is related to the field of communication networks and contact lists generated for use in communication networks. In particular, in addition to static contact lists, group lists may be dynamically generated using tags that define additional attributes of one or more contacts in the contact list.

2. Statement of the Problem

A user of a communication device (or handset, such as a cellular phone) is commonly able to define a contact list for use in placing calls, sending text messages, sending emails, etc. The contact list includes a plurality of contacts, which may be people, businesses, etc, that are defined by the user and available to the user to initiate communication. An entry in the contact list typically includes a contact identifier, which may be a real name, a nickname, a photograph, an email address, etc, of a contact (e.g., a person or entity). The entry also typically includes contact information, such as one or more telephone numbers (i.e., a home number, a mobile number, a business number, etc), an email address, a URL, etc. When the user of the communication device wants to communicate with a contact on his/her contact list, the user may select that contact from the list and initiate communication without having to re-enter the telephone number or other information into the device.

A contact list may be stored on the device or in a network server. When the contact list is stored on the device, a memory element stores the contact list and the list is usually only available to the user when operating the device. When the contact list is stored on a network server, the contact list is generally part of a network address book service offered by the service provider. A network address book allows a user to add people to the contact list much like the contact list on a communication device. The network address book may also provide a network presence for contacts in the contact list. The network presence indicates the status of a party or the communication capabilities of the party for communicating. The network presence for a party may include the device or devices of the party, such as a cell phone, a PDA, etc. The network presence may further include services subscribed to or available to the party, such as Instant Messaging (IM), Push-to-Talk over Cellular (PoC), email, etc. The network presence may further include the status of the party, such as mood, location, etc. Because the network address book is stored on the network in a centralized server, the address book is available to applications on multiple devices of the user, such as a cell phone, a PDA, a laptop computer, etc.

The contact lists are generated by a user entering each individual contact into the list. The contact lists are defined by file format standards, so the information that may be stored in the contact lists is limited to the applicable standard. For example, vCard is a file format standard for electronic business cards, which may be adopted for contact lists. The vCard format allows for a name, an address, a phone number(s), a URL(s), a logo, a photograph, etc. Unfortunately, because the format of the contact list is defined by the standards, the user is very much limited as to what type of information may be stored for each contact. A user may want to include additional personal information with his/her contacts, but is not able to because of the standardized format of the contact list. It would be desirable to give users the ability to store additional information about contacts that is not allowed by standardized formats.

Another present limitation of contact lists is that the list is merely a collection of information entered by the user or a representative of the user, such as a company administrator for a user's company contact list. If a user would like to identify contacts that share common attributes or interests, the user would have to manually search through the contacts one by one to identify these contacts. It would be desirable to give users the ability to dynamically generate sub-groups of the contact list that share common attributes instead of merely relying on the overall contact list.

SUMMARY OF SOLUTION

Embodiments of the invention solve the above and other related problems by allowing a user to dynamically generate one or more group lists as a sub-group of the contact list by assigning tags to contacts in a contact list. A tag comprises any type of numbers, letters, strings, etc, that define an additional attribute of a contact in the contact list. For example, a tag may be “FRIEND” or “GOLFER” which further define an attribute or personal attribute of a contact. The tags are stored outside of the standardized format of the contact list, so any number of tags may be assigned to a contact and the number of tags is not limited by a standardized format. Furthermore, the number of attributes assigned to contacts may vary. A user may then dynamically generate a group list (as a sub-group of the contact list) by entering one or more tags as list criteria for selecting members of the group. The contacts having tags matching the list criteria are then identified to generate the group list. The user can thus dynamically generate group lists from his/her contact lists, such as a “FRIEND” group list or a “GOLFER” group list. The user may then initiate communication with one or more of the contacts in the group list as desired. This concept of generating group lists advantageously allows a user to quickly identify contacts sharing a common attribute without having to manually identify the contacts from the contact list individually.

One embodiment of the invention comprises group list system that is operable to dynamically generate a group list for use by a communication device. The group list system receives list criteria from a user of the communication device. The list criteria represent the type of group list the user wants to generate. The group list system identifies a contact list defined by the user. The contact list includes a plurality of contacts that include a contact identifier and associated contact information that is formatted as defined by a file format standard. The group list system also identifies a tag list corresponding with the contacts in the contact list. The tag list includes one or more tags that relate to a contact in the contact list. The group list system then searches the tag list to identify one or more contacts having a tag or tags that match the list criteria entered by the user. The group list system then generates a group list based on the contact(s) identified in the tag list, and provides the group list to the user. The user may then initiate communication with one or more of the contacts in the group list as desired. Alternatively, the user may store the group list for future use on the communication device or on a network server. The stored group list may subsequently be used for communication with one or more of the contacts in the group list.

The invention may include other exemplary embodiments described below.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1illustrates a communication network100in an exemplary embodiment of the invention. Communication network100is operable to provide a voice communication service and/or a data communication service to communication devices, such as communication device102. Communication network100may comprise a cellular network, an IMS network, an IP network, or another type of network. Communication device102comprises any type of device operable to exchange signaling and/or bearer communications with communication network100to provide voice and/or data communications to a user104. Communication device102may comprise a mobile device, such as a cellular phone, a PDA, etc, or may comprise a non-mobile device, such as a wireline phone or a PC.

Communication device102is also operable to provide a contact list110to user104through an appropriate application running on communication device102. A contact list comprises any type of data structure that stores information on one or more contacts as defined by user104to allow a user104to initiate a communication with the contacts. The communication may comprise a voice call, a text message, an email message, etc. A contact may be a person, a business, or another type of entity.

As illustrated inFIG. 1, contact list110includes a plurality of contacts111-116as entries in the data structure. Each contact111-116includes a contact identifier (contact ID) and contact information (contact info). A contact identifier may be a real name, a nickname, a photograph, an email address, etc. Contact information may comprise one or more telephone numbers (i.e., a home number, a mobile number, a business number, etc), an email address, a URL, etc. Contact list110is formatted as defined by a file format standard. Thus, the fields of contact list110are statically defined according to the file format standard. User104may maintain one or more contact lists, each of which may be identified by a contact list name.

Contact list110may be stored and maintained locally in a memory in communication device102. In another embodiment, contact list110may be stored and maintained in a network server120. Network server120comprises any system operable to store and maintain contact list110. Network server120may be referred to as network address book server, a presence server, or a group list server.

In addition to the contact list110, a tag list130is also maintained for user104according to the embodiments described herein. A tag list comprises any type of data structure that stores one or more tags that relate to one or more contacts111-116in contact list110. Each entry131-136in tag list130includes a contact identifier for a contact111-116(or some other data relating to a contact111-116in contact list110), and one or more tags defined for that contact111-116. A tag comprises any type of numbers, letters, strings, etc, that define an additional attribute of a contact in contact list110. A tag typically includes some type of personal attribute of a contact111-116. For example, a tag may be “FRIEND” or “GOLFER”, which are both personal attributes that additionally characterize a contact111-116in contact list110. User104may maintain one or more tag lists, each of which can be identified by a tag list name.

Because contact list110has a standardized format, there are no fields that allow for personal attributes such as this. Thus, the tags are defined to include these personal attributes of the contacts111-116. Tag list130does not conform to the same standardized format as contact list110(or another standardized format), so any number of tags may be assigned to a contact111-116and the number of tags is not limited by a standardized format.

Tag list130may be stored and maintained locally in a memory in communication device102. In another embodiment, tag list130may be stored and maintained in network server120or another network server.

FIG. 2illustrates a group list system200adapted to generate group lists in an exemplary embodiment of the invention. Group list system200includes a user interface system202and a list generator system204. User interface202is operable to generate messages that are displayed to user104, and to receive input from user104in order to generate the group lists. User interface202may display information to user104and receive input from user104through communication device102or through another system, such as a PC. List generator system204is operable to generate group lists responsive to input from user104. Group list system200may be implemented in an appropriate processor and memory configuration, in a logic configuration, or in another configuration. Group list system200may be installed in communication device102, in network server120, or on some other server.

Before group lists may be generated, user104(or potentially another user) first creates tag list130(seeFIG. 1) and defines the tags in tag list130.FIG. 3is a flow chart illustrating a method300of generating tag list130in an exemplary embodiment of the invention. The steps of method300will be described with reference to communication network100inFIG. 1and group list system200inFIG. 2. The steps of the flow chart inFIG. 3are not all inclusive and may include other steps not shown.

The tags in tag list130relate to contacts111-116in contact list110. Thus, user104defines the tags for one or more of the contacts111-116in contact list110as desired. For example, user104may first select contact111in contact list110, or enter a contact identifier for contact111. Again, the contact identifier may be a real name, a nickname, an email address, etc. User104may then define one or more tags for contact111. User104may enter the contact identifier and the tag(s) into communication device102, which transmits this information to group list system200. Alternatively, user104may enter the contact identifier and the tag(s) into a web site or portal, through a PC or similarly-enabled system, which provides this information to group list system200.

In step302of method300, user interface system202receives the contact identifier corresponding with a contact111-116in contact list110as entered or selected by user104. User interface system202also receives one or more tags that are related to the contact111-116as entered by user104in step304. List generator system204then stores the contact identifier and the tag(s) in the tag list130for user104in step306. List generator system204may store the contact identifier and the tag(s) according to any desired database techniques.

User104may then select another contact112in contact list110, or enter a contact identifier for contact112. User104may then define one or more tags for contact112. This process continues for other contacts111-116in contact list110as desired to populate tag list130.

User104may be free to define the tags as he/she desires. For example, one user may like the tag “FRIEND” while another user likes the tag “BUDDY”. In other embodiments, the service provider operating network100may provide guidelines for the tags, or at least some popular tags. This may add some symmetry to the different tag lists of different users.

After tag list130is populated, the information stored in tag list130may be used to dynamically generate the group lists for user104.FIG. 4is a flow chart illustrating a method400of dynamically generating a group list in an exemplary embodiment of the invention. The steps of method400will be described with reference to communication network100inFIG. 1and group list system200inFIG. 2. The steps of the flow chart inFIG. 4are not all inclusive and may include other steps not shown.

In order to generate a group list, user104first enters list criteria to define what type of group list he/she would like to generate. For instance, the list criteria may be “FRIEND” or “GOLFER”. The list criteria should match one or more of the tags previously defined for the contacts111-116in the contacts list110. User104enters the list criteria along with the appropriate logic. For instance, user104may enter “FRIEND” AND “GOLFER” in order to generate a group list that includes friends of user104who play golf. Alternatively, user104may enter “FRIEND” OR “GOLFER” to generate a list that includes contacts who are either tagged as “FRIEND” or “GOLFER” or both. User104may also enter the name of the contact list and tag list to be used for this search.

In step402of method400, user interface system202receives the list criteria from user104. In step404, list generator system204identifies contact list110of user104, which may be identified by name by user104. In step406, list generator system204identifies tag list130, which may also be identified by name by user104. In step408, list generator system204searches tag list130to identify one or more contacts111-116having a tag or tags that match the list criteria entered by user104. In essence, list generator system204filters out the contacts111-116of contact list110that have tags matching the list criteria as defined in tag list130. In step410, list generator system204generates a group list based on the contact(s) identified in tag list130. The group list thus represents the contacts111-116in contact list110that share common tags matching the list criteria.

In addition to searching tag list130, list generator system204may search contact list110to identify one or more contacts111-116having contact information that matches the list criteria entered by user104. List generator system204may generate the group list additionally based on the contact(s) identified in contact list110. For example, user104may enter the list criteria of “FRIEND” along with a particular area code or zip code. Area codes and zip codes are typically included in the contact information in the contact list110. Thus, list generator system204may search both the tag list130and the contact list110to generate the group list.

By entering particular list criteria, user104is advantageously able to identify which of the contacts111-116in contact list110matches the list criteria. Such functionality was not previously available due to the limited amount of information allowed in the contact list110. However, by adding a tag list130that relates to the contacts111-116in the contact list110, the tags provide additional information about the contacts111-116that may be used to generate group lists. List generator system204is thus able to search through the tags in the tag list130to identify the contacts111-116in contact list110having matching tags. These identified contacts111-116are then combined into a group list.

After the group list is generated, list generator system204provides the group list to user104in step412. User104may then select one or more of the contacts111-116in the group list to initiate communication over communication network100. For instance, user104may initiate a voice call one or more of the contacts111-116in the group list, may send a text message to one or more of the contacts111-116in the group list, may send an email to one or more of the contacts111-116in the group list, etc.

User104may also have the option of storing the group list for later use. For example, user interface system202may query user104for a name for the group list, responsive to which user104enters a desired name. User interface system202receives the group name, and list generator system204stores the group list with the group name. List generator system204may store the group list, using a protocol such as XCAP, in a network-based address book, such as in network server120. Alternatively, list generator system204may store the group list in communication device102.

EXAMPLE

FIGS. 5-11illustrate an example of dynamically generating group lists.FIG. 5illustrates communication network100in another exemplary embodiment of the invention. As inFIG. 1, communication device102is operable to provide a contact list510to user104. Contact list510includes a plurality of contacts511-517as entries with each contact511-517including a contact identifier and contact information. Contact list510is formatted as defined by a file format standard.FIG. 6illustrates a user interface provided through communication device102to display contact list510to user104in an exemplary embodiment of the invention. InFIG. 6, user104has navigated to the proper screen in order to display contact list510. From this screen, user104may select one or more of the contacts and initiate communication.

In addition to the contact list510, a tag list530is also maintained for user104. User104generates tag list530to include personal attributes that additionally characterize one or more contacts511-517in contact list510. Because contact list510has a standardized format, there are no fields that allow for personal attributes such as this. Thus, the tags are defined to include these personal attributes of the contacts511-517. Tag list530does not conform to the same standardized format as contact list510(or another standardized format), so any number of tags may be assigned to a contact511-517and the number of tags is not limited by a standardized format. Not all contacts511-517need be assigned tags in tag list130.

Tag list530includes entries531-536. Each entry531-536includes a contact identifier, such as “CONTACT” in entry531, and one or more tags. For instance, the tags defined for “CONTACT1” are “FRIEND”, “GOLFER”, “SAILOR”, and “JAN BDAY”. User104may define however many tags he/she wants for each contact511-517in contact list510, and some contacts511-517may have no tags defined. User104may enter the tag information through a web site or portal through a PC, or may enter the tag information through communication device102.FIG. 7illustrates a user interface provided through communication device102to enter tag information in an exemplary embodiment of the invention. InFIG. 7, user104has navigated to the proper screen in order to enter tag information for contact511(CONTACT1). User104then enters the tags of “FRIEND”, “GOLFER”, “SAILOR”, and “JAN BDAY”. User104may enter additional tags for contact511as desired, or may switch to another contact512-517and enter tag information for that contact.

The tag information entered by user104is saved in tag list530. User104may define multiple tag lists, so user104may assign a name to tag list530. Those skilled in the art will appreciate thatFIG. 5is just one embodiment, and the entries531-536in tag list530may have more or different tags than those illustrated. Contact list510and tag list530may be stored locally in a memory in communication device102. In another embodiment, contact list510and tag list530may be stored in network server120. Although contact list510and tag list530may be stored within the same memory or server, these lists are separate data structures. They are separate data structures because contact list510has a standardized format while the tag list530does not conform to a standardized format.

After tag list530is populated, the information stored in tag list530may be used to dynamically generate group lists for user104. In order to generate a group list, user104first enters list criteria to define what type of group list he/she would like to generate. Assume that user104wants to identify contacts511-517that are both friends and like to golf.FIG. 8illustrates a user interface provided through communication device102to enter list criteria for generating a group list in an exemplary embodiment of the invention. User104is aware of what tags have been assigned within the tag list530. Thus, to generate a desired group list, user navigates to the screen shown inFIG. 8and enters list criteria as one or more tags and associated logic. InFIG. 8, user104has entered “FRIEND” AND “GOLFER” as the list criteria. Because user104may have multiple contact lists and tag lists, communication device102also allows for the user to specify which lists to use in generating the group list.

Responsive to user104entering the list criteria into device102, user interface system202of group list system200(seeFIG. 2) receives the list criteria from user104. Group list system200may be implemented in device102, or in network server120. List generator system204then identifies contact list510of user104, and also identifies tag list530defined by user104. The name of contact list510and the name of tag list530may be provided by user104.

List generator system204searches tag list530to identify one or more contacts having tags that match the list criteria entered by user104. In this embodiment, there are three contacts that include the tags “FRIEND” AND “GOLFER”, which are contact511(CONTACT1), contact513(CONTACT3), and contact516(CONTACT6). List generator system204then generates a group list based on the contacts identified in tag list530. After the group list is generated, list generator system204provides the group list to device102, which is in turn displayed to user104.FIG. 9illustrates a user interface provided through communication device102to display a group list in an exemplary embodiment of the invention. The list criteria and tag list530are used to filter out the contacts having common attributes and generate the group list. The number of contacts displayed inFIG. 9is a sub-set or sub-group of the overall contact list510. User104may then select one or more of the contacts in the group list to initiate communication.

User104may also have the option of storing the group list for later use. For example, user interface system202may query user104for a name for the group list, responsive to which user104enters a desired name. User interface system202receives the group name, and list generator system204stores the group list with the group name. List generator system204may store the group list in a network-based address book, such as in network server120. Alternatively, list generator system204may store the group list in communication device102. User104may then recall the group list as desired on this device or on a different device.

Assume now that user104wants to generate another group list to identify contacts that are both friends and have a birthday in January.FIG. 10illustrates a user interface provided through communication device102to enter list criteria for generating another group list in an exemplary embodiment of the invention. To generate this desired group list, user104navigates to the screen shown inFIG. 10and enters list criteria as one or more tags and associated logic. InFIG. 10, user104has entered “FRIEND” AND “JAN BDAY” as the list criteria. User104may also provide the name of contact list510and the name of tag list530.

Responsive to user104entering the list criteria and other related information into device102, user interface system202of group list system200(seeFIG. 2) receives the list criteria from user104. List generator system204searches tag list530to identify one or more contacts having tags that match the list criteria entered by user104. In this embodiment, there are two contacts that include the tags “FRIEND” AND “JAN BDAY”, which are contact511(CONTACT1) and contact514(CONTACT4). List generator system204then generates a group list based on the contacts identified in tag list530. After the group list is generated, list generator system204provides the group list to device102, which is in turn displayed to user104.FIG. 11illustrates a user interface provided through communication device102to display a group list in an exemplary embodiment of the invention. User104may then select one or more of the contacts in the group list to initiate communication. User104may also store this group list for later use.

By assigning one or more tags to the contacts in contact list510, user104is advantageously able to dynamically generate group lists on his/her communication device102by simply entering list criteria. User104may then quickly determine which contacts511-517in contact list510share common attributes. User104thus does not need to manually scan through contact list510and attempt to identify those contacts sharing common attributes, as the group list system200(seeFIG. 2) can automatically perform this function for user104.