WO2001061933A1 - Apparatus and method for converting a network message to a wireless transport message using a modular architecture - Google Patents

Apparatus and method for converting a network message to a wireless transport message using a modular architecture Download PDF

Info

Publication number
WO2001061933A1
WO2001061933A1 PCT/US2001/004662 US0104662W WO0161933A1 WO 2001061933 A1 WO2001061933 A1 WO 2001061933A1 US 0104662 W US0104662 W US 0104662W WO 0161933 A1 WO0161933 A1 WO 0161933A1
Authority
WO
WIPO (PCT)
Prior art keywords
message
wireless
node
network
transport
Prior art date
Application number
PCT/US2001/004662
Other languages
French (fr)
Inventor
David R. Coelho
David B. Bernstein
Original Assignee
Mobilesys, Inc.
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 Mobilesys, Inc. filed Critical Mobilesys, Inc.
Priority to EP01910640A priority Critical patent/EP1266485A4/en
Priority to AU2001238229A priority patent/AU2001238229A1/en
Publication of WO2001061933A1 publication Critical patent/WO2001061933A1/en

Links

Classifications

    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/58Message adaptation for wireless communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/12Messaging; Mailboxes; Announcements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S370/00Multiplex communications
    • Y10S370/912Packet communications
    • Y10S370/913Wireless or radio

Definitions

  • This invention relates generally to the conversion of computer network messages into messages that can be delivered to a wireless device. More particularly, this invention relates to a technique for converting a network message to a wireless transport message in a modular architecture that enhances system scaling, capacity, and performance.
  • wireless message transport conduits include modems, the Internet, X.25, TTY, and TCP transport architectures.
  • Each wireless message transport conduit must support multiple communication protocols, referred to at times as wireless message transport protocols.
  • a wireless message transport conduit must support the TAP protocol for one way alphanumeric paging, the Touch- Tone protocol for tone numeric paging, the SNPP protocol for Internet paging, various proprietary two-way SMS protocols for digital cellular telephones, and the like.
  • the technique would be highly desirable to provide an improved technique for converting a network message into a wireless transport message.
  • the technique would be modular for improved scaling, capacity, and performance.
  • a system to convert a network message into a wireless transport message includes a network-to-wireless transformation database with a message configuration table.
  • An expansion agent processes a network message received from a computer network and information from the message configuration table to create a wireless transport message.
  • the wireless transport message specifies attributes to facilitate the delivery of the network message to a wireless device.
  • the attributes include a selected wireless message transport protocol and a selected wireless message transport conduit.
  • the method of the invention involves converting a network message into a wireless transport message. The method includes the steps of receiving a network message and linking information within the network message with information in a database to form a Directed Acyclic Graph defining attributes to facilitate delivery of the network message to a wireless device. Attributes are then selected from the Directed Acyclic Graph to form a wireless transport message specifying a wireless message transport protocol and a wireless message transport conduit.
  • the invention provides an improved technique for converting a network message into a wireless transport message.
  • the invention provides a modular system that easily scales to support additional wireless message transport protocols and conduits. This modular system provides enhanced capacity and performance for a wireless messaging engine architecture.
  • FIGURE 1 illustrates a messaging system constructed in accordance with an embodiment of the invention.
  • FIGURE 2 illustrates a messaging system of the invention implemented in a general purpose computer.
  • FIGURE 3 illustrates the interactions between various messaging system modules of the invention.
  • FIGURE 4 illustrates configuration table data structures utilized in accordance with an embodiment of the invention.
  • FIGURE 5 illustrates processing steps performed by an expansion agent utilized in accordance with the invention.
  • FIGURE 6 illustrates a Directed Acyclic Graph formed by an expansion agent in accordance with an embodiment of the invention.
  • FIG. 1 is a simplified illustration of a messaging system 20 constructed in accordance with an embodiment of the invention.
  • the messaging system 20 includes a network-to-wireless transformation database 22, an expansion agent 24, and a set of delivery agents 26A-26N.
  • a variety of network message sources 30A-30N may be used to deliver a network message to the messaging system 20.
  • the network messaging sources may include an email 30A, a web page 30B, database content 30C, monitoring system data 30D, data from a wireless receiver 30E, and similar sources.
  • Each network messaging source provides content that is routed through a network (e.g., the Internet, an intranet, a local area network, and the like).
  • the content of the network message is formatted in accordance with technique described below. As long as the content is formatted in this manner, the network message source for the content may originate on any type of digital device.
  • the network message may actually be a wireless message received at the wireless receiver 30E, which is then routed to the messaging system 20.
  • the expansion agent 24 processes the message and information within the database 22 to create a wireless transport message specifying a set of attributes that facilitate the delivery of the message to a wireless device. These attributes include a wireless message transport protocol and a wireless message transport conduit.
  • the wireless transport message is then stored in the database 22 until it is processed by a delivery agent 26.
  • Each delivery agent 26 supports a pre-determined wireless message transport protocol and a pre-determined wireless message transport conduit. Therefore, as new wireless transport protocols and conduits are defined, the system can be updated by adding additional delivery agents 26 and by providing additional configuration information to the database 22.
  • each delivery agent 26 delivers a wireless transport message to its corresponding conduit 32.
  • the conduit 32 then delivers the wireless transport message to a wireless carrier 34 using conventional techniques.
  • the wireless carrier 36 subsequently sends the message in accordance with conventional techniques.
  • the wireless carriers may include a paging carrier 34A, a digital cellular carrier 34B, and PCS carrier 34C, among others.
  • Figure 1 illustrates the environment in which the messaging system 20 of the invention operates.
  • Figure 2 illustrates that the messaging system 20 may be implemented with a general purpose computer including a central processing unit 40 and standard input/output devices 42.
  • the input/output devices 42 include a keyboard, mouse, video monitor, at least one node to receive a network message, and at least one node to launch a wireless transport message.
  • a system bus 44 links the central processing unit 40 and the input/output devices 42.
  • Also connected to the system bus 44 is a memory 46.
  • the memory 46 stores data and executable programs used to implement the technique of the invention.
  • the memory 46 stores a transformation database 22, which may be a Structured Query Language (SQL) database.
  • the database 22 includes a configuration table 50, which includes a node table 51 , a node value table 52, and a reference table 54. Multiple configuration tables 50 and multiple node tables 51 , node value tables 52, and reference tables 54 may be used to implement the invention. However, to simplify the description of the invention, reference is made to individual tables instead of sets of tables.
  • the configuration table data structures store information that can be quickly converted into directed acyclic graphs to facilitate the process of ascribing settings to a wireless transport message.
  • a message-in table 56 is also associated with the transformation database 22.
  • the message-in table 56 stores received network messages.
  • a message-out table 58 is also provided.
  • the message-out table 58 stores messages after being processed by the expansion agent 24 and prior to being delivered by the message delivery agents 26.
  • the message-out table 58 includes a message status table 60, a message protocol table 62, and a message conduit table 64. Multiple message-out tables 58, and multiple message status tables 60, message protocol tables 62, and message conduit tables 64 may be used to implement the invention. However, to simplify the description of the invention, reference is made to individual tables instead of sets of tables.
  • the memory 46 also stores an historical status table 66, which includes information on the status of pending and delivered messages processed by the message-in table 56 and the message-out table 58. This information is stored in a batch table 68 and a batch message table 70, as discussed below.
  • the expansion agent 24 is also stored in the memory 46.
  • the expansion agent is a set of executable code written to implement the operations of parsing an incoming message and then building a directed acyclic graph using the incoming message information and information from the configuration table 50.
  • the directed acyclic graph is then processed by the expansion agent 24 to select attributes to facilitate delivery of the network message to a wireless device.
  • the selected attributes and the data content from the network message result in a wireless transport message that is directed by the expansion agent 24 to the message-out table 58.
  • the message delivery agents 26A-26N process the messages stored in the message-out table 58.
  • Each delivery agent 26 includes a set of executable code that defines a selected wireless message transport protocol and a wireless message transport conduit. Messages in the message-out table 58 that correspond to the selected wireless message transport protocol and wireless message transport conduit of a given delivery agent are processed by the delivery agent.
  • Figure 3 illustrates a messaging engine 20, which includes a transformation database 22, an expansion agent 24, and a set of delivery agents 26A-26N.
  • a configuration file 80 is used to configure the configuration table 50, which includes a node table 51, a node value table 52, and a reference table 54.
  • the message-in table 56 stores a received network message until the expansion agent 24 can process it.
  • the expansion agent processes the message and information in the configuration table to create a wireless transport message specifying a selected wireless message transport protocol and a wireless message transport conduit.
  • the resultant wireless transport message is routed to the message-out table 58.
  • the delivery agents 26A-26N select messages for routing in accordance with a pre-defined wireless message transport protocol and wireless message transport conduit.
  • the historical status table 66 stores information regarding the delivery status of messages within the message-out table 58.
  • the configuration table 50 includes a node table 51, a node value table 52, and a reference table 54. Detailed information about the recipients, services, agents, and licenses associated with the system are stored in these tables. For each unique recipient, service, agent or license code there is an entry in the node table 51. Each entry in the node table 51 has a unique node index, and values for fields node id, node name, node_class, and node_priority, as shown in Table 1 below.
  • node index unique integer node id user-defined shortname node name descriptive name for node node_class class values include: “default”, “recipient”, “service”, “agent”, “license” node_priority integer, used in determining final configuration
  • Each node (entry) in the node table is further elaborated in the node value table 52.
  • Each characteristic of a node is defined in the node value table.
  • a node with a node class "service" may have node value entries for its phone number, dialing prefix, and modem initialization string. This is illustrated in connection with Figure 4.
  • Figure 4 illustrates a node table 51.
  • a single entry of the node table 51 (e.g., node_class) points to several node values in table 52.
  • Each node value may be defined with the data structure shown in Table 2.
  • node index corresponds to node index in node table nodevalue code integer representing node characteristic nodevalue value value for given node characteristic
  • the configuration table 50 also includes a reference table 54.
  • the reference table 54 allows one node to reference another node. For example, if a recipient node wanted to use the information already defined in a service node, this "referenced" node would be stored in the reference table. This process of using a reference table 54 to allow two nodes to refer to one another is illustrated in Figure 4.
  • the reference table may defined in accordance with Table 3.
  • node index matches the parent node index reference index matches the node_index of referenced node reference type type of reference: "merge” or "expand"
  • each reference node is processed individually. For example, a group of recipient nodes would be processed individually.
  • the message-in table 56 receives incoming messages from various input sources. In the following discussion the message-in table is sometimes written in a shorthand manner as "msgin". This table's main field is called msgin xml, which is an unstructured, arbitrary sized field. The actual message along with descriptive information in Extensible Markup Language (XML) format is dropped in this msgin xml field. The expansion agent 24 detects this entry in msgin and processes it, as discussed further below.
  • the message-in table 56 may have the form described in Table 4.
  • the message-out table 58 includes a message queue, a message status table 60, message protocol settings 62 and message conduit settings 64.
  • the message queue and message status are stored in the message status (msgstatus) table 60; each message has an entry in the msgstatus table 60 along with an entry in a protocol table 62 and an entry in a conduit table 64.
  • the protocol and conduit tables specify a message protocol and message conduit.
  • a message that will be delivered via the TAP protocol and a modem conduit will have an entry in the msgstatus, msgtap and msgmodem tables.
  • the message status table 60 may be defined with the parameters set forth in Table 5.
  • a delivery agent 26 is used for each unique protocol/conduit supported in the given installation.
  • the delivery agent 26 examines the message status table 60 for queued messages that can be delivered, and updates the message status entries for messages that have been delivered and for messages that have failed to be delivered. There is no limit to the number of delivery agents 26 that can run concurrently.
  • the delivery agent 26 also examines the message's entry in the message protocol table 62 and message conduit table 64 in order to customize the protocol and conduit to that particular message's requirements.
  • the historical status table 66 includes a batch table 68 and a batch message table 70 (batchmsg). A "batch" is a delivery attempt to a given carrier.
  • the batch table 68 may be defined in accordance with Table 6, while the batch message table may be defined in accordance with Table 7.
  • a configuration file 80 used to configure the transformation database 22 and a network message processed in accordance with the invention.
  • the configuration file 80 and incoming network messages are preferably specified using the Extensible Markup Language (XML) textual format.
  • XML Extensible Markup Language
  • a program may be used to translate the XML into the various database tables of the transformation database 22.
  • the XML syntax is based on tags that describe data. For every piece of discrete data there is a tag to define its meaning.
  • the XML tags used in accordance with the invention are defined in a Document Type Definition (DTD).
  • DTD Document Type Definition
  • an XML tag has the format: ⁇ tag>value ⁇ tag>.
  • the ⁇ tag> defines the data type.
  • the DTD of the present invention is organized in a two-level hierarchical format. The first level is the node tag. The second level defines a characteristic of the node, as shown, for example, in Table 8. TABLE 8
  • the configuration table 50 is a collection of nodes, each defined by a node tag. Each node is uniquely identified with an id, class, name and priority.
  • the node tag may be defined as follows:
  • the node class determines the purpose of the information stored in the node. For example, if the node class is agent, then the node information is used to create an agent, which is the software module that delivers messages via a particular protocol and conduit.
  • agent which is the software module that delivers messages via a particular protocol and conduit.
  • the following node classes are utilized: default: default configuration settings agent: the software module responsible for message deliver via a protocol and conduit recipient: a particular wireless device service: the carrier service the agent will connect to message: the message to be delivered license: the Messaging Engine license to allow delivery of the message.
  • the "agent” node class is used to specify a wireless message transport protocol and a wireless message transport conduit.
  • the "recipient” node class specifies the wireless device that will receive the wireless transport message.
  • the “service” node specifies a wireless carrier 34.
  • the “message” node has the data content corresponding to the data received in the network message.
  • the “license” node allows controlled access to the messaging engine 20.
  • Per node class second-level tags further define the node. These tags include information about the configuration, protocols, conduits, message content, node references, and license. Table 9 describes all of the tags used in accordance with, an embodiment of the invention.
  • ⁇ config_inqueuewait> default, agent Sleep time of epagemst module in milli-seconds
  • ⁇ config_outqueuewait> default, agent sleep time of epageagt module in milli-seconds
  • ⁇ config_msggroup> agent The msggroup of the agent message or message; used to only allow certain agents to delivery given message. ⁇ license> license License settings
  • ⁇ license_feature> license Expression that describes licensed features.
  • ⁇ license_warning> license Expression that determines when user will receive licensing warnings.
  • Expand In a simplified embodiment of the invention, there are three major wireless transport protocol tags: dtmf, snpp and tap. Each tag corresponds to a different wireless transport protocol, namely dtmf, snpp, and tap. Although not shown, additional protocols have similar XML tags in the DTD. As new protocols are developed, XML tags are added to the DTD.
  • the exemplary protocol tags may be defined as specified in Table 10.
  • ⁇ tap_toolong> ALL Defines long message handling values: "reject”, “truncate” and “split” ⁇ tap_maxdeliveryattempt> ALL Determines the number of times an agent will attempt message delivery
  • a set of wireless message transport conduit tags are also defined, including: tty, modem, tcp and forward.
  • Each of these tags characterizes the medium (conduit) over which the message is sent.
  • a corresponding conduit tag will be added to the DTD.
  • the tags defined in accordance with an embodiment of the invention are shown in Table 11.
  • modem lockdir> ALL Directory to store lock file (indicates modem in use)
  • modem hold> ALL Determines whether modem should hangup after value: "true”, "false”
  • a configuration file 80 for configuring the transformation database 22 contains a collection of nodes: one default node, one or more agent nodes, zero or more service nodes, zero or more recipient nodes, and one or more license nodes.
  • a default node may be defined as shown in Table 12. TABLE 12
  • the default node of Table 12 defines the global settings batchhistory, outqueuewait, inqueuewait, and the tap protocol's maxbatch.
  • the batchhistory setting causes all agents to default to full batch logging.
  • An agent can override its individual batchhistory setting if desired.
  • the default agent sleep time (config outqueuewait) is 8 seconds, for example, and the default master sleep time is 10 seconds, by way of example.
  • all agents use the maxbatch setting of 5 unless overridden by another node involved in the message delivery (service, message, recipient, agent).
  • a service node may be defined as shown in Table 13.
  • the service node of Table 13 defines a service that uses the tap protocol and a modem conduit.
  • the tap maxlength and maxbatch are defined particularly for this service as well as certain characteristics of the modem.
  • the recipient node may be defined in accordance with the description of Table 14.
  • the recipient node of Table 14 defines a wireless device that connects via the tap protocol.
  • the node uses the service whose node id is equal to "pagemart".
  • the reference tag causes the "pagemart" node to be merged or pulled into this recipient node.
  • An example of an agent node is defined in Table 15.
  • the agent node of Table 15 uses the tap protocol and modem conduit.
  • the foregoing nodes provide an example of a configuration file 80 which is used to configure the configuration table 50.
  • a network message utilizes the same DTD.
  • Table 16 provides an example of a network message.
  • the network message of Table 16 is initially routed to the message-in table 56. It is then processed by the expansion agent 24. In particular, the expansion agent parses the message and then expands it based upon the configuration information in the configuration table 50. In a preferred embodiment, this expansion operation entails the construction of a Directed Acyclic Graph (DAG), as demonstrated below.
  • DAG Directed Acyclic Graph
  • Information from the DAG is subsequently placed in the message-out table 58.
  • the message recipient is jdoe.
  • the recipient receives the message "hello world" at a wireless device.
  • Figure 5 illustrates processing steps performed by an expansion agent 24 of the invention.
  • the expansion agent 24 retrieves a received message from the message-in table 56 (step 110). It then parses the message (step 112) and produces a DAG expression (step 112). The information from the DAG expression is then used to produce a wireless transport message that is inserted into the message-out table (step 116).
  • the expansion agent 24 delivers the wireless transport message to the message- out table 60.
  • the expansion agent 24 inserts a wireless transport message entry into the message status table 60, the message protocol table 62, and the message conduit table 64.
  • a delivery agent 26 extracts the message and other critical information from these tables in order to deliver the message successfully.
  • Each delivery agent 26 is configured to only attempt delivery of messages that are compatible with its protocol and conduit.
  • Each unique protocol has its own entries in the protocol table 62 which specifies how to deliver the specific message.
  • each unique conduit has its own entries in the message conduit table 64 which allows for customized conduit behavior per message.
  • the disclosed architecture allows many protocols and conduits to be developed quickly and with no disturbance to other parts of the software code base. Instead of designing the agents as a monolithic program, the agents are cleanly divided into protocol logic and conduit logic. Therefore, when a conduit is designed, any protocol will be able to use it and vice versa.
  • the expansion agent 24 is configured to scan the message-in table 56 for new messages in user-definable intervals. When one or more new messages is detected, the expansion agent performs routine parsing of the message to extract the different components of the message. Once these components are obtained a DAG expression is formed. This entails the construction of a message-specific data structure that represents the hierarchy of information stored in the configuration nodes (recipient, service, alias, agent) related to the message. The final attributes of a message result from traversing the DAG data- structure, inheriting and possibly overriding attribute information until the traversal is complete.
  • Performing message elaboration using the DAG expansion technique of the invention allows for configuration settings to be distributed among different nodes and the ability for each message to essentially inherit its own custom settings.
  • the DAG datastructure has one node for every configuration node.
  • the DAG is expanded to the point where all node references are resolved, producing a flat list of values.
  • the configuration is expanded from a single root node to a DAG structure.
  • the DAG structure is traversed to select configuration values that are attached to child nodes up to the root node.
  • a flat list of values results.
  • the flat list of values is embodied in the wireless transport message, as demonstrated in the examples provided below.
  • the node references utilize the previously discussed reference tags: merge and expand.
  • merge reference tag is used when a node needs to collect information from another node in order to complete its definition.
  • the code in Table 17 illustrates a configuration node using a reference merge tag to indicate a recipient's service provider.
  • Expand references are used when a node (alias node) is grouping other nodes under a similar name.
  • Table 18 illustrates the use of an expand reference to create a group.
  • DAG expansion occurs until all node references are resolved and a final list of values result.
  • nodes in the DAG set the same attribute, by default, the parent node overrides the child. This can be overridden by setting the priority field per node to dictate the weight of each node. The higher priority node will override a node of a lower priority.
  • the expansion agent 24 includes a rule set to specify such rules as a node that contains expand references can be followed with merge references, but a merge reference cannot be followed with an expand reference.
  • the network message of Table 21 is processed in accordance with the configuration file 80 of Table 20.
  • Figure 6 illustrates a DAG expression 200 constructed in accordance with the information provided in Tables 20 and 21.
  • Each block of code in Tables 20 and 21 is followed by a comment, delineated by ***, indicating where the code is converted into the DAG expression 200.
  • the first block of code in Table 20 is the default node which appears as block 202 at the top of the DAG expression 200 of Figure 6.
  • the network message is marked as block 240 in Figure 6.
  • a configuration link 242 is made to block 230, the root node of the DAG expression 200.
  • the remaining links in the expression 200 are between configuration nodes.
  • the code in block 230 specifies the "barney” reference, leading to a link to block 224.
  • Block 224 leads to links to block 218 and 206.
  • the link to block 218 leads to a link to block 210.
  • Block 226 specifies links to blocks 214 and 204.
  • Block 214 specifies a link to block 208.
  • Block 202 while not connected to the DAG expression, includes default settings that are accessed during the formation of the wireless transport message.
  • the DAG expression 200 is traversed by the expansion agent 24 to assign parameters to the wireless transport message resulting in the message of Table 22.
  • a second wireless transport message produced by the expansion agent 24 is shown in Table 23. TABLE 23
  • the expansion agent 24 has now been fully described, attention now turns to a discussion of the operation of the delivery agents 26.
  • an agent 26 initiates a message delivery, it generally opens the conduit, then opens the protocol.
  • the agent completes a delivery it closes the protocol and then closes the conduit.
  • the delivery agents are preferably configured to perform the functions described below.
  • One such function is an initialization function to start a protocol or conduit and perform any initialization actions necessary before use of the protocol or conduit.
  • Typical input to this function is a protocol/conduit identification number, a debug level, and an agent name.
  • a modifiable input associated with this function is the protocol/conduit state.
  • Another function executed by the delivery agents is a clean-up function. This function stops a protocol or conduit and performs any actions necessary to cleanly shut down the protocol or conduit.
  • Input to the function is a protocol or conduit identification number.
  • a modifiable input associated with the function is the protocol/conduit state.
  • Another function is a configuration function to configure a protocol or conduit. This function secures default configuration information and agent-specific configuration information; thereafter, it places the agent in a state to start handling messages.
  • the input to this function is a protocol/conduit identification number, agent or master name, default values for DAG expansion, and specific configuration for the agent.
  • a modifiable input associated with the function is the protocol/conduit state.
  • the output of the function is a boolean value indicating success or failure of the configuration operation.
  • a check function may also be performed in accordance with the invention.
  • the check function performs protocol/conduit-specific checking on an individual message.
  • the input to the function is a protocol/conduit identification number, a string submitted with a message as its identifier, and post-DAG expansion name-value pairs describing the message.
  • a modifiable input to the function is the protocol/conduit state.
  • the output of the function is a boolean indicator of success or failure.
  • a split function may also be used in accordance with the invention. The split function splits a single message into one or more messages.
  • the input to this function is a protocol/conduit identification number, a string submitted with the message as its identifier, post-DAG expansion name-value pairs describing the message, the original text of the message, and the length of the original text of message.
  • the modifiable input for this function is the protocol/conduit state.
  • the output of the function is an error message, if any; an error code, if any; an array of messages, all of legal length (less than or equal to constraint size); the number of messages that the input was split into; and a boolean value of function success.
  • a write function is also provided in a preferred embodiment.
  • the write function operates to write message information to transformation database 22.
  • the input to this function is a protocol/conduit identification number, a partner protocol/conduit identification number, a partner protocol/conduit state, a string submitted with the message as its identifier, a system-generated string submitted with the message as its identifier, post-DAG expansion name value pairs describing the message, and an index of the message in the message status table 60.
  • a modifiable input to the function is the protocol/conduit state.
  • the output of the write function includes an error message, if any; error code, if any; protocol/conduit-specific string representation of the recipient; protocol/conduit-specific string representation of the service; and a boolean value of function success.
  • a batch function may also be used in accordance with an embodiment of the invention.
  • the batch function secures protocol/conduit-specific preferences for how to handle a group of messages.
  • the input to this function is a protocol/conduit identification number, a partner protocol/conduit identification number, a partner protocol/conduit state, an array of indices into the message status table of messages to batch, and the size of the array of indices into the message status table of messages to batch.
  • a modifiable input to the function is the protocol/conduit state.
  • the output of the function is a service mode: batching unavailable, dedicated service, multiple service, or one at a time; a recipient mode: batching unavailable, dedicated recipient, multiple service, or one at a time; a preferred service, if any; a preferred recipient, if any; and a boolean value of function success.
  • the open function operates to open a protocol/conduit session. This function may be used send messages.
  • the input to the function is a protocol/conduit identification number, a partner protocol/conduit identification number, a partner protocol/conduit state, an array of indices into the message status table of messages to batch; and the size of the array of indices into the message status table of messages to batch.
  • the modifiable input of the function is the protocol/conduit state, the array of session file descriptors, and the size of the array of session file descriptors.
  • the output of the function is a boolean value of function success.
  • a close function is also provided to close a protocol/conduit session. This function can also be used to send messages prior to closing operations.
  • the input to the function is a protocol/conduit identification number, a partner protocol/conduit identification number, a partner protocol/conduit state, and a boolean indication of session success.
  • Modifiable input to the function includes a protocol/conduit state, an array of session file descriptors, and a size of array of session file descriptors.
  • the output of the function is a boolean indicator of session success.

Abstract

A system to convert a network message into a wireless transport message (20) includes a network-to-wireless transformation database (22) with a message configuration table. An expansion agent processes (24) a network message received from a computer network and information from the message configuration table to create a wireless transport message. The wireless transport message specifies attributes to facilitate the delivery of the network message to a wireless device (34). The attributes include a selected wireless message transport protocol and a selected wireless message transport conduit (32).

Description

APPARATUS AND METHOD FOR CONVERTING
A NETWORK MESSAGE TO A WIRELESS TRANSPORT MESSAGE
USING A MODULAR ARCHITECTURE
BRIEF DESCRIPTION OF THE INVENTION
This invention relates generally to the conversion of computer network messages into messages that can be delivered to a wireless device. More particularly, this invention relates to a technique for converting a network message to a wireless transport message in a modular architecture that enhances system scaling, capacity, and performance.
BACKGROUND OF THE INVENTION
Systems to convert computer network messages into messages that can be delivered to a wireless device (e.g., a pager, a cellular telephone, a personal communications services (PCS) device, and the like) are known in the art. MobileSys, Inc. of Mountain View, California (www.mobilesys.comX the assignee of the present invention, is a leading vendor of such systems.
A problem with current systems is that they are written as monolithic programs. Thus, it is difficult to modify these prior art systems to support changing system architectures and communication standards. For example, there are different conduits through which a computer network message is sent to wireless device. These conduits, referred to at times as wireless message transport conduits, include modems, the Internet, X.25, TTY, and TCP transport architectures. Each wireless message transport conduit must support multiple communication protocols, referred to at times as wireless message transport protocols. For example, a wireless message transport conduit must support the TAP protocol for one way alphanumeric paging, the Touch- Tone protocol for tone numeric paging, the SNPP protocol for Internet paging, various proprietary two-way SMS protocols for digital cellular telephones, and the like.
It is becoming increasingly difficult to support the proliferating number of wireless message transport conduits and wireless message transport protocols. Modifying a monolithic program to support these proliferating conduits and protocols is labor-intensive and error-prone, since the entire program must be analyzed and a bug in a single portion of the program may bring the entire system down.
In view of the foregoing, it would be highly desirable to provide an improved technique for converting a network message into a wireless transport message. Ideally, the technique would be modular for improved scaling, capacity, and performance.
SUMMARY OF THE INVENTION A system to convert a network message into a wireless transport message includes a network-to-wireless transformation database with a message configuration table. An expansion agent processes a network message received from a computer network and information from the message configuration table to create a wireless transport message. The wireless transport message specifies attributes to facilitate the delivery of the network message to a wireless device. The attributes include a selected wireless message transport protocol and a selected wireless message transport conduit. The method of the invention involves converting a network message into a wireless transport message. The method includes the steps of receiving a network message and linking information within the network message with information in a database to form a Directed Acyclic Graph defining attributes to facilitate delivery of the network message to a wireless device. Attributes are then selected from the Directed Acyclic Graph to form a wireless transport message specifying a wireless message transport protocol and a wireless message transport conduit.
The invention provides an improved technique for converting a network message into a wireless transport message. In particular, the invention provides a modular system that easily scales to support additional wireless message transport protocols and conduits. This modular system provides enhanced capacity and performance for a wireless messaging engine architecture.
BRIEF DESCRIPTION OF THE DRAWINGS
For a better understanding of the invention, reference should be made to the following detailed description taken in conjunction with the accompanying drawings, in which:
FIGURE 1 illustrates a messaging system constructed in accordance with an embodiment of the invention.
FIGURE 2 illustrates a messaging system of the invention implemented in a general purpose computer.
FIGURE 3 illustrates the interactions between various messaging system modules of the invention. FIGURE 4 illustrates configuration table data structures utilized in accordance with an embodiment of the invention.
FIGURE 5 illustrates processing steps performed by an expansion agent utilized in accordance with the invention.
FIGURE 6 illustrates a Directed Acyclic Graph formed by an expansion agent in accordance with an embodiment of the invention.
Like reference numerals refer to corresponding parts throughout the drawings.
DETAILED DESCRIPTION OF THE INVENTION
Figure 1 is a simplified illustration of a messaging system 20 constructed in accordance with an embodiment of the invention. The messaging system 20 includes a network-to-wireless transformation database 22, an expansion agent 24, and a set of delivery agents 26A-26N.
A variety of network message sources 30A-30N may be used to deliver a network message to the messaging system 20. As shown in Figure 1, the network messaging sources may include an email 30A, a web page 30B, database content 30C, monitoring system data 30D, data from a wireless receiver 30E, and similar sources. Each network messaging source provides content that is routed through a network (e.g., the Internet, an intranet, a local area network, and the like). The content of the network message is formatted in accordance with technique described below. As long as the content is formatted in this manner, the network message source for the content may originate on any type of digital device. Thus, as shown in Figure 1, the network message may actually be a wireless message received at the wireless receiver 30E, which is then routed to the messaging system 20. Observe that this allows for two- way messaging as a wireless device can route a message to a wireless receiver 30E, which applies it to the messaging system 20, allowing the message to be sent to another wireless device. A network message is sent to the network-to-wireless transformation database
22. The expansion agent 24 processes the message and information within the database 22 to create a wireless transport message specifying a set of attributes that facilitate the delivery of the message to a wireless device. These attributes include a wireless message transport protocol and a wireless message transport conduit. The wireless transport message is then stored in the database 22 until it is processed by a delivery agent 26. Each delivery agent 26 supports a pre-determined wireless message transport protocol and a pre-determined wireless message transport conduit. Therefore, as new wireless transport protocols and conduits are defined, the system can be updated by adding additional delivery agents 26 and by providing additional configuration information to the database 22.
As shown in Figure 1, each delivery agent 26 delivers a wireless transport message to its corresponding conduit 32. The conduit 32 then delivers the wireless transport message to a wireless carrier 34 using conventional techniques. The wireless carrier 36 subsequently sends the message in accordance with conventional techniques. As shown by way of example, the wireless carriers may include a paging carrier 34A, a digital cellular carrier 34B, and PCS carrier 34C, among others.
Thus, Figure 1 illustrates the environment in which the messaging system 20 of the invention operates. Technical details directed toward the various network message sources 30 and wireless carriers 34 that can be used in connection with the invention are known. Therefore, the following discussion focuses exclusively upon the operation of the messaging system 20. Figure 2 illustrates that the messaging system 20 may be implemented with a general purpose computer including a central processing unit 40 and standard input/output devices 42. The input/output devices 42 include a keyboard, mouse, video monitor, at least one node to receive a network message, and at least one node to launch a wireless transport message. A system bus 44 links the central processing unit 40 and the input/output devices 42. Also connected to the system bus 44 is a memory 46. The memory 46 stores data and executable programs used to implement the technique of the invention. In particular, the memory 46 stores a transformation database 22, which may be a Structured Query Language (SQL) database. The database 22 includes a configuration table 50, which includes a node table 51 , a node value table 52, and a reference table 54. Multiple configuration tables 50 and multiple node tables 51 , node value tables 52, and reference tables 54 may be used to implement the invention. However, to simplify the description of the invention, reference is made to individual tables instead of sets of tables. As discussed below, the configuration table data structures store information that can be quickly converted into directed acyclic graphs to facilitate the process of ascribing settings to a wireless transport message.
A message-in table 56 is also associated with the transformation database 22. The message-in table 56 stores received network messages. A message-out table 58 is also provided. The message-out table 58 stores messages after being processed by the expansion agent 24 and prior to being delivered by the message delivery agents 26. The message-out table 58 includes a message status table 60, a message protocol table 62, and a message conduit table 64. Multiple message-out tables 58, and multiple message status tables 60, message protocol tables 62, and message conduit tables 64 may be used to implement the invention. However, to simplify the description of the invention, reference is made to individual tables instead of sets of tables.
The memory 46 also stores an historical status table 66, which includes information on the status of pending and delivered messages processed by the message-in table 56 and the message-out table 58. This information is stored in a batch table 68 and a batch message table 70, as discussed below.
The expansion agent 24 is also stored in the memory 46. The expansion agent is a set of executable code written to implement the operations of parsing an incoming message and then building a directed acyclic graph using the incoming message information and information from the configuration table 50. The directed acyclic graph is then processed by the expansion agent 24 to select attributes to facilitate delivery of the network message to a wireless device. The selected attributes and the data content from the network message result in a wireless transport message that is directed by the expansion agent 24 to the message-out table 58.
The message delivery agents 26A-26N process the messages stored in the message-out table 58. Each delivery agent 26 includes a set of executable code that defines a selected wireless message transport protocol and a wireless message transport conduit. Messages in the message-out table 58 that correspond to the selected wireless message transport protocol and wireless message transport conduit of a given delivery agent are processed by the delivery agent.
The interaction between the various executable modules and data structures of the invention are more fully appreciated in connection with Figure 3. Figure 3 illustrates a messaging engine 20, which includes a transformation database 22, an expansion agent 24, and a set of delivery agents 26A-26N. A configuration file 80 is used to configure the configuration table 50, which includes a node table 51, a node value table 52, and a reference table 54. The message-in table 56 stores a received network message until the expansion agent 24 can process it. The expansion agent processes the message and information in the configuration table to create a wireless transport message specifying a selected wireless message transport protocol and a wireless message transport conduit. The resultant wireless transport message is routed to the message-out table 58.
The delivery agents 26A-26N select messages for routing in accordance with a pre-defined wireless message transport protocol and wireless message transport conduit. The historical status table 66 stores information regarding the delivery status of messages within the message-out table 58.
The foregoing description of the primary operations associated with the invention is more fully appreciated in connection with the following discussion of a detailed embodiment of the invention. As previously indicated, the configuration table 50 includes a node table 51, a node value table 52, and a reference table 54. Detailed information about the recipients, services, agents, and licenses associated with the system are stored in these tables. For each unique recipient, service, agent or license code there is an entry in the node table 51. Each entry in the node table 51 has a unique node index, and values for fields node id, node name, node_class, and node_priority, as shown in Table 1 below.
TABLE 1 field value node index unique integer node id user-defined shortname node name descriptive name for node node_class class values include: "default", "recipient", "service", "agent", "license" node_priority integer, used in determining final configuration
Each node (entry) in the node table is further elaborated in the node value table 52. Each characteristic of a node is defined in the node value table. There can be many entries in the node value table that correspond to the same node. For example, a node with a node class "service" may have node value entries for its phone number, dialing prefix, and modem initialization string. This is illustrated in connection with Figure 4. Figure 4 illustrates a node table 51. A single entry of the node table 51 (e.g., node_class) points to several node values in table 52. Each node value may be defined with the data structure shown in Table 2.
TABLE 2 field value node index corresponds to node index in node table nodevalue code integer representing node characteristic nodevalue value value for given node characteristic
The configuration table 50 also includes a reference table 54. The reference table 54 allows one node to reference another node. For example, if a recipient node wanted to use the information already defined in a service node, this "referenced" node would be stored in the reference table. This process of using a reference table 54 to allow two nodes to refer to one another is illustrated in Figure 4. The reference table may defined in accordance with Table 3.
TABLE 3 field values node index matches the parent node index reference index matches the node_index of referenced node reference type type of reference: "merge" or "expand"
There are currently two types of referenced nodes: "merge" and "expand". If a node is referencing another node in order to complete its definition, then it is using a "merge" reference. If a node is a collection of expand references, each reference node is processed individually. For example, a group of recipient nodes would be processed individually.
The utilization of the configuration table 50 will be discussed further below. Until then, the remaining features of the database 22 are discussed. The message-in table 56 receives incoming messages from various input sources. In the following discussion the message-in table is sometimes written in a shorthand manner as "msgin". This table's main field is called msgin xml, which is an unstructured, arbitrary sized field. The actual message along with descriptive information in Extensible Markup Language (XML) format is dropped in this msgin xml field. The expansion agent 24 detects this entry in msgin and processes it, as discussed further below. The message-in table 56 may have the form described in Table 4.
TABLE 4 field value msgin index a unique integer used to track message msgin acceptTime time message was dropped into msgin table msgin xml message and destination info in XML format The message-out table 58 includes a message queue, a message status table 60, message protocol settings 62 and message conduit settings 64. The message queue and message status are stored in the message status (msgstatus) table 60; each message has an entry in the msgstatus table 60 along with an entry in a protocol table 62 and an entry in a conduit table 64. The protocol and conduit tables specify a message protocol and message conduit. For example, a message that will be delivered via the TAP protocol and a modem conduit will have an entry in the msgstatus, msgtap and msgmodem tables. The message status table 60 may be defined with the parameters set forth in Table 5.
TABLE 5 field value msgstatus index unique integer in msgstatus table msgin_index unique integer, same as msgin table's msgin index msgstatus_id user-defined id number, specified via XML msgstatus_msgpriority message priority, specified via config or msg XML msgstatus msggroup message group the message belongs to; determines which agent may deliver it msgstatus message the actual message text msgstatus attachment arbitrary attachment to message, not delivered msgstatus status current status of message, including queued, delivered, processing, retry error, outright error msgstatus_errorSummary error message msgstatus errorCode numeric code corresponding to error
msgstatus_delivery Attempt number of unsuccessful attempts to carrier msgstatus connectAttempt number of unsuccessful conduit connections msgstatus_acceptTime time message was dropped into msgin table msgstatus queuedTime time message was transferred to outgoing tables msgstatus updateTime time message information was last updated msgstatus deliverTime time message was delivered to carrier msgstatus_protocol delivery protocol for message msgstatus conduit deliver conduit for message msgstatus agentld the last agent to attempt deliver of message msgstatus recipient unique identification of end device msgstatus service connection string for carrier (phone, address, ..) msgstatus_checksum licensing checksum value
A delivery agent 26 is used for each unique protocol/conduit supported in the given installation. The delivery agent 26 examines the message status table 60 for queued messages that can be delivered, and updates the message status entries for messages that have been delivered and for messages that have failed to be delivered. There is no limit to the number of delivery agents 26 that can run concurrently. In addition to examining the message status table 60, the delivery agent 26 also examines the message's entry in the message protocol table 62 and message conduit table 64 in order to customize the protocol and conduit to that particular message's requirements. The historical status table 66 includes a batch table 68 and a batch message table 70 (batchmsg). A "batch" is a delivery attempt to a given carrier. For each delivery attempt, one entry will be inserted into the batch table 68, and one or more entries into the batch message table (one for each message) 70. These tables provide a detailed historical log of message status and carrier connection status. The batch table 68 may be defined in accordance with Table 6, while the batch message table may be defined in accordance with Table 7.
TABLE 6 field value batch_index unique integer batch_attemptTime time batch was attempted batch_agentld delivery agent who made attempt value
TABLE 7 field value batch ndex unique integer msgstatus_index msgstatus_index of given message msgsatus_status resulting status from batch connection msgstatus_errorSummary if error, error summary msgstatus errorCode if error, integer code msgstatus delivery Attempt number of delivery attempts of given message msgstatus connectAttempt number of connection attempts for given message
Each element of the transformation database 22 has now been described.
Attention presently turns to a description of a configuration file 80 used to configure the transformation database 22 and a network message processed in accordance with the invention. The configuration file 80 and incoming network messages are preferably specified using the Extensible Markup Language (XML) textual format. In the case of the configuration file 80, a program may be used to translate the XML into the various database tables of the transformation database 22.
The XML syntax is based on tags that describe data. For every piece of discrete data there is a tag to define its meaning. The XML tags used in accordance with the invention are defined in a Document Type Definition (DTD). In general, an XML tag has the format: <tag>value< tag>. The <tag> defines the data type. The DTD of the present invention is organized in a two-level hierarchical format. The first level is the node tag. The second level defines a characteristic of the node, as shown, for example, in Table 8. TABLE 8
<node>
<characteristicl> <characteristicl_detaill>value</characteristicl_detaill>
<characteristicl_detail2>value</characteristicl_detail2> </characteristicl>
<characteristic2> <characteristic2_detail 1 >value</characteristic2_detail 1 >
</characteristic2> </node>
The configuration table 50 is a collection of nodes, each defined by a node tag. Each node is uniquely identified with an id, class, name and priority. The node tag may be defined as follows:
<node id="unique_value" class="allowable_value" name="userdefined_value" priority- ' integer_value">
where id = unique value among all nodes class = default, agent, recipient, service, message, license name = descriptive text for node priority = this determines how the values in the node overwrite other nodes.
The node class determines the purpose of the information stored in the node. For example, if the node class is agent, then the node information is used to create an agent, which is the software module that delivers messages via a particular protocol and conduit. In one embodiment of the invention, the following node classes are utilized: default: default configuration settings agent: the software module responsible for message deliver via a protocol and conduit recipient: a particular wireless device service: the carrier service the agent will connect to message: the message to be delivered license: the Messaging Engine license to allow delivery of the message.
Observe that these node classes allow the setting of default values through the
"default" node class. The "agent" node class is used to specify a wireless message transport protocol and a wireless message transport conduit. The "recipient" node class specifies the wireless device that will receive the wireless transport message. The "service" node specifies a wireless carrier 34. The "message" node has the data content corresponding to the data received in the network message. The "license" node allows controlled access to the messaging engine 20.
Per node class, second-level tags further define the node. These tags include information about the configuration, protocols, conduits, message content, node references, and license. Table 9 describes all of the tags used in accordance with, an embodiment of the invention.
TABLE 9
Tag Node Class Allowed in Description <node> N/A Basic XML unit; All data is defined in terms of nodes
<config> ALL Configuration settings <config_database> default Other database(s) that server communicates with value: dbtype:dbname: [hostname] :[tcpport], [user], [password], [priority]
<config_inqueuewait> default, agent Sleep time of epagemst module in milli-seconds <config_outqueuewait> default, agent sleep time of epageagt module in milli-seconds
<config_batchhistory> default, agent Sets whether batch history is off, only errors logged, or full. Values: "none", "error", "full"
<config_msgpriority> message Priority of message.
Determines how much time the message spends in queue,
<config_msggroup> agent, The msggroup of the agent message or message; used to only allow certain agents to delivery given message. <license> license License settings
<license_program> license Licensed product, value is referred to as Kappa in this example.
<license_feature> license Expression that describes licensed features. <license_warning> license Expression that determines when user will receive licensing warnings.
<license_version> license Product version that is licensed. <license_date> license Expiration date of kappa.
<license_comment> license String specified at license generation time.
<license_code> license Unique alphanumeric code that determines validity of license.
<license_hostid> license The hostid of licensed
Message Engine Server. <reference> recipient, A directed link to another service node value: "merge",
"expand" In a simplified embodiment of the invention, there are three major wireless transport protocol tags: dtmf, snpp and tap. Each tag corresponds to a different wireless transport protocol, namely dtmf, snpp, and tap. Although not shown, additional protocols have similar XML tags in the DTD. As new protocols are developed, XML tags are added to the DTD. The exemplary protocol tags may be defined as specified in Table 10.
TABLE 10
<dtmf> ALL DTMF(touchtone) protocol settings
<dtmf script> ALL Value to transmit after making connection
<dtmf_numberprefix> ALL Number to dial before main service number
<dtmf_number> ALL DTMF main service number
<dtmf_numberpostfix> ALL Number to dial after main service number
<snpp> ALL SNPP protocol setting
<snpp_maxlength> ALL Maximum character length of SNPP message
<snpp_splitlimit> ALL Maximum multipart message length (total character count allowed)
<snpp_toolong> ALL Defines long message handling values: "reject", "truncate" and "split"
<snpp_maxdeliveryattempt> ALL Determines the number of times an agent will attempt message delivery <snpp_maxbatch> ALL Number of messages allowed to be delivered during given connection
<snpp_pin> ALL Recipient's pin number <tap> ALL TAP protocol settings <tap_parity> ALL Parity encoding for data connection
<tap_maxlength> ALL Maximum character length of TAP message
<tap_splitlimit> ALL Maximum multipart message length (total character count allowed)
<tap_toolong> ALL Defines long message handling values: "reject", "truncate" and "split" <tap_maxdeliveryattempt> ALL Determines the number of times an agent will attempt message delivery
<tap_maxbatch> ALL Number of messages allowed to be delivered during given connection
<tap_pin> ALL Recipients pin number <tap_password> ALL Password for the service provider
In accordance with the invention, a set of wireless message transport conduit tags are also defined, including: tty, modem, tcp and forward. Each of these tags characterizes the medium (conduit) over which the message is sent. For each conduit supported in the future, a corresponding conduit tag will be added to the DTD. By way of example, the tags defined in accordance with an embodiment of the invention are shown in Table 11.
<tty> ALL tty (lease-line) conduit settings
<tty_device> ALL Serial port
<tty_speed> ALL Connection speed
<tty_databits> ALL Number of databits per byte value: "7", "8" <tty_parity> ALL Parity encoding of data value: "none" , "even" , "odd"
<tty_stopbits> ALL Number of bits to indicate stop value: "1 ", "2"
<tty_flow> ALL Data flow control method value: "none", "xonxoff ', "rtscts"
<tty_lockdir> ALL Directory to store lock file (indicates tty in use) <tty_maxconnectionattempt> ALL Maximum number of times to retry conduit connection
<modem> ALL Modem conduit settings
<modem_script> ALL Modem initialization string
<modem_numberprefix> ALL Number to dial before dialing service provide number
<modem_number> ALL Service provide number
<modem_numberpostfix> ALL Number to dial after dialing service provide number
<modem_device> ALL Serial port that modem is connected to
<modem_speed> ALL Modem connection speed
<modem_databits> ALL Number of databits per byte value: "7", "8"
<modem_parity> ALL Parity encoding of data value: "none", "even", "odd" <modem_stopbits> ALL Number of bits to indicate stop value: " 1", "2"
<modem_flow> ALL Data flow control method value: "none", "xonxoff, "rtscts"
<modem lockdir> ALL Directory to store lock file (indicates modem in use) <modem hold> ALL Determines whether modem should hangup after value: "true", "false"
<modem_maxconnectattempt> ALL Maximum number of connection attempts before quitting
<tcp> ALL tcp conduit settings
<tcp_host> ALL tcp host to connect to
<tcp_port> ALL tcp port on host to connect to
<tcp_maxconnectattempt> ALL Maximum number of connection attempts before quitting.
<forward> ALL Proprietary forwarding conduit for inter-server communications
<forward_database> ALL Database to connect to <forward_maxconnectattempt> ALL Maximum number of connection attempts
*** Message XML
<text> message Message text in plain text format
<binary> message Message in binary format <attachment> message Arbitrary data sent with text.
Not sent to wireless device, but forwarded through
Messaging Engine with original message.
The foregoing information is more fully appreciated in connection with some specific examples. A configuration file 80 for configuring the transformation database 22 contains a collection of nodes: one default node, one or more agent nodes, zero or more service nodes, zero or more recipient nodes, and one or more license nodes. For example, a default node may be defined as shown in Table 12. TABLE 12
<node id="default" class="default" name="" priority="0" <config> <config_batchhistory>full</config_batchhistory>
<configoutqueuewait>8000</config_outqueuewait> <config_inqueuewait>10000</config_inqueuewait> </config> <tap> <tap_maxbatch>5</tap_maxbatch>
</tap> </node>
The default node of Table 12 defines the global settings batchhistory, outqueuewait, inqueuewait, and the tap protocol's maxbatch. The batchhistory setting causes all agents to default to full batch logging. An agent can override its individual batchhistory setting if desired. The default agent sleep time (config outqueuewait) is 8 seconds, for example, and the default master sleep time is 10 seconds, by way of example. In this example, all agents use the maxbatch setting of 5 unless overridden by another node involved in the message delivery (service, message, recipient, agent). A service node may be defined as shown in Table 13.
TABLE 13
<node id- 'pagemart" class- 'service" name- 'PageMart Nationwide Paging" priority="0">
<tap> <tap_maxlength>250</tap_maxlength>
<tap_maxbatch>3 </tap_maxbatch> </tap> <modem>
<modem_numbeφrefix>9w</modem_numberprefix> <modem number> 1 -800-864-9499</modem_number> <modem_speed>300</modem_speed> </modem>
</node>
The service node of Table 13 defines a service that uses the tap protocol and a modem conduit. The tap maxlength and maxbatch are defined particularly for this service as well as certain characteristics of the modem.
The recipient node may be defined in accordance with the description of Table 14.
TABLE 14
<node id- 'jdoe" class- 'recipient" name- 'Jane Doe" priority- '0"> <tap>
<tap_pin> 1664171 </tap_pin> </tap>
<reference reftype="merge">pagemart</reference> </node>
The recipient node of Table 14 defines a wireless device that connects via the tap protocol. The node uses the service whose node id is equal to "pagemart". The reference tag causes the "pagemart" node to be merged or pulled into this recipient node.
An example of an agent node is defined in Table 15.
TABLE IS <node id="ttya" class="agent" name="Dial-Out for /dev/culOpO" priority="0"> <config>
<config_outqueuewait>8000</config_outqueuewait> </config> <tap>
<tap_maxdeliveryattempt>6</tap_maxdeliveryattempt> <tap_maxlength>225</tap_maxlength> </tap> <modem> <modem_numbeφrefix>9w</modem_numbeφrefix>
<modem_device>/dev/culOpO</modem_device> <modem_speed>2400</modem_speed> <modem_flow>none</modem_flow> </modem> </node>
The agent node of Table 15 uses the tap protocol and modem conduit. The config, tap and modem settings can be overridden by the message, service, and recipient nodes (given they all have node priority = "0").
The foregoing nodes provide an example of a configuration file 80 which is used to configure the configuration table 50. A network message utilizes the same DTD. Table 16 provides an example of a network message.
TABLE 16
<node id="msg0" class- 'message">
<reference reftype="merge">jdoe</reference> <text>hello world< text> </node> The network message of Table 16 is initially routed to the message-in table 56. It is then processed by the expansion agent 24. In particular, the expansion agent parses the message and then expands it based upon the configuration information in the configuration table 50. In a preferred embodiment, this expansion operation entails the construction of a Directed Acyclic Graph (DAG), as demonstrated below.
Information from the DAG is subsequently placed in the message-out table 58. In this simple example, the message recipient is jdoe. The recipient receives the message "hello world" at a wireless device.
The operation of the expansion agent 24 and delivery agents 26 are more fully appreciated with the following discussion. Figure 5 illustrates processing steps performed by an expansion agent 24 of the invention. First, the expansion agent 24 retrieves a received message from the message-in table 56 (step 110). It then parses the message (step 112) and produces a DAG expression (step 112). The information from the DAG expression is then used to produce a wireless transport message that is inserted into the message-out table (step 116).
The expansion agent 24 delivers the wireless transport message to the message- out table 60. In particular, the expansion agent 24 inserts a wireless transport message entry into the message status table 60, the message protocol table 62, and the message conduit table 64. A delivery agent 26 extracts the message and other critical information from these tables in order to deliver the message successfully. Each delivery agent 26 is configured to only attempt delivery of messages that are compatible with its protocol and conduit. Each unique protocol has its own entries in the protocol table 62 which specifies how to deliver the specific message. Also, each unique conduit has its own entries in the message conduit table 64 which allows for customized conduit behavior per message.
The disclosed architecture allows many protocols and conduits to be developed quickly and with no disturbance to other parts of the software code base. Instead of designing the agents as a monolithic program, the agents are cleanly divided into protocol logic and conduit logic. Therefore, when a conduit is designed, any protocol will be able to use it and vice versa.
Preferably, the expansion agent 24 is configured to scan the message-in table 56 for new messages in user-definable intervals. When one or more new messages is detected, the expansion agent performs routine parsing of the message to extract the different components of the message. Once these components are obtained a DAG expression is formed. This entails the construction of a message-specific data structure that represents the hierarchy of information stored in the configuration nodes (recipient, service, alias, agent) related to the message. The final attributes of a message result from traversing the DAG data- structure, inheriting and possibly overriding attribute information until the traversal is complete.
Performing message elaboration using the DAG expansion technique of the invention allows for configuration settings to be distributed among different nodes and the ability for each message to essentially inherit its own custom settings.
The DAG datastructure has one node for every configuration node. When a message is processed, the DAG is expanded to the point where all node references are resolved, producing a flat list of values. In other words, the configuration is expanded from a single root node to a DAG structure. At this point, the DAG structure is traversed to select configuration values that are attached to child nodes up to the root node. At propagation completion, a flat list of values results. The flat list of values is embodied in the wireless transport message, as demonstrated in the examples provided below.
The node references utilize the previously discussed reference tags: merge and expand. The merge reference tag is used when a node needs to collect information from another node in order to complete its definition. The code in Table 17 illustrates a configuration node using a reference merge tag to indicate a recipient's service provider.
TABLE 17
<node id="msg0" class="message"> <tap>
<tap_pin>1234567</tap_pin> </tap>
<reference reftype="merge">pagemart< reference> <text>hello world< text> </node>
Expand references are used when a node (alias node) is grouping other nodes under a similar name. Table 18 illustrates the use of an expand reference to create a group.
TABLE 18
<node id- 'sysadmins" class- 'alias" name="Unix System Administrators" priority="0">
-Preference reftype- 'expand ">dcoelho</reference>
<reference reftype="expand">dbernstein</reference>
-Preference reftype="expand">prissmann</reference> </node>
With this node in the specified configuration, users can send messages to "sysadmins" and prissmann, dcoelho, and dbernstein will each receive a message. Expand references are also used in network messages, as shown in Table 19
TABLE 19
<node id="msg02" class=message> <reference reftype="exρand">prissmann</reference> <text>message to prissmann</text> </node>
OR
<node id="msg02" class=message>
<reference reftype="expand">dbernstein</reference> <reference reftype="expand">prissmann</reference> <text>message to dbernstein and prissmann</text> </node>
DAG expansion occurs until all node references are resolved and a final list of values result. When nodes in the DAG set the same attribute, by default, the parent node overrides the child. This can be overridden by setting the priority field per node to dictate the weight of each node. The higher priority node will override a node of a lower priority. The expansion agent 24 includes a rule set to specify such rules as a node that contains expand references can be followed with merge references, but a merge reference cannot be followed with an expand reference.
Attention now turns to a more detailed example of a configuration file 80, a message that is processed in accordance with the information in the configuration file 80, the DAG expression resulting from this processing, and the wireless transport message produced by this processing. Table 20 illustrates an example configuration file 80.
TABLE 20
<?xml version="1.0"?>
<!DOCTYPE mobilesys SYSTEM "mobilesys.dtd">
<mobilesys>
<node id="default" class="default" name="" priority="0"> <modem> <modem_numbeφrefix>9w</modem_numbeφrefix> <modem_maxconnectattempt>5</modem_maxconnectattempt> </modem> <tap>
<tap_maxdeliveryattempt>5</tap_maxdeliveryattempt> <tap_toolong>split< tap_toolong> </tap> <config>
<confιg_msgpriority>7</config_msgpriority> </config> </node> ***DAG Expression Node 202***
<node id="marketing" class="group" name="Marketing Department" priority="0"> <tap> <tap_toolong>reject</tap_toolong> </tap>
</node> * * *DAG Expression Node 204* * *
<node id="sales" class- 'group" name="Sales Department" priority="15">
<tap> <tap_toolong>reject< tap_toolong>
</tap> </node> ***DAG Expression Node 206***
<node id- 'digcellco" class- 'serviceprovider" name="DigCell, Inc." priority=" 10"> <ois>
<ois_majorver>4< ois_majorver> </ois> <pad> <pad_destaddr>23530000000000</pad_destaddr> </pad>
</node> ***DAG Expression Node 208***
<node id="pageco" class- 'serviceprovider" name- 'Paging, Inc." priority="10"> <tap> <tap_password>BEEPME</tap_password>
<tap_toolong>split</tap_toolong> </tap> </node> ***DAG Expression Node 210***
<node id- 'cellsvcmv" class- 'service" name- 'DigCell - Mountain View" priority="0"> <ois> </ois> <pad>
<pad_srcaddr>23535555555555</pad_srcaddr> </pad> <reference reftype="merge">digcellco</reference> </node> * * * DAG Expression Node 212 * * *
<node id="cellsvcsj" class="service" name="DigCell - San Jose" priority="0"> <ois> </ois> <pad>
<pad_srcaddr>23531234567890</pad_srcaddr> </pad>
<reference reftype="merge">digcellco</reference> </node> ***DAG Expression Node 214***
<node id="pagsvcmv" class="service" name="Paging - Mountain View" priority="0"> <tap></tap> <modem>
<modem_number>l-650-555-9876</modem_number> </modem>
<reference reftype="merge">pageco</reference> </node> ***DAG Expression Node 216***
<node id="pagsvcsj" class="service" name- 'Paging - San Jose" priority="0"> <tap></tap> <modem> <modem_number>l-408-555-5678</modem_number> </modem>
<reference reftype="merge">pageco</reference> < node> ***DAG Expression Node 218***
<node id- 'wilma" class- 'recipient" name- 'Wilma Flintstone" priority="0"> <ois> <ois_smsdestaddr>16505554321</ois_smsdestaddr> </ois>
<reference reftype="merge">cellsvcmv</reference> <reference reftype="merge>marketing</reference> </node> * * * DAG Expression Node 220 * * *
<node id="fred" class="recipient" name="Fred Flintstone" priority="0"> <tap>
<tap_pin>2222222</tap_pin> </tap>
<reference reftype="merge">pagsvcmv</reference> <reference reftype="merge">sales</reference> </node> ***DAG Expression Node 222***
<node id="barney" class="recipient" name="Barney Rubble" priority="0">
<tap> <tap_pin>1234567</tap_pin>
</tap>
<reference reftype="merge">pagsvcsj</reference>
<reference reftype="merge">sales</reference> </node> ***DAG Expression Node 224* * *
<node id="betty" class="recipient" name- 'Betty Rubble" priority="0">
<ois> <ois_smsdestaddr> 14085551234</ois_smsdestaddr> </ois>
<reference reftype="merge">cellsvcsj</reference> <reference reftype="merge>marketing</reference> </node> ***DAG Expression Node 226***
<node id="flintstones" class="alias" name- 'Flintstone alias" priority="0"> <reference reftype="expand">fred</reference> <reference reftype- ' expand">wilma</reference> </node> ***DAG Expression Node 228***
<node id="rubbles" class="alias" name="Rubble alias" priority="0"> <reference reftype="expand">barney</reference> <reference reftype="expand">betty</reference> </node> ***DAG Expression Node 230***
</mobilesys>
By way of example, the network message of Table 21 is processed in accordance with the configuration file 80 of Table 20.
TABLE 21 — — =
<?xml version="1.0"?>
<!DOCTYPE mobilesys SYSTEM "mobilesys.dtd"> <mobilesys> <node id="msgtorubbles" class- 'message" name="example message" <reference reftype="expand">rubbles</reference> <text>hello</text> </node> </mobilesys> ***DAG Expression Node 240***
Figure 6 illustrates a DAG expression 200 constructed in accordance with the information provided in Tables 20 and 21. Each block of code in Tables 20 and 21 is followed by a comment, delineated by ***, indicating where the code is converted into the DAG expression 200. For example, the first block of code in Table 20 is the default node which appears as block 202 at the top of the DAG expression 200 of Figure 6. The network message is marked as block 240 in Figure 6. The code in block
240 specifies to "expand" the "rubbles" reference. Thus, a configuration link 242 is made to block 230, the root node of the DAG expression 200. The remaining links in the expression 200 are between configuration nodes. The code in block 230 specifies the "barney" reference, leading to a link to block 224. Block 224 leads to links to block 218 and 206. The link to block 218 leads to a link to block 210.
A different branch from the root node 230 is made via the reference to "betty", leading to a link with block 226. Block 226 specifies links to blocks 214 and 204. Block 214 specifies a link to block 208.
Observe that blocks 212, 216 220, 222, and 228 are not connected to the DAG expression 220. Instead, these blocks constitute information that is contained in the configuration table 50, but is not relevant to the processing of this particular message. The processing of a different message may produce a DAG expression that incoφorates these nodes. Block 202, while not connected to the DAG expression, includes default settings that are accessed during the formation of the wireless transport message.
The DAG expression 200 is traversed by the expansion agent 24 to assign parameters to the wireless transport message resulting in the message of Table 22.
TABLE 22
<?xml version="1.0"?>
<!DOCTYPE mobilesys SYSTEM "mobilesys.dtd"> <mobilesys> <node id="msgtorubbles" class="message" name="example message" <tap> <tap_pin> 1234567</tap_pin> <tap_password>BEEPME</tap_password>
<tap_toolong>reject</tap_toolong> <tap_maxdeliveryattempt>5</tap_maxdeliveryattempt> </tap> <modem> <modem_number> 1 -408-555-5678</modem_number>
<modem_numbeφrefix>9w</modem_numbeφrefix> <modem_maxconnectattempt>5</modem_maxconnectattempt> </modem> <config> <config_msgpriority>7</config_msgpriority>
< config> <text>hello</text> </node> </mobilesys>
Observe that this message was expanded from the part of the "rubbles" alias coded as <reference reftype="expand">barney</reference>. Note that the modem_numberpref ix, modem_maxconnec tat tempt, tap_maxdeliveryattempt, and conf ig_msgpriority values come from the default node 202. Also note that tap_toolong value comes from the sales node 206 because its priority is higher than the pagsvcs j node 218.
A second wireless transport message produced by the expansion agent 24 is shown in Table 23. TABLE 23
<?xml ersion="1.0"?>
<!DOCTYPE mobilesys SYSTEM "mobilesys.dtd"> <mobilesys>
<node id="msgtorubbles" class="message" name="example message" <ois> <ois_smsdestaddr> 14085551234</ois_smsdestaddr> </ois> <pad>
<pad_srcaddr>23531234567890</pad_srcaddr> <pad_destaddr>23530000000000</pad_destaddr> </pad> <confιg> <confιg_msgpriority>7</config_msgpriority> </config> <text>hello</text> </node> </mobilesys> ===== ^=======— _^= =====z =======
The message of Table 23 was expanded from the part of the rubbles alias coded as
<reference reftype="expand">betty</reference>. Note that the modem_numberpref ix, modem_maxconnectat tempt, tap_maxde livery at tempt, and conf ig_msgpriority values come from the default node 202.
The expansion agent 24 has now been fully described, attention now turns to a discussion of the operation of the delivery agents 26. When an agent 26 initiates a message delivery, it generally opens the conduit, then opens the protocol. When the agent completes a delivery it closes the protocol and then closes the conduit. The delivery agents are preferably configured to perform the functions described below. One such function is an initialization function to start a protocol or conduit and perform any initialization actions necessary before use of the protocol or conduit. Typical input to this function is a protocol/conduit identification number, a debug level, and an agent name. A modifiable input associated with this function is the protocol/conduit state.
Another function executed by the delivery agents is a clean-up function. This function stops a protocol or conduit and performs any actions necessary to cleanly shut down the protocol or conduit. Input to the function is a protocol or conduit identification number. A modifiable input associated with the function is the protocol/conduit state.
Another function is a configuration function to configure a protocol or conduit. This function secures default configuration information and agent-specific configuration information; thereafter, it places the agent in a state to start handling messages. The input to this function is a protocol/conduit identification number, agent or master name, default values for DAG expansion, and specific configuration for the agent. A modifiable input associated with the function is the protocol/conduit state. The output of the function is a boolean value indicating success or failure of the configuration operation.
A check function may also be performed in accordance with the invention. The check function performs protocol/conduit-specific checking on an individual message. The input to the function is a protocol/conduit identification number, a string submitted with a message as its identifier, and post-DAG expansion name-value pairs describing the message. A modifiable input to the function is the protocol/conduit state. The output of the function is a boolean indicator of success or failure. A split function may also be used in accordance with the invention. The split function splits a single message into one or more messages. The input to this function is a protocol/conduit identification number, a string submitted with the message as its identifier, post-DAG expansion name-value pairs describing the message, the original text of the message, and the length of the original text of message. The modifiable input for this function is the protocol/conduit state. The output of the function is an error message, if any; an error code, if any; an array of messages, all of legal length (less than or equal to constraint size); the number of messages that the input was split into; and a boolean value of function success.
A write function is also provided in a preferred embodiment. The write function operates to write message information to transformation database 22. The input to this function is a protocol/conduit identification number, a partner protocol/conduit identification number, a partner protocol/conduit state, a string submitted with the message as its identifier, a system-generated string submitted with the message as its identifier, post-DAG expansion name value pairs describing the message, and an index of the message in the message status table 60. A modifiable input to the function is the protocol/conduit state. The output of the write function includes an error message, if any; error code, if any; protocol/conduit-specific string representation of the recipient; protocol/conduit-specific string representation of the service; and a boolean value of function success.
A batch function may also be used in accordance with an embodiment of the invention. The batch function secures protocol/conduit-specific preferences for how to handle a group of messages. The input to this function is a protocol/conduit identification number, a partner protocol/conduit identification number, a partner protocol/conduit state, an array of indices into the message status table of messages to batch, and the size of the array of indices into the message status table of messages to batch. A modifiable input to the function is the protocol/conduit state. The output of the function is a service mode: batching unavailable, dedicated service, multiple service, or one at a time; a recipient mode: batching unavailable, dedicated recipient, multiple service, or one at a time; a preferred service, if any; a preferred recipient, if any; and a boolean value of function success. The open function operates to open a protocol/conduit session. This function may be used send messages. The input to the function is a protocol/conduit identification number, a partner protocol/conduit identification number, a partner protocol/conduit state, an array of indices into the message status table of messages to batch; and the size of the array of indices into the message status table of messages to batch. The modifiable input of the function is the protocol/conduit state, the array of session file descriptors, and the size of the array of session file descriptors. The output of the function is a boolean value of function success. A close function is also provided to close a protocol/conduit session. This function can also be used to send messages prior to closing operations. The input to the function is a protocol/conduit identification number, a partner protocol/conduit identification number, a partner protocol/conduit state, and a boolean indication of session success. Modifiable input to the function includes a protocol/conduit state, an array of session file descriptors, and a size of array of session file descriptors. The output of the function is a boolean indicator of session success.
The foregoing description, for puφoses of explanation, used specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that the specific details are not required in order to practice the invention. In other instances, well known circuits and devices are shown in block diagram form in order to avoid unnecessary distraction from the underlying invention. Thus, the foregoing descriptions of specific embodiments of the present invention are presented for puφoses of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, obviously many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalents.

Claims

IN THE CLAIMS:
1. A system to convert a network message into a wireless transport message, comprising: a network-to-wireless transformation database including a message configuration table; and an expansion agent to process a network message received from a computer network and information from said message configuration table to create a wireless transport message specifying attributes to facilitate the delivery of said network message to a wireless device, said attributes including a selected wireless message transport protocol and a selected wireless message transport conduit.
2. The system of claim 1 wherein said message configuration table stores wireless transport message parameters in a node-based data structure.
3. The system of claim 2 wherein said node-based data structure includes a two- level hierarchy defining a first level node tag and a second level node characteristic.
4. The system of claim 1 wherein said network-to-wireless transformation database includes a message-in table to receive said network message, said expansion agent processing said network message from said message-in table.
5. The system of claim 1 wherein said network-to-wireless transformation database includes a message-out table to store said wireless transport message after processing by said expansion agent.
6. The system of claim 5 wherein said message-out table includes a message status table characterizing message parameters associated with said wireless transport message.
7. The system of claim 5 wherein said message-out table includes a protocol field for each wireless protocol supported by said network-to-wireless transformation database.
8. The system of claim 5 wherein said message-out table includes a conduit field for each wireless transmission conduit supported by said network-to-wireless transformation database.
9. The system of claim 5 wherein said network-to-wireless transformation database includes an historical-status table to record the delivery status of each wireless transport message within said message-out table.
10. The system of claim 2 wherein said expansion agent processes said node-based data structure to ascribe wireless message attributes to said network message.
11. The system of claim 10 wherein said expansion agent performs a Directed Acyclic Graph expansion upon said network message in accordance with said wireless transport message parameters in said node-based data structure.
12. The system of claim 5 further comprising a pool of wireless message delivery agents to launch wireless transport messages from said message-out table, each wireless message delivery agent supporting a pre-determined wireless message transport protocol and a pre-determined wireless message transport conduit.
13. A method of converting a network message into a wireless transport message, comprising the steps of: receiving a network message; linking information within said network message with information in a database to form a Directed Acyclic Graph defining attributes to facilitate delivery of said network message to a wireless device; and selecting attributes from said Directed Acyclic Graph to form a wireless transport message specifying a wireless message transport protocol and a wireless message transport conduit.
14. The method of claim 13 further comprising the step of delivering said wireless transport message to a message-out table including a message status table, a message protocol table, and a message conduit table.
15. The method of claim 14 further comprising the step of delivering said wireless transport message to a selected conduit corresponding to said wireless message transport conduit, said delivering step being performed with a delivery agent configured to process wireless transport messages specifying said wireless message transport protocol and said wireless message transport conduit.
16. The method of claim 15 further comprising the step of recording delivery status information for said wireless transport message.
17. The method of claim 13 wherein said selecting step includes the step of selecting an attribute from said Directed Acyclic Graph based upon a highest priority value defined in a set of linked nodes of said Directed Acyclic Graph.
18. The method of claim 13 wherein said receiving step includes the step of receiving a network message from one of a variety of different network message sources.
19. The method of claim 18 wherein said receiving step includes the step of receiving a network message from the group comprising: an electronic mail source, a web page source, a database source, a monitoring system source, and a wireless receiver.
20. The method of claim 13 wherein said receiving step includes the step of receiving a network message originated from a wireless device.
21. The method of claim 13 wherein said linking step includes the step of linking said network message with a configuration table including a node table, a node value table, and a reference table.
22. The method of claim 21 wherein said linking step includes the step of identifying defined references between said node table, said node value table, and said reference table.
PCT/US2001/004662 2000-02-18 2001-02-13 Apparatus and method for converting a network message to a wireless transport message using a modular architecture WO2001061933A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP01910640A EP1266485A4 (en) 2000-02-18 2001-02-13 Apparatus and method for converting a network message to a wireless transport message using a modular architecture
AU2001238229A AU2001238229A1 (en) 2000-02-18 2001-02-13 Apparatus and method for converting a network message to a wireless transport message using a modular architecture

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/507,304 2000-02-18
US09/507,304 US6347340B1 (en) 2000-02-18 2000-02-18 Apparatus and method for converting a network message to a wireless transport message using a modular architecture

Publications (1)

Publication Number Publication Date
WO2001061933A1 true WO2001061933A1 (en) 2001-08-23

Family

ID=24018091

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/004662 WO2001061933A1 (en) 2000-02-18 2001-02-13 Apparatus and method for converting a network message to a wireless transport message using a modular architecture

Country Status (4)

Country Link
US (1) US6347340B1 (en)
EP (1) EP1266485A4 (en)
AU (1) AU2001238229A1 (en)
WO (1) WO2001061933A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008017788A2 (en) * 2006-08-08 2008-02-14 France Telecom Method of communication by means of messages and associated device

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040264402A9 (en) * 1995-06-01 2004-12-30 Padcom. Inc. Port routing functionality
US6418324B1 (en) * 1995-06-01 2002-07-09 Padcom, Incorporated Apparatus and method for transparent wireless communication between a remote device and host system
US6047284A (en) 1997-05-14 2000-04-04 Portal Software, Inc. Method and apparatus for object oriented storage and retrieval of data from a relational database
US6654784B1 (en) * 2000-01-14 2003-11-25 Nexaweb Technologies, Inc Computing architecture
US6877023B1 (en) * 2000-01-28 2005-04-05 Softwired, Inc. Messaging system for delivering data in the form of portable message formats between message clients
US6618763B1 (en) * 2000-02-04 2003-09-09 Inphonic Inc. Virtual private wireless network implementing message delivery preferences of the user
US7051032B2 (en) * 2000-03-17 2006-05-23 International Business Machines Corporation System and method for providing post HOC access to legacy applications and data
US20010039497A1 (en) * 2000-03-30 2001-11-08 Hubbard Edward A. System and method for monitizing network connected user bases utilizing distributed processing systems
US20040103139A1 (en) * 2000-03-30 2004-05-27 United Devices, Inc. Distributed processing system having sensor based data collection and associated method
US20090216641A1 (en) 2000-03-30 2009-08-27 Niration Network Group, L.L.C. Methods and Systems for Indexing Content
USRE42153E1 (en) 2000-03-30 2011-02-15 Hubbard Edward A Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US8010703B2 (en) * 2000-03-30 2011-08-30 Prashtama Wireless Llc Data conversion services and associated distributed processing system
US20090222508A1 (en) * 2000-03-30 2009-09-03 Hubbard Edward A Network Site Testing
US7092985B2 (en) * 2000-03-30 2006-08-15 United Devices, Inc. Method of managing workloads and associated distributed processing system
US6678675B1 (en) * 2000-03-30 2004-01-13 Portal Software, Inc. Techniques for searching for best matches in tables of information
US6963897B1 (en) * 2000-03-30 2005-11-08 United Devices, Inc. Customer services and advertising based upon device attributes and associated distributed processing system
EP1410231A4 (en) * 2000-04-03 2005-02-23 Juergen Stark Method and system for content driven electronic messaging
US7984104B1 (en) 2000-04-03 2011-07-19 West Corporation Method and system for content driven electronic messaging
US7062535B1 (en) 2000-04-03 2006-06-13 Centerpost Communications, Inc. Individual XML message processing platform
US20040172484A1 (en) * 2000-04-04 2004-09-02 Gudmundur Hafsteinsson Device-specific communicating between a transmitting device and a receving device
US6732175B1 (en) * 2000-04-13 2004-05-04 Intel Corporation Network apparatus for switching based on content of application data
US6959340B1 (en) * 2000-05-31 2005-10-25 Sun Microsystems, Inc. Platform independent business to business messenger in an enterprise computer system
US8243688B1 (en) * 2000-06-15 2012-08-14 Alcatel Lucent Methods and systems for configuring wireless devices
US6721779B1 (en) * 2000-07-07 2004-04-13 Softwired Ag Messaging proxy system
US20020042831A1 (en) * 2000-08-16 2002-04-11 Jeffrey Capone System and method for building applications that adapt for multiple device and protocol standards
US6947431B1 (en) 2000-08-23 2005-09-20 Radio Ip Software Inc. Wireless data communications with header suppression and reconstruction
US7080147B2 (en) * 2000-09-04 2006-07-18 International Business Machines Corporation Computer network system, computer system, method for communication between computer systems, method for measuring computer system performance, and storage medium
US6823478B1 (en) * 2000-09-12 2004-11-23 Microsoft Corporation System and method for automating the testing of software processing environment changes
US7210100B2 (en) * 2000-09-27 2007-04-24 Eizel Technologies, Inc. Configurable transformation of electronic documents
US7613810B2 (en) * 2000-09-27 2009-11-03 Nokia Inc. Segmenting electronic documents for use on a device of limited capability
US20020120779A1 (en) * 2000-11-14 2002-08-29 Douglas Teeple Mediation software for delivery of interactive mobile messaging and personalized content to mobile devices
GB2370450B (en) * 2000-12-19 2004-07-07 Voxsurf Ltd Messaging protocol
US7565605B2 (en) * 2001-05-08 2009-07-21 Nokia, Inc. Reorganizing content of an electronic document
US7031661B2 (en) * 2001-06-29 2006-04-18 Hewlett-Packard Development, L.P. Portable wireless device and print device print by reference protocol
US7299490B2 (en) * 2001-06-29 2007-11-20 Hewlett-Packard Development Company, L.P. Portable wireless device and software for printing by reference
US7760375B2 (en) * 2001-06-29 2010-07-20 Hewlett-Packard Development Company, L.P. Print by reference service method
US7321443B2 (en) * 2001-06-29 2008-01-22 Hewlett-Packard Development Company, L.P. Print device and program product for supporting print by reference methods
US7190476B2 (en) * 2001-06-29 2007-03-13 Hewlett-Packard Development Company, L.P. Print by reference service communication protocol and interface
US20030002072A1 (en) * 2001-06-29 2003-01-02 Berkema Alan C. Print by reference communication methods for portable wireless device printing
US7385718B2 (en) * 2001-06-29 2008-06-10 Hewlett-Packard Development Company, L.P. Print by reference method for portable wireless devices
US20030093565A1 (en) * 2001-07-03 2003-05-15 Berger Adam L. System and method for converting an attachment in an e-mail for delivery to a device of limited rendering capability
US7162534B2 (en) * 2001-07-10 2007-01-09 Fisher-Rosemount Systems, Inc. Transactional data communications for process control systems
US7243163B1 (en) * 2001-08-07 2007-07-10 Good Technology, Inc. System and method for full wireless synchronization of a data processing apparatus with a messaging system
US7743119B2 (en) 2001-08-07 2010-06-22 Motorola, Inc. System and method for mapping identification codes
US7962622B2 (en) * 2001-08-07 2011-06-14 Motorola Mobility, Inc. System and method for providing provisioning and upgrade services for a wireless device
US7596565B2 (en) * 2001-08-07 2009-09-29 Good Technology System and method for maintaining wireless file folders at a wireless device
US7155483B1 (en) 2001-08-07 2006-12-26 Good Technology, Inc. Apparatus and method for conserving bandwidth by batch processing data transactions
US8699053B2 (en) * 2002-01-24 2014-04-15 Hewlett-Packard Development Company, L.P. System and method for mobile printing from a desktop operating system using a portable computing device
US10031885B2 (en) * 2010-02-01 2018-07-24 Netmotion Wireless, Inc. Public wireless network performance management system with mobile device data collection agents
US8099393B2 (en) 2002-03-22 2012-01-17 Oracle International Corporation Transaction in memory object store
US7318098B2 (en) * 2002-04-22 2008-01-08 Inphonic, Inc. Method and system for short message service (SMS) transactions for wireless devices
US7447799B2 (en) * 2002-04-24 2008-11-04 Good Technology, Inc. System and method for automatically updating a wireless device
US20030214970A1 (en) * 2002-05-17 2003-11-20 Pimentel Roberto J. Method and apparatus for ensuring capability to send information to a wireless device using hybrid network capability
US9813514B2 (en) 2002-06-12 2017-11-07 Good Technology Holdings Limited Information repository system including a wireless device and related method
US7631047B1 (en) 2002-06-24 2009-12-08 At&T Intellectual Property I. L.P. Systems and methods for providing critical information based on profile data
US20040006601A1 (en) * 2002-07-01 2004-01-08 Bernstein David B. Method and system for optimized persistent messaging
US8516034B1 (en) 2002-07-08 2013-08-20 Good Technology Software, Inc System and method for modifying application behavior based on network bandwidth
US20040170181A1 (en) * 2003-02-27 2004-09-02 Padcom, Inc. Prioritized alternate port routing
US8112481B2 (en) * 2003-03-28 2012-02-07 Microsoft Corporation Document message state management engine
US7792795B1 (en) * 2003-06-17 2010-09-07 Microsoft Corporation Context service system
US8194655B2 (en) * 2004-08-05 2012-06-05 Dust Networks, Inc. Digraph based mesh communication network
WO2005096722A2 (en) * 2004-03-27 2005-10-20 Dust Networks Digraph based mesh communication network
US7420980B1 (en) * 2004-03-27 2008-09-02 Dust Networks, Inc. Digraph network superframes
US7961664B1 (en) 2004-03-27 2011-06-14 Dust Networks, Inc. Digraph network subnetworks
US7881239B2 (en) * 2004-03-27 2011-02-01 Dust Networks, Inc. Low-powered autonomous radio node with temperature sensor and crystal oscillator
US8059629B1 (en) 2004-03-27 2011-11-15 Dust Networks, Inc. Digraph network timing synchronization
US8412826B2 (en) 2005-03-21 2013-04-02 Hewlett-Packard Development Company, L.P. Message exchange between software components
US20060236308A1 (en) * 2005-04-18 2006-10-19 Lamb James A Configurable functionality chaining
US7506204B2 (en) * 2005-04-25 2009-03-17 Microsoft Corporation Dedicated connection to a database server for alternative failure recovery
US8223935B2 (en) 2005-04-30 2012-07-17 Oracle International Corporation Revenue management systems and methods
JP4664410B2 (en) 2005-06-28 2011-04-06 オラクル・インターナショナル・コーポレイション Revenue management system and method
EP1938193A4 (en) * 2005-07-28 2010-08-04 Oracle Int Corp Revenue management system and method
US8223777B2 (en) 2005-11-15 2012-07-17 Oracle International Corporation Gateway for achieving low latency and high availability in a real time event processing system
US7620392B1 (en) 2006-02-27 2009-11-17 Good Technology, Inc. Method and system for distributing and updating software in wireless devices
US8135807B2 (en) * 2007-09-18 2012-03-13 The Boeing Company Packet generator for a communication network
US8892757B2 (en) * 2009-10-13 2014-11-18 Blackberry Limited Methods and apparatus for intelligent selection of a transport protocol for content streaming
JP2023522199A (en) 2020-04-14 2023-05-29 モバイル ソニック インク. mobile management system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765109A (en) * 1996-01-03 1998-06-09 Lucent Technologies Inc. Direct access paging for wireless sets
US5809028A (en) * 1995-06-02 1998-09-15 Dsc Communications Corporation Protocol converter for a wireless telecommunications system
US5944823A (en) * 1996-10-21 1999-08-31 International Business Machines Corporations Outside access to computer resources through a firewall
US5966656A (en) * 1997-03-11 1999-10-12 Motorola, Inc. Method and apparatus for displaying signal information in a radio communication device

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4953106A (en) * 1989-05-23 1990-08-28 At&T Bell Laboratories Technique for drawing directed graphs
US5577202A (en) * 1992-08-24 1996-11-19 Trw Inc. Message handling system for automated gateway between first and second handling systems wherein first envelope is added to a second envelope respectively without changing text
US5394394A (en) * 1993-06-24 1995-02-28 Bolt Beranek And Newman Inc. Message header classifier
US5432852A (en) * 1993-09-29 1995-07-11 Leighton; Frank T. Large provably fast and secure digital signature schemes based on secure hash functions
IL111154A0 (en) * 1993-10-21 1994-12-29 Martino Ii John A Systems and methods for electronic messaging
US5610904A (en) * 1995-03-28 1997-03-11 Lucent Technologies Inc. Packet-based telecommunications network
US5826039A (en) * 1995-12-29 1998-10-20 Lucent Technologies Inc. Universal connection point for resources and communication unrelated to a physical endpoint
DE19603474C2 (en) * 1996-01-31 1999-05-27 Siemens Ag Method for converting messages in different formats in communication systems
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
FI108388B (en) * 1997-09-01 2002-01-15 Nokia Corp Electronic mail traffic in a mobile phone system
CA2225227A1 (en) * 1997-12-18 1999-06-18 Michael Coveley Intelligent communication and applications server
US6023723A (en) * 1997-12-22 2000-02-08 Accepted Marketing, Inc. Method and system for filtering unwanted junk e-mail utilizing a plurality of filtering mechanisms
US6219667B1 (en) * 1998-05-28 2001-04-17 International Business Machines Corporation Efficient large-scale access control for internet/intranet information systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809028A (en) * 1995-06-02 1998-09-15 Dsc Communications Corporation Protocol converter for a wireless telecommunications system
US5765109A (en) * 1996-01-03 1998-06-09 Lucent Technologies Inc. Direct access paging for wireless sets
US5944823A (en) * 1996-10-21 1999-08-31 International Business Machines Corporations Outside access to computer resources through a firewall
US5966656A (en) * 1997-03-11 1999-10-12 Motorola, Inc. Method and apparatus for displaying signal information in a radio communication device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1266485A4 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008017788A2 (en) * 2006-08-08 2008-02-14 France Telecom Method of communication by means of messages and associated device
FR2904907A1 (en) * 2006-08-08 2008-02-15 France Telecom MESSAGE COMMUNICATION METHOD AND DEVICE THEREFOR
WO2008017788A3 (en) * 2006-08-08 2008-03-27 France Telecom Method of communication by means of messages and associated device
US9780996B2 (en) 2006-08-08 2017-10-03 Orange Method of communication by messages and associated device

Also Published As

Publication number Publication date
AU2001238229A1 (en) 2001-08-27
EP1266485A1 (en) 2002-12-18
US6347340B1 (en) 2002-02-12
EP1266485A4 (en) 2003-04-09

Similar Documents

Publication Publication Date Title
US6347340B1 (en) Apparatus and method for converting a network message to a wireless transport message using a modular architecture
KR100866076B1 (en) Method and device for management of tree data exchange
US7831240B2 (en) System for the centralized storage of wireless customer information
US7317697B2 (en) System for handling file attachments
US8660537B2 (en) System for the storage and retrieval of messages
US7617328B2 (en) System for translation and communication of messaging protocols into a common protocol
US7793334B2 (en) System and method for password protecting a distribution list
US7657253B2 (en) System and method for providing message notification
US8078761B2 (en) Methods and systems for routing messages through a communications network based on message content
US7319858B2 (en) System and method for querying message information
US7464178B2 (en) Open messaging gateway
US20030096605A1 (en) System for handling proprietary files
US7194503B2 (en) System and method to query settings on a mobile device
US20030110212A1 (en) System for customer access to messaging and configuration data
US7549096B2 (en) Methods and systems for tracking and playing back errors in a communications network
US20030095555A1 (en) System for the validation and routing of messages
JP2006507580A (en) Method and apparatus for defining an object enabling setting of a device management tree for a mobile communication device
US7292846B2 (en) Apparatus, and associated method, for retrieving mobile-node device management tree information
WO2002065682A2 (en) Method and system for providing data applications for a mobile device
US20050188066A1 (en) Arragement and a method relating to end user station access of a portal
US9160811B2 (en) Client provisioning with enhanced linking
JP4286744B2 (en) Information management server device
WO2000074405A1 (en) A short message gateway
WO2004012392A1 (en) Command processing in a telecommunications network

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
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWE Wipo information: entry into national phase

Ref document number: 2001910640

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2001910640

Country of ref document: EP

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWW Wipo information: withdrawn in national office

Ref document number: 2001910640

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP