WO2015043392A1 - Method, apparatus and system for forwarding messages - Google Patents

Method, apparatus and system for forwarding messages Download PDF

Info

Publication number
WO2015043392A1
WO2015043392A1 PCT/CN2014/086608 CN2014086608W WO2015043392A1 WO 2015043392 A1 WO2015043392 A1 WO 2015043392A1 CN 2014086608 W CN2014086608 W CN 2014086608W WO 2015043392 A1 WO2015043392 A1 WO 2015043392A1
Authority
WO
WIPO (PCT)
Prior art keywords
message
user
users
values
attributes
Prior art date
Application number
PCT/CN2014/086608
Other languages
French (fr)
Inventor
Xiao Sun
Original Assignee
Tencent Technology (Shenzhen) Company Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology (Shenzhen) Company Limited filed Critical Tencent Technology (Shenzhen) Company Limited
Publication of WO2015043392A1 publication Critical patent/WO2015043392A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding

Definitions

  • the present application generally relates to the field of information management and processing technologies, and more particularly to a method and related apparatus and system for forwarding messages.
  • Some known messaging tools enable a user to transmit a message to one or multiple recipients.
  • the known messaging tools typically require the user to manually select desired recipient (s) from a list of her contacts, and then send the message to the selected recipient (s) .
  • Such a method can be tedious and time-consuming for the user to operate when the user has a large number of contacts.
  • some known messaging tools enable the user to select a broadcast mode such that the message is broadcast to every contact of the user. Such a broadcast method, however, sends the message to uninterested contacts, potentially causing message flood and waste of resources.
  • a method for forwarding messages is performed at a computer system having one or more processors and memory for storing programs to be executed by the one or more processors.
  • the method includes receiving a message associated with a set of user attributes, and then determining, based on the message, values of the set of user attributes for the message.
  • the message is received from a user from a group of users registered with the computer system.
  • the values of the set of user attributes for the messages include user attribute values of that user.
  • the set of user attributes includes at least one of a language of the message, a region, and an Internet Protocol (IP) address.
  • IP Internet Protocol
  • the method includes retrieving values of user attributes associated with the group of users.
  • the methods also includes determining a set of users from the group of users, where each user from the set of users has user attribute values that match the values of the set of user attributes for the message in accordance with a predefined forwarding rule.
  • the predefined forwarding rule is defined such that the value of at least one user attribute of each user from the set of users is identical to the value of the at least one user attribute for the message.
  • the set of users includes more than one user registered with the computer system.
  • user attribute values of each user excluded from the set of users do not match the values of the set of user attributes for the message according to the predefined forwarding rule.
  • the method further includes forwarding the message to each user from the set of users.
  • an apparatus includes one or more processors and memory storing one or more programs for execution by the one or more processors.
  • the one or more programs include instructions for performing the operations of the method for forwarding messages described above.
  • a non-transitory computer readable storage medium stores one or more programs including instructions for execution by one or more processors. The instructions, when executed by the one or more processors, cause the processors to perform the operations of the method for forwarding messages described herein.
  • FIG. 1 is a flowchart illustrating a method for forwarding messages in accordance with some embodiments.
  • FIG. 2 is a flowchart illustrating another method for forwarding messages in accordance with some embodiments.
  • FIG. 3 is a flowchart illustrating another method for forwarding messages in accordance with some embodiments.
  • FIG. 4 is a flowchart illustrating another method for forwarding messages in accordance with some embodiments.
  • FIG. 5 is a block diagram of an apparatus configured to forward messages in accordance with some embodiments.
  • FIG. 6 is a block diagram of another apparatus configured to forward messages in accordance with some embodiments.
  • FIG. 7 is a block diagram of a retrieve module in an apparatus configured to forward messages in accordance with some embodiments.
  • FIG. 8 is a block diagram of another retrieve module in an apparatus configured to forward messages in accordance with some embodiments.
  • FIG. 9 is a block diagram of another retrieve module in an apparatus configured to forward messages in accordance with some embodiments.
  • FIG. 10 is a schematic diagram illustrating a system configured to forward messages in accordance with some embodiments.
  • FIG. 11 is a schematic diagram illustrating components of an apparatus configured to forward messages in accordance with some embodiments.
  • FIG. 1 is a flowchart illustrating a method 10 for forwarding messages in accordance with some embodiments.
  • the method 10 is performed at an apparatus that can be any type of device configured to receive and forward electronic messages.
  • Such an apparatus can be operatively coupled to multiple client devices and/or networks.
  • the electronic messages received and forwarded at the apparatus can be any type of message that can be transmitted between the apparatus and the client devices or the networks.
  • the electronic messages can include, for example, emails, text messages, instant messages, files (e. g. , transmitted based on a suitable protocol such as File Transfer Protocol (FTP) ) , voice messages, images, video clips, and/or the like.
  • FTP File Transfer Protocol
  • the apparatus performing the method 10 can be any device configured to communicate with, receive messages from and transmit messages to the client devices operatively coupled to the apparatus (e. g. , via one or more networks) .
  • an apparatus can be, for example, a background server, a back end server, a database server, a workstation, a desktop computer, a cloud computing server, a data processing server, a communication server, a messaging server, an email server, a mail server, and/or the like.
  • the apparatus can be a single server device or a server cluster consisting of two or more servers (e. g. , a communication server, a data processing server and a database server) .
  • the apparatus can be accessed and operated by a user such as, for example, a network administrator, an operator, a management agent, and/or the like.
  • a client device operatively coupled to the apparatus performing the method 10 can be any electronic device configured to communicate with, receive messages from and transmit messages to the apparatus (e. g. , via one or more networks) .
  • a client device can be, for example, a mobile phone, a smart phone, a mobile Internet device (MID) , a tablet, an e-reader, a remote controller, a personal digital assistant (PDA) , vehicle-mounted equipment, a wearable device, a laptop computer, a handheld computer, a personal computer, a desktop computer, other portable electronic device, and/or the like.
  • MID mobile Internet device
  • PDA personal digital assistant
  • a client device can also be referred to as, for example, a user device, a user terminal, a portable device, a mobile device, a terminal device, and/or the like.
  • each client device operatively coupled to the apparatus can be accessed and operated by a user associated with that client device such as, for example, the owner of the client device.
  • a user of a client device can operate the client device to send a message (e. g. , an email, an instant message, an online message, a text message, a voice message, etc. ) to the apparatus, which can then forward the message to a group of other users (e. g. , to client devices associated with the group of other users) .
  • a message e. g. , an email, an instant message, an online message, a text message, a voice message, etc.
  • the apparatus can be directly connected to a client device.
  • the apparatus can be operatively coupled to a client device via one or more networks.
  • a network operatively coupling the apparatus and the client device (s) can be any type of network that operatively couples (via a wired connection, a wireless connection, or a combination of wired and wireless connections) one or more apparatuses to one or more client devices, and enables communications between the apparatus (es) and the client device (s) .
  • a network can be, for example, a cellular network, a local area network (LAN) , a wide area network (WAN) , a wireless local area network (WLAN) , the Internet, etc.
  • such a network can be optionally implemented using any known network protocol including various wired and/or wireless protocols such as, for example, Ethernet, universal serial bus (USB) , global system for mobile communications (GSM) , enhanced data GSM environment (EDGE) , general packet radio service (GPRS) , long term evolution (LTE) , code division multiple access (CDMA) , wideband code division multiple Access (WCDMA) , time division multiple access (TDMA) , Bluetooth, Wi-Fi, voice over internet protocol (VoIP) , Wi-MAX, etc.
  • GSM global system for mobile communications
  • EDGE enhanced data GSM environment
  • GPRS general packet radio service
  • LTE long term evolution
  • CDMA code division multiple access
  • WCDMA wideband code division multiple Access
  • TDMA time division multiple access
  • Bluetooth Wi-Fi
  • Wi-Fi voice over internet protocol
  • Wi-MAX Wi-MAX
  • the apparatus performing the method 10 can be any type of server device configured to function as a message-forwarding platform for various computer systems including, for example, social networking websites or tools, instant messaging applications, mobile phone apps, and/or the like.
  • the apparatus can be configured to store and/or access information of user accounts registered with the associated computer system.
  • a group of one or more users can be registered with the computer system. Each user from the group of users has a corresponding registered user account with the computer system. Data and/or information of the registered user accounts for the group of users is stored at or accessible to the apparatus.
  • information of a registered user account includes information of user attributes associated with that registered user account such as, for example, values of the associated user attributes.
  • the apparatus performing the method 10 includes one or more processors and memory.
  • the method 10 is implemented by instructions or code of an application program that are stored in a non-transitory computer readable storage medium of the apparatus and executed by the one or more processors of the apparatus.
  • the application program is associated with forwarding messages received from a client device to a group of other client devices. Instructions of the application program are stored in and/or executed at the apparatus. As a result of such an application program being executed, the method 10 is performed to forward messages. As shown in FIG. 1, the method 10 includes the following steps.
  • the apparatus receives a message associated with a set of user attributes.
  • the apparatus determines values of the set of user attributes for the message.
  • the apparatus receives the message from a client device operated by a user.
  • the message is associated with a set of user attributes, which can include one or more various user attributes.
  • the set of user attributes includes user attributes of the user who sent the message to the apparatus; user attributes of the user who initially defined the content of the message (e. g. , an author of an article included in a text message, a songwriter or singer of a song included in a voice message, a maker of a video clip included in a video message, etc. ) ; user attributes designated by a user (e. g. , the user who sent the message to the apparatus or the user who initially defined the content of the message) ; user attributes of the client device; user attributes of the message itself; and/or the like.
  • user attributes of a user can include, for example, a hobby, hometown, astrological sign, language, profession, age, gender, region, etc. , of the user.
  • user attributes designated by a user can include, for example, a region, country, range of Internet Protocol (IP) addresses, language, etc. , which is used by the user to filter recipients of the message.
  • IP Internet Protocol
  • user attributes of a client device e. g.
  • the client device from which a message is sent to the apparatus can include, for example, an IP address, MAC (Media Access Control) address, unique identifier, etc. , of the client device.
  • user attributes of a message itself can include, for example, a language of the message, a type of the message (e. g. , voice message, video clip message, text message, etc. ) , a size of the message, or any other metadata of the message.
  • the set of attributes can include a language of the message, a region of the user who sent the message to the apparatus, an IP address of the client device, a country designated by the user who initially defined the content of the message, etc.
  • the apparatus can determine the values of the set of user attributes for the message in various methods.
  • the message received at the apparatus includes values of the set of user attributes for the message.
  • the apparatus is configured to process the message to retrieve values of the set of user attributes for the message.
  • the apparatus can process the message to determine the language for the message, which is a user attribute for the message.
  • the apparatus can process the message to determine a user attribute of a user or a user attribute designated by a user (e. g. , a region of a user, a country designated by a user) that is included in the message and a user attribute for the message.
  • metadata of the received message includes values of the set of user attributes for the message.
  • the apparatus is configured to process the metadata to retrieve values of the set of user attributes for the message. For example, the apparatus can process metadata of the message to determine an IP address of the client device, which is a user attribute for the message. For example, the apparatus can process metadata of the message to determine a size or type of the message, which is a user attribute for the message.
  • values of the set of attributes for the message are not included in the message itself or metadata of the message.
  • the apparatus is configured to retrieve values of user attributes for the message from data and/or information of registered user accounts that is stored at or accessible to the apparatus. Specifically, the apparatus can determine an associated user (e. g. , a user associated with the client device or a user who initially defined the content of the message) by processing the received message. The apparatus can then retrieve, from stored data of the registered user account for the associated user, values of user attributes of the associated user that are the user attributes for the message. For example, the apparatus can determine a user associated with the client device (e. g.
  • the apparatus can then retrieve, from stored data of the registered user account for the user, a country designated by the user and a language of the user, which are the user attributes for the message.
  • the apparatus retrieves values of user attributes associated with the group of users registered with the computer system.
  • the apparatus determines a set of users from the group of users, where each user from the set of users has user attribute values that match the values of the set of user attributes for the message in accordance with a predefined forwarding rule.
  • a predefined forwarding rule used in determining the match in S102 can be a default forwarding rule for the apparatus (or the computer system) .
  • the apparatus determines the match of user attribute values for all received messages except for messages associated with (e. g. , received from) a user who previously designated a different predefined forwarding rule.
  • the computer system can provide multiple predefined forwarding rules for each registered user to choose, and each registered user can elect a predefined forwarding rule from the multiple predefined forwarding rules to forward her messages.
  • the multiple predefined forwarding rules can include a default forwarding rule that is used when a registered user does not elect any predefined forwarding rule.
  • a predefined forwarding rule can be a forwarding rule defined and designated by a registered user to forward her messages. For example, when a user registers with the computer system, the user is requested to elect a predefined forwarding rule from a group of predefined forwarding rules provided by the computer system, or define her own forwarding rule. Furthermore, in some embodiments, a registered user can define more than one forwarding rules, and elect to use different forwarding rules for different messages (e. g., based on user attributes of each message) sent by the registered user. In some embodiments, a registered user can access her forwarding settings and make changes to her predefined forwarding rule (s) anytime.
  • a predefined forwarding rule (e. g. , defined by a registered user or provided by the computer system) can determine a forwarding destination (e. g. , a client device associated with a registered user) for a message based on a match between values of a predefined set of user attributes for the message and corresponding values of the predefined set of user attributes associated with the forwarding destination.
  • the predefined set of user attributes for the message can include, for example, user attributes associated with the message itself, user attributes of the client device that sent the message, user attributes of a user associated with the message (e. g. , the user who sent the message to the apparatus, or the user who initially defined the content of the message) , and/or the like.
  • the user attributes associated with a potential forwarding destination can include, for example, user attributes of the client device (which is the potential destination of the message) or user attributes of the user associated with the client device.
  • the apparatus upon receiving a new message, the apparatus first determines the predefined forwarding rule that is to be applied on the received message. Next, based on the predefined forwarding rule, the apparatus determines a set of user attributes that is to be used (e. g. , in the comparing and matching at S102) in determining forwarding destinations for the received message. Since only user attributes included in the set of user attributes are relevant in determining forwarding destinations for the received message, at S101, the apparatus may only need to determine values of user attributes from that set of user attributes for the received message, but not values of other user attributes excluded from that set of user attributes for the received message.
  • the apparatus may only need to retrieve values of user attributes from that set of user attributes for the registered users, but not values of other user attributes excluded from that set of user attributes for the registered users. Subsequently, the apparatus compares values of that set of user attributes for the received message (determined at S101) with values of that set of user attributes for the registered users (retrieved at S102) . The apparatus then determines, based the comparison result, forwarding destinations for the received message in accordance with the predefined forwarding rule.
  • the matching condition of a predefined forwarding rule can be defined in various suitable methods.
  • the matching condition can be defined such that values of a set of user attributes for a message match corresponding values of the set of user attributes for registered user if and only if the two values of at least one user attribute from the set of attributes match.
  • the matching condition can be defined such that values of a set of user attributes for a message match corresponding values of the set of user attributes for registered user if and only if the two values of each user attribute from the set of attributes match.
  • the matching condition can be defined such that values of a set of user attributes for a message match corresponding values of the set of user attributes for registered user if and only if the two values of a specific user attribute from the set of attributes match, and the two values of at least another user attribute from the set of attributes match.
  • a predefined forwarding rule is defined to match user attributes of a sender of a message with user attributes of receivers of the message.
  • the predefined forwarding rule is defined such that a registered user (or a client device associated with the registered user) is determined to be a forwarding destination for a message if and only if the value of at least one user attribute of a sender user is identical to the value of the corresponding user attribute (s) of the registered user.
  • the user attributes of the registered users include a region, age, hobby, and language of the users.
  • the apparatus determines, based on the received message, user attribute values of the region, age, hobby and language of the sender user (e. g.
  • the apparatus determines a set of registered users, where each registered user from the set of registered users has at least one of the region, age, hobby and language that matches (i. e. , is identical to) the corresponding user attribute value of the sender user, and each registered user excluded from the set of registered users has no user attribute value in the region, age, hobby and language that matches (i. e., is identical to) the corresponding user attribute value of the sender user.
  • the set of registered users (or equivalently, the set of client devices associated with the set of registered users) is the forwarding destinations of the received message.
  • a predefined forwarding rule is defined to match a destination IP address designated by a sender of a message with IP addresses of the client devices registered with the computer system (associated with the registered users) .
  • the predefined forwarding rule is defined such that for each message received from a client device with an IP address within a certain range of IP addresses, a registered client device (which is associated with a registered user) is determined to be a forwarding destination for that message if and only if the IP address of the client device is within a range of destination IP addresses designated by the sender user of the message.
  • the apparatus determines, based on the received message, the range of destination IP addresses designated by the sender of the message (e. g. , from the stored data of the sender user) .
  • the apparatus also retrieves the IP address of each registered client device (e. g. , from the stored data of the registered users) .
  • the apparatus compares the IP address of each registered client device with the range of destination IP addresses.
  • the apparatus determines a set of registered client devices, where the IP address of each registered client device from the set of registered client devices is within the range of destination IP addresses designated by the sender user of the message, and the IP address of each remaining registered client device excluded from the set of registered client devices is outside the range of destination IP addresses designated by the sender user of the message.
  • the set of registered client devices is the forwarding destinations of the received message.
  • a predefined forwarding rule is defined to match a destination country designated by a sender user of a message with countries of registered users, or alternatively, to match a language of the sender user and destination IP addresses designated by the sender user with languages of registered users and IP addresses of registered client devices.
  • the apparatus determines, based on the received message, a destination country designate by the sender user, a language of the sender user, and destination IP addresses designated by the sender user (e. g. , from the stored data of the sender user) .
  • the apparatus also retrieves a country, a language, and an IP address of an associated client device for each registered user (e.
  • the apparatus first compares the country of each registered user with the country designated by the sender user to determine a first set of registered users, where the country of each registered user from the first set of registered users matches (i. e. , is identical to) the country designated by the sender user, and the country of each remaining registered user excluded from the first set of registered users is different from the country designated by the sender user.
  • the apparatus compares the language and the IP address of the associated client device for each remaining registered user (i. e. , the registered users excluded from the first set of registered users) with the language of the sender user and the destination IP addresses designated by the sender user to determine a second set of registered users.
  • the language of each registered user from the second set of registered users matches (i. e. , is identical to) the language of the sender user, and the IP address of the associated client device for each registered user from the second set of registered users is included in the destination IP addresses designated by the sender user.
  • the combination of the first set of registered users and the second set of registered users is the forwarding destinations of the received message.
  • the apparatus can determine, for each received message, to apply a predefined forwarding rule from multiple predefined forwarding rules in any other suitable method based on user attributes of the message, user attributes of the client device that sent the message, and/or user attributes of the sender user.
  • predefined forwarding rules can be defined in any other suitable methods based on a match between user attribute values for a received message and user attribute values associated with the registered users.
  • the apparatus forwards the message to each user from the set of users.
  • the set of users is the destinations for the received message.
  • the apparatus forwards the message to a client device associated with (e. g., registered with) each user from the set of users.
  • a user can register more than one client device. In such embodiments, if only a portion of the client devices registered to the user are determined to be the destinations of the message, then the apparatus forwards the message to each client device from that portion of client devices registered to the user. Alternatively, if the user is determined to be the destination of the message, then the apparatus forwards the message to each client device registered with the user.
  • a sender user can forward a message to every other registered user that speaks a particular language that is designated by the sender user; a sender user can forward a message to every other registered user in a particular country that is designated by the sender user; a sender user can forward a message to every registered client device with an IP address within a specific range of IP addresses that is designated by the sender user; a sender user can forward a message to every registered client device that has an IP address within a specific range of IP addresses and is registered with a particular country, where the specific range of IP addresses and the particular country are both designated by the sender user; and/or the like.
  • FIG. 2 is a flowchart illustrating a method 20 for forwarding messages in accordance with some embodiments.
  • the method 20 may be performed with an apparatus that is structurally and functionally similar to the apparatus performing the method 10 described above with respect to FIG. 1.
  • the apparatus performing the method 20 can be configured to store and/or access data and/or information of user accounts registered with an associated computer system.
  • a group of users can be registered with the computer system. Each user from the group of users has a corresponding registered user account with the computer system. Data and/or information of the registered user accounts for the group of users is stored at or accessible to the apparatus performing the method 20.
  • the apparatus performing the method 20 includes one or more processors and memory.
  • the method 20 is governed by instructions or code of an application program that are stored in a non-transitory computer readable storage medium of the apparatus and executed by the one or more processors of the apparatus.
  • the application program is associated with forwarding messages received from a client device to a group of other client devices. Instructions of the application program are stored in and/or executed at the apparatus. As a result of such an application program being executed, the method 20 is performed to forward messages. As shown in FIG. 2, the method 20 includes the following steps.
  • the apparatus retrieves values of user attributes associated with the group of users registered with the computer system.
  • the user attribute values of the registered users can be stored at the apparatus.
  • the user attribute values of the registered users can be stored at an external location that is accessible to the apparatus.
  • the apparatus can retrieve a portion of user attribute values of the registered users based on the predefined forwarding rule that is to be applied on the received message.
  • the operations of S201 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus receives a message associated with a set of user attributes.
  • the apparatus determines, based on the message, values of the set of user attributes for the message.
  • the user attributes for the message can have various sources such as, the content of the message, the metadata of the message, the client device that sent the message to the apparatus, the sender of the message, and/or the like.
  • the apparatus can determine a portion of user attribute values for the message based on the predefined forwarding rule that is to be applied on the received message.
  • the operations of S202 are similar to the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus determines values of user attributes for a sender of the message.
  • the apparatus can determine user attribute values of the sender in various suitable methods.
  • the sender provides her user attribute values (e. g. , registered information) when the sender registers with the computer system.
  • the apparatus can retrieve corresponding user attribute values of the sender from the stored data of the registered user account for the sender.
  • the sender provides her user attribute values (e. g. , login information) when the sender logs into the application using the client device and operates the client device to send the message to the apparatus.
  • the apparatus can retrieve corresponding user attribute values of the sender from the client device or from the received message (if the user attribute values of the sender are included in the content or metadata of the received message) .
  • the apparatus can determine a portion of user attribute values of the sender based on the predefined forwarding rule that is applied on the received message.
  • the operations of S203 are similar to a portion of the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus compares values of user attributes for the sender of the message with values of user attributes of the group of registered users to find matches between the values.
  • the apparatus determines a set of users from the group of users, where each user from the set of users has user attribute values that match values of user attributes for the sender of the message in accordance with the predefined forwarding rule.
  • the operations of S204-S205 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
  • the comparison of user attribute values can be performed based on the predefined forwarding rule that is applied on the received message.
  • a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the values of at least a certain number of user attributes from a set of user attributes for that user match (i. e., are identical to) the corresponding user attribute values of the sender.
  • a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the value of a particular user attribute of that user matches (i. e. , is identical to) the corresponding user attribute value of the sender.
  • the apparatus forwards the message to each user from the set of users.
  • the operations of S206 are similar to the operations of S103 of the method 10 shown and described above with respect to FIG. 1.
  • FIG. 3 is a flowchart illustrating a method 300 for forwarding messages in accordance with some embodiments.
  • the method 300 may be performed with an apparatus that is structurally and functionally similar to the apparatus performing the method 10 described above with respect to FIG. 1.
  • the apparatus performing the method 300 can be configured to store and/or access data and/or information of user accounts registered with an associated computer system.
  • a group of users can be registered with the computer system. Each user from the group of users has a corresponding registered user account with the computer system. Data and/or information of the registered user accounts for the group of users is stored at or accessible to the apparatus performing the method 300.
  • the apparatus performing the method 300 includes one or more processors and memory.
  • the method 300 is governed by instructions or code of an application program that are stored in a non-transitory computer readable storage medium of the apparatus and executed by the one or more processors of the apparatus.
  • the application program is associated with forwarding messages received from a client device to a group of other client devices. Instructions of the application program are stored in and/or executed at the apparatus. As a result of such an application program being executed, the method 300 is performed to forward messages. As shown in FIG. 3, the method 300 includes the following steps.
  • the apparatus retrieves values of user attributes associated with the group of users registered with the computer system.
  • the user attribute values of the registered users can be stored at the apparatus.
  • the user attribute values of the registered users can be stored at an external location that is accessible to the apparatus.
  • the apparatus can retrieve a portion of user attribute values of the registered users based on the predefined forwarding rule that is to be applied on the received message.
  • the operations of S301 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus receives a message associated with a set of user attributes.
  • the apparatus determines, based on the message, values of the set of user attributes for the message.
  • the user attributes for the message can have various sources such as, the content of the message, the metadata of the message, the client device that sent the message to the apparatus, the sender of the message, and/or the like.
  • the apparatus can determine a portion of user attribute values for the message based on the predefined forwarding rule that is to be applied on the received message.
  • the operations of S302 are similar to the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus determines values of user attributes included in the message and designated by a sender of the message.
  • the apparatus can determine and retrieve, from the received message, user attribute values designated by the sender in various suitable methods.
  • the sender can mark the designated user attribute values included in the message with, for example, a unique identifier.
  • the apparatus can determine the content of the message that is marked (e. g. , by the unique identifier) and then retrieve the designated user attribute values from the marked content of the message.
  • the sender can include content of the message in a content segment of the message and include designated user attribute values in a separate user attribute segment of the message.
  • the apparatus can locate the user attribute segment of the message and then retrieve the designated user attribute values from the user attribute segment.
  • the apparatus can locate the designated user attribute values from the content of the message by performing a keyword search. For example, the apparatus can search keywords “language, ” “country, ” “IP” in the message to determine designated language, country and IP address, respectively.
  • the apparatus can determine a portion of user attribute values that are included in the message and designated by the sender based on the predefined forwarding rule that is applied on the received message.
  • the operations of S303 are similar to a portion of the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus compares values of user attributes designated by the sender of the message with values of user attributes of the group of registered users to find matches between the values.
  • the apparatus determines a set of users from the group of users, where each user from the set of users has user attribute values that match values of user attributes designated by the sender of the message in accordance with the predefined forwarding rule.
  • the operations of S304-S305 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
  • the comparison of user attribute values can be performed based on the predefined forwarding rule that is applied on the received message.
  • a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the values of at least a certain number of user attributes from a set of user attributes for that user match (i. e., are identical to) the corresponding user attribute values designated by the sender and included in the message.
  • a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the value of a particular user attribute of that user matches (i. e. , is identical to) the corresponding user attribute value designated by the sender and included in the message.
  • the apparatus forwards the message to each user from the set of users.
  • the operations of S306 are similar to the operations of S103 of the method 10 shown and described above with respect to FIG. 1.
  • FIG. 4 is a flowchart illustrating another method for forwarding messages in accordance with some embodiments.
  • the method 400 is performed at an apparatus that is structurally and functionally similar to the apparatus performing the method 10 described above with respect to FIG. 1.
  • the apparatus performing the method 400 can be configured to store and/or access data and/or information of user accounts registered with an associated computer system.
  • a group of users can be registered with the computer system. Each user from the group of users has a corresponding registered user account with the computer system. Data and/or information of the registered user accounts for the group of users is stored at or accessible to the apparatus performing the method 400.
  • the apparatus performing the method 400 includes one or more processors and memory.
  • the method 400 is governed by instructions or code of an application program that are stored in a non-transitory computer readable storage medium of the apparatus and executed by the one or more processors of the apparatus.
  • the application program is associated with forwarding messages received from a client device to a group of other client devices. Instructions of the application program are stored in and/or executed at the apparatus. As a result of such an application program being executed, the method 400 is performed to forward messages. As shown in FIG. 4, the method 400 includes the following steps.
  • the apparatus retrieves values of user attributes associated with the group of users registered with the computer system.
  • the user attribute values of the registered users can be stored at the apparatus.
  • the user attribute values of the registered users can be stored at an external location that is accessible to the apparatus.
  • the apparatus can retrieve a portion of user attribute values of the registered users based on the predefined forwarding rule that is to be applied on the received message.
  • the operations of S401 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus receives a message associated with a set of user attributes.
  • the apparatus determines, based on the message, values of the set of user attributes for the message.
  • the user attributes for the message can have various sources such as, the content of the message, the metadata of the message, the client device that sent the message to the apparatus, the sender of the message, and/or the like.
  • the apparatus can determine a portion of user attribute values for the message based on the predefined forwarding rule that is to be applied on the received message.
  • the operations of S402 are similar to the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus determines values of user attributes associated with the client device that sent the message to the apparatus.
  • the apparatus can determine the user attribute values associated with the client device based on information included in the message or the metadata of the message.
  • information of the message can include, for example, an IP address, a phone number, a GPS (Global Positioning System) location, an associated base station, etc. , of the client device.
  • the apparatus can retrieve an IP address or a GPS location of the client device from the metadata of the message (e. g. , as the sender’s IP address or GPS location) .
  • the apparatus can then determine, as a user attribute value for the purpose of determining destinations of the message, a geographical region that corresponds to the IP address or the GPS location of the client device.
  • the apparatus can retrieve a phone number associated with the client device from the metadata of the message (e. g. , as the sender’s phone number) .
  • the apparatus can then determine, as a user attribute value for the purpose of determining destinations of the message, a predefined block of phone numbers that includes the phone number associated with the client device.
  • the apparatus can determine a portion of user attribute values associated with the client device based on the predefined forwarding rule that is applied on the received message.
  • the operations of S403 are similar to a portion of the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
  • the apparatus compares values of user attributes associated with the client device with values of user attributes of the group of registered users to find matches between the values.
  • the apparatus determines a set of users from the group of users, where each user from the set of users has user attribute values that match values of user attributes associated with the client device in accordance with the predefined forwarding rule.
  • the operations of S404-S405 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
  • the comparison of user attribute values can be performed based on the predefined forwarding rule that is applied on the received message.
  • a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the values of at least a certain number of user attributes from a set of user attributes for that user match (i. e., are identical to) the corresponding user attribute values associated with the client device.
  • a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the value of a particular user attribute of that user matches (i. e. , is identical to) the corresponding user attribute value associated with the client device.
  • the apparatus forwards the message to each user from the set of users.
  • the operations of S406 are similar to the operations of S103 of the method 10 shown and described above with respect to FIG. 1.
  • FIG. 5 is a block diagram of an apparatus 500 configured to forward messages in accordance with some embodiments.
  • the apparatus 500 can be structurally and functionally similar to the apparatuses performing the method 10, 20, 300 and 400 described above with respect to FIGS. 1-4.
  • the apparatus 500 can be operatively coupled to multiple client devices, and configured to forward messages received from one client to a group of other clients based on a predefined forwarding rule.
  • the apparatus 500 may be included in a computer system where a group of users associated with the client devices are registered. Data and/or information of user attribute values for the registered users is stored at or accessible to the apparatus 500.
  • the apparatus 500 includes a determination module 510, a retrieve module 520 and a transmit module 530.
  • each module included in the apparatus 500 can be a hardware-based module (e. g. , a digital signal processor (DSP) , a field programmable gate array (FPGA) , etc. ) , a software-based module (e. g. , a module of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software modules.
  • Instructions or code of each module can be stored in a memory of the apparatus 500 (not shown in FIG. 5) and executed at a processor (e. g. , a CPU) of the apparatus 500 (not shown in FIG. 5) .
  • the apparatus 500 can include more or less modules or components than those shown in FIG. 5.
  • the modules of the apparatus 500 can be configured to collectively perform the methods 10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices.
  • the detection module 510 is configured to, among other functions, determine user attribute values for a message upon the message being received at the apparatus 500. In some embodiments, the detection module 510 is configured to perform operations of S101 of the method 10 in FIG. 1. In some embodiments, the detection module 510 can determine user attribute values for a message in various methods based on the source of the user attribute values (e. g. , included in the content of the message, included in the metadata of the message, included in stored data of a registered user, etc. ) . For example, the detection module 510 can retrieve user attribute values for the sender of the message from the stored data of the sender when the user attributes for the sender are the user attributes for the message.
  • the source of the user attribute values e. g. , included in the content of the message, included in the metadata of the message, included in stored data of a registered user, etc.
  • the detection module 510 can retrieve user attribute values for the sender of the message from the stored data of the sender when the user attributes for the sender are
  • the detection module 510 can retrieve, from the content and/or metadata of the message, user attribute values designate by the sender of the message. For yet another example, the detection module 510 can determine user attribute values for the message based on user attribute values of the client device that sent the message to the apparatus (e. g. , determine a region that corresponds to an IP address of the client device) .
  • the retrieve module 520 is configured to, among other functions, determine a set of registered users to be the forwarding destinations for the received message based on the predefined forwarding rule. Each registered user from the set of registered users has user attribute values that match, in accordance with the predefined forwarding rule, the user attribute values for the message determined at the detection module 510.
  • the retrieve module 520 can be configured to perform the matching based on various predefined forwarding rules and various combinations of user attributes.
  • the retrieve module 520 can retrieve user attribute values of online users as well as user attribute values of offline users.
  • the retrieve module 520 when the retrieve module 520 determines a set of registered users to be the forwarding destinations for a received message, the retrieve module 520 can store and associate information of the set of registered users and information of the received message. As a result, based on the stored and associated information, the retrieve module 520 can determine forwarding destinations for a new message similar to the received message without performing the matching again.
  • the transmit module 530 is configured to, among other functions, forward the received message to each registered user (or equivalently, client device (s) associated with each registered user) from the set of registered users.
  • FIG. 6 is a block diagram of another apparatus 600 configured to forward messages in accordance with some embodiments.
  • the apparatus 600 can be (substantially) identical, or structurally and functionally similar, to the apparatus 500 shown and described above with respect to FIG. 5. Similar to the apparatuses shown and described with respect to FIGS. 1-5, the apparatus 600 can be operatively coupled to multiple client devices, and configured to forward messages received from one client to a group of other clients based on a predefined forwarding rule. In other words, the apparatus 600 can be configured to perform the methods 10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices. Furthermore, the apparatus 600 may be included in a computer system where a group of users associated with the client devices are registered. Data and/or information of user attribute values for the registered users is stored at or accessible to the apparatus 600.
  • the apparatus 600 includes a determination module 610, a retrieve module 620, a transmit module 630, and a recoding module 640.
  • each module included in the apparatus 600 can be a hardware-based module (e. g. , a DSP, a FPGA, etc. ) , a software-based module (e. g. , a module of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software modules.
  • Instructions or code of each module included in the apparatus 600 can be stored in a memory of the apparatus 600 (not shown in FIG. 6) and executed at a processor (e. g. , a CPU) of the apparatus 600 (not shown in FIG. 6) .
  • the apparatus 600 can include more or less modules or components than those shown in FIG. 6.
  • the modules of the apparatus 600 can be configured to collectively perform the methods 10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices. Furthermore, the determination module 610, the retrieve module 620 and the transmit module 630 can be structurally and functionally similar to the determination module 510, the retrieve module 520 and the transmit module 530 of the apparatus 500, respectively.
  • the recording module 640 is configured to, among other functions, retrieve values of user attributes associated with the registered users from, for example, a database used to store data and/or information of registered users. Such a database can be hosted and maintained in the apparatus 600 or at external data storage device accessible to the apparatus 600. In some embodiments, the recording module 640 is configured to store the retrieved user attribute values of the registered users.
  • FIG. 7 is a block diagram of a retrieve module 700 in an apparatus configured to forward messages in accordance with some embodiments.
  • the retrieve module 700 can be (substantially) identical, or structurally and functionally similar, to the retrieve module 520 of the apparatus 500 shown and described above with respect to FIG. 5.
  • the apparatus including the retrieve module 700 can be structurally and functionally similar to the apparatus 500 in FIG. 5.
  • the retrieve module 700 includes a first identification submodule 710, a first determination submodule 720 and a first retrieve submodule 730.
  • each submodule included in the retrieve module 700 can be a hardware-based submodule (e. g. , a DSP, a FPGA, etc. ) , a software-based submodule (e. g. , a submodule of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software submodules.
  • Instructions or code of each submodule included in the retrieve module 700 can be stored in a memory associated with the retrieve module 700 (e. g.
  • the retrieve module 700 can include more or less submodules or components than those shown in FIG. 7.
  • the submodules of the retrieve module 700 can be collectively configured to determine a set of registered users to be the forwarding destinations for a received message based on a predefined forwarding rule.
  • the first identification submodule 710 is configured to determine user attribute values for a sender of the received message.
  • the first identification submodule 710 can determine the user attribute values for the sender using various methods depending on where the user attribute values of the sender are stored. For example, the first identification submodule 710 can retrieve a user attribute value for the sender from the content of the received message when that user attribute value for the sender is included in the content of the message. For another example, the first identification submodule 710 can retrieve a user attribute value for the sender from the client device that sent the message when that user attribute value for the sender is provided by the user in login to the client device. For yet another example, the first identification submodule 710 can retrieve a user attribute value for the sender from the stored data of the sender when that user attribute value for the sender is not available anywhere else.
  • the first determination submodule 720 is configured to compare the user attribute values for the sender retrieved at the first identification submodule 710 with the corresponding user attribute values for each registered user based on the predefined forwarding rule. As a result, the first determination submodule 720 determines a set of registered users, each of which has user attribute values that match the user attribute values for the sender in accordance with the predefined forwarding rule.
  • the first retrieve submodule 730 is configured to determine forwarding addresses (e. g. , an IP address) for the received message based on the set of registered users determined at the first determination submodule 720. For example, the first retrieve submodule 730 can determine an IP address of each client device associated with the set of registered users. The IP addresses determined by the first retrieve submodule 730 are the forwarding addresses that will be used to forward the received message.
  • forwarding addresses e. g. , an IP address
  • FIG. 8 is a block diagram of another retrieve module 800 in an apparatus configured to forward messages in accordance with some embodiments.
  • the retrieve module 800 can be (substantially) identical, or structurally and functionally similar, to the retrieve module 520 of the apparatus 500 shown and described above with respect to FIG. 5.
  • the apparatus including the retrieve module 800 can be structurally and functionally similar to the apparatus 500 in FIG. 5.
  • the retrieve module 800 includes a second identification submodule 810, a second determination submodule 820 and a second retrieve submodule 830.
  • each submodule included in the retrieve module 800 can be a hardware-based submodule (e. g. , a DSP, a FPGA, etc. ) , a software-based submodule (e. g. , a submodule of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software submodules.
  • Instructions or code of each submodule included in the retrieve module 800 can be stored in a memory associated with the retrieve module 800 (e. g.
  • the retrieve module 800 can include more or less submodules or components than those shown in FIG. 8.
  • the submodules of the retrieve module 800 can be collectively configured to determine a set of registered users to be the forwarding destinations for a received message based on a predefined forwarding rule.
  • the second identification submodule 810 is configured to determine user attribute values included in the received message that are designated by a sender of the received message.
  • the second identification submodule 810 can determine the designated user attribute values using various methods depending on how the user attribute values are contained in the received message. For example, when the designated user attribute values are contained in content of the message that is marked (e. g. , by a unique identifier) , the second identification submodule 810 can locate the marked content and then retrieve the designated user attribute values from the marked content of the message. For another example, when the designated user attribute values are contained in a specific user attribute segment of the message, the second identification submodule 810 can locate the user attribute segment of the message and then retrieve the designated user attribute values from the user attribute segment of the message.
  • the second determination submodule 820 is configured to compare the user attribute values designated by the sender and included in the message (which are retrieved at the second identification submodule 810) with the corresponding user attribute values for each registered user based on the predefined forwarding rule. As a result, the second determination submodule 820 determines a set of registered users, each of which has user attribute values that match the user attribute values designated by the sender and included in the message in accordance with the predefined forwarding rule.
  • the second retrieve submodule 830 is configured to determine forwarding addresses (e. g. , an IP address) for the received message based on the set of registered users determined at the second determination submodule 820. For example, the second retrieve submodule 830 can determine an IP address of each client device associated with the set of registered users. The IP addresses determined by the second retrieve submodule 830 are the forwarding addresses that will be used to forward the received message.
  • forwarding addresses e. g. , an IP address
  • FIG. 9 is a block diagram of another retrieve module 900 in an apparatus configured to forward messages in accordance with some embodiments.
  • the retrieve module 900 can be (substantially) identical, or structurally and functionally similar, to the retrieve module 520 of the apparatus 500 shown and described above with respect to FIG. 5.
  • the apparatus including the retrieve module 900 can be structurally and functionally similar to the apparatus 500 in FIG. 5.
  • the retrieve module 900 includes a third identification submodule 910, a third determination submodule 920 and a third retrieve submodule 930.
  • each submodule included in the retrieve module 900 can be a hardware-based submodule (e. g. , a DSP, a FPGA, etc. ) , a software-based submodule (e. g. , a submodule of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software submodules.
  • Instructions or code of each submodule included in the retrieve module 900 can be stored in a memory associated with the retrieve module 900 (e. g.
  • the retrieve module 900 can include more or less submodules or components than those shown in FIG. 9.
  • the submodules of the retrieve module 900 can be collectively configured to determine a set of registered users to be the forwarding destinations for a received message based on a predefined forwarding rule.
  • the third identification submodule 910 is configured to determine user attribute values associated with the client device that sent the message to the apparatus.
  • the third identification submodule 910 can determine the user attribute values associated with the client device based on information included in the message or the metadata of the message.
  • information of the message can include, for example, an IP address, a phone number, a GPS location, an associated base station, etc. , of the client device.
  • the third identification submodule 910 can retrieve an IP address or a GPS location of the client device from the metadata of the message (e. g. , as the sender’s IP address or GPS location) .
  • the third identification submodule 910 can then determine, as a user attribute value for the purpose of determining destinations of the message, a geographical region that corresponds to the IP address or the GPS location of the client device. For another example, the third identification submodule 910 can retrieve a phone number associated with the client device from the metadata of the message (e. g. , as the sender’s phone number) . The third identification submodule 910 can then determine, as a user attribute value for the purpose of determining destinations of the message, a predefined block of phone numbers that includes the phone number associated with the client device.
  • the third determination submodule 920 is configured to compare the user attribute values associated with the client device (which are retrieved at the third identification submodule 910) with the corresponding user attribute values for each registered user based on the predefined forwarding rule. As a result, the third determination submodule 920 determines a set of registered users, each of which has user attribute values that match the user attribute values associated with the client device in accordance with the predefined forwarding rule.
  • the third retrieve submodule 930 is configured to determine forwarding addresses (e. g. , an IP address) for the received message based on the set of registered users determined at the third determination submodule 920. For example, the third retrieve submodule 930 can determine an IP address of each client device associated with the set of registered users. The IP addresses determined by the third retrieve submodule 930 are the forwarding addresses that will be used to forward the received message.
  • forwarding addresses e. g. , an IP address
  • FIG. 10 is a schematic diagram illustrating a system 1000 configured to forward messages in accordance with some embodiments.
  • the system 1000 includes a server device 100 and multiple client devices 200.
  • the server device 100 can be structurally and functionally similar to the apparatuses shown and described above with respect to FIGS. 1-9.
  • Each client device 200 can be structurally and functionally similar to the client devices described above with respect to FIGS. 1-9.
  • the server device 100 can be operatively coupled to each client device 200 via, for example, one or more networks.
  • the server device 100 can be configured to function as a message-forwarding platform for the client devices 200.
  • the client devices 200 (or equivalently, users operating the client devices 200) can be registered with the system 1000. Data and/or information of the registered client devices 200 can be stored at the server device 100 or an external data storage device (not shown in FIG. 10) accessible to the server device 100.
  • one or more users operating the client devices 200 can be registered with the system 1000, and the users can log into the server device 100 remotely at the each client device 100.
  • the server device 100 may be configured to perform the methods 10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices 200.
  • a client device 200 sends a message to the server device 100.
  • the server device 100 determines, based on the message, user attribute values for the message.
  • the server device 100 identifies, based on the message, a predefined forwarding rule for the message.
  • the server device 100 determines user attribute values for the message that are relevant to the predefined forwarding rule for the message.
  • the server device 100 also retrieves corresponding user attribute values for the registered client devices 200 (or registered users that operate the client devices 200) . Next, the server device 100 compares the determined user attribute values for the message with the retrieved user attribute values for the registered client devices. As a result of the comparison, the server device 100 determines a set of client devices 200, where user attribute values for each client device 200 from the set of client devices 200 match the user attribute values for the message in accordance with the predefined forwarding rule, and user attribute values for each remaining client device 200 excluded from the set of client devices 200 do not match the user attribute values for the message based on the predefined forwarding rule. Thus, the set of client devices 200 are the forwarding destinations of the message. Accordingly, the server device 100 forwards the message to each client device 200 from the set of client devices 200.
  • FIG. 11 is a schematic diagram illustrating components of an apparatus 1100 configured to forward messages in accordance with some embodiments.
  • the apparatus 1100 can be structurally and functionally similar to the apparatuses and server device 100 shown and described above with respect to FIGS. 1-10. Similar to the apparatuses and server device 100 shown and described with respect to FIGS. 1-10, the apparatus 1100 can be operatively coupled to multiple client devices (not shown in FIG. 11) , and configured to forward messages received from one client to a group of other clients based on a predefined forwarding rule. In other words, the apparatus 1100 can be configured to perform the methods 10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices. Furthermore, the apparatus 1100 is included in a computer system similar to the system 1000 in FIG. 10, where a group of users associated with the client devices are registered. Data and/or information of user attribute values for the registered users is stored at or accessible to the apparatus 1100.
  • the apparatus 1100 includes a receiving device 1101, a processor 1102 and a forwarding device 1103.
  • the apparatus 1100 can include more or less modules, devices and/or components than those shown in FIG. 11.
  • the receiving device 1101 can be any type of device configured to receive a message from a client device.
  • the forwarding device 1103 can be any type of device configured to transmit a received message to a client device.
  • the functionalities of the receiving device 1101 and the forwarding device 1103 can be combined and implemented in a single device such as, for example, a transceiver device or a communication device.
  • the processor 1102 can be any processing device capable of performing at least a portion of the message-forwarding methods described herein. Such a processor can be, for example, a CPU, a DSP, a FPGA, and/or the like. In some embodiments, the processor 1102 can also be configured to control the operations of other components, devices and/or modules of the apparatus 1100 such as the receiving device 1101 and the forwarding device 1103. In some embodiments, the processor 1102 is configured to perform data processing for the message-forwarding methods as described below.
  • the receiving device receives a message from a client device operatively coupled to the apparatus 1100.
  • the processor 1102 determines, based on the message, user attribute values for the message.
  • the processor 1102 identifies, based on the message, a predefined forwarding rule for the message.
  • the processor 1102 determines user attribute values for the message that are relevant to the predefined forwarding rule for the message.
  • the processor 1102 also retrieves corresponding user attribute values for the registered users (or the client devices operated by the registered users) . Next, the processor 1102 compares the determined user attribute values for the message with the retrieved user attribute values for the registered users. As a result of the comparison, the processor 1102 determines a set of registered users, where user attribute values for each registered user from the set of registered users match the user attribute values for the message in accordance with the predefined forwarding rule, and user attribute values for each remaining registered user excluded from the set of registered users do not match the user attribute values for the message based on the predefined forwarding rule.
  • the set of registered users or the client devices operated by the set of registered users
  • the forwarding device 1103 forwards the message to each registered user (or the client device (s) operated by the registered user) from the set of registered users.
  • first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another.
  • first ranking criteria could be termed second ranking criteria, and, similarly, second ranking criteria could be termed first ranking criteria, without departing from the scope of the present application.
  • First ranking criteria and second ranking criteria are both ranking criteria, but they are not the same ranking criteria.
  • the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in accordance with a determination” or “in response to detecting, ” that a stated condition precedent is true, depending on the context.
  • the phrase “if it is determined [that a stated condition precedent is true] ” or “if [astated condition precedent is true] ” or “when [astated condition precedent is true] ” may be construed to mean “upon determining” or “in response to determining” or “in accordance with a determination” or “upon detecting” or “in response to detecting” that the stated condition precedent is true, depending on the context.
  • stages that are not order dependent may be reordered and other stages may be combined or broken out. While some reordering or other groupings are specifically mentioned, others will be obvious to those of ordinary skill in the art and so do not present an exhaustive list of alternatives. Moreover, it should be recognized that the stages could be implemented in hardware, firmware, software or any combination thereof.

Abstract

A method, apparatus and system for forwarding messages are disclosed. In some embodiments, the method is performed at a computer system having one or more processors and memory for storing programs to be executed by the one or more processors. The method includes receiving a message associated with a set of user attributes, and determining, based on the message, values of the set of user attributes for the message. The method includes retrieving values of user attributes associated with a group of users registered with the computer system. The method also includes determining a set of users from the group of users, each user from the set of users having user attribute values that match the values of the set of user attributes for the message in accordance with a predefined forwarding rule. The method further includes forwarding the message to each user from the set of users.

Description

METHOD, APPARATUS AND SYSTEM FOR FORWARDING MESSAGES
RELATED APPLICATIONS
This application claims priority to Chinese Patent Application Serial No. 201310444399.8, entitled “Method, Apparatus and System for Forwarding Messages, ” filed September 26, 2013, which is incorporated herein by reference in its entirety.
TECHNICAL FIELD
The present application generally relates to the field of information management and processing technologies, and more particularly to a method and related apparatus and system for forwarding messages.
BACKGROUND
With the rapid development of social networking tools, information processing technologies and Internet technologies, nowadays people can receive, transmit and forward messages anywhere and anytime using a variety of devices such as smart phones, laptops, personal computers, etc. Some known messaging tools (or social network tools) enable a user to transmit a message to one or multiple recipients. In order to identify the one or more recipients of the message, the known messaging tools typically require the user to manually select desired recipient (s) from a list of her contacts, and then send the message to the selected recipient (s) . Such a method, however, can be tedious and time-consuming for the user to operate when the user has a large number of contacts. Alternatively, some known messaging tools enable the user to select a broadcast mode such that the message is broadcast to every contact of the user. Such a broadcast method, however, sends the message to uninterested contacts, potentially causing message flood and waste of resources.
Thus, a need exists for a method, apparatus and system that can efficiently determine recipients for transmitting messages.
SUMMARY
The above deficiencies associated with the known password-retrieving method may be reduced or eliminated by the techniques described herein.
In some embodiments, a method for forwarding messages is performed at a computer system having one or more processors and memory for storing programs to be executed by the one or more processors. The method includes receiving a message associated with a set of user attributes, and then determining, based on the message, values of the set of user attributes for the message. In some instances, the message is received from a user from a group of users registered with the computer system. In such instances, the values of the set of user attributes for the messages include user attribute values of that user. In some instances, the set of user attributes includes at least one of a language of the message, a region, and an Internet Protocol (IP) address.
The method includes retrieving values of user attributes associated with the group of users. The methods also includes determining a set of users from the group of users, where each user from the set of users has user attribute values that match the values of the set of user attributes for the message in accordance with a predefined forwarding rule. In some instances, the predefined forwarding rule is defined such that the value of at least one user attribute of each user from the set of users is identical to the value of the at least one user attribute for the message. In some instances, the set of users includes more than one user registered with the computer system. In some instances, user attribute values of each user excluded from the set of users do not match the values of the set of user attributes for the message according to the predefined forwarding rule. The method further includes forwarding the message to each user from the set of users.
In some embodiments, an apparatus includes one or more processors and memory storing one or more programs for execution by the one or more processors. The one or more  programs include instructions for performing the operations of the method for forwarding messages described above. In some embodiments, a non-transitory computer readable storage medium stores one or more programs including instructions for execution by one or more processors. The instructions, when executed by the one or more processors, cause the processors to perform the operations of the method for forwarding messages described herein.
Various advantages of the present application are apparent in light of the descriptions below.
BRIEF DESCRIPTION OF THE DRAWINGS
The aforementioned features and advantages of the present application as well as additional features and advantages thereof will be more clearly understood hereinafter as a result of a detailed description of preferred embodiments when taken in conjunction with the drawings.
FIG. 1 is a flowchart illustrating a method for forwarding messages in accordance with some embodiments.
FIG. 2 is a flowchart illustrating another method for forwarding messages in accordance with some embodiments.
FIG. 3 is a flowchart illustrating another method for forwarding messages in accordance with some embodiments.
FIG. 4 is a flowchart illustrating another method for forwarding messages in accordance with some embodiments.
FIG. 5 is a block diagram of an apparatus configured to forward messages in accordance with some embodiments.
FIG. 6 is a block diagram of another apparatus configured to forward messages in accordance with some embodiments.
FIG. 7 is a block diagram of a retrieve module in an apparatus configured to forward messages in accordance with some embodiments.
FIG. 8 is a block diagram of another retrieve module in an apparatus configured to forward messages in accordance with some embodiments.
FIG. 9 is a block diagram of another retrieve module in an apparatus configured to forward messages in accordance with some embodiments.
FIG. 10 is a schematic diagram illustrating a system configured to forward messages in accordance with some embodiments.
FIG. 11 is a schematic diagram illustrating components of an apparatus configured to forward messages in accordance with some embodiments.
Like reference numerals refer to corresponding parts throughout the several views of the drawings.
DESCRIPTION OF EMBODIMENTS
Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the subject matter presented herein. But it will be apparent to one skilled in the art that the subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
In order to make the objectives, technical solutions, and advantages of the present application apparent to persons in the art, embodiments of the present application are further described in detail below with reference to the accompanying drawings.
FIG. 1 is a flowchart illustrating a method 10 for forwarding messages in accordance with some embodiments. The method 10 is performed at an apparatus that can be  any type of device configured to receive and forward electronic messages. Such an apparatus can be operatively coupled to multiple client devices and/or networks. The electronic messages received and forwarded at the apparatus can be any type of message that can be transmitted between the apparatus and the client devices or the networks. The electronic messages can include, for example, emails, text messages, instant messages, files (e. g. , transmitted based on a suitable protocol such as File Transfer Protocol (FTP) ) , voice messages, images, video clips, and/or the like.
The apparatus performing the method 10 can be any device configured to communicate with, receive messages from and transmit messages to the client devices operatively coupled to the apparatus (e. g. , via one or more networks) . In some embodiments, such an apparatus can be, for example, a background server, a back end server, a database server, a workstation, a desktop computer, a cloud computing server, a data processing server, a communication server, a messaging server, an email server, a mail server, and/or the like. Furthermore, the apparatus can be a single server device or a server cluster consisting of two or more servers (e. g. , a communication server, a data processing server and a database server) . Additionally, the apparatus can be accessed and operated by a user such as, for example, a network administrator, an operator, a management agent, and/or the like.
A client device operatively coupled to the apparatus performing the method 10 can be any electronic device configured to communicate with, receive messages from and transmit messages to the apparatus (e. g. , via one or more networks) . In some embodiments, such a client device can be, for example, a mobile phone, a smart phone, a mobile Internet device (MID) , a tablet, an e-reader, a remote controller, a personal digital assistant (PDA) , vehicle-mounted equipment, a wearable device, a laptop computer, a handheld computer, a personal computer, a desktop computer, other portable electronic device, and/or the like. In some embodiments, a client device can also be referred to as, for example, a user device, a user terminal, a portable device, a mobile device, a terminal device, and/or the like. Additionally, each client device operatively coupled to the apparatus can be accessed and operated by a user associated with that client device such as, for example, the owner of the client device. In some embodiments, as described below in detail, a user of a client device can operate the client device to send a message (e. g. , an email, an instant message, an online message, a text message, a voice  message, etc. ) to the apparatus, which can then forward the message to a group of other users (e. g. , to client devices associated with the group of other users) .
In some embodiments, the apparatus can be directly connected to a client device. In other embodiments, the apparatus can be operatively coupled to a client device via one or more networks. A network operatively coupling the apparatus and the client device (s) can be any type of network that operatively couples (via a wired connection, a wireless connection, or a combination of wired and wireless connections) one or more apparatuses to one or more client devices, and enables communications between the apparatus (es) and the client device (s) . In some embodiments, such a network can be, for example, a cellular network, a local area network (LAN) , a wide area network (WAN) , a wireless local area network (WLAN) , the Internet, etc. In some embodiments, such a network can be optionally implemented using any known network protocol including various wired and/or wireless protocols such as, for example, Ethernet, universal serial bus (USB) , global system for mobile communications (GSM) , enhanced data GSM environment (EDGE) , general packet radio service (GPRS) , long term evolution (LTE) , code division multiple access (CDMA) , wideband code division multiple Access (WCDMA) , time division multiple access (TDMA) , Bluetooth, Wi-Fi, voice over internet protocol (VoIP) , Wi-MAX, etc.
In some embodiments, the apparatus performing the method 10 can be any type of server device configured to function as a message-forwarding platform for various computer systems including, for example, social networking websites or tools, instant messaging applications, mobile phone apps, and/or the like. In such embodiments, the apparatus can be configured to store and/or access information of user accounts registered with the associated computer system. In some embodiments, a group of one or more users can be registered with the computer system. Each user from the group of users has a corresponding registered user account with the computer system. Data and/or information of the registered user accounts for the group of users is stored at or accessible to the apparatus. In some embodiments, information of a registered user account includes information of user attributes associated with that registered user account such as, for example, values of the associated user attributes.
The apparatus performing the method 10 includes one or more processors and memory. In some embodiments, the method 10 is implemented by instructions or code of an application program that are stored in a non-transitory computer readable storage medium of the apparatus and executed by the one or more processors of the apparatus. In such embodiments, the application program is associated with forwarding messages received from a client device to a group of other client devices. Instructions of the application program are stored in and/or executed at the apparatus. As a result of such an application program being executed, the method 10 is performed to forward messages. As shown in FIG. 1, the method 10 includes the following steps.
At S101, the apparatus receives a message associated with a set of user attributes. The apparatus then determines values of the set of user attributes for the message. Specifically, the apparatus receives the message from a client device operated by a user. The message is associated with a set of user attributes, which can include one or more various user attributes. In some embodiments, for example, the set of user attributes includes user attributes of the user who sent the message to the apparatus; user attributes of the user who initially defined the content of the message (e. g. , an author of an article included in a text message, a songwriter or singer of a song included in a voice message, a maker of a video clip included in a video message, etc. ) ; user attributes designated by a user (e. g. , the user who sent the message to the apparatus or the user who initially defined the content of the message) ; user attributes of the client device; user attributes of the message itself; and/or the like.
In some embodiments, user attributes of a user (e. g. , the user sends a message to the apparatus or the user initially defines the content of the message) can include, for example, a hobby, hometown, astrological sign, language, profession, age, gender, region, etc. , of the user. In some embodiments, user attributes designated by a user (e. g. , the user sends a message to the apparatus or the user initially defines the content of the message) can include, for example, a region, country, range of Internet Protocol (IP) addresses, language, etc. , which is used by the user to filter recipients of the message. In some embodiments, user attributes of a client device (e. g. , the client device from which a message is sent to the apparatus) can include, for example, an IP address, MAC (Media Access Control) address, unique identifier, etc. , of the client device. In some embodiments, user attributes of a message itself can include, for example, a language of  the message, a type of the message (e. g. , voice message, video clip message, text message, etc. ) , a size of the message, or any other metadata of the message. For example, the set of attributes can include a language of the message, a region of the user who sent the message to the apparatus, an IP address of the client device, a country designated by the user who initially defined the content of the message, etc.
The apparatus can determine the values of the set of user attributes for the message in various methods. In some embodiments, the message received at the apparatus includes values of the set of user attributes for the message. In such embodiments, the apparatus is configured to process the message to retrieve values of the set of user attributes for the message. For example, the apparatus can process the message to determine the language for the message, which is a user attribute for the message. For another example, the apparatus can process the message to determine a user attribute of a user or a user attribute designated by a user (e. g. , a region of a user, a country designated by a user) that is included in the message and a user attribute for the message.
In some other embodiments, metadata of the received message includes values of the set of user attributes for the message. In such embodiments, the apparatus is configured to process the metadata to retrieve values of the set of user attributes for the message. For example, the apparatus can process metadata of the message to determine an IP address of the client device, which is a user attribute for the message. For example, the apparatus can process metadata of the message to determine a size or type of the message, which is a user attribute for the message.
In yet some other embodiments, values of the set of attributes for the message are not included in the message itself or metadata of the message. In such embodiments, the apparatus is configured to retrieve values of user attributes for the message from data and/or information of registered user accounts that is stored at or accessible to the apparatus. Specifically, the apparatus can determine an associated user (e. g. , a user associated with the client device or a user who initially defined the content of the message) by processing the received message. The apparatus can then retrieve, from stored data of the registered user account for the associated user, values of user attributes of the associated user that are the user attributes for the message. For example, the apparatus can determine a user associated with the  client device (e. g. , based on the client device being registered under the user’s name in the registered user account for the user) . The apparatus can then retrieve, from stored data of the registered user account for the user, a country designated by the user and a language of the user, which are the user attributes for the message.
At S102, the apparatus retrieves values of user attributes associated with the group of users registered with the computer system. The apparatus then determines a set of users from the group of users, where each user from the set of users has user attribute values that match the values of the set of user attributes for the message in accordance with a predefined forwarding rule.
In some embodiments, a predefined forwarding rule used in determining the match in S102 can be a default forwarding rule for the apparatus (or the computer system) . In such embodiments, the apparatus determines the match of user attribute values for all received messages except for messages associated with (e. g. , received from) a user who previously designated a different predefined forwarding rule. In some embodiments, the computer system can provide multiple predefined forwarding rules for each registered user to choose, and each registered user can elect a predefined forwarding rule from the multiple predefined forwarding rules to forward her messages. In such embodiments, the multiple predefined forwarding rules can include a default forwarding rule that is used when a registered user does not elect any predefined forwarding rule.
In some embodiments, a predefined forwarding rule can be a forwarding rule defined and designated by a registered user to forward her messages. For example, when a user registers with the computer system, the user is requested to elect a predefined forwarding rule from a group of predefined forwarding rules provided by the computer system, or define her own forwarding rule. Furthermore, in some embodiments, a registered user can define more than one forwarding rules, and elect to use different forwarding rules for different messages (e. g., based on user attributes of each message) sent by the registered user. In some embodiments, a registered user can access her forwarding settings and make changes to her predefined forwarding rule (s) anytime.
In some embodiments, a predefined forwarding rule (e. g. , defined by a registered user or provided by the computer system) can determine a forwarding destination (e. g. , a client device associated with a registered user) for a message based on a match between values of a predefined set of user attributes for the message and corresponding values of the predefined set of user attributes associated with the forwarding destination.
In some embodiments, as described above, the predefined set of user attributes for the message can include, for example, user attributes associated with the message itself, user attributes of the client device that sent the message, user attributes of a user associated with the message (e. g. , the user who sent the message to the apparatus, or the user who initially defined the content of the message) , and/or the like. Similarly, the user attributes associated with a potential forwarding destination can include, for example, user attributes of the client device (which is the potential destination of the message) or user attributes of the user associated with the client device.
In some embodiments, upon receiving a new message, the apparatus first determines the predefined forwarding rule that is to be applied on the received message. Next, based on the predefined forwarding rule, the apparatus determines a set of user attributes that is to be used (e. g. , in the comparing and matching at S102) in determining forwarding destinations for the received message. Since only user attributes included in the set of user attributes are relevant in determining forwarding destinations for the received message, at S101, the apparatus may only need to determine values of user attributes from that set of user attributes for the received message, but not values of other user attributes excluded from that set of user attributes for the received message. Similarly, at S102, the apparatus may only need to retrieve values of user attributes from that set of user attributes for the registered users, but not values of other user attributes excluded from that set of user attributes for the registered users. Subsequently, the apparatus compares values of that set of user attributes for the received message (determined at S101) with values of that set of user attributes for the registered users (retrieved at S102) . The apparatus then determines, based the comparison result, forwarding destinations for the received message in accordance with the predefined forwarding rule.
Furthermore, the matching condition of a predefined forwarding rule can be defined in various suitable methods. In some embodiments, for example, the matching condition can be defined such that values of a set of user attributes for a message match corresponding values of the set of user attributes for registered user if and only if the two values of at least one user attribute from the set of attributes match. In some other embodiments, for example, the matching condition can be defined such that values of a set of user attributes for a message match corresponding values of the set of user attributes for registered user if and only if the two values of each user attribute from the set of attributes match. In yet some other embodiments, for example, the matching condition can be defined such that values of a set of user attributes for a message match corresponding values of the set of user attributes for registered user if and only if the two values of a specific user attribute from the set of attributes match, and the two values of at least another user attribute from the set of attributes match.
For example, a predefined forwarding rule is defined to match user attributes of a sender of a message with user attributes of receivers of the message. Specifically, the predefined forwarding rule is defined such that a registered user (or a client device associated with the registered user) is determined to be a forwarding destination for a message if and only if the value of at least one user attribute of a sender user is identical to the value of the corresponding user attribute (s) of the registered user. The user attributes of the registered users include a region, age, hobby, and language of the users. Thus, upon receiving a new message, the apparatus determines, based on the received message, user attribute values of the region, age, hobby and language of the sender user (e. g. , from the stored data of the sender user) . The apparatus also retrieves user attribute values of the region, age, hobby and language of each registered user (e. g., from the stored data of each registered user) . The apparatus then compares user attribute values of region, age, hobby and language of the sender user with the corresponding user attribute values of each registered user. Based on the comparison result, the apparatus determines a set of registered users, where each registered user from the set of registered users has at least one of the region, age, hobby and language that matches (i. e. , is identical to) the corresponding user attribute value of the sender user, and each registered user excluded from the set of registered users has no user attribute value in the region, age, hobby and language that matches (i. e., is identical to) the corresponding user attribute value of the sender user. The set of registered users  (or equivalently, the set of client devices associated with the set of registered users) is the forwarding destinations of the received message.
For another example, a predefined forwarding rule is defined to match a destination IP address designated by a sender of a message with IP addresses of the client devices registered with the computer system (associated with the registered users) . Specifically, the predefined forwarding rule is defined such that for each message received from a client device with an IP address within a certain range of IP addresses, a registered client device (which is associated with a registered user) is determined to be a forwarding destination for that message if and only if the IP address of the client device is within a range of destination IP addresses designated by the sender user of the message. Thus, upon receiving a new message from a client device with an IP address within the certain range of IP addresses, the apparatus determines, based on the received message, the range of destination IP addresses designated by the sender of the message (e. g. , from the stored data of the sender user) . The apparatus also retrieves the IP address of each registered client device (e. g. , from the stored data of the registered users) . The apparatus then compares the IP address of each registered client device with the range of destination IP addresses. Based on the comparison result, the apparatus determines a set of registered client devices, where the IP address of each registered client device from the set of registered client devices is within the range of destination IP addresses designated by the sender user of the message, and the IP address of each remaining registered client device excluded from the set of registered client devices is outside the range of destination IP addresses designated by the sender user of the message. The set of registered client devices is the forwarding destinations of the received message.
For yet another example, a predefined forwarding rule is defined to match a destination country designated by a sender user of a message with countries of registered users, or alternatively, to match a language of the sender user and destination IP addresses designated by the sender user with languages of registered users and IP addresses of registered client devices. Specifically, upon receiving a new message from a sender user (operating a client device) , the apparatus determines, based on the received message, a destination country designate by the sender user, a language of the sender user, and destination IP addresses designated by the sender user (e. g. , from the stored data of the sender user) . The apparatus also  retrieves a country, a language, and an IP address of an associated client device for each registered user (e. g. , from the stored data of the registered users) . The apparatus first compares the country of each registered user with the country designated by the sender user to determine a first set of registered users, where the country of each registered user from the first set of registered users matches (i. e. , is identical to) the country designated by the sender user, and the country of each remaining registered user excluded from the first set of registered users is different from the country designated by the sender user. The apparatus then compares the language and the IP address of the associated client device for each remaining registered user (i. e. , the registered users excluded from the first set of registered users) with the language of the sender user and the destination IP addresses designated by the sender user to determine a second set of registered users. The language of each registered user from the second set of registered users matches (i. e. , is identical to) the language of the sender user, and the IP address of the associated client device for each registered user from the second set of registered users is included in the destination IP addresses designated by the sender user. The combination of the first set of registered users and the second set of registered users is the forwarding destinations of the received message.
The examples illustrated above are not intended to be exhaustive or to limit the present application to the precise forms disclosed. That is, the apparatus can determine, for each received message, to apply a predefined forwarding rule from multiple predefined forwarding rules in any other suitable method based on user attributes of the message, user attributes of the client device that sent the message, and/or user attributes of the sender user. Also, predefined forwarding rules can be defined in any other suitable methods based on a match between user attribute values for a received message and user attribute values associated with the registered users.
At S103, the apparatus forwards the message to each user from the set of users. As discussed above, the set of users is the destinations for the received message. In some embodiments, the apparatus forwards the message to a client device associated with (e. g., registered with) each user from the set of users. In some embodiments, a user can register more than one client device. In such embodiments, if only a portion of the client devices registered to the user are determined to be the destinations of the message, then the apparatus forwards the  message to each client device from that portion of client devices registered to the user. Alternatively, if the user is determined to be the destination of the message, then the apparatus forwards the message to each client device registered with the user.
As a result of the method 10 being performed at the apparatus, for example, a sender user can forward a message to every other registered user that speaks a particular language that is designated by the sender user; a sender user can forward a message to every other registered user in a particular country that is designated by the sender user; a sender user can forward a message to every registered client device with an IP address within a specific range of IP addresses that is designated by the sender user; a sender user can forward a message to every registered client device that has an IP address within a specific range of IP addresses and is registered with a particular country, where the specific range of IP addresses and the particular country are both designated by the sender user; and/or the like.
FIG. 2 is a flowchart illustrating a method 20 for forwarding messages in accordance with some embodiments. The method 20 may be performed with an apparatus that is structurally and functionally similar to the apparatus performing the method 10 described above with respect to FIG. 1. Particularly, the apparatus performing the method 20 can be configured to store and/or access data and/or information of user accounts registered with an associated computer system. In some embodiments, a group of users can be registered with the computer system. Each user from the group of users has a corresponding registered user account with the computer system. Data and/or information of the registered user accounts for the group of users is stored at or accessible to the apparatus performing the method 20.
In some embodiments, the apparatus performing the method 20 includes one or more processors and memory. In such embodiments, the method 20 is governed by instructions or code of an application program that are stored in a non-transitory computer readable storage medium of the apparatus and executed by the one or more processors of the apparatus. In such embodiments, the application program is associated with forwarding messages received from a client device to a group of other client devices. Instructions of the application program are stored in and/or executed at the apparatus. As a result of such an application program being  executed, the method 20 is performed to forward messages. As shown in FIG. 2, the method 20 includes the following steps.
At S201, the apparatus retrieves values of user attributes associated with the group of users registered with the computer system. In some embodiments, the user attribute values of the registered users can be stored at the apparatus. Alternatively, the user attribute values of the registered users can be stored at an external location that is accessible to the apparatus. In some embodiments, for the purpose of determining forwarding destinations for a received message, the apparatus can retrieve a portion of user attribute values of the registered users based on the predefined forwarding rule that is to be applied on the received message. In some embodiments, the operations of S201 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
At S202, the apparatus receives a message associated with a set of user attributes. The apparatus then determines, based on the message, values of the set of user attributes for the message. As discussed above, the user attributes for the message can have various sources such as, the content of the message, the metadata of the message, the client device that sent the message to the apparatus, the sender of the message, and/or the like. In some embodiments, for the purpose of determining forwarding destinations for the received message, the apparatus can determine a portion of user attribute values for the message based on the predefined forwarding rule that is to be applied on the received message. In some embodiments, the operations of S202 are similar to the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
At S203, the apparatus determines values of user attributes for a sender of the message. The apparatus can determine user attribute values of the sender in various suitable methods. In some embodiments, the sender provides her user attribute values (e. g. , registered information) when the sender registers with the computer system. In such embodiments, the apparatus can retrieve corresponding user attribute values of the sender from the stored data of the registered user account for the sender. In some other embodiments, the sender provides her user attribute values (e. g. , login information) when the sender logs into the application using the client device and operates the client device to send the message to the apparatus. In such  embodiments, the apparatus can retrieve corresponding user attribute values of the sender from the client device or from the received message (if the user attribute values of the sender are included in the content or metadata of the received message) .
In some embodiments, for the purpose of determining forwarding destinations for the received message, the apparatus can determine a portion of user attribute values of the sender based on the predefined forwarding rule that is applied on the received message. In some embodiments, the operations of S203 are similar to a portion of the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
At S204, the apparatus compares values of user attributes for the sender of the message with values of user attributes of the group of registered users to find matches between the values. At S205, the apparatus determines a set of users from the group of users, where each user from the set of users has user attribute values that match values of user attributes for the sender of the message in accordance with the predefined forwarding rule. The operations of S204-S205 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
As discussed above with respect to S102, the comparison of user attribute values can be performed based on the predefined forwarding rule that is applied on the received message. In some embodiments, for example, a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the values of at least a certain number of user attributes from a set of user attributes for that user match (i. e., are identical to) the corresponding user attribute values of the sender. For another example, a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the value of a particular user attribute of that user matches (i. e. , is identical to) the corresponding user attribute value of the sender.
At S206, the apparatus forwards the message to each user from the set of users. The operations of S206 are similar to the operations of S103 of the method 10 shown and described above with respect to FIG. 1.
FIG. 3 is a flowchart illustrating a method 300 for forwarding messages in accordance with some embodiments. The method 300 may be performed with an apparatus that is structurally and functionally similar to the apparatus performing the method 10 described above with respect to FIG. 1. Particularly, the apparatus performing the method 300 can be configured to store and/or access data and/or information of user accounts registered with an associated computer system. In some embodiments, a group of users can be registered with the computer system. Each user from the group of users has a corresponding registered user account with the computer system. Data and/or information of the registered user accounts for the group of users is stored at or accessible to the apparatus performing the method 300.
In some embodiments, the apparatus performing the method 300 includes one or more processors and memory. In such embodiments, the method 300 is governed by instructions or code of an application program that are stored in a non-transitory computer readable storage medium of the apparatus and executed by the one or more processors of the apparatus. In such embodiments, the application program is associated with forwarding messages received from a client device to a group of other client devices. Instructions of the application program are stored in and/or executed at the apparatus. As a result of such an application program being executed, the method 300 is performed to forward messages. As shown in FIG. 3, the method 300 includes the following steps.
At S301, the apparatus retrieves values of user attributes associated with the group of users registered with the computer system. In some embodiments, the user attribute values of the registered users can be stored at the apparatus. Alternatively, the user attribute values of the registered users can be stored at an external location that is accessible to the apparatus. In some embodiments, for the purpose of determining forwarding destinations for a received message, the apparatus can retrieve a portion of user attribute values of the registered users based on the predefined forwarding rule that is to be applied on the received message. In some embodiments, the operations of S301 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
At S302, the apparatus receives a message associated with a set of user attributes. The apparatus then determines, based on the message, values of the set of user attributes for the  message. As discussed above, the user attributes for the message can have various sources such as, the content of the message, the metadata of the message, the client device that sent the message to the apparatus, the sender of the message, and/or the like. In some embodiments, for the purpose of determining forwarding destinations for the received message, the apparatus can determine a portion of user attribute values for the message based on the predefined forwarding rule that is to be applied on the received message. In some embodiments, the operations of S302 are similar to the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
At S303, the apparatus determines values of user attributes included in the message and designated by a sender of the message. The apparatus can determine and retrieve, from the received message, user attribute values designated by the sender in various suitable methods. In some embodiments, the sender can mark the designated user attribute values included in the message with, for example, a unique identifier. In such embodiments, the apparatus can determine the content of the message that is marked (e. g. , by the unique identifier) and then retrieve the designated user attribute values from the marked content of the message. In some other embodiments, the sender can include content of the message in a content segment of the message and include designated user attribute values in a separate user attribute segment of the message. In such embodiments, the apparatus can locate the user attribute segment of the message and then retrieve the designated user attribute values from the user attribute segment. In some embodiments, the apparatus can locate the designated user attribute values from the content of the message by performing a keyword search. For example, the apparatus can search keywords “language, ” “country, ” “IP” in the message to determine designated language, country and IP address, respectively.
In some embodiments, for the purpose of determining forwarding destinations for the received message, the apparatus can determine a portion of user attribute values that are included in the message and designated by the sender based on the predefined forwarding rule that is applied on the received message. In some embodiments, the operations of S303 are similar to a portion of the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
At S304, the apparatus compares values of user attributes designated by the sender of the message with values of user attributes of the group of registered users to find matches between the values. At S305, the apparatus determines a set of users from the group of users, where each user from the set of users has user attribute values that match values of user attributes designated by the sender of the message in accordance with the predefined forwarding rule. The operations of S304-S305 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
As discussed above with respect to S102, the comparison of user attribute values can be performed based on the predefined forwarding rule that is applied on the received message. In some embodiments, for example, a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the values of at least a certain number of user attributes from a set of user attributes for that user match (i. e., are identical to) the corresponding user attribute values designated by the sender and included in the message. For another example, a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the value of a particular user attribute of that user matches (i. e. , is identical to) the corresponding user attribute value designated by the sender and included in the message.
At S306, the apparatus forwards the message to each user from the set of users. The operations of S306 are similar to the operations of S103 of the method 10 shown and described above with respect to FIG. 1.
FIG. 4 is a flowchart illustrating another method for forwarding messages in accordance with some embodiments. The method 400 is performed at an apparatus that is structurally and functionally similar to the apparatus performing the method 10 described above with respect to FIG. 1. Particularly, the apparatus performing the method 400 can be configured to store and/or access data and/or information of user accounts registered with an associated computer system. In some embodiments, a group of users can be registered with the computer system. Each user from the group of users has a corresponding registered user account with the computer system. Data and/or information of the registered user accounts for the group of users is stored at or accessible to the apparatus performing the method 400.
In some embodiments, the apparatus performing the method 400 includes one or more processors and memory. In such embodiments, the method 400 is governed by instructions or code of an application program that are stored in a non-transitory computer readable storage medium of the apparatus and executed by the one or more processors of the apparatus. In such embodiments, the application program is associated with forwarding messages received from a client device to a group of other client devices. Instructions of the application program are stored in and/or executed at the apparatus. As a result of such an application program being executed, the method 400 is performed to forward messages. As shown in FIG. 4, the method 400 includes the following steps.
At S401, the apparatus retrieves values of user attributes associated with the group of users registered with the computer system. In some embodiments, the user attribute values of the registered users can be stored at the apparatus. Alternatively, the user attribute values of the registered users can be stored at an external location that is accessible to the apparatus. In some embodiments, for the purpose of determining forwarding destinations for a received message, the apparatus can retrieve a portion of user attribute values of the registered users based on the predefined forwarding rule that is to be applied on the received message. In some embodiments, the operations of S401 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
At S402, the apparatus receives a message associated with a set of user attributes. The apparatus then determines, based on the message, values of the set of user attributes for the message. As discussed above, the user attributes for the message can have various sources such as, the content of the message, the metadata of the message, the client device that sent the message to the apparatus, the sender of the message, and/or the like. In some embodiments, for the purpose of determining forwarding destinations for the received message, the apparatus can determine a portion of user attribute values for the message based on the predefined forwarding rule that is to be applied on the received message. In some embodiments, the operations of S402 are similar to the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
At S403, the apparatus determines values of user attributes associated with the client device that sent the message to the apparatus. The apparatus can determine the user attribute values associated with the client device based on information included in the message or the metadata of the message. Such information of the message can include, for example, an IP address, a phone number, a GPS (Global Positioning System) location, an associated base station, etc. , of the client device. For example, the apparatus can retrieve an IP address or a GPS location of the client device from the metadata of the message (e. g. , as the sender’s IP address or GPS location) . The apparatus can then determine, as a user attribute value for the purpose of determining destinations of the message, a geographical region that corresponds to the IP address or the GPS location of the client device. For another example, the apparatus can retrieve a phone number associated with the client device from the metadata of the message (e. g. , as the sender’s phone number) . The apparatus can then determine, as a user attribute value for the purpose of determining destinations of the message, a predefined block of phone numbers that includes the phone number associated with the client device.
In some embodiments, for the purpose of determining forwarding destinations for the received message, the apparatus can determine a portion of user attribute values associated with the client device based on the predefined forwarding rule that is applied on the received message. In some embodiments, the operations of S403 are similar to a portion of the operations of S101 of the method 10 shown and described above with respect to FIG. 1.
At S404 the apparatus compares values of user attributes associated with the client device with values of user attributes of the group of registered users to find matches between the values. At S405, the apparatus determines a set of users from the group of users, where each user from the set of users has user attribute values that match values of user attributes associated with the client device in accordance with the predefined forwarding rule. The operations of S404-S405 are similar to a portion of the operations of S102 of the method 10 shown and described above with respect to FIG. 1.
As discussed above with respect to S102, the comparison of user attribute values can be performed based on the predefined forwarding rule that is applied on the received message. In some embodiments, for example, a user is determined to be a forwarding  destination of the received message (i. e. , included in the set of users) when the values of at least a certain number of user attributes from a set of user attributes for that user match (i. e., are identical to) the corresponding user attribute values associated with the client device. For another example, a user is determined to be a forwarding destination of the received message (i. e. , included in the set of users) when the value of a particular user attribute of that user matches (i. e. , is identical to) the corresponding user attribute value associated with the client device.
At S406, the apparatus forwards the message to each user from the set of users. The operations of S406 are similar to the operations of S103 of the method 10 shown and described above with respect to FIG. 1.
FIG. 5 is a block diagram of an apparatus 500 configured to forward messages in accordance with some embodiments. The apparatus 500 can be structurally and functionally similar to the apparatuses performing the  method  10, 20, 300 and 400 described above with respect to FIGS. 1-4. Particularly, although not shown in FIG. 5, the apparatus 500 can be operatively coupled to multiple client devices, and configured to forward messages received from one client to a group of other clients based on a predefined forwarding rule. Furthermore, the apparatus 500 may be included in a computer system where a group of users associated with the client devices are registered. Data and/or information of user attribute values for the registered users is stored at or accessible to the apparatus 500.
As shown in FIG. 5, the apparatus 500 includes a determination module 510, a retrieve module 520 and a transmit module 530. In some embodiments, each module included in the apparatus 500 can be a hardware-based module (e. g. , a digital signal processor (DSP) , a field programmable gate array (FPGA) , etc. ) , a software-based module (e. g. , a module of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software modules. Instructions or code of each module can be stored in a memory of the apparatus 500 (not shown in FIG. 5) and executed at a processor (e. g. , a CPU) of the apparatus 500 (not shown in FIG. 5) . In some embodiments, although not shown in FIG. 5, the apparatus 500 can include more or less modules or components than those shown in FIG. 5.
The modules of the apparatus 500 (including the determination module 510, the retrieve module 520 and the transmit module 530) can be configured to collectively perform the  methods  10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices.
Specifically, the detection module 510 is configured to, among other functions, determine user attribute values for a message upon the message being received at the apparatus 500. In some embodiments, the detection module 510 is configured to perform operations of S101 of the method 10 in FIG. 1. In some embodiments, the detection module 510 can determine user attribute values for a message in various methods based on the source of the user attribute values (e. g. , included in the content of the message, included in the metadata of the message, included in stored data of a registered user, etc. ) . For example, the detection module 510 can retrieve user attribute values for the sender of the message from the stored data of the sender when the user attributes for the sender are the user attributes for the message. For another example, the detection module 510 can retrieve, from the content and/or metadata of the message, user attribute values designate by the sender of the message. For yet another example, the detection module 510 can determine user attribute values for the message based on user attribute values of the client device that sent the message to the apparatus (e. g. , determine a region that corresponds to an IP address of the client device) .
The retrieve module 520 is configured to, among other functions, determine a set of registered users to be the forwarding destinations for the received message based on the predefined forwarding rule. Each registered user from the set of registered users has user attribute values that match, in accordance with the predefined forwarding rule, the user attribute values for the message determined at the detection module 510. In some embodiments, as discussed above with respect to FIGS. 1-4, the retrieve module 520 can be configured to perform the matching based on various predefined forwarding rules and various combinations of user attributes. In some embodiments, the retrieve module 520 can retrieve user attribute values of online users as well as user attribute values of offline users. In some embodiments, when the retrieve module 520 determines a set of registered users to be the forwarding destinations for a received message, the retrieve module 520 can store and associate information of the set of registered users and information of the received message. As a result, based on the stored and  associated information, the retrieve module 520 can determine forwarding destinations for a new message similar to the received message without performing the matching again.
The transmit module 530 is configured to, among other functions, forward the received message to each registered user (or equivalently, client device (s) associated with each registered user) from the set of registered users.
FIG. 6 is a block diagram of another apparatus 600 configured to forward messages in accordance with some embodiments. The apparatus 600 can be (substantially) identical, or structurally and functionally similar, to the apparatus 500 shown and described above with respect to FIG. 5. Similar to the apparatuses shown and described with respect to FIGS. 1-5, the apparatus 600 can be operatively coupled to multiple client devices, and configured to forward messages received from one client to a group of other clients based on a predefined forwarding rule. In other words, the apparatus 600 can be configured to perform the  methods  10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices. Furthermore, the apparatus 600 may be included in a computer system where a group of users associated with the client devices are registered. Data and/or information of user attribute values for the registered users is stored at or accessible to the apparatus 600.
As shown in FIG. 6, the apparatus 600 includes a determination module 610, a retrieve module 620, a transmit module 630, and a recoding module 640. In some embodiments, each module included in the apparatus 600 can be a hardware-based module (e. g. , a DSP, a FPGA, etc. ) , a software-based module (e. g. , a module of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software modules. Instructions or code of each module included in the apparatus 600 can be stored in a memory of the apparatus 600 (not shown in FIG. 6) and executed at a processor (e. g. , a CPU) of the apparatus 600 (not shown in FIG. 6) . In some embodiments, although not shown in FIG. 6, the apparatus 600 can include more or less modules or components than those shown in FIG. 6.
The modules of the apparatus 600 (including the determination module 610, the retrieve module 620, the transmit module 630 and the recording module 600) can be configured  to collectively perform the  methods  10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices. Furthermore, the determination module 610, the retrieve module 620 and the transmit module 630 can be structurally and functionally similar to the determination module 510, the retrieve module 520 and the transmit module 530 of the apparatus 500, respectively.
The recording module 640 is configured to, among other functions, retrieve values of user attributes associated with the registered users from, for example, a database used to store data and/or information of registered users. Such a database can be hosted and maintained in the apparatus 600 or at external data storage device accessible to the apparatus 600. In some embodiments, the recording module 640 is configured to store the retrieved user attribute values of the registered users.
FIG. 7 is a block diagram of a retrieve module 700 in an apparatus configured to forward messages in accordance with some embodiments. The retrieve module 700 can be (substantially) identical, or structurally and functionally similar, to the retrieve module 520 of the apparatus 500 shown and described above with respect to FIG. 5. Particularly, the apparatus including the retrieve module 700 can be structurally and functionally similar to the apparatus 500 in FIG. 5.
As shown in FIG. 7, the retrieve module 700 includes a first identification submodule 710, a first determination submodule 720 and a first retrieve submodule 730. In some embodiments, each submodule included in the retrieve module 700 can be a hardware-based submodule (e. g. , a DSP, a FPGA, etc. ) , a software-based submodule (e. g. , a submodule of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software submodules. Instructions or code of each submodule included in the retrieve module 700 can be stored in a memory associated with the retrieve module 700 (e. g. , a memory of the apparatus, not shown in FIG. 7) and executed at a processor (e. g. , a CPU) associated with the retrieve module 700 (e. g. , a processor of the apparatus, not shown in FIG. 7) . In some embodiments, although not shown in FIG. 7, the retrieve module 700 can include more or less submodules or components than those shown in FIG. 7.
The submodules of the retrieve module 700 (including the first identification submodule 710, the first determination submodule 720 and the first retrieve submodule 730) can be collectively configured to determine a set of registered users to be the forwarding destinations for a received message based on a predefined forwarding rule.
Specifically, the first identification submodule 710 is configured to determine user attribute values for a sender of the received message. The first identification submodule 710 can determine the user attribute values for the sender using various methods depending on where the user attribute values of the sender are stored. For example, the first identification submodule 710 can retrieve a user attribute value for the sender from the content of the received message when that user attribute value for the sender is included in the content of the message. For another example, the first identification submodule 710 can retrieve a user attribute value for the sender from the client device that sent the message when that user attribute value for the sender is provided by the user in login to the client device. For yet another example, the first identification submodule 710 can retrieve a user attribute value for the sender from the stored data of the sender when that user attribute value for the sender is not available anywhere else.
The first determination submodule 720 is configured to compare the user attribute values for the sender retrieved at the first identification submodule 710 with the corresponding user attribute values for each registered user based on the predefined forwarding rule. As a result, the first determination submodule 720 determines a set of registered users, each of which has user attribute values that match the user attribute values for the sender in accordance with the predefined forwarding rule.
The first retrieve submodule 730 is configured to determine forwarding addresses (e. g. , an IP address) for the received message based on the set of registered users determined at the first determination submodule 720. For example, the first retrieve submodule 730 can determine an IP address of each client device associated with the set of registered users. The IP addresses determined by the first retrieve submodule 730 are the forwarding addresses that will be used to forward the received message.
FIG. 8 is a block diagram of another retrieve module 800 in an apparatus configured to forward messages in accordance with some embodiments. The retrieve module  800 can be (substantially) identical, or structurally and functionally similar, to the retrieve module 520 of the apparatus 500 shown and described above with respect to FIG. 5. Particularly, the apparatus including the retrieve module 800 can be structurally and functionally similar to the apparatus 500 in FIG. 5.
As shown in FIG. 8, the retrieve module 800 includes a second identification submodule 810, a second determination submodule 820 and a second retrieve submodule 830. In some embodiments, each submodule included in the retrieve module 800 can be a hardware-based submodule (e. g. , a DSP, a FPGA, etc. ) , a software-based submodule (e. g. , a submodule of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software submodules. Instructions or code of each submodule included in the retrieve module 800 can be stored in a memory associated with the retrieve module 800 (e. g. , a memory of the apparatus, not shown in FIG. 8) and executed at a processor (e. g. , a CPU) associated with the retrieve module 800 (e. g. , a processor of the apparatus, not shown in FIG. 8) . In some embodiments, although not shown in FIG. 8, the retrieve module 800 can include more or less submodules or components than those shown in FIG. 8.
The submodules of the retrieve module 800 (including the second identification submodule 810, the second determination submodule 820 and the second retrieve submodule 830) can be collectively configured to determine a set of registered users to be the forwarding destinations for a received message based on a predefined forwarding rule.
Specifically, the second identification submodule 810 is configured to determine user attribute values included in the received message that are designated by a sender of the received message. The second identification submodule 810 can determine the designated user attribute values using various methods depending on how the user attribute values are contained in the received message. For example, when the designated user attribute values are contained in content of the message that is marked (e. g. , by a unique identifier) , the second identification submodule 810 can locate the marked content and then retrieve the designated user attribute values from the marked content of the message. For another example, when the designated user attribute values are contained in a specific user attribute segment of the message, the second  identification submodule 810 can locate the user attribute segment of the message and then retrieve the designated user attribute values from the user attribute segment of the message.
The second determination submodule 820 is configured to compare the user attribute values designated by the sender and included in the message (which are retrieved at the second identification submodule 810) with the corresponding user attribute values for each registered user based on the predefined forwarding rule. As a result, the second determination submodule 820 determines a set of registered users, each of which has user attribute values that match the user attribute values designated by the sender and included in the message in accordance with the predefined forwarding rule.
The second retrieve submodule 830 is configured to determine forwarding addresses (e. g. , an IP address) for the received message based on the set of registered users determined at the second determination submodule 820. For example, the second retrieve submodule 830 can determine an IP address of each client device associated with the set of registered users. The IP addresses determined by the second retrieve submodule 830 are the forwarding addresses that will be used to forward the received message.
FIG. 9 is a block diagram of another retrieve module 900 in an apparatus configured to forward messages in accordance with some embodiments. The retrieve module 900 can be (substantially) identical, or structurally and functionally similar, to the retrieve module 520 of the apparatus 500 shown and described above with respect to FIG. 5. Particularly, the apparatus including the retrieve module 900 can be structurally and functionally similar to the apparatus 500 in FIG. 5.
As shown in FIG. 9, the retrieve module 900 includes a third identification submodule 910, a third determination submodule 920 and a third retrieve submodule 930. In some embodiments, each submodule included in the retrieve module 900 can be a hardware-based submodule (e. g. , a DSP, a FPGA, etc. ) , a software-based submodule (e. g. , a submodule of computer code executed at a processor, a set of processor-readable instructions executed at a processor, etc. ) , or a combination of hardware and software submodules. Instructions or code of each submodule included in the retrieve module 900 can be stored in a memory associated with the retrieve module 900 (e. g. , a memory of the apparatus, not shown in FIG. 9) and executed at a  processor (e. g. , a CPU) associated with the retrieve module 900 (e. g. , a processor of the apparatus, not shown in FIG. 9) . In some embodiments, although not shown in FIG. 9, the retrieve module 900 can include more or less submodules or components than those shown in FIG. 9.
The submodules of the retrieve module 900 (including the third identification submodule 910, the third determination submodule 920 and the third retrieve submodule 930) can be collectively configured to determine a set of registered users to be the forwarding destinations for a received message based on a predefined forwarding rule.
Specifically, the third identification submodule 910 is configured to determine user attribute values associated with the client device that sent the message to the apparatus. The third identification submodule 910 can determine the user attribute values associated with the client device based on information included in the message or the metadata of the message. Such information of the message can include, for example, an IP address, a phone number, a GPS location, an associated base station, etc. , of the client device. For example, the third identification submodule 910 can retrieve an IP address or a GPS location of the client device from the metadata of the message (e. g. , as the sender’s IP address or GPS location) . The third identification submodule 910 can then determine, as a user attribute value for the purpose of determining destinations of the message, a geographical region that corresponds to the IP address or the GPS location of the client device. For another example, the third identification submodule 910 can retrieve a phone number associated with the client device from the metadata of the message (e. g. , as the sender’s phone number) . The third identification submodule 910 can then determine, as a user attribute value for the purpose of determining destinations of the message, a predefined block of phone numbers that includes the phone number associated with the client device.
The third determination submodule 920 is configured to compare the user attribute values associated with the client device (which are retrieved at the third identification submodule 910) with the corresponding user attribute values for each registered user based on the predefined forwarding rule. As a result, the third determination submodule 920 determines a  set of registered users, each of which has user attribute values that match the user attribute values associated with the client device in accordance with the predefined forwarding rule.
The third retrieve submodule 930 is configured to determine forwarding addresses (e. g. , an IP address) for the received message based on the set of registered users determined at the third determination submodule 920. For example, the third retrieve submodule 930 can determine an IP address of each client device associated with the set of registered users. The IP addresses determined by the third retrieve submodule 930 are the forwarding addresses that will be used to forward the received message.
FIG. 10 is a schematic diagram illustrating a system 1000 configured to forward messages in accordance with some embodiments. As shown in FIG. 10, the system 1000 includes a server device 100 and multiple client devices 200. The server device 100 can be structurally and functionally similar to the apparatuses shown and described above with respect to FIGS. 1-9. Each client device 200 can be structurally and functionally similar to the client devices described above with respect to FIGS. 1-9. Furthermore, the server device 100 can be operatively coupled to each client device 200 via, for example, one or more networks.
The server device 100 can be configured to function as a message-forwarding platform for the client devices 200. Specifically, the client devices 200 (or equivalently, users operating the client devices 200) can be registered with the system 1000. Data and/or information of the registered client devices 200 can be stored at the server device 100 or an external data storage device (not shown in FIG. 10) accessible to the server device 100. In some embodiments, similarly, one or more users operating the client devices 200 can be registered with the system 1000, and the users can log into the server device 100 remotely at the each client device 100.
In some embodiments, the server device 100 may be configured to perform the  methods  10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices 200. Specifically, a client device 200 sends a message to the server device 100. Upon receiving the message, the server device 100 determines, based on the message, user attribute values for the message. In some embodiments, the server device 100 identifies, based on the message, a predefined forwarding rule for the message. In some  embodiments, for the purpose of determining forwarding destinations of the message, the server device 100 determines user attribute values for the message that are relevant to the predefined forwarding rule for the message.
The server device 100 also retrieves corresponding user attribute values for the registered client devices 200 (or registered users that operate the client devices 200) . Next, the server device 100 compares the determined user attribute values for the message with the retrieved user attribute values for the registered client devices. As a result of the comparison, the server device 100 determines a set of client devices 200, where user attribute values for each client device 200 from the set of client devices 200 match the user attribute values for the message in accordance with the predefined forwarding rule, and user attribute values for each remaining client device 200 excluded from the set of client devices 200 do not match the user attribute values for the message based on the predefined forwarding rule. Thus, the set of client devices 200 are the forwarding destinations of the message. Accordingly, the server device 100 forwards the message to each client device 200 from the set of client devices 200.
FIG. 11 is a schematic diagram illustrating components of an apparatus 1100 configured to forward messages in accordance with some embodiments. The apparatus 1100 can be structurally and functionally similar to the apparatuses and server device 100 shown and described above with respect to FIGS. 1-10. Similar to the apparatuses and server device 100 shown and described with respect to FIGS. 1-10, the apparatus 1100 can be operatively coupled to multiple client devices (not shown in FIG. 11) , and configured to forward messages received from one client to a group of other clients based on a predefined forwarding rule. In other words, the apparatus 1100 can be configured to perform the  methods  10, 20, 300 and 400 shown and described above with respect to FIGS. 1-4, to forward messages for the client devices. Furthermore, the apparatus 1100 is included in a computer system similar to the system 1000 in FIG. 10, where a group of users associated with the client devices are registered. Data and/or information of user attribute values for the registered users is stored at or accessible to the apparatus 1100.
As shown in FIG. 11, the apparatus 1100 includes a receiving device 1101, a processor 1102 and a forwarding device 1103. In some embodiments, although not shown in  FIG. 11, the apparatus 1100 can include more or less modules, devices and/or components than those shown in FIG. 11. Specifically, the receiving device 1101 can be any type of device configured to receive a message from a client device. The forwarding device 1103 can be any type of device configured to transmit a received message to a client device. In some embodiments, although not shown in FIG. 11, the functionalities of the receiving device 1101 and the forwarding device 1103 can be combined and implemented in a single device such as, for example, a transceiver device or a communication device.
The processor 1102 can be any processing device capable of performing at least a portion of the message-forwarding methods described herein. Such a processor can be, for example, a CPU, a DSP, a FPGA, and/or the like. In some embodiments, the processor 1102 can also be configured to control the operations of other components, devices and/or modules of the apparatus 1100 such as the receiving device 1101 and the forwarding device 1103. In some embodiments, the processor 1102 is configured to perform data processing for the message-forwarding methods as described below.
In operation, the receiving device receives a message from a client device operatively coupled to the apparatus 1100. Upon receiving the message at the receiving device 1101, the processor 1102 determines, based on the message, user attribute values for the message. In some embodiments, the processor 1102 identifies, based on the message, a predefined forwarding rule for the message. In some embodiments, for the purpose of determining forwarding destinations of the message, the processor 1102 determines user attribute values for the message that are relevant to the predefined forwarding rule for the message.
The processor 1102 also retrieves corresponding user attribute values for the registered users (or the client devices operated by the registered users) . Next, the processor 1102 compares the determined user attribute values for the message with the retrieved user attribute values for the registered users. As a result of the comparison, the processor 1102 determines a set of registered users, where user attribute values for each registered user from the set of registered users match the user attribute values for the message in accordance with the predefined forwarding rule, and user attribute values for each remaining registered user excluded from the set of registered users do not match the user attribute values for the message based on  the predefined forwarding rule. Thus, the set of registered users (or the client devices operated by the set of registered users) are the forwarding destinations of the message. Accordingly, the forwarding device 1103 forwards the message to each registered user (or the client device (s) operated by the registered user) from the set of registered users.
While particular embodiments are described above, it will be understood it is not intended to limit the present application to these particular embodiments. On the contrary, the present application includes alternatives, modifications and equivalents that are within the spirit and scope of the appended claims. Numerous specific details are set forth in order to provide a thorough understanding of the subject matter presented herein. But it will be apparent to one of ordinary skill in the art that the subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
Although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, first ranking criteria could be termed second ranking criteria, and, similarly, second ranking criteria could be termed first ranking criteria, without departing from the scope of the present application. First ranking criteria and second ranking criteria are both ranking criteria, but they are not the same ranking criteria.
The terminology used in the description of the present application herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the present application. As used in the description of the present application and the appended claims, the singular forms “a, ” “an, ” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term "and/or" as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms "includes, " "including, " "comprises, " and/or "comprising, " when used in this specification, specify the presence of stated features, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, operations, elements, components, and/or groups thereof.
As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in accordance with a determination” or “in response to detecting, ” that a stated condition precedent is true, depending on the context. Similarly, the phrase “if it is determined [that a stated condition precedent is true] ” or “if [astated condition precedent is true] ” or “when [astated condition precedent is true] ” may be construed to mean “upon determining” or “in response to determining” or “in accordance with a determination” or “upon detecting” or “in response to detecting” that the stated condition precedent is true, depending on the context.
Although some of the various drawings illustrate a number of logical stages in a particular order, stages that are not order dependent may be reordered and other stages may be combined or broken out. While some reordering or other groupings are specifically mentioned, others will be obvious to those of ordinary skill in the art and so do not present an exhaustive list of alternatives. Moreover, it should be recognized that the stages could be implemented in hardware, firmware, software or any combination thereof.
The foregoing description, for purpose of explanation, has been described with reference to specific implementations. However, the illustrative discussions above are not intended to be exhaustive or to limit the present application to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The implementations were chosen and described in order to best explain principles of the present application and its practical applications, to thereby enable others skilled in the art to best utilize the present application and various implementations with various modifications as are suited to the particular use contemplated. Implementations include alternatives, modifications and equivalents that are within the spirit and scope of the appended claims. Numerous specific details are set forth in order to provide a thorough understanding of the subject matter presented herein. But it will be apparent to one of ordinary skill in the art that the subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the implementations.

Claims (20)

  1. A method of forwarding messages at a computer system having one or more processors and memory for storing programs to be executed by the one or more processors, the method comprising the steps of:
    receiving a message associated with a plurality of user attributes;
    determining, based on the message, values of the plurality of user attributes for the message;
    retrieving values of user attributes associated with a plurality of users registered with the computer system;
    determining a set of users from the plurality of users, each user from the set of users having user attribute values that match the values of the plurality of user attributes for the message in accordance with a predefined forwarding rule; and
    forwarding the message to each user from the set of users.
  2. The method of claim 1, wherein the step of receiving the message includes receiving the message from a user from the plurality of users, the values of the plurality of user attributes for the messages including user attribute values of that user.
  3. The method of claim 1, wherein the value of at least one user attribute of each user from the set of users is identical to the value of the at least one user attribute for the message.
  4. The method of claim 1, wherein the set of users includes more than one user registered with the computer system.
  5. The method of claim 1, wherein user attribute values of each user excluded from the set of users do not match the values of the plurality of user attributes for the message according to the predefined forwarding rule.
  6. The method of claim 1, wherein the plurality of user attributes includes at least one of a language of the message, a region, and an Internet Protocol (IP) address.
  7. The method of claim 1, wherein the message is a first message, the set of users is a first set of users, the predefined forwarding rule is a first predefined forwarding rule designated to a first group of messages including the first message, the method further comprising:
    receiving a second message associated with the plurality of user attributes;
    determining, based on the second message, values of the plurality of user attributes for the second message;
    determining a second set of users from the plurality of users, each user from the second set of users having user attribute values that match the values of the plurality of user attributes for the second message in accordance with a second predefined forwarding rule different from the first predefined forwarding rule, the second predefined forwarding rule being designated to a second group of messages mutually exclusive from the first group of messages and including the second message; and
    forwarding the second message to each user from the second set of users.
  8. An apparatus, comprising:
    one or more processors; and
    memory storing one or more programs to be executed by the one or more processors, the one or more programs comprising instructions for:
    receiving a message associated with a plurality of user attributes;
    determining, based on the message, values of the plurality of user attributes for the message;
    retrieving values of user attributes associated with a plurality of users registered with the computer system;
    determining a set of users from the plurality of users, each user from the set of users having user attribute values that match the values of the plurality of user attributes for the message in accordance with a predefined forwarding rule; and
    forwarding the message to each user from the set of users.
  9. The apparatus of claim 8, wherein the step of receiving the message includes receiving the message from a user from the plurality of users, the values of the plurality of user attributes for the messages including user attribute values of that user.
  10. The apparatus of claim 8, wherein the value of at least one user attribute of each user from the set of users is identical to the value of the at least one user attribute for the message.
  11. The apparatus of claim 8, wherein user attribute values of each user excluded from the set of users do not match the values of the plurality of user attributes for the message according to the predefined forwarding rule.
  12. The apparatus of claim 8, wherein the set of users includes more than one user registered with the computer system.
  13. The apparatus of claim 8, wherein the plurality of user attributes includes at least one of a language of the message, a region, and an Internet Protocol (IP) address.
  14. The apparatus of claim 8, wherein the message is a first message, the set of users is a first set of users, the predefined forwarding rule is a first predefined forwarding rule designated to a first group of messages including the first message, the one or more programs further comprising instructions for:
    receiving a second message associated with the plurality of user attributes;
    determining, based on the second message, values of the plurality of user attributes for the second message;
    determining a second set of users from the plurality of users, each user from the second set of users having user attribute values that match the values of the plurality of user attributes for the second message in accordance with a second predefined forwarding rule different from the first predefined forwarding rule, the second predefined forwarding rule being designated to a second group of messages mutually exclusive from the first group of messages and including the second message; and
    forwarding the second message to each user from the second set of users.
  15. A non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which, when executed by one or more processors, cause the processors to perform operations comprising:
    receiving a message associated with a plurality of user attributes;
    determining, based on the message, values of the plurality of user attributes for the message;
    retrieving values of user attributes associated with a plurality of users registered with the computer system;
    determining a set of users from the plurality of users, each user from the set of users having user attribute values that match the values of the plurality of user attributes for the message in accordance with a predefined forwarding rule; and
    forwarding the message to each user from the set of users.
  16. The non-transitory computer readable storage medium of claim 15, wherein the step of receiving the message includes receiving the message from a user from the plurality of users, the values of the plurality of user attributes for the messages including user attribute values of that user.
  17. The non-transitory computer readable storage medium of claim 15, wherein the value of at least one user attribute of each user from the set of users is identical to the value of the at least one user attribute for the message.
  18. The non-transitory computer readable storage medium of claim 15, wherein user attribute values of each user excluded from the set of users do not match the values of the plurality of user attributes for the message according to the predefined forwarding rule.
  19. The non-transitory computer readable storage medium of claim 15, wherein the plurality of user attributes includes at least one of a language of the message, a region, and an InternetProtocol (IP) address.
  20. The non-transitory computer readable storage medium of claim 15, wherein the message is a first message, the set of users is a first set of users, the predefined forwarding rule is a first predefined forwarding rule designated to a first group of messages including the first message, the one or more programs further comprising instructions for:
    receiving a second message associated with the plurality of user attributes;
    determining, based on the second message, values of the plurality of user attributes for the second message; 
    determining a second set of users from the plurality of users, each user from the second set of users having user attribute values that match the values of the plurality of user attributes for the second message in accordance with a second predefined forwarding rule different from the first predefined forwarding rule, the second predefined forwarding rule being designated to a second group of messages mutually exclusive from the first group of messages and including the second message; and
    forwarding the second message to each user from the second set of users.
PCT/CN2014/086608 2013-09-26 2014-09-16 Method, apparatus and system for forwarding messages WO2015043392A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310444399.8A CN104144106B (en) 2013-09-26 2013-09-26 A kind of message forwarding method, Apparatus and system
CN201310444399.8 2013-09-26

Publications (1)

Publication Number Publication Date
WO2015043392A1 true WO2015043392A1 (en) 2015-04-02

Family

ID=51853175

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/086608 WO2015043392A1 (en) 2013-09-26 2014-09-16 Method, apparatus and system for forwarding messages

Country Status (2)

Country Link
CN (1) CN104144106B (en)
WO (1) WO2015043392A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108353018A (en) * 2015-11-25 2018-07-31 华为技术有限公司 Send the method, apparatus and system of message
CN113055701A (en) * 2021-04-21 2021-06-29 上海哔哩哔哩科技有限公司 Data processing method and device

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104901872A (en) * 2015-06-25 2015-09-09 携程计算机技术(上海)有限公司 Group chat method and system based on XMPP protocol
CN105262801A (en) * 2015-09-24 2016-01-20 广东亿迅科技有限公司 Method and system for message distribution of cloud platform
CN105162696B (en) * 2015-10-14 2018-12-21 广州杰赛科技股份有限公司 A kind of method for message transmission and device
CN105427443B (en) * 2015-10-29 2018-11-06 小米科技有限责任公司 Vote information sending method and device
CN106230694A (en) * 2016-07-29 2016-12-14 北京北信源软件股份有限公司 The message group sending method of feature based and system in instant messaging
CN107528768B (en) * 2016-08-31 2020-10-09 腾讯科技(深圳)有限公司 Message prompting method and device
CN108470284B (en) * 2017-02-23 2023-04-07 腾讯科技(深圳)有限公司 Data analysis method and device
CN114860474A (en) * 2019-10-16 2022-08-05 支付宝(杭州)信息技术有限公司 Message interaction method, system and device and electronic equipment
CN111371677B (en) * 2020-03-29 2023-04-07 闫文润 Communication method and computer readable storage medium
CN112968785A (en) * 2021-01-28 2021-06-15 维沃移动通信有限公司 Information forwarding method and device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101409730A (en) * 2008-11-22 2009-04-15 梁福鹏 Random network communication method based on requirement relation
US8074171B2 (en) * 2008-06-06 2011-12-06 International Business Machines Corporation System and method to provide warnings associated with natural language searches to determine intended actions and accidental omissions
CN102929892A (en) * 2011-08-12 2013-02-13 莫润刚 Accurate information promoting system and method based on social network
US20130185277A1 (en) * 2012-01-18 2013-07-18 Yahoo! Inc. Ecosystem for manually marked searchable feeds on publisher sites

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101645154A (en) * 2008-08-06 2010-02-10 中国网通集团宽带业务应用国家工程实验室有限公司 Advertisement publishing method and system
CN101902699B (en) * 2009-05-31 2013-08-21 中兴通讯股份有限公司 Message number-based message processing method and device
US8838706B2 (en) * 2010-06-24 2014-09-16 Microsoft Corporation WiFi proximity messaging

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074171B2 (en) * 2008-06-06 2011-12-06 International Business Machines Corporation System and method to provide warnings associated with natural language searches to determine intended actions and accidental omissions
CN101409730A (en) * 2008-11-22 2009-04-15 梁福鹏 Random network communication method based on requirement relation
CN102929892A (en) * 2011-08-12 2013-02-13 莫润刚 Accurate information promoting system and method based on social network
US20130185277A1 (en) * 2012-01-18 2013-07-18 Yahoo! Inc. Ecosystem for manually marked searchable feeds on publisher sites

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108353018A (en) * 2015-11-25 2018-07-31 华为技术有限公司 Send the method, apparatus and system of message
EP3373529A4 (en) * 2015-11-25 2018-12-05 Huawei Technologies Co., Ltd. Method, device and system for sending message
CN108353018B (en) * 2015-11-25 2020-08-25 华为技术有限公司 Method, device and system for sending message
US11552915B2 (en) 2015-11-25 2023-01-10 Huawei Technologies Co., Ltd. Message sending method, device, and system
CN113055701A (en) * 2021-04-21 2021-06-29 上海哔哩哔哩科技有限公司 Data processing method and device

Also Published As

Publication number Publication date
CN104144106B (en) 2015-11-25
CN104144106A (en) 2014-11-12

Similar Documents

Publication Publication Date Title
WO2015043392A1 (en) Method, apparatus and system for forwarding messages
US11736424B2 (en) Searchable peer-to-peer system through instant messaging based topic indexes
US9699151B2 (en) Manage encrypted network traffic using spoofed addresses
US9515967B2 (en) Systems and methods for sharing data among multiple end user devices
US9392424B2 (en) Intelligent forwarding of short message service and multimedia messaging service messages
US9667779B2 (en) Routing service
US9565247B2 (en) Method and system of sharing information in a social networking application
US8832138B2 (en) System and method for social network search operations
US8738791B1 (en) Location based network usage policies
US9906629B2 (en) Persistent format conversions
US20140181117A1 (en) Person search method and apparatus
US20120072507A1 (en) System and method of posting messages to different messaging services
US10382411B2 (en) Manage encrypted network traffic using DNS responses
WO2015090136A1 (en) Method and apparatus for transmitting data in network system, and data transmission system
US11863504B2 (en) Communication with service providers using disposable email accounts
CN103957306A (en) Method and device for sharing information between communication terminals
US9917738B2 (en) Intelligent device data router
JP5855732B2 (en) SMS message transmission proxy device and program
US9129025B2 (en) Automatically granting access to content in a microblog
EP3595260A1 (en) Location based network usage policies
CN116471253A (en) Mail withdrawal method, system, computing device and storage medium

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14847016

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 08.08.2016)

122 Ep: pct application non-entry in european phase

Ref document number: 14847016

Country of ref document: EP

Kind code of ref document: A1