System and method for groups comprising non-communication address objects

Systems and methods of supporting groups that include non-communication address objects are provided. The non-communication address objects can be, for example, items on a shopping list or items on a task list. An application server can receive an unstructured list of non-communication address objects and generate a structured list. The application server sends a request to a group server to create a group that includes non-communication address objects. The group server generates a globally unique group identification and then distributes the globally unique group identification to members of the group.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is related to U.S. patent application Ser. No. 11/706,219, entitled “Systems and Methods for Opt-In and Opt-Out Talk Group Management”; U.S. patent application Ser. No. 11/706,217, entitled “Systems and Methods for Talk Group Distribution”; U.S. patent application Ser. No. 11/706,218, entitled “Systems and Methods of Group Distribution for Latency Sensitive Applications”; and U.S. patent application Ser. No. 11/706,224, entitled “Talk Group Management Architecture”, all of which were filed on Feb. 15, 2007, and all of which are herein expressly incorporated by reference.

BACKGROUND OF THE INVENTION

The aforementioned patent applications relate to systems and methods for supporting communication groups. Information about the communication groups are stored in a Group List Management Server (GLMS), where the information includes a globally unique group identification and communication addresses of communication units for each member of the communication group.

SUMMARY OF THE INVENTION

It has been recognized that the systems and methods of the GLMS architecture of the aforementioned patent applications can be extended to provide additional services using non-communication address objects. In accordance with exemplary embodiments of the present invention, a group server includes a group list that comprises a globally unique group identification and one or more non-communication address objects. The non-communication address objects can be, for example, items for a shopping list or items for a task list. An application server can interact with communication units to receive a request to create a group that comprises non-communication address objects. If the request includes a non-structured list of the non-communication address objects, the application server can structure the list, and then send a request to the group server to create the group. The group server generates a globally unique group identification and stores this identification along with the structured or unstructured list.

When the non-communication address objects are items for a shopping list, the group server can notify suppliers of one or more of the items of the shopping list, and the application server can receive offers for sale for one or more of the items. The application server can aggregate the offers and provide the aggregated offers to the group creator, who can then accept one or more of the offers for sale.

When the non-communication address objects are items for a task list, the group server can notify other communication units of the task list. A communication unit can be notified if the communication unit is subscribed to the task list either due to an earlier subscription to groups created by the group creator or by being identified in the request to create the group. The application server monitors the status of each of the items on the task list, and can update the status of an item based on messages received from subscribers to the task list. The application server can notify the group server when changes are made to the task list, and the group server can then notify the other subscribers to the task list of the changes.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1is a block diagram of an exemplary system in accordance with the present invention. The system includes communication units A and B coupled, via network110, to application server115and group server120. Communication units A and B can be any type of communications units, including wireless or wired communication units, such as telephones, personal digital assistants, desktop or laptop computers, biometric device and implants and/or the like. As will be described in more detail below, for communication groups comprising a shopping list as a non-communication address object, the system will include one or more suppliers125. For communication groups comprising a task list, the communication units can be associated with people who are individually or jointly assigned tasks in the list. AlthoughFIG. 1illustrates only two communication units, the system can include more than two communication units. Moreover, a user can be associated with more than one communication unit, each of which can interact with application server115and group server120.

Application server115can be any type of server, and provides various functionality in connection with non-communication address objects, as described in more detail below. Group server120can be a GLMS that is described in the aforementioned patent applications, or can be any other type of group list management server. Network110can be more than one network, and can be any type of wireless and/or wireline network, including a voice network and/or a data network. AlthoughFIG. 1illustrates communication units A and B and one or more suppliers125being coupled to application server115and group server120via the same network110, these communication units and suppliers can be coupled by different networks.

FIG. 2is a flow diagram of an exemplary method for a group server supporting groups composed of non-communication address objects in accordance with the present invention. Initially, group server120receives a request to create a group from one of the communication units A or B by way of application server115(step205). The request includes a list of non-communication address objects (e.g., shopping list items or task list items). Group server120generates a unique group identification, and stores the unique group identification, an identification of the creator of the group and the list of non-communication address objects (steps210and215). User preferences can also be stored with the list of non-communication address objects. These user preferences can be included in the request to create the group or can be obtained from a subscriber profile service (not illustrated). When non-communication address objects are shopping list object, the user preferences can be, for example, preferred suppliers, offer limitations (e.g., only offers for every item on the list), and/or the like. The unique group identification, identification of the creator of the group, list of non-communication address objects and user preferences can be stored, for example, in an eXtensible Markup Language (XML) document.

Group server120then determines whether there are any subscribers to the communication group, categories of objects or the objects (step220). The communication request of step205can identify subscribers to the communication group. When the communication request identifies preferred suppliers or task list delegates, the opt-in or opt-out functionality described in the aforementioned patent applications can be employed for determining whether the subscribers become members of the group. Moreover, subscribers may have subscribed to the objects or group prior to the request to create the group. For example, a subscriber could subscribe to all groups created by a particular user, all groups containing particular non-communication address objects and/or all groups containing non-communication address objects in particular categories. When there are subscribers to the group or non-communication address objects (“Yes” path out of decision step220), then group server120notifies the subscribers of the group and provides the unique group identification (step225).

When there are no subscribers to the group or non-communication address objects (“No” path out of decision step220) or after any subscribers are notified (step225), then group server120determines whether it has received any requests for a list of the non-communication address objects (step230). Non-subscribers can become aware of the group by searching for groups using, for example, a portal, and can join a group using techniques described in U.S. patent application Ser. No. 11/963,234, entitled “Joining Groups” filed on even date herewith, the entire disclosure of which is herein expressly incorporated by reference. Additionally, or alternatively, to subscribers being notified of a group and then requesting the list of objects (steps220-230), the list of objects can be provided to subscribers when they are notified of the group. When the system does not automatically notify group members of updates to the lists (i.e., using a “push” function), the requesting function of step230can be employed by members of the group to obtain updates (i.e., using a “pull” function). When group server120has received a request for the list (“Yes” path out of decision step230), then group server120provides the list to the requestor (step235).

When group server120has not received a request for the list (“No” path out of decision step230) or after the list is provided to a requestor (step235), group server120determines whether it has received a request to delete the group (step240). Because lists that include non-communication address objects may have a limited lifetime, e.g., all items on a task list being completed or all items on a shopping list being fulfilled, the deletion of these groups allows reuse of the globally unique group identification. This request can be received from an application server that supports the non-communication address functionality and/or the group server can delete groups after a predetermined condition occurs, such as passage of a period of time. When group server120receives such a request (“Yes” path out of decision step240), then group server120deletes the group and notifies all subscribers to the group of the deletion (steps245and250).

When group server120does not receive a request to delete a group (“No” path out of decision step240), group server120then determines whether it has received an update for the group (step255). When group server120receives an update for the group (“Yes” path out of decision step255), then the group is updated (step260) and it is determined whether there are any subscribers to the group or object (step220). When group server120does not receive an update to for the group (“No” path out of decision step255), then the group server determines whether it has received a request for the list of non-communication address objects (step230).

FIG. 3is a block diagram of an exemplary application server in accordance with a first aspect of the present invention. Application server300includes communication unit interface305for communicating with communication units A and B, and group server interface310for communicating with group server120. Application server300can also include web interface360that can be used to receiver offers from suppliers. Communication unit interface305can include a number of different communication unit interfaces, depending upon the types of communication networks in which communication units A and B are currently being supported. Interfaces305,310and360are coupled to processor320, which in turn is coupled to memory350. Processor320includes logic325-335, and can be any type of processor, including a microprocessor, field programmable gate array (FPGA) and/or an application specific integrated circuit (ASIC). Memory350can be any type of memory, and when processor320is a microprocessor, memory350can store logic325-335as processor-executable code. Logic325-335will be described in more detail below in connection withFIG. 4.

FIG. 4is a call flow diagram of an exemplary method in accordance with a first aspect of the present invention. In the call flow ofFIG. 4User A can be associated with one or more communication units, any of which can interact with application server300and group server120in the manner described below. Supplier402is a supplier that has a subscription to categories or objects in User A's list, or to lists created by User A, and supplier403is a supplier that sends a request for lists that include particular categories or objects, or to lists created by particular users. Although not illustrated, one or more suppliers may be notified of User A's list due to User A's preferences for particular suppliers.

Initially, group server120can receive a subscription to categories, users and/or objects from supplier402(step405). When application server300receives a request to create a group with an unstructured list of non-communication address objects from User A via interface305(step410), logic325creates a structured list (step415).

FIGS. 5A-5Care exemplary shopping lists in accordance with the first aspect of the present invention. The list ofFIG. 5Ais an exemplary unstructured list provided by a communication unit, andFIG. 5Bis an exemplary structured list generated by logic325from the list ofFIG. 5A. As illustrated inFIG. 5B, the structured list places the non-communication address objects into different categories. The use of categories allows suppliers to subscribe to categories that can include a number of items, instead of subscribing to each individual item. The list ofFIG. 5Cis a structured list that also includes the unique group identification, address of the application server, user preferences, and identification of the group creator and subscribers to the group. This list can be stored in group server120, application server300, and can be provided to suppliers402and403.

Processor320of application server300then transmits a request to create a group with the structured list and the address of the application server over interface310to group server120(step420). Group server generates a unique group identification, and stores the unique group identification, an identification of User A, the address of application server120and the structured list (step425). Group server120then sends a Notify message with the unique group identification to all subscribers to the users, categories, and/or objects of the group (step430). Group server120also sends a message with the unique group identification to application server300(step435). Processor310of application server300receives a unique group identification from group server120, stores the unique group identification along with User A's identification and the structured list, and sends a message to User A with the unique group identification (step440).

One or more suppliers403that are interested in making offers for sale send a request for the list of items to group server120(step445), which responds with the list of items (step450). Additionally, or alternatively, as described above in connection withFIG. 2, group server120can send the list with the message notifying the supplier of the creation of the group, if desired. Suppliers402and403can then make offers for sale for one or more of the items by sending the offer prices for the particular items to application server300, which is identified by an address in the Notify or provide items messages (steps455aand455b). Suppliers402and403can make various types of offers for sale, such as discounts for purchasing a number of items on the list from the supplier, discounts for purchasing more than a particular quantity of an item from the supplier, coupons for futures purchases from the supplier, etc.

Logic330of application server300receives offers over interface360, aggregates and formats the offers (step460). The offers can be formatted in a variety of different ways, such as by supplier, by item, etc. Additionally, the offers can be formatted based on the type communication unit associated with User A. In this case, application server300can store information about type of communication unit associated with User A, or can obtain this information from the group server120or another network element (not illustrated).

User A can send a request for the list of the offers for sale (step465) and receive a list of the aggregated and formatted offers for sale (step470). Alternatively, after a predetermined amount of time or after a predetermined number of offers for sale have been received, application server300can send (not illustrated) the aggregated and formatted list of offers for sale to User A.

User A then selects one or more offers for sale (step475) and sends a message accepting the offers for sale to application server300(step480). Offer acceptance and payment logic335of application server300can then receive the acceptance and payment information and notify suppliers402of acceptance of the offers for sale (steps485,490aand490b). If desired, offer acceptance and payment logic335can use payment and shipping information provided by User A with the acceptance, or stored in memory350, to complete the transaction with suppliers402. Offer acceptance and payment logic335can also hide the user payment and shipping information, if desired. Moreover, User A can click on a uniform resource locator (URL) in the offer to hyperlink to a website of a supplier where User A can complete the transaction by providing payment and shipping information.

FIG. 6is a block diagram of an exemplary application server in accordance with a second aspect of the present invention. Application server600includes communication unit interface605for communicating with communication units A and B, and group server interface610for communicating with group server120, both of which operate in a similar manner to that described above in connection with application server300. Interfaces605and610are coupled to processor620, which in turn is coupled to memory650. Processor620includes logic625and630, and can be any type of processor, including a microprocessor, field programmable gate array (FPGA) and/or an application specific integrated circuit (ASIC). Memory650can be any type of memory, and when processor620is a microprocessor, memory can store logic625and630as processor-executable code. Logic625and630will be described in more detail below in connection withFIG. 7.

FIG. 7is a call flow diagram of an exemplary method in accordance with a second aspect of the present invention. In the call flow diagram ofFIG. 7Users A and B can each be associated with one or more communication units, any of which can interact with application server600and group server120in the manner described below. In the exemplary call flow diagram User B can subscribe to groups created by User A by sending a Subscribe message (step705). At some later time, User A sends a message to create a task list to application server600(step710). This message can include a number of tasks, as well as identifying additional users associated with the task list, if desired. Logic625of application server600can structure the list of tasks received from User A (step715).

The list of tasks can be an unstructured list, such as that illustrated inFIG. 8A. An optional function that can be implemented by application server600is structuring task lists.FIG. 8Billustrates a task list structured by Users. In this case the unstructured task list can include an identification of one or more users assigned to a task. Moreover, as illustrated inFIG. 8B, tasks may be assigned to more than one user, if desired.

FIG. 8Cillustrates an exemplary task list that is structured by geographic area. The unstructured task list ofFIG. 8Acan include geographic information associated with one or more of the tasks. Alternatively, or additionally, application server600can intelligently determine the geographic location based upon information describing the task. For example, if Task1is “Bring clothes to dry cleaner”, then application server600can determine that a dry cleaner is located in Geographic Area1. Presence information can be used to dynamically structure the list based on a user's current geographic location. Moreover, application server600can access an address book service for members of the task list group to identify a dry cleaner used by one or more of the members, and use information provided by the address book service to identify the geographic area of different tasks.

Although the task list structures ofFIGS. 8B-Dare illustrated separately, they can be combined. For example, a task list can be structured by geographic area, then task type, and then user. Moreover, the task list structures described above and illustrated inFIGS. 8B-8Dare merely exemplary and many variations of these task list structures can be employed with the present invention. Additionally, the structured task lists can include the unique group identification, user preferences, the identifications of each group member and the address of application server600. Although not illustrated, a task can appear in multiple categories, e.g., Task2can appear in the “Geographic Location1” category and the “Task Type1” category of a list.

Returning now toFIG. 7, application server600sends a request to create a task list group to group server120(step720). The request can include a structured or unstructured task list, as well as an identification of one or more users associated with the list. Group server120creates a globally unique group identification, stores the identification with the users and the list of objects, and sends a Notify message with the globally unique group identification to Users A and B and application server600(steps725a-725c). The Notify message can also include the structured list. Alternatively, or additionally, upon receipt of the Notify message, application server600can send the structured list to Users A and B. The Notify message can be sent to User B due to the user being a member of the task list group when it was created or due to an earlier subscription to groups created by User A.

When User A makes a change to the status of one of the tasks, an Update message is sent to application server600(step730). The change in status could be, for example, that a task has been completed, that a task has been tentatively completed, that the task is in progress, etc. Object modification logic630updates the status of the task and then sends an Update message to group server120(step735). Group server120then notifies User B of the update by sending a Notify message (step740). Similarly, when User B changes the status of one of the task, User B sends an Update message to application server600(step745), object modification logic630updates the status of the task and then sends an Update message to group server120(step750). Group server120then sends a Notify message to User A (step755). Users can be notified of changes to the status of tasks by an explicit message on the communication unit (e.g., highlighting the updated tasks in the task list or displaying a message similar to a missed call message), or the status change can be automatically incorporated into the task list on the communication unit without explicitly notifying the user.

Assume now that User B decides to delegate a task to User C. Accordingly, User B sends an Update message indicating delegation of one or more tasks to application server600(step760). Application server600then updates the group list by sending a message to application server120(step765). Because User A is the group creator, group server120sends a Notify message requesting authorization to delegate the task (step770). User A can then respond with a message authorizing the delegation of the task (step775). Group server120adds User C to the group task list and sends a Notify message to User C with the delegated task (step780).

Although not illustrated above in connection withFIGS. 4 and 7, a group creator or other authorized member of the group can, at any time, modify the list of non-communication address objects, such as to add or delete objects from the list. In the methods described above the group server is acting as a proxy on behalf of a list creator to create groups composed of non-communication address objects and authenticate the credentials of the list creator with the group server.