On demand multicast messaging system7035649Abstract An on-demand message system includes a profile proxy server and a plurality of message servers coupled to a wireless network for sending messages to mobile users under conditions specified by the users and sellers. Users provide profile information specifying categories and conditions for which they will receive messages. Sellers also provide profile information specifying conditions under which they want messages to be sent. A multicast message is sent and processed by target users in response to a predetermined event, e.g., location update, conveying information related to a seller for which the target users have expressed an interest in receiving. Claims What is claimed is: Description FIELD OF THE INVENTION
Sellers can also specify conditions for broadcasting their messages. Examplary conditions include multicasting their messages only when a predetermined number of users are within a specified proximity of the seller, at certain times of the day, and certain days of the week. In addition, the seller profile can contain driving directions to the seller, business category, e.g., restaurant, and subcategories, e.g., type of food and drive through. The seller profile can further include time periods desired for message broadcasts, user distance range, type of action, e.g., send predetermined message or electronic coupon, and threshold of number of users within a local area before sending messages. The seller conditions can be stored in a seller profile database associated with a message server local to the seller. In one embodiment, a seller can manually determine the number of users within the seller's local area that have specified the seller's category by connecting to the proxy server. For example, a seller can communicate with a local message server that provides user information to the seller. The seller can then manually send messages to users. User privacy can be maintained by protecting the actual identity of the user. It is understood that the term "user" as used herein broadly refers to a person with a mobile phone. It is further understood that processing performed by a user refers to processing done by the user's phone. FIG. 5 shows an exemplary embodiment of a message server, such as the message server 106 of FIGS. 1 and 2, that forms part of an mobile on-demand messaging server in accordance with the present invention. In one embodiment, the message server 106 includes an instant messaging server 180 for generating instant messages to a user in response to an active request for information from a user. The instant messaging server 150 can also include the user in a group of users to receive automatically generated messages in response to an inquiry. The message server 106 can further include a user location monitor 182 for monitoring the location of mobile network users. As described more fully below, the user's location can be used to send information requested by the user. For so called second generation or 2G type wireless networks, the user location monitor 152 can be connected to a mobile switching center (MSC). For 3G wireless systems, the user location monitor 152 can be coupled to a Serving GPRS (General Packet Radio Service) Support Node (SGSN). A multicast message gateway 184 delivers messages to a selected group of users via a GPRS network in a multicast format, described more fully below. Alternatively, the messages can be broadcast using conventional Short Message Service (SMS) or Cellular Digital Packet Data (CDPD) based email services. The message server 106 can further include a profile database 186 for storing user and seller profiles. Users and sellers can modify their profile information via the profile proxy server 108 through the Internet. In one embodiment, the user and seller profiles are stored on the message server 106 that is local to the respective user or seller. The profile proxy server 108 can contain a user-message server index. With this arrangement, in the case where a user is not within the area served by message server containing the user's profile, the profile proxy server can be queried by the message server in which the user is currently located to obtain the user's profile, as described more fully below. In general, when a user registers with the wireless network, the local message server dynamically forms a desired service ID pool for the user based upon the business category and subcategory preferences specified in the user's profile. The service ID pool includes desired category information and corresponding mask information, as described below. The service ID pool for the user can also contain condition information from the user profile. The desired ID pool can be downloaded to the user to allow the user to process or "receive" multicast messages from sellers within the desired categories and conditions, as described below. FIG. 6 shows an exemplary embodiment of a service ID 190 and ID mask 192 pair that provide one service ID set. A plurality of service ID sets can form a user desired service ID pool for a user. A portion of a multicast message 194 is also shown. It will be readily apparent that the size and number of the fields shown in the desired service ID pool can vary in accordance with the requirements of a particular application. The service ID includes fields for category value 195a, first subcategory value 195b, second category value 195c, and seller ID 195d. Each field for which the user has specified a preference in the user profile contains a particular value. For example, the restaurant category can correspond to 50 H (hexadecimal notation). Fields for which the user has not specified a value are set to a default value, such as all binary ones. The ID mask 192 includes a category filter 196a, a first subcategory filter 196b, a second category filter 196c, and a seller filter 196d. In one embodiment, the filters 196 are set to a first predetermined value if a preference for the corresponding category, subcategory, or seller is specified and a second predetermined value if a preference is not specified. In one particular embodiment, the filters 196 are set to all binary ones in the case where a preference is specified by the user and all binary zeroes where a preference is not specified. The multicast message broadcast by a base station can have a variety of formats that contain identifying information, data, and seller category information 197a-d. FIG. 7 shows an exemplary multicast message in accordance with the present invention. The message includes a category ID 197a, a first subcategory ID 197b, and instance or seller ID 197d, and content 197e. The user extracts information from the multicast message to fill the category 197a, first subcategory 197b, second subcategory 197c, and seller ID 197d values in the seller service instance ID. It is understood that each field 197 has a predetermined value corresponding to the particular category and subcategory to which the seller belongs. The seller ID value 197d is a value that uniquely identifies each seller. In general, the user's desired service ID pool is utilized by the user to determine which multicast messages should be processed or "received" by the user. It is understood that specifying fewer preferences results in a user receiving more messages. For example, a user that only specifies a preference for a category 195a and first subcategory 195b can receive all messages from sellers meeting the specified preferences. A user that specifies a preference for category 195a, first subcategory 195b, second subcategory 195c and seller 195d limits messages to sellers that meet the category, subcategory, and seller criteria. In an exemplary embodiment, the user logically ANDs the seller service instance ID 197 from a multicast message and the user ID mask 196 upon receiving the multicast message. ID mask filter 197 values having all ones result in the message value passing through the filter. For example, the category value 197a in the seller service instance ID passes through a category filter 196a that is all ones. A second subcategory value 195c, as well the second category filter 196c, in the user service ID are all zeroes when the user has not specified a preference for the second subcategory within the business category. The result of the logical AND of the service instance ID 197 from the multicast message and the ID mask 196 is then compared to the service ID 195. If they match then the multicast message is "received" and processed by the user. Thus, unfiltered service ID values 195 must match the values in the seller service instance ID 197. Filtered values are considered to match since unspecified service ID values are binary zeroes. That is, unspecified category information does not operate to prevent the user from receiving messages. The received or processed messages can take a variety of forms. Exemplary messages types include web-based hyper text markup language (HTML), wireless application protocol (WAP)-based wireless markup language (WML), ASCII text and other suitable formats that can be handled by the mobile phone. Further formats, including those which may be developed in the future, will be readily apparent to one of ordinary skill in the art. The messages can be active, i.e., ring the user's phone, or passive, i.e., stored silently in the user's phone. Passive messages are displayed when the user activates the phone, such as by pressing a key. In one embodiment, the seller can specify, such as in the seller's profile, whether messages should be active or passive. The user can disable active messages such that they are treated as passive messages, i.e., stored silently. FIG. 8, in combination with FIGS. 1-3, show an exemplary sequence of steps for transmitting on demand multicast messages in accordance with the present invention. In general, a local message server receives an event associated with a user. In one embodiment, events types include registration events, de-registration events, location update events, and active request events. In step 200, it is determined whether the message server 106 has received an event. In step 202, it is determined whether the received event is a registration event. A registration event occurs when a user is first recognized by the mobile messaging system, such as at power up. In one embodiment, a local MSC becomes aware of the user and sends an indication to the local messaging server 106 coupled to the MSC. In step 204, a registration procedure, which is described in detail in FIG. 9, is run to process the registration event. If the event was not a registration event, in step 206 the message server 106 determines whether the received event is a de-registration event. A de-registration event occurs when the MSC sends an indication to the messaging server 106 that a user is no longer registered with the mobile network, e.g., power down. In step 208, a de-registration procedure (see FIG. 10) is run for de-registration events. Similarly, steps 210 and 214 determine whether the received events are location update or active request events, respectively. In step 212, a location update procedure (see FIG. 11) is run for location update events and in step 216 an active request procedure (see FIG. 12) is run for active request events. FIG. 8, in combination with FIGS. 1-3, show an exemplary sequence of steps for processing a registration event. In step 300, the user ID, such as the mobile subscriber identity (MSID) is extracted from the event message. The message server 106 determines, in step 302, whether the user ID is contained in the local user profile database 107 associated with the message server 106. If the user ID is found in the local user profile database, in step 304 the user profile is retrieved from the database. In step 306, the local message server 106 determines whether the user is a roaming user, and if so, updates an expiring time for the user in the profile database in step 308. If the user is not a roaming user, a desired service ID pool is formed in step 310, which is described more fully below. If the user ID was not in the local profile database (step 302), the local message server 106 queries the profile proxy server 108 for the internet protocol (IP) address of the user in step 312. In step 314, the local message server 106 receives the IP address of a message server associated with the user, and in step 316, retrieves the user profile from the remote message server. The received user profile is then saved in the local message server user profile database in step 318. In step 310, the local message server 106 forms a desired service ID pool for the user based upon the goods and/or services specified in the user's profile, as described above. In general, the desired service ID pool is formed by the local message server 106 from the user profile desired category and condition information. In step 312, the desired service pool ID is transmitted to the user and stored in the user's mobile phone. For example, the four bytes of a user service ID 190 (FIG. 6) can be provided as follows: ([B4:category] [B3:first subcategory] [B2:second category] [B1:particular seller]) A user can specify preferences to receive messages from Fast Burger in the following manner: [B4:dining] [B3:fast food] [B2:drive through] [B1:Fast Burger]. It is understood that each byte corresponds to a predetermined value. It is further understood that "Fast Burger" is an imaginary fast food restaurant used for purposes of this example. The corresponding mask (in hexadecimal notation) can be as follows: [B4:FF] [B3:FF] [B2: FF] [B1:FF]. Since the user has specified a preference down to a particular seller, the mask contains all binary ones to pass the entire multicast message, as described below. A user can also specify a broader preference to receive all messages from fast food sellers with the following service ID: [dining] [fast food)] [no preference] [no preference]. The corresponding mask for the service ID is (in hexidecimal notation) [FF] [FF] [00] [00]. A multicast message contains four bytes indicating the seller's identity and category information. For example, a multicast message can have a format that is similar to the user service ID as follows: [B4: category] [B3: first subcategory] [B2: second subcategory] [B1: seller ID]. The multicast message is logically ANDed with user's ID mask. For example, a message from Fast Burger can be provided as follows: [B4: restaurant] [B3: fast food] [B2: drive through] [B1: Fast Burger ID]. If the user has indicated that messages from Fast Burger should be received, the multicast message is logically ANDed with all ones. Thus, the multicast message is unchanged, i.e., unfiltered. The AND result is then compared to the user service ID. If the category (B4), first subcategory (B3), second subcategory (B2), and seller ID (B4) match, the message is received by the user's mobile phone. As can be seen, fields, e.g., seller ID, for which the user did not specify a preference do not operate to block messages from any seller within the field. That is, a message is not blocked on the basis of the seller identified in the message if the user did not specify a preference for a particular seller. In addition, the user conditions for receiving the message are also compared to information in the multicast message. The message server determines whether user conditions are satisfied. When a message server receives an event associated with the user, such as passing from one cell to another cell, the message server first determines whether the conditions specified in the user's profile are met. If they are not satisfied, the event is ignored. If the conditions are met, a count of possible sellers that meet the user's conditions is incremented. If the count exceeds a predetermined threshold, which can be specified by the seller, the message server initiates a predetermined action, such as sending a multicast message. It is understood that other techniques for processing multicast messages will be readily apparent to one of ordinary skill in the art and are within the scope of the present invention. FIG. 10 shows an exemplary procedure for handling a de-registration event. In general, the user is removed from seller candidate lists. In step 400, the local message server extracts the user ID and in step 402 determines whether the user ID is in the local user profile database. Processing is terminated if the user ID is not in the local user profile database. If the user ID is in the local user profile database, in step 404 the user profile is retrieved and in step 406 a desired service ID for the user is formed. In step 408, the local message server 106 finds a seller ID that matches a desired service ID in the pool. In step 410, the message server finds a seller ID matching an ID in the user's desired service ID pool. The seller profile candidate list, which is described below, is checked to determine whether the user ID is contained in the seller candidate list in step 412. If the user ID is found, in step 414 the user ID is removed from the seller candidate list. If the user ID is not found in the seller candidate list, in step 416 it is determined whether there are additional seller IDs to check against the user desired service ID pool. FIG. 11 shows an exemplary sequence of steps for servicing a location update event. In step 500, the local message server 106 extracts the user ID and in step 502 determines whether the event is an arrival event. In step 504, the local message server 106 runs the de-registration procedure described above in conjunction with FIG. 10 if the event is not an arrival event, e.g., is a departure event. In step 506, the local message server determines whether the user profile is in the local user profile database. Steps 508-514 and 520-524 are similar to steps 312-318 and 304-308, respectively, described above in conjunction with the registration procedure (FIG. 9) and will not be described further. In step 516, the local message server 106 assigns an expiration time to the user profile. A desired service ID pool for the user is formed in step 518. In step 526, the seller ID for the user's desired service ID pool is retrieved from the local profile database. In step 528, the local message server determines whether the user conditions and the seller conditions are both satisfied. Exemplary user and seller conditions are set forth above. If the conditions are not satisfied, in step 530 it is determined whether additional seller IDs match IDs in the user desired service ID pool. If the conditions are satisfied, in step 532, the local message server determines whether the user has already received messages from the seller. If no prior messages were received, in step 534 the user ID is placed in a candidate list for the seller's profile. In step 536, the user profile is assigned an expiring time. In step 538, the local message server 106 determines whether the number of users in the seller's candidate list exceeds a predetermined threshold. If not, further seller IDs are checked in step 530. If the threshold is exceeded, in step 540 a multicast message is transmitted by the base station associated with the message server. The multicast message is identified by the seller's service instance ID, as described in detail above. FIGS. 12A-B show an exemplary sequence of steps for the active request procedure. In general, an active request occurs in when a user requests information for goods/services within a category or subcategory. It is understood that the user can make a request in a variety of ways. For example, a predefined local information menu can be downloaded to the user's phone. In the menu, the "1" button on the phone can correspond to a dining category, the "2" button can correspond to an entertainment category, and so on. If the user wants to request information about local restaurants, the "1" button is pressed. The request event will be sent to the local message server via the wireless network. In turn, the message server responds with a list of sellers within the user's request category for display on the phone. In addition, the message server can further process this event to determine whether pre-defined commercial messages can be triggered and sent to nearby users. Steps 600-618 are similar to steps 300-318 of FIG. 9 and are not described further. After the user's desired service ID pool is formed, in step 620 the local message server 106 determines a local seller that has a service instance ID that matches the category or subcategory from which the user has requested information and matches an ID within the user's desired service ID pool. In step 622, the list of matching local sellers is transmitted to the user. In step 624, the local message server determines whether the customer and seller conditions are met. If the conditions are satisfied and the user has not previously received messages from that seller, as determined in step 626, the user ID is placed within a candidate list in the seller's profile in step 628. In step 630, an expiring time is assigned to the user ID. In step 632, the local message server compares the number of users to a predetermined threshold. If the threshold is exceeded, in step 634 a multicast message identified by the seller's service instance ID is transmitted. And in step 636, it is determined whether there are further seller IDs to be checked. If the user and seller conditions are not met (step 624) or the user has already received messages from the seller (step 626), then in step 636 it is determined whether there are additional seller IDs to be checked. One skilled in the art will appreciate further features and advantages of the invention based on the above-described embodiments. Accordingly, the invention is not to be limited by what has been particularly shown and described, except as indicated by the appended claims. All publications and references cited herein are expressly incorporated herein by reference in their entirety.
|
Same subclass Same class Consider this |
||||||||||||||||||||||||||||||||||||||||||||||||||||
