WO2001065818A1 - Anonymous id - Google Patents

Anonymous id Download PDF

Info

Publication number
WO2001065818A1
WO2001065818A1 PCT/US2001/006718 US0106718W WO0165818A1 WO 2001065818 A1 WO2001065818 A1 WO 2001065818A1 US 0106718 W US0106718 W US 0106718W WO 0165818 A1 WO0165818 A1 WO 0165818A1
Authority
WO
WIPO (PCT)
Prior art keywords
message
anonymous
service provider
wcp
server
Prior art date
Application number
PCT/US2001/006718
Other languages
French (fr)
Inventor
Sundaram Natarajan
Jack T. Ha
Van D. Leong
Luc August Jozef Maria Verbist
Original Assignee
Clickservices.Com
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 Clickservices.Com filed Critical Clickservices.Com
Priority to AU2001243380A priority Critical patent/AU2001243380A1/en
Publication of WO2001065818A1 publication Critical patent/WO2001065818A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/12Messaging; Mailboxes; Announcements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/50Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
    • H04M3/53Centralised arrangements for recording incoming messages, i.e. mailbox systems
    • H04M3/533Voice mail systems
    • H04M3/53333Message receiving aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/42025Calling or Called party identification service
    • H04M3/42034Calling party identification service
    • H04M3/42059Making use of the calling party identifier
    • H04M3/42068Making use of the calling party identifier where the identifier is used to access a profile
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/18Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/18Service support devices; Network management devices
    • H04W88/184Messaging devices, e.g. message centre

Definitions

  • the present invention relates to the field of wireless communication; more particularly, the present invention relates to allowing transmission of messages to an individual's wireless device using an anonymous identifier (ID).
  • ID anonymous identifier
  • the service provider assigns an individual's email address with a separate number that is used for receiving email messages. • However, if the cellular phone user changes service providers, both their phone number and the phone number (address) for email messages changes, and the same problems above are made worse.
  • the method comprises receiving a message and an anonymous ID, determining the number of a device associated with the anonymous ID and a service provider, and sending the message to the number according to a protocol of the service provider.
  • Figure 1 is a flow diagram of one embodiment of a registration process.
  • Figure 2 is a flow diagram of one embodiment of the process for processing a message.
  • FIG 3 illustrates one embodiment of the wireless communication platform (WCP).
  • WCP wireless communication platform
  • FIG. 4 is a block diagram of one embodiment of the architecture for the WCP.
  • Figure 5 is a simplified view of WCP 300 operating as a communication layer.
  • Figure 6 illustrates the WCP being used to transfer messages to a wireless device.
  • Figure 7 illustrates communication between the WCP and a gateway server.
  • Figure 8 is a block diagram of one embodiment of an information services engine of a wireless communication platform.
  • Figure 9 is a block diagram of one embodiment of a network environment.
  • Figure 10 is a block diagram of an exemplary computer system.
  • a wireless communication platform is described, as well as a technique to enable wireless device users to have an anonymous identifier that can be used to send them messages and does not change with a change in the user's service provider.
  • numerous details are set forth. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
  • the present invention also relates to apparatus for performing the operations herein.
  • This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
  • a machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer).
  • a machine-readable medium includes read only memory ("ROM”); random access memory (“RAM”); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.
  • the present invention provides for communicating with a wireless device using an anonymous identifier (ID).
  • ID anonymous identifier
  • the wireless device user provides the anonymous ID, which other individuals use to address the wireless device.
  • a wireless device user can receive communications (e.g., messages) from people without revealing the number of their wireless device (e.g., their cellular phone number, their pager number, etc.).
  • the use of the anonymous ID is also advantageous in that it allows a wireless device user to change service providers yet still be able to use the anonymous ID to receive communications. That is, even though the change in service provider results in a change in the number of their wireless device, the anonymous ID remains the same and still may be used by others to send messages to the wireless device. Such changes in service provider may be common place where a particular wireless device user regularly travels between areas in which different service providers provide wireless services. In one embodiment, the wireless device user changes the service provider information to cause messages addressed to the anonymous ID to be forwarded to a new number. Furthermore, the fact that the ID is anonymous ensures that the privacy of the user's number (e.g., cellular phone number, pager number, etc.) is maintained.
  • the wireless device user changes the service provider information to cause messages addressed to the anonymous ID to be forwarded to a new number.
  • the fact that the ID is anonymous ensures that the privacy of the user's number (e.g., cellular phone number, pager number, etc.) is maintained.
  • the anonymous ID is a randomly generated set of characters and/or bits.
  • the anonymous ID may be provided to a user or selected by the user.
  • a wireless device user registers to receive an anonymous ID.
  • FIG. 1 is a flow diagram of one embodiment of a registration process.
  • registration begins with a request for the anonymous ID made by a wireless device user (processing block 101).
  • the request may be in the form of a request for a particular web page via entry or selection of a particular link to that page.
  • a server receives the request (processing block 102) and returns a web page containing a form which is received by the wireless device user (processing block 103).
  • the wireless device user enters a number for the wireless device (e.g., a cell phone number) and an email address (or other information that enables the user to receive the anonymous ID) and submits the form to the server (processing block 104).
  • a number for the wireless device e.g., a cell phone number
  • an email address or other information that enables the user to receive the anonymous ID
  • the server In response to receiving the submitted number and email address, the server generates an anonymous ID and creates a profile for the wireless device that associates the anonymous ID with the wireless device number (processing block 105).
  • the profile may comprise a mapping table.
  • the profile may be password protected to allow the wireless device user access to it in the future to permit changes thereto (e.g., to change their profile via a web browser or Internet phone).
  • the profile may also specify the service provider for the wireless device.
  • the server may be able to determine the service provider from the wireless device number submitted by the wireless device user. Alternatively, the wireless device user may enter the service provider as part of the registration process.
  • the profile may also store the protocol necessary to communicate a message with that service provider.
  • the server sends the anonymous ID to the wireless device user via email or another well-known communication mechanism (processing block 106).
  • the wireless device user then notifies others of anonymous ID. For example, the wireless device user may post the anonymous ID on their web site or send the anonymous ID in, or as an attachment to, an email.
  • the number of the wireless device need not be submitted to the server using a web page.
  • Such information may be entered into a computer system in a number of different ways (e.g., downloaded into a server, send via wired communication protocols, etc.)
  • a web page requests this information.
  • the individual is assigned a particular anonymous ID.
  • the wireless device user may select their own anonymous ID.
  • the messages are text messages.
  • one or more of the messages, or a portion thereof are voice messages.
  • an individual desiring to send a message to a wireless device sends the message to a server along with the anonymous ID associated with the wireless device.
  • the server then causes the message to be sent to the wire device.
  • a specific web page may be used that includes areas for entering the message and the anonymous ID.
  • a link to such a web page may be made available.
  • the wireless device user may provide the link on a web page with their anonymous ID.
  • the link may be attached to a signature file in the individual's email messages.
  • FIG 2 is a flow diagram of one embodiment of the process for processing a message.
  • an individual initially submits the message and the anonymous ID to a server (processing block 201).
  • the browser submits a request to the server.
  • the server accesses the profile associated with the anonymous ID to identify the number of the wireless device (processing block 202).
  • the server then causes the message to be sent to the wireless device using the service provider's protocol specified in the profile (processing block 203).
  • the server described above may comprise one or more servers and /or be part of a wireless communication platform.
  • a wireless communication platform ensures that the message is sent to the wireless device associated with the anonymous ID.
  • the WCP maintains a profile of each wireless device that indicates the number that may be used to contact the wireless device. The profile may also indicate the service provider. However, the WCP may be able to determine the service provider by the phone number. Knowing the identity of the service provider allows the WCP to determine the protocol necessary to communicate with the wireless device. In one embodiment, the WCP can also determine the protocol by which the WCP is informed that the message sent properly and received.
  • the use of the anonymous ID may be applicable to voice messages.
  • an individual may be given a particular phone number (e.g., an 800 number) which may be used by others to contact the individual's wireless device.
  • the voice information is forwarded by the WCP to the wireless device.
  • the voice message may be compressed and stored in an audio file.
  • the wireless device user Upon receipt, the wireless device user is able to playback the message.
  • speech recognition is performed on the audio message by the WCP and the WCP forwards the recognized text to the wireless device.
  • the wireless device user is able to sent back a response.
  • the message received by the wireless device includes identification information such as the ID of the send.
  • the name of the sender may be included in the identification information as well. This identification information may be appended to or integrated into the message.
  • WCP 300 is a platform that allows for exchanging messages between the Internet and other networked environments and wireless devices that use any type of air connection technology through any carrier.
  • WCP 300 allows a user to use an email service provider 301 to send messages with SMS (GSM)-based carriers 302 (e.g., Pacbell, Mobistar, SBC, Omnipoint, etc.), with PCS-based carriers 302 (e.g., AT&T, Pacbell, Cellular One, U.S.
  • GSM SMS
  • PCS-based carriers 302 e.g., AT&T, Pacbell, Cellular One, U.S.
  • WAP-based service providers 304 e.g., Nokia, Motorola, Ericksson, Mitsubishi, etc.
  • paging service providers 305 e.g., Skytel, Pagenet, Pagemart, Arch, etc.
  • WCP 300 comprises one or more applications.
  • one or more of these applications provide wireless capability, web- based functionality, and interoperability using a common database.
  • the common database allows the applications to share information such as, for example, user profiles and contact information.
  • FIG. 4 is a block diagram of one embodiment of the architecture for the WCP.
  • WCP 300 comprises applications engine 401, notification engine 402, and information tracking & routing engine 403.
  • Application engine 401 controls the event management, including the logic, time, and action functions associated with events. In one embodiment, application engine 401 also performs account management.
  • Notification engine 402 interfaces with the cellular and /or paging service providers. In one embodiment, notification engine 402 is modular so that a new service provider may be added easily to the platform. Each module includes information that specifies how to connect with a wireless device using that service provider, including the necessary protocol information. In one embodiment, adding a new service is performed by adding a configuration file to notification engine 402. The configuration file for a service provider is added to the system and read by the notification engine.
  • Information tracking & routing engine 403 allows for sending messages between devices. Tracking & routing engine 403 keeps track of each message sent to a device. Tracking & routing engine 403 may also keep track of the source of each message that is sent. In one embodiment, engine 403 determines the route a message is to take to be delivered to a particular wireless device. The route may be determined based on the service provider. In some cases, a particular service provider may accept multiple routes with varying levels of performance, in which case the route chosen may be chosen based on the user's quality of service level. The routing engine 403 may control the sending of the message so that it is a one-way message, an n-way message or a device-to-device message.
  • these components operate together to aggregate all carriers, support all communication devices (e.g., cellular phones, Internet phones, pagers, Personal Digital Assistants, wireless notebook computers, etc.), support any wireless services (e.g., TDMA, CDMA, GSM, etc.), and perform information routing between devices.
  • all communication devices e.g., cellular phones, Internet phones, pagers, Personal Digital Assistants, wireless notebook computers, etc.
  • any wireless services e.g., TDMA, CDMA, GSM, etc.
  • WCP 400 operates as a scheduled delivery system to multiple types of devices.
  • WCP 300 is an open architecture that allows adding new carriers or can support new protocols.
  • WCP 300 supports multiple protocols.
  • any protocol may be incorporated into and used by WCP 300.
  • the WCP is independent of communication technology, air connection and /or type of wireless device. The independence is derived at least in part to the open architecture that supports the use of multiple protocols. As long as the protocols are known to send the information to a devices defined, then an individual may be employed in the wireless communication platform. New carriers may be added or new devices.
  • the architecture utilizes modules for each protocol and assigns carriers to the protocol. If a new protocol is be added, all the necessary attributes are to be assigned and a memory mapping is created to allow utilization of that protocol. This memory mapping comprises carrier property files.
  • WCP 300 uses the Internet or other networked environment to transfer communications (e.g., messages) between numerous devices.
  • Figure 5 is a simplified view of WCP 300 operating as a communication layer from device 501 to device 502.
  • Device 501 communicates with WCP 300 using one protocol and device 502 communicates with WCP 300 using a different protocol.
  • device 501 and device 502 are cellular phones using different service providers.
  • WCP 300 operates to send messages between devices 501 and 502 across platforms.
  • device 501 is only an input to WCP 300, such as, for example, a web page for use in making requests to a server that is part of WCP 300.
  • the service providers typically have access to the Internet.
  • a device using a unique protocol can send the message that is transferred to another device using a different unique protocol via the Internet.
  • Figure 6 illustrates the WCP being used to transfer messages to a wireless device.
  • the individual desiring to send a message enters a provider and phone number and submits these to WCP 600.
  • the user may only have to enter the phone number as WCP 600 is able to determine the service provider from the phone number itself.
  • mapping tables operate as a carrier's property file.
  • WCP 600 is able to determine the protocol necessary to send the message to the particular service provider for forwarding on to a wireless device.
  • mapping table By using the mapping table, new service providers may be easily added to the environment because the code that supports the protocols and implements the protocols does not have to change. The only change that needs to occur is a creation of a new mapping table for that service provider.
  • each of service providers is coupled to WCP 600 using the Internet 610, they often employ different IP parameters to specify how the communication is to occur between WCP 600 and each service provider.
  • IP Internet Protocol
  • Each of the service providers utilizes a wireless access network (WAN) to forward the message on to a specific individual's wireless device.
  • WAN wireless access network
  • WCP 600 when a message is submitted to WCP 600, WCP 600 identifies the service provider and sends the message to a gateway server for that service provider, such as shown in Figure 7.
  • the gateway server is responsible for sending a message out to the specific wireless device for that service provider. Certain protections may be used to secure the communication over the Internet between WCP 600 and the gateway server.
  • service providers also provide feedback from the gateway server to indicate whether the message was delivered correctly or not.
  • WCP 600 operates as a delivery environment for delivering messages to wireless devices.
  • a Notification Environment The ability to forward messages (e.g., from a web site, an interactive WAP phone, etc.) to wireless devices allows the WCP to operate as a notification environment.
  • the notification environment keeps track of messages and determines when messages are to be sent.
  • the WCP handles all types of messages, such as, for instance, reminders of appointments, meetings, deadlines, etc.
  • an interface is provided that allows specification of events, global messages, reminders and/or other types of message. For instance, notifications of future meetings may be scheduled so that a reminder is sent to one or more individuals prior to the meeting.
  • a list may be used to specify groups of individuals.
  • Such information may be stored in a database and is extracted by a notification server.
  • the notification server sends the information out to one or more users using one or more different communication techniques. For instance, the notification server may send the information to a normal email address or to one or more wireless devices.
  • a scheduling environment allows specifying when information is supposed to be delivered to devices.
  • the notification server may also operate in response to scheduled request to obtain any information that is to be incorporated into a message.
  • the notification environment operates in conjunction with the scheduling environment in that an individual can schedule various event messages to be sent to them or others. Events may be scheduled to enable content to be sent at certain times. For example, an event may be scheduled to occur to cause the latest stock quotes or news stories to be obtained and sent as messages through the WCP to one or more devices, whether it be a cell phone, pager, email account, etc.
  • the notification server may operate in response to user- defined conditions operating on a continuous content stream.
  • a condition When a condition is met, a message may be sent containing the content or some other message.
  • the condition may look for keywords or operate on numerical or text data stored within one or more items in the content stream. For example, a user may request to be notified whenever a particular stock price exceeds a certain value.
  • a user may request to be notified whenever his house alarm system reports an alarm activation.
  • This "logical event" notification is a particular benefit to wireless users, because they can respond to predefined exceptional events as soon as they occur, regardless of where they are located at the time.
  • the WCP enables calendaring and scheduling of events to occur with notifications via wireless devices, the web, and /or electronic mail. In this manner, the WCP operates as a scheduled delivery system to any device.
  • such information may be utilized for various e- commerce applications.
  • a scheduled pull of an information database may indicate that a stock has fallen below a certain level.
  • the notification server sends a notification to a user, thereby allowing the user to take action.
  • all information related to the price of the stock is typically pulled from the database and then a filter determines whether such information (i.e., the stock price) has the particular attributes that the user has required for notification (e.g., the stock has fallen below a particular price).
  • regularly scheduled notifications may be scheduled to obtain account balances for bank accounts or indicates when bids occurred in auction houses (e.g., EBay).
  • Other applications include comparison shopping where individuals are notified of sales or the lowest price of items that are desired for purchase.
  • the architecture is a framework for collecting and browsing third party data, and optionally triggering user actions based on that data.
  • data is collected (via push or pull) into XML files on a local file system.
  • the data may be organized into different domains, each with its own XML format.
  • each domain has its own XML file format (e.g., news, weather, stock, etc.)
  • category An optional hierarchical name that indicates a subset of items belonging to a domain.
  • categories are predefined for each domain (e.g., news /domestic, news /international, news/sports; classified ads/autos; etc.)
  • topic - A name that specifies an item to collect (e.g., a weather location, a stock name, etc.). For some domains, one topic may produce multiple items. For example, in the pop3 domain, a topic would be "[server,name,password]" and would produce an item for each mail message.
  • item - One unit of data (e.g., a news story, a weather report, a stock quote).
  • an item is represented by one XML file.
  • attribute - A field of data within an item.
  • an attribute is represented by a key /value in an item's XML file (e.g., news headline, news story, news date; weather current temp, weather forecast high, weather forecast low; stock price, stock high, stock low, stock volume; etc.).
  • event or "logical event” refers to herein a combination of a triggering expression and a set of actions to perform.
  • FIG 8 is a block diagram of one embodiment of an information services engine of a wireless communication platform.
  • the WCP comprises a data collector 801, an information server (infoserver) 802, a local evaluator 803, a global evaluator 804, an action handler 805, and a logical event server 806.
  • data collector 801 is a process that periodically pulls data from an external site, such as shown in 810, or cooperates with a third party pushing data to the WCP, such as shown in All. In one embodiment, in either case, data collector 801 produces XML files formatted for its domain and notifies all infoserver for that domain.
  • infoserver 802 comprises a server that manages and provides access to data in a particular domain. For scalability, one domain may be represented by multiple infoservers.
  • local evaluator 803 evaluates a set of expressions in one domain. If a result changes, it is passed on to global evaluator 804.
  • global evaluator 804 collects expression results from the individual domains of local evaluator 803. If the result becomes true, global evaluator 804 notifies action handler 805. In one embodiment, global evaluator 804 also valuates multi-domain expressions.
  • a multi-domain expression is "if a stock's price is below a certain level (e.g., 100) and an individual's bank account balance is above $10,000, then . . .” This statement combines information from the stock domain and the bank domain.
  • Another example of a multi-domain expression is "if my flight will arrive in Paris and the weather forecast for Paris says rain, then . . .” This statement combines information from the flight schedule domain and the weather domain. Note that such information is received into the system and the evaluation is performed to determine whether the "then" portion of the statement should be executed.
  • action handler 805 performs a set of user-defined actions. These actions may include sending a particular message or data content to a particular set of one or more recipients, formatted for the recipients' devices.
  • a recipient may actually be a third party software application. For example, the message may program a user's VCR or may instruct an auction house to bid on a particular item.
  • the actions may be sent to action handler 805 or action handler A05 may retrieve the actions from the database itself.
  • logical event server 806 manages logical event definitions (e.g., "if expression then actions"). Local event server 806 also stores event definitions in the database for persistence. In one embodiment, when an event is added, or when the system starts up, the expression is broken into subexpressions per domain and distributed to the appropriate infoservers and global evaluator A04.
  • the information is represented and managed using domain definition files, item file formats, item creation, item query and item removal.
  • each domain has a domain definition file, which is an XML file containing: a list of valid categories for the domain; the syntax for a topic of this domain, e.g., pop3 requires all of [server ,usepassword]; a list of attributes for an item of this type; the type of each attribute (e.g., string, integer, boolean, double, date, time, datetime); the subset of attributes that can be referenced in an expression; a flag indicating whether a topic in this domain contain one item (e.g., weather, stock) or multiple items (e.g., news, pop3); a flag indicating whether items in this domain are restricted to the requesting user (e.g., true for pop3); a set of output device sections: for each device, a list of attributes that should be used to compose a message for that device by default (where all attributes are still available to an action or other sender, if the default isn't desired); update intervals for regular and premium Quality of Service (for pulled data
  • the infoservers don't require any hard- coded domain information.
  • the infoservers use the same code, facilitating the addition of new domains.
  • the domain definition file is referenced by the infoserver, the data collector, and the logical event server.
  • the data collector references the domain definition file to update intervals, the file storage location, and to verify the attributes
  • the logical event server references the domain definition file to parse the expression into encoded domain subexpressions.
  • the item file format comprises an item XML fife containing a generic header, followed by a domain-specific body.
  • the header may contain:
  • the body could be a domain-specific DTD or a generic set of attribute key/value pairs.
  • an item file is only created by a data collector.
  • a data collector will generally be hard-coded for a specific task, e.g. reading and parsing a specific external web site, or cooperating with specific third party push tools. It could also hardcode the output XML format.
  • a general output function in a base class could be used, initialized from the domain definition file.
  • item files are stored on a network file system, so they can be read by all infoservers in that domain. Item files are protected from direct access by the web server, because some files contain private information (e.g., pop3 mail messages).
  • a "pull" data collector works with a subscription list, which is a list of topics to pull from an external site.
  • a particular topic may be invalid (e.g., a bad stock symbol).
  • the data collector should produce an item with an error code "invalid topic”, and remove the topic from its subscription list.
  • the topic may be valid, but not currently available.
  • the external site may be down temporarily.
  • the data collector should produce an item with an error code "item not available", and keep the topic on its subscription list. (This item produces an "unknown” result in expressions that reference it).
  • a "push" data collector does not need a subscription list, it processes all data pushed to it by a third party.
  • an item file is only read by an infoserver.
  • An item file is read when notified by a data collector. It is cached in the infoserver's memory for a period of time, so it can be used efficiently by expressions and actions. Once an item file exists, it can be uniquely identified by its filename.
  • An infoserver can be queried by topic or by item filename. If the topic's item(s) are already cached, that data is returned. Otherwise, if that topic's item(s) exist on disk, they are parsed and returned. Otherwise, the data for that topic needs to be collected.
  • the infoserver requests the data collector to subscribe to that topic. The data collector may also be prompted for an immediate update of that topic, so the data can be returned to the caller immediately.
  • items are removed periodically according to the policy in the domain definition (possibly overridden by an expiration date in the item header).
  • a topic can be updated (e.g., a new stock quote for CSCO). In this case, the old item file for that topic is deleted. This may also apply to news feeds, where a newer version of an AP story can supercede an earlier version.
  • Expressions are passed from the outside world (e.g., the servlet) to the logical event server in the form of a string.
  • the logical event server parses the string, separating it into sub-expressions for particular domains, and encodes it (as a sequence of operator and variable codes in Reverse Polish Notation) for evaluation.
  • the input expression string may actually be encoded as multi-line XML text. In one embodiment, it has two parts:
  • a variable is assigned to an item belonging to a topic. For domains where topics contain multiple items, a loop is implied. For each item in the topic, the variable is assigned and the expression is evaluated.
  • an expression contains variables, constants, and operators. Each part of an expression has a type (e.g., string, integer, boolean, double, date, time, datetime).
  • Boolean has three states: false, true, unknown. Unknown occurs when an item can't be retrieved (e.g., if a third party site is down), or during startup when not all sub-expression values have been collected.
  • operators may include:
  • the overall result of a user's entire expression is boolean.
  • the actions will be triggered whenever the result toggles from false to true. Therefore, actions may be triggered multiple times. For example, consider the logical event "if CSCO.price > 120 then mail me". If CSCO goes above 120, the mail will be sent. Then, if CSCO goes below 120, the result becomes false (no action occurs). If CSCO goes above 120 again, the actions are triggered again and another mail is sent.
  • some common expressions are predefined in a domain definition file. This may be a performance optimization, since the expression might be kept in memory once instead of once per use.
  • the predefined expression might be referenced in the user's expression by a special name or maybe it is just recognized as one of the predefined expressions by the local infoserver.
  • the predefined expression could be parameterized by topic variables as usual, but would also have value variables. In one embodiment, these variables are not assigned as part of the predefined expression, but rather by another layer that references the predefined expression. For example:
  • FIG. 9 is a block diagram of one embodiment of a network environment 901 that may be used in transferring messages as described herein.
  • a server computer system 900 is coupled to a wide-area network 910.
  • Wide-area network 910 may include the Internet or other proprietary networks including, but not limited to, America On-LineTM, CompuServeTM, Microsoft NetworkTM, and ProdigyTM.
  • Wide-area network 910 may include conventional network backbones, long-haul telephone lines, Internet and /or Intranet service providers, various levels of network routers, and other conventional mechanisms for routing data between computers.
  • server 900 may communicate through wide-area network 910 to client computer systems 920, 930, 940, which are possibly connected through wide- area network 910 in various ways or directly connected to server 900.
  • client 940 is connected directly to wide-area network 910 through direct or dial up telephone or other network transmission line.
  • clients 930 may be connected through wide-area network 910 using a modem pool 914.
  • Modem pool 914 allows multiple client systems to connect with a smaller set of modems in modem pool 914 for connection through wide-area network 910.
  • Clients 931 may also be connected directly to server 900 or be coupled to server through modem 915.
  • wide-area network 910 is connected to a gateway computer 912.
  • Gateway computer 912 is used to route data to clients 920 through a local area network 916.
  • clients 920 can communicate with each other through local area network (LAN) 916 or with server 900 through gateway 912 and wide-area network 910.
  • LAN 917 may be directly connected to server 900 and clients 921 may be connected through LAN 917.
  • server computer 900 can communicate with client computers 950.
  • a server computer 900 may operate as a web server if the World-Wide Web ("WWW") portion of the Internet is used for wide area network 910.
  • WWW World-Wide Web
  • Using the HTTP protocol and the HTML coding language, such a web server may communicate across the World-Wide Web with clients 950.
  • clients 950 use a client application program known as a web browser such as the NetscapeTM NavigatorTM, the Internet ExplorerTM, the user interface of America On-LineTM, or the web browser or HTML translator of any other conventional supplier.
  • clients 950 may access graphical and textual data or video, audio, or tactile data provided by the web server 900.
  • server 900 contains an a database the cover page descriptions of the placement and redundancy information. Any one of the computer systems and the memory associated therewith may operate as the email server that receives the fax document as an email attachment and then stores it in the correct document repository.
  • FIG 10 is a block diagram of an exemplary computer system that may be used to perform one or more of the operations described herein.
  • computer system 1000 may comprise an exemplary client 1050 or server 1000 computer system in which the features of the present invention may be implemented.
  • Computer system 1000 comprises a communication mechanism or bus 1011 for communicating information, and a processor 1012 coupled with bus 1011 for processing information.
  • Processor 1012 includes a microprocessor, but is not limited to a microprocessor, such as PentiumTM, PowerPCTM, AlphaTM, etc.
  • System 1000 further comprises a random access memory (RAM), or other dynamic storage device 1004 (referred to as main memory) coupled to bus 1011 for storing information and instructions to be executed by processor 1012.
  • main memory 1004 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 1012.
  • Computer system 1000 also comprises a read only memory (ROM) and/or other static storage device 1006 coupled to bus 1011 for storing static information and instructions for processor 1012, and a data storage device 1007, such as a magnetic disk or optical disk and its corresponding disk drive.
  • ROM read only memory
  • Data storage device 1007 is coupled to bus 1011 for storing information and instructions.
  • Computer system 1000 may further be coupled to a display device 1021, such as a cathode ray tube (CRT) or liquid crystal display (LCD), coupled to bus 1011 for displaying information to a computer user.
  • a display device 1021 such as a cathode ray tube (CRT) or liquid crystal display (LCD)
  • An alphanumeric input device 1022 may also be coupled to bus 1011 for communicating information and command selections to processor 1012.
  • cursor control 1023 such as a mouse, trackball, trackpad, stylus, or cursor direction keys, coupled to bus 1011 for communicating direction information and command selections to processor 1012, and for controlling cursor movement on display 1021.
  • hard copy device 1024 which may be used for printing instructions, data, or other information on a medium such as paper, film, or similar types of media.
  • a sound recording and playback device such as a speaker and /or microphone may optionally be coupled to bus 1011 for audio interfacing with computer system 1000.
  • any or all of the components of system 1000 and associated hardware may be used in the present invention. However, it can be appreciated that other configurations of the computer system may include some or all of the devices.

Abstract

A method and apparatus for sending messages are described. In one embodiment, the method comprises receiving a message and an anonymous ID (201), determining the number of a device associated with the anonymous ID and a service provider (202), and sending the message to the number according to a protocol of the service provider (203).

Description

ANONYMOUS ID
FIELD OF THE INVENTION
The present invention relates to the field of wireless communication; more particularly, the present invention relates to allowing transmission of messages to an individual's wireless device using an anonymous identifier (ID).
BACKGROUND
Today, the use of cellular phones and other similar wireless devices has become quite prevalent. The user usually has a service provider that completes all transmissions (e.g., calls) to and from the wireless device.
One problem with cellular and paging devices is that when an individual changes their service provider, their cellular phone or paging number changes as well. Therefore, when such a change occurs, the individual must notify numerous people about the change in the number of their wireless device. Anyone who attempts to use the old number will be unsuccessful in an attempt to contact the individual. Moreover, the previous provider does not provide the individuals new number or any other forwarding information by which a person can contact the cell phone or pager user.
Today's cellular phones also can receive electronic mail and other messages (e.g., paging messages). The service provider assigns an individual's email address with a separate number that is used for receiving email messages. • However, if the cellular phone user changes service providers, both their phone number and the phone number (address) for email messages changes, and the same problems above are made worse.
SUMMARY OF THE INVENTION
A method and apparatus for sending messages are described. In one embodiment, the method comprises receiving a message and an anonymous ID, determining the number of a device associated with the anonymous ID and a service provider, and sending the message to the number according to a protocol of the service provider.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the invention, which, however, should not be taken to limit the invention to the specific embodiments, but are for explanation and understanding only.
Figure 1 is a flow diagram of one embodiment of a registration process.
Figure 2 is a flow diagram of one embodiment of the process for processing a message.
Figure 3 illustrates one embodiment of the wireless communication platform (WCP).
Figure 4 is a block diagram of one embodiment of the architecture for the WCP.
Figure 5 is a simplified view of WCP 300 operating as a communication layer.
Figure 6 illustrates the WCP being used to transfer messages to a wireless device.
Figure 7 illustrates communication between the WCP and a gateway server. Figure 8 is a block diagram of one embodiment of an information services engine of a wireless communication platform.
Figure 9 is a block diagram of one embodiment of a network environment.
Figure 10 is a block diagram of an exemplary computer system.
DETAILED DESCRIPTION
A wireless communication platform is described, as well as a technique to enable wireless device users to have an anonymous identifier that can be used to send them messages and does not change with a change in the user's service provider. In the following description, numerous details are set forth. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as "processing" or "computing" or "calculating" or "determining" or "displaying" or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory ("ROM"); random access memory ("RAM"); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.
Overview
The present invention provides for communicating with a wireless device using an anonymous identifier (ID). The wireless device user provides the anonymous ID, which other individuals use to address the wireless device. In this way, a wireless device user can receive communications (e.g., messages) from people without revealing the number of their wireless device (e.g., their cellular phone number, their pager number, etc.).
The use of the anonymous ID is also advantageous in that it allows a wireless device user to change service providers yet still be able to use the anonymous ID to receive communications. That is, even though the change in service provider results in a change in the number of their wireless device, the anonymous ID remains the same and still may be used by others to send messages to the wireless device. Such changes in service provider may be common place where a particular wireless device user regularly travels between areas in which different service providers provide wireless services. In one embodiment, the wireless device user changes the service provider information to cause messages addressed to the anonymous ID to be forwarded to a new number. Furthermore, the fact that the ID is anonymous ensures that the privacy of the user's number (e.g., cellular phone number, pager number, etc.) is maintained.
In one embodiment, the anonymous ID is a randomly generated set of characters and/or bits. The anonymous ID may be provided to a user or selected by the user. In one embodiment, a wireless device user registers to receive an anonymous ID.
Figure 1 is a flow diagram of one embodiment of a registration process. Referring to Figure 1, registration begins with a request for the anonymous ID made by a wireless device user (processing block 101). The request may be in the form of a request for a particular web page via entry or selection of a particular link to that page. A server receives the request (processing block 102) and returns a web page containing a form which is received by the wireless device user (processing block 103). The wireless device user enters a number for the wireless device (e.g., a cell phone number) and an email address (or other information that enables the user to receive the anonymous ID) and submits the form to the server (processing block 104).
In response to receiving the submitted number and email address, the server generates an anonymous ID and creates a profile for the wireless device that associates the anonymous ID with the wireless device number (processing block 105). The profile may comprise a mapping table. The profile may be password protected to allow the wireless device user access to it in the future to permit changes thereto (e.g., to change their profile via a web browser or Internet phone). The profile may also specify the service provider for the wireless device. The server may be able to determine the service provider from the wireless device number submitted by the wireless device user. Alternatively, the wireless device user may enter the service provider as part of the registration process. The profile may also store the protocol necessary to communicate a message with that service provider. Once generated, the server sends the anonymous ID to the wireless device user via email or another well-known communication mechanism (processing block 106). The wireless device user then notifies others of anonymous ID. For example, the wireless device user may post the anonymous ID on their web site or send the anonymous ID in, or as an attachment to, an email.
Note that in alternative embodiments, the number of the wireless device need not be submitted to the server using a web page. Such information may be entered into a computer system in a number of different ways (e.g., downloaded into a server, send via wired communication protocols, etc.) In one embodiment, a web page requests this information. When submitted, the individual is assigned a particular anonymous ID. In an alternative embodiment, the wireless device user may select their own anonymous ID.
Once the user has an anonymous ID, others may use the ID to send messages to that individual. In other words, other individuals can direct messages to the anonymous ID. In one embodiment, the messages are text messages. In another embodiment, one or more of the messages, or a portion thereof, are voice messages.
In one embodiment, an individual desiring to send a message to a wireless device sends the message to a server along with the anonymous ID associated with the wireless device. The server then causes the message to be sent to the wire device. A specific web page may be used that includes areas for entering the message and the anonymous ID. A link to such a web page may be made available. For example, the wireless device user may provide the link on a web page with their anonymous ID. In one embodiment, the link may be attached to a signature file in the individual's email messages.
Figure 2 is a flow diagram of one embodiment of the process for processing a message. Referring to Figure 2, an individual initially submits the message and the anonymous ID to a server (processing block 201). In one embodiment, if the message and anonymous ID have been entered on the web page, the browser submits a request to the server. In response to the request, the server accesses the profile associated with the anonymous ID to identify the number of the wireless device (processing block 202). The server then causes the message to be sent to the wireless device using the service provider's protocol specified in the profile (processing block 203).
The server described above may comprise one or more servers and /or be part of a wireless communication platform. One embodiment of a wireless communication platform (WCP), which is described in more detail below, ensures that the message is sent to the wireless device associated with the anonymous ID. As discussed above, the WCP maintains a profile of each wireless device that indicates the number that may be used to contact the wireless device. The profile may also indicate the service provider. However, the WCP may be able to determine the service provider by the phone number. Knowing the identity of the service provider allows the WCP to determine the protocol necessary to communicate with the wireless device. In one embodiment, the WCP can also determine the protocol by which the WCP is informed that the message sent properly and received.
Although the example above illustrated the use of the anonymous ID in conjunction with the text (with a mention of voice), the use of the anonymous ID may be applicable to voice messages. In one embodiment, an individual may be given a particular phone number (e.g., an 800 number) which may be used by others to contact the individual's wireless device. In one embodiment, the voice information is forwarded by the WCP to the wireless device. The voice message may be compressed and stored in an audio file. Upon receipt, the wireless device user is able to playback the message. In an alternative embodiment, speech recognition is performed on the audio message by the WCP and the WCP forwards the recognized text to the wireless device. In one embodiment, the wireless device user is able to sent back a response. In order to allow reply messages, the message received by the wireless device includes identification information such as the ID of the send. The name of the sender may be included in the identification information as well. This identification information may be appended to or integrated into the message.
An Exemplary Embodiment of a Wireless Communication Platform
Figure 3 illustrates one embodiment of the wireless communication platform (WCP). Referring to Figure 3, WCP 300 is a platform that allows for exchanging messages between the Internet and other networked environments and wireless devices that use any type of air connection technology through any carrier. For example, WCP 300 allows a user to use an email service provider 301 to send messages with SMS (GSM)-based carriers 302 (e.g., Pacbell, Mobistar, SBC, Omnipoint, etc.), with PCS-based carriers 302 (e.g., AT&T, Pacbell, Cellular One, U.S. West, etc.), with WAP-based service providers 304 (e.g., Nokia, Motorola, Ericksson, Mitsubishi, etc.), and with paging service providers 305 (e.g., Skytel, Pagenet, Pagemart, Arch, etc.).
In one embodiment, WCP 300 comprises one or more applications. In one embodiment, one or more of these applications provide wireless capability, web- based functionality, and interoperability using a common database. The common database allows the applications to share information such as, for example, user profiles and contact information.
Figure 4 is a block diagram of one embodiment of the architecture for the WCP. Referring to Figure 4, WCP 300 comprises applications engine 401, notification engine 402, and information tracking & routing engine 403.
Application engine 401 controls the event management, including the logic, time, and action functions associated with events. In one embodiment, application engine 401 also performs account management. Notification engine 402 interfaces with the cellular and /or paging service providers. In one embodiment, notification engine 402 is modular so that a new service provider may be added easily to the platform. Each module includes information that specifies how to connect with a wireless device using that service provider, including the necessary protocol information. In one embodiment, adding a new service is performed by adding a configuration file to notification engine 402. The configuration file for a service provider is added to the system and read by the notification engine.
Information tracking & routing engine 403 allows for sending messages between devices. Tracking & routing engine 403 keeps track of each message sent to a device. Tracking & routing engine 403 may also keep track of the source of each message that is sent. In one embodiment, engine 403 determines the route a message is to take to be delivered to a particular wireless device. The route may be determined based on the service provider. In some cases, a particular service provider may accept multiple routes with varying levels of performance, in which case the route chosen may be chosen based on the user's quality of service level. The routing engine 403 may control the sending of the message so that it is a one-way message, an n-way message or a device-to-device message.
In one embodiment, these components operate together to aggregate all carriers, support all communication devices (e.g., cellular phones, Internet phones, pagers, Personal Digital Assistants, wireless notebook computers, etc.), support any wireless services (e.g., TDMA, CDMA, GSM, etc.), and perform information routing between devices.
WCP 400 operates as a scheduled delivery system to multiple types of devices. In one embodiment, WCP 300 is an open architecture that allows adding new carriers or can support new protocols. In one embodiment, WCP 300 supports multiple protocols. In one embodiment, any protocol may be incorporated into and used by WCP 300. In one embodiment, the WCP is independent of communication technology, air connection and /or type of wireless device. The independence is derived at least in part to the open architecture that supports the use of multiple protocols. As long as the protocols are known to send the information to a devices defined, then an individual may be employed in the wireless communication platform. New carriers may be added or new devices. In one embodiment, the architecture utilizes modules for each protocol and assigns carriers to the protocol. If a new protocol is be added, all the necessary attributes are to be assigned and a memory mapping is created to allow utilization of that protocol. This memory mapping comprises carrier property files.
In one embodiment, WCP 300 uses the Internet or other networked environment to transfer communications (e.g., messages) between numerous devices. Figure 5 is a simplified view of WCP 300 operating as a communication layer from device 501 to device 502. Device 501 communicates with WCP 300 using one protocol and device 502 communicates with WCP 300 using a different protocol.
In one embodiment, device 501 and device 502 are cellular phones using different service providers. In such a case, WCP 300 operates to send messages between devices 501 and 502 across platforms. In another embodiment, device 501 is only an input to WCP 300, such as, for example, a web page for use in making requests to a server that is part of WCP 300.
The service providers typically have access to the Internet. Thus, through the use of the wireless communication platform, a device using a unique protocol can send the message that is transferred to another device using a different unique protocol via the Internet.
Figure 6 illustrates the WCP being used to transfer messages to a wireless device. Referring to Figure 6, the individual desiring to send a message enters a provider and phone number and submits these to WCP 600. In an alternative embodiment, the user may only have to enter the phone number as WCP 600 is able to determine the service provider from the phone number itself.
The mapping tables operate as a carrier's property file. Using a mapping table 601, WCP 600 is able to determine the protocol necessary to send the message to the particular service provider for forwarding on to a wireless device. By using the mapping table, new service providers may be easily added to the environment because the code that supports the protocols and implements the protocols does not have to change. The only change that needs to occur is a creation of a new mapping table for that service provider.
Although each of service providers is coupled to WCP 600 using the Internet 610, they often employ different IP parameters to specify how the communication is to occur between WCP 600 and each service provider. Thus, even though the protocol (e.g., Internet Protocol) is the same, there are differences in the types of information exchange that occurs between each of the service providers and WCP 600. Each of the service providers utilizes a wireless access network (WAN) to forward the message on to a specific individual's wireless device.
In one embodiment, when a message is submitted to WCP 600, WCP 600 identifies the service provider and sends the message to a gateway server for that service provider, such as shown in Figure 7. The gateway server is responsible for sending a message out to the specific wireless device for that service provider. Certain protections may be used to secure the communication over the Internet between WCP 600 and the gateway server. In one embodiment, service providers also provide feedback from the gateway server to indicate whether the message was delivered correctly or not.
Thus, WCP 600 operates as a delivery environment for delivering messages to wireless devices.
A Notification Environment The ability to forward messages (e.g., from a web site, an interactive WAP phone, etc.) to wireless devices allows the WCP to operate as a notification environment.
In one embodiment, the notification environment keeps track of messages and determines when messages are to be sent. As a notification environment, the WCP handles all types of messages, such as, for instance, reminders of appointments, meetings, deadlines, etc. In one embodiment, an interface is provided that allows specification of events, global messages, reminders and/or other types of message. For instance, notifications of future meetings may be scheduled so that a reminder is sent to one or more individuals prior to the meeting. A list may be used to specify groups of individuals. Such information may be stored in a database and is extracted by a notification server. The notification server sends the information out to one or more users using one or more different communication techniques. For instance, the notification server may send the information to a normal email address or to one or more wireless devices. A scheduling environment allows specifying when information is supposed to be delivered to devices.
In one embodiment, the notification server may also operate in response to scheduled request to obtain any information that is to be incorporated into a message. The notification environment operates in conjunction with the scheduling environment in that an individual can schedule various event messages to be sent to them or others. Events may be scheduled to enable content to be sent at certain times. For example, an event may be scheduled to occur to cause the latest stock quotes or news stories to be obtained and sent as messages through the WCP to one or more devices, whether it be a cell phone, pager, email account, etc.
Furthermore, the notification server may operate in response to user- defined conditions operating on a continuous content stream. When a condition is met, a message may be sent containing the content or some other message. The condition may look for keywords or operate on numerical or text data stored within one or more items in the content stream. For example, a user may request to be notified whenever a particular stock price exceeds a certain value.
In another case, a user may request to be notified whenever his house alarm system reports an alarm activation. This "logical event" notification is a particular benefit to wireless users, because they can respond to predefined exceptional events as soon as they occur, regardless of where they are located at the time.
Thus, the WCP enables calendaring and scheduling of events to occur with notifications via wireless devices, the web, and /or electronic mail. In this manner, the WCP operates as a scheduled delivery system to any device.
In one embodiment, such information may be utilized for various e- commerce applications. For example, a scheduled pull of an information database may indicate that a stock has fallen below a certain level. When this occurs, the notification server sends a notification to a user, thereby allowing the user to take action. In one implementation, all information related to the price of the stock is typically pulled from the database and then a filter determines whether such information (i.e., the stock price) has the particular attributes that the user has required for notification (e.g., the stock has fallen below a particular price). In other examples, for instance, regularly scheduled notifications may be scheduled to obtain account balances for bank accounts or indicates when bids occurred in auction houses (e.g., EBay). Other applications include comparison shopping where individuals are notified of sales or the lowest price of items that are desired for purchase.
An Exemplary Architecture for Notification and Scheduling
The architecture is a framework for collecting and browsing third party data, and optionally triggering user actions based on that data. In one embodiment, data is collected (via push or pull) into XML files on a local file system. The data may be organized into different domains, each with its own XML format.
As data is updated, a set of user-specified expressions is evaluated. When an expression becomes true, a corresponding set of actions is triggered.
In the description below, the following terminology is used:
• domain - A kind of data. In one embodiment, each domain has its own XML file format (e.g., news, weather, stock, etc.)
• category - An optional hierarchical name that indicates a subset of items belonging to a domain. In one embodiment, categories are predefined for each domain (e.g., news /domestic, news /international, news/sports; classified ads/autos; etc.)
• topic - A name that specifies an item to collect (e.g., a weather location, a stock name, etc.). For some domains, one topic may produce multiple items. For example, in the pop3 domain, a topic would be "[server,name,password]" and would produce an item for each mail message.
• item - One unit of data (e.g., a news story, a weather report, a stock quote). In one embodiment, an item is represented by one XML file.
• attribute - A field of data within an item. In one embodiment, an attribute is represented by a key /value in an item's XML file (e.g., news headline, news story, news date; weather current temp, weather forecast high, weather forecast low; stock price, stock high, stock low, stock volume; etc.).
• event - The term "event" or "logical event" refers to herein a combination of a triggering expression and a set of actions to perform.
Major Functional Blocks
Figure 8 is a block diagram of one embodiment of an information services engine of a wireless communication platform. Referring to Figure 8, the WCP comprises a data collector 801, an information server (infoserver) 802, a local evaluator 803, a global evaluator 804, an action handler 805, and a logical event server 806.
In one embodiment, data collector 801 is a process that periodically pulls data from an external site, such as shown in 810, or cooperates with a third party pushing data to the WCP, such as shown in All. In one embodiment, in either case, data collector 801 produces XML files formatted for its domain and notifies all infoserver for that domain.
In one embodiment, infoserver 802 comprises a server that manages and provides access to data in a particular domain. For scalability, one domain may be represented by multiple infoservers.
In one embodiment, local evaluator 803 evaluates a set of expressions in one domain. If a result changes, it is passed on to global evaluator 804.
In one embodiment, global evaluator 804 collects expression results from the individual domains of local evaluator 803. If the result becomes true, global evaluator 804 notifies action handler 805. In one embodiment, global evaluator 804 also valuates multi-domain expressions. One example of a multi-domain expression is "if a stock's price is below a certain level (e.g., 100) and an individual's bank account balance is above $10,000, then . . ." This statement combines information from the stock domain and the bank domain. Another example of a multi-domain expression is "if my flight will arrive in Paris and the weather forecast for Paris says rain, then . . ." This statement combines information from the flight schedule domain and the weather domain. Note that such information is received into the system and the evaluation is performed to determine whether the "then" portion of the statement should be executed.
In one embodiment, action handler 805 performs a set of user-defined actions. These actions may include sending a particular message or data content to a particular set of one or more recipients, formatted for the recipients' devices. In addition, a recipient may actually be a third party software application. For example, the message may program a user's VCR or may instruct an auction house to bid on a particular item. The actions may be sent to action handler 805 or action handler A05 may retrieve the actions from the database itself.
In one embodiment, logical event server 806 manages logical event definitions (e.g., "if expression then actions"). Local event server 806 also stores event definitions in the database for persistence. In one embodiment, when an event is added, or when the system starts up, the expression is broken into subexpressions per domain and distributed to the appropriate infoservers and global evaluator A04.
Information Management
In one embodiment, the information is represented and managed using domain definition files, item file formats, item creation, item query and item removal.
Domain Definition File
In one embodiment, each domain has a domain definition file, which is an XML file containing: a list of valid categories for the domain; the syntax for a topic of this domain, e.g., pop3 requires all of [server ,usepassword]; a list of attributes for an item of this type; the type of each attribute (e.g., string, integer, boolean, double, date, time, datetime); the subset of attributes that can be referenced in an expression; a flag indicating whether a topic in this domain contain one item (e.g., weather, stock) or multiple items (e.g., news, pop3); a flag indicating whether items in this domain are restricted to the requesting user (e.g., true for pop3); a set of output device sections: for each device, a list of attributes that should be used to compose a message for that device by default (where all attributes are still available to an action or other sender, if the default isn't desired); update intervals for regular and premium Quality of Service (for pulled data); item caching policy (how long to cache an item in the InfoServer's memory after an update); item file removal policy (how long to keep the XML files on disk); and item file storage location (e.g. pathname to item files for this domain).
By using this domain definition, the infoservers don't require any hard- coded domain information. In one embodiment, the infoservers use the same code, facilitating the addition of new domains.
The domain definition file is referenced by the infoserver, the data collector, and the logical event server. For example, the data collector references the domain definition file to update intervals, the file storage location, and to verify the attributes, while the logical event server references the domain definition file to parse the expression into encoded domain subexpressions.
Item File Format
In one embodiment, the item file format comprises an item XML fife containing a generic header, followed by a domain-specific body. The header may contain:
1) domain / category / topic
2) item creation date (for file removal)
3) an error code indicating an invalid topic, or item value could not be determined at this time
4) a flag or expiration date overriding the normal removal policy, if the item is referenced longer than usual
5) login id of associated user, for domains with restricted access (e.g. pop3)
The body could be a domain-specific DTD or a generic set of attribute key/value pairs.
Item Creation
In one embodiment, an item file is only created by a data collector. A data collector will generally be hard-coded for a specific task, e.g. reading and parsing a specific external web site, or cooperating with specific third party push tools. It could also hardcode the output XML format. A general output function in a base class could be used, initialized from the domain definition file.
In one embodiment, item files are stored on a network file system, so they can be read by all infoservers in that domain. Item files are protected from direct access by the web server, because some files contain private information (e.g., pop3 mail messages).
In one embodiment, a "pull" data collector works with a subscription list, which is a list of topics to pull from an external site. A particular topic may be invalid (e.g., a bad stock symbol). In this case, the data collector should produce an item with an error code "invalid topic", and remove the topic from its subscription list. Alternatively, the topic may be valid, but not currently available. For example, the external site may be down temporarily. The data collector should produce an item with an error code "item not available", and keep the topic on its subscription list. (This item produces an "unknown" result in expressions that reference it).
In one embodiment, a "push" data collector does not need a subscription list, it processes all data pushed to it by a third party.
When an item file is created, all the infoservers for that domain are notified.
Item Query
In one embodiment, an item file is only read by an infoserver. An item file is read when notified by a data collector. It is cached in the infoserver's memory for a period of time, so it can be used efficiently by expressions and actions. Once an item file exists, it can be uniquely identified by its filename.
An infoserver can be queried by topic or by item filename. If the topic's item(s) are already cached, that data is returned. Otherwise, if that topic's item(s) exist on disk, they are parsed and returned. Otherwise, the data for that topic needs to be collected. The infoserver requests the data collector to subscribe to that topic. The data collector may also be prompted for an immediate update of that topic, so the data can be returned to the caller immediately.
Item Removal
In one embodiment, items are removed periodically according to the policy in the domain definition (possibly overridden by an expiration date in the item header). In addition, a topic can be updated (e.g., a new stock quote for CSCO). In this case, the old item file for that topic is deleted. This may also apply to news feeds, where a newer version of an AP story can supercede an earlier version.
Expressions
Expressions are passed from the outside world (e.g., the servlet) to the logical event server in the form of a string. The logical event server parses the string, separating it into sub-expressions for particular domains, and encodes it (as a sequence of operator and variable codes in Reverse Polish Notation) for evaluation. The input expression string may actually be encoded as multi-line XML text. In one embodiment, it has two parts:
1) A set of variable assignments, of the form "variable = topic", e.g. "a = stock/CSCO" Each variable refers to one item.
2) an expression, which refers to attributes of these variables, constants, and certain predefined operators, e.g. "a.price > 120"
Expression Variables
A variable is assigned to an item belonging to a topic. For domains where topics contain multiple items, a loop is implied. For each item in the topic, the variable is assigned and the expression is evaluated. One reason for requiring variable assignments is to clarify expressions that refer to multiple attributes of the same item. For example, consider this expression: a = pop3/[mailserver,username,password] (a.subject contains "urgent" && a.sender contains "sieve"). The variable 'a' loops through each mail item retrieved for this user, and the expression is evaluated for each item. This is clearer than if an expression had been allowed to refer to a topic name directly, e.g.: (pop3/[mailserver,username,password] /subject contains "urgent" && pop3/[mailserver,usernamepassword] /sender contains "steve").
Expression Components
In one embodiment, an expression contains variables, constants, and operators. Each part of an expression has a type (e.g., string, integer, boolean, double, date, time, datetime). In one embodiment, Boolean has three states: false, true, unknown. Unknown occurs when an item can't be retrieved (e.g., if a third party site is down), or during startup when not all sub-expression values have been collected.
In one embodiment, operators may include:
1) = != < <= > >= [compare for equivalence. String comparisons =, != ignore case.]
2) a contains b [true if string a contains string b, ignoring case] 3) ! && II
4) a set of math operators, e.g., * / + -
Expression Result
In one embodiment, the overall result of a user's entire expression is boolean. The actions will be triggered whenever the result toggles from false to true. Therefore, actions may be triggered multiple times. For example, consider the logical event "if CSCO.price > 120 then mail me". If CSCO goes above 120, the mail will be sent. Then, if CSCO goes below 120, the result becomes false (no action occurs). If CSCO goes above 120 again, the actions are triggered again and another mail is sent.
Predefined Expressions
In one embodiment, some common expressions are predefined in a domain definition file. This may be a performance optimization, since the expression might be kept in memory once instead of once per use. The predefined expression might be referenced in the user's expression by a special name or maybe it is just recognized as one of the predefined expressions by the local infoserver. The predefined expression could be parameterized by topic variables as usual, but would also have value variables. In one embodiment, these variables are not assigned as part of the predefined expression, but rather by another layer that references the predefined expression. For example:
1) Predefined expression: a.price > b
2) This instance: a = CSCO b = 120 expression = Predefined Expression 1
An Exemplary Network Environment
Figure 9 is a block diagram of one embodiment of a network environment 901 that may be used in transferring messages as described herein. In one embodiment, a server computer system 900 is coupled to a wide-area network 910. Wide-area network 910 may include the Internet or other proprietary networks including, but not limited to, America On-Line™, CompuServe™, Microsoft Network™, and Prodigy™. Wide-area network 910 may include conventional network backbones, long-haul telephone lines, Internet and /or Intranet service providers, various levels of network routers, and other conventional mechanisms for routing data between computers. Using network protocols, server 900 may communicate through wide-area network 910 to client computer systems 920, 930, 940, which are possibly connected through wide- area network 910 in various ways or directly connected to server 900. For example, client 940 is connected directly to wide-area network 910 through direct or dial up telephone or other network transmission line.
Alternatively, clients 930 may be connected through wide-area network 910 using a modem pool 914. Modem pool 914 allows multiple client systems to connect with a smaller set of modems in modem pool 914 for connection through wide-area network 910. Clients 931 may also be connected directly to server 900 or be coupled to server through modem 915. In another alternative network typology, wide-area network 910 is connected to a gateway computer 912. Gateway computer 912 is used to route data to clients 920 through a local area network 916. In this manner, clients 920 can communicate with each other through local area network (LAN) 916 or with server 900 through gateway 912 and wide-area network 910. Alternatively, LAN 917 may be directly connected to server 900 and clients 921 may be connected through LAN 917.
Using one of a variety of network connection mechanisms, server computer 900 can communicate with client computers 950. In one embodiment, a server computer 900 may operate as a web server if the World-Wide Web ("WWW") portion of the Internet is used for wide area network 910. Using the HTTP protocol and the HTML coding language, such a web server may communicate across the World-Wide Web with clients 950. In this configuration, clients 950 use a client application program known as a web browser such as the Netscape™ Navigator™, the Internet Explorer™, the user interface of America On-Line™, or the web browser or HTML translator of any other conventional supplier. Using such browsers and the Worldwide Web, clients 950 may access graphical and textual data or video, audio, or tactile data provided by the web server 900. In one embodiment, server 900 contains an a database the cover page descriptions of the placement and redundancy information. Any one of the computer systems and the memory associated therewith may operate as the email server that receives the fax document as an email attachment and then stores it in the correct document repository.
An Exemplary Computer System
Figure 10 is a block diagram of an exemplary computer system that may be used to perform one or more of the operations described herein. Referring to Figure 10, computer system 1000 may comprise an exemplary client 1050 or server 1000 computer system in which the features of the present invention may be implemented. Computer system 1000 comprises a communication mechanism or bus 1011 for communicating information, and a processor 1012 coupled with bus 1011 for processing information. Processor 1012 includes a microprocessor, but is not limited to a microprocessor, such as Pentium™, PowerPC™, Alpha™, etc.
System 1000 further comprises a random access memory (RAM), or other dynamic storage device 1004 (referred to as main memory) coupled to bus 1011 for storing information and instructions to be executed by processor 1012. Main memory 1004 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 1012.
Computer system 1000 also comprises a read only memory (ROM) and/or other static storage device 1006 coupled to bus 1011 for storing static information and instructions for processor 1012, and a data storage device 1007, such as a magnetic disk or optical disk and its corresponding disk drive. Data storage device 1007 is coupled to bus 1011 for storing information and instructions.
Computer system 1000 may further be coupled to a display device 1021, such as a cathode ray tube (CRT) or liquid crystal display (LCD), coupled to bus 1011 for displaying information to a computer user. An alphanumeric input device 1022, including alphanumeric and other keys, may also be coupled to bus 1011 for communicating information and command selections to processor 1012. An additional user input device is cursor control 1023, such as a mouse, trackball, trackpad, stylus, or cursor direction keys, coupled to bus 1011 for communicating direction information and command selections to processor 1012, and for controlling cursor movement on display 1021.
Another device which may be coupled to bus 1011 is hard copy device 1024, which may be used for printing instructions, data, or other information on a medium such as paper, film, or similar types of media. Furthermore, a sound recording and playback device, such as a speaker and /or microphone may optionally be coupled to bus 1011 for audio interfacing with computer system 1000. Note that any or all of the components of system 1000 and associated hardware may be used in the present invention. However, it can be appreciated that other configurations of the computer system may include some or all of the devices.
Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular embodiment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various embodiments are not intended to limit the scope of the claims which in themselves recite only those features regarded as essential to the invention.

Claims

CLAIMSWe claim:
1. A method comprising: receiving a message and an anonymous ID; determining the number of a device associated with the anonymous ID and a service provider; and sending the message to the number according to a protocol of the service provider.
2. The method defined in Claim 1 further comprising: changing the number without changing the anonymous ID.
3. The method defined in Claim 1 wherein the device comprises a cellular phone and the number comprises a phone number for the cellular phone.
4. The method defined in Claim 1 wherein the message comprises an email message.
5. The method defined in Claim 1 further comprising registering the number.
6. The method defined in Claim 1 further comprising determining the service provider from the number.
7. The method defined in Claim 1 further comprising sending the message over a networked environment to a gateway server.
8. The method defined in Claim 7 wherein the networked environment comprises the Internet.
9. The method defined in Claim 1 wherein receiving the message and the anonymous ID comprises receiving a request from a browser.
10. An apparatus comprising: means for receiving a message and an anonymous ID; means for determining the number of a device associated with the anonymous ID and a service provider; and means for sending the message to the number according to a protocol of the service provider.
11. The apparatus defined in Claim 10 further comprising means for changing the number without changing the anonymous ID.
12. The apparatus defined in Claim 10 wherein the device comprises a cellular phone and the number comprises a phone number for the cellular phone.
13. The apparatus defined in Claim 10 wherein the message comprises an email message.
14. The apparatus defined in Claim 10 further comprising registering the number.
15. The apparatus defined in Claim 10 further comprising determining the service provider from the number.
16. The apparatus defined in Claim 10 further comprising means for sending the message over a networked environment to a gateway server.
17. The apparatus defined in Claim 16 wherein the networked environment comprises the Internet.
18. The apparatus defined in Claim 10 wherein the means for receiving the message and the anonymous ID comprises means for receiving a request from a browser.
19. A software product having one or more recordable media having stored thereon executable instructions which, when executed by a processing device, cause the processing device to: receive a message and an anonymous ID; determine the number of a device associated with the anonymous ID and a service provider; and send the message to the number according to a protocol of the service provider.
20. The computer software product defined in Claim 19 further comprising instructions which, when executed by a processing device, cause the processing device to change the number without changing the anonymous ID.
PCT/US2001/006718 2000-02-28 2001-02-28 Anonymous id WO2001065818A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001243380A AU2001243380A1 (en) 2000-02-28 2001-02-28 Anonymous id

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51448200A 2000-02-28 2000-02-28
US09/514,482 2000-02-28

Publications (1)

Publication Number Publication Date
WO2001065818A1 true WO2001065818A1 (en) 2001-09-07

Family

ID=24047351

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/006718 WO2001065818A1 (en) 2000-02-28 2001-02-28 Anonymous id

Country Status (2)

Country Link
AU (1) AU2001243380A1 (en)
WO (1) WO2001065818A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003060803A2 (en) * 2002-01-15 2003-07-24 Karl-Heinz Bauer Method and device for securing patient data
EP1463360A1 (en) * 2003-03-28 2004-09-29 Alcatel A telecommunication method for a wireless network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933483A (en) * 1996-11-14 1999-08-03 At & T Corp. Systems and methods for providing personal, non-geographic call management
US5960340A (en) * 1996-02-28 1999-09-28 At&T Corporation Automatic cellular telephone registration for universal telephone number service

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960340A (en) * 1996-02-28 1999-09-28 At&T Corporation Automatic cellular telephone registration for universal telephone number service
US5933483A (en) * 1996-11-14 1999-08-03 At & T Corp. Systems and methods for providing personal, non-geographic call management

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003060803A2 (en) * 2002-01-15 2003-07-24 Karl-Heinz Bauer Method and device for securing patient data
WO2003060803A3 (en) * 2002-01-15 2004-06-03 Karl-Heinz Bauer Method and device for securing patient data
EP1463360A1 (en) * 2003-03-28 2004-09-29 Alcatel A telecommunication method for a wireless network
US7239878B2 (en) 2003-03-28 2007-07-03 Alcatel Telecommunication method for a wireless network

Also Published As

Publication number Publication date
AU2001243380A1 (en) 2001-09-12

Similar Documents

Publication Publication Date Title
US8473572B1 (en) State change alerts mechanism
JP3943425B2 (en) Location and event triggered notification service
US7020685B1 (en) Method and apparatus for providing internet content to SMS-based wireless devices
US7673007B2 (en) Web services push gateway
US7363345B2 (en) Electronic notification delivery mechanism selection based on recipient presence information and notification content
US7392306B1 (en) Instant messaging client having an embedded browser
US8463862B2 (en) Methods and systems for dispatching messages to mobile devices
EP1305721A1 (en) Global communication method system
US6510424B1 (en) Electronic notification agent
MXPA01011504A (en) Mobile device server.
US20020198946A1 (en) Personal centralized alert delivery systems and methds of use
JP2004514192A (en) Method and system for performing content-controlled electronic message processing
WO2001084804A2 (en) System and method for wireless delivery of text data
WO2001090909A1 (en) E-mail gateway system
US20020065748A1 (en) Methods for sending and receiving content and system for delivering content through use of e-mail or the like
US9246975B2 (en) State change alerts mechanism
WO2001065873A1 (en) Wireless communication platform
WO2001065818A1 (en) Anonymous id
WO2001065339A2 (en) Information services in a wireless communication network
JP2004252956A (en) Information distribution system and information distribution method
WO2000076155A1 (en) Messaging system and method
TW509852B (en) Get the remote database search result in time using e-mail
AU2002301351B2 (en) A Message Processing and Forwarding System
AU2007203464A1 (en) Method and system for Mobile Messaging

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP