EP3386155A1 - Producing routing messages for voice over ip communications - Google Patents
Producing routing messages for voice over ip communications Download PDFInfo
- Publication number
- EP3386155A1 EP3386155A1 EP18174930.0A EP18174930A EP3386155A1 EP 3386155 A1 EP3386155 A1 EP 3386155A1 EP 18174930 A EP18174930 A EP 18174930A EP 3386155 A1 EP3386155 A1 EP 3386155A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- communication
- party
- call
- network
- field
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
- 238000004891 communication Methods 0.000 title claims abstract description 306
- 238000000034 method Methods 0.000 claims abstract description 161
- 230000008569 process Effects 0.000 claims abstract description 135
- 230000015654 memory Effects 0.000 claims description 30
- 230000000903 blocking effect Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 73
- 230000004044 response Effects 0.000 description 63
- 230000008859 change Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000000977 initiatory effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 230000003213 activating effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/302—Route determination based on requested QoS
- H04L45/306—Route determination based on the nature of the carried application
- H04L45/3065—Route determination based on the nature of the carried application for real time traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/63—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP based on the content carried by the session initiation protocol [SIP] messages
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K39/00—Medicinal preparations containing antigens or antibodies
- A61K39/395—Antibodies; Immunoglobulins; Immune serum, e.g. antilymphocytic serum
- A61K39/39533—Antibodies; Immunoglobulins; Immune serum, e.g. antilymphocytic serum against materials from animals
- A61K39/39558—Antibodies; Immunoglobulins; Immune serum, e.g. antilymphocytic serum against materials from animals against tumor tissues, cells, antigens
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61K—PREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
- A61K45/00—Medicinal preparations containing active ingredients not provided for in groups A61K31/00 - A61K41/00
- A61K45/06—Mixtures of active ingredients without chemical characterisation, e.g. antiphlogistics and cardiaca
-
- C—CHEMISTRY; METALLURGY
- C07—ORGANIC CHEMISTRY
- C07K—PEPTIDES
- C07K16/00—Immunoglobulins [IGs], e.g. monoclonal or polyclonal antibodies
- C07K16/18—Immunoglobulins [IGs], e.g. monoclonal or polyclonal antibodies against material from animals or humans
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/14—Charging, metering or billing arrangements for data wireline or wireless communications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/14—Charging, metering or billing arrangements for data wireline or wireless communications
- H04L12/1432—Metric aspects
- H04L12/1439—Metric aspects time-based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/14—Charging, metering or billing arrangements for data wireline or wireless communications
- H04L12/1485—Tariff-related aspects
- H04L12/1496—Tariff-related aspects involving discounts
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/10—Architectures or entities
- H04L65/102—Gateways
- H04L65/1033—Signalling gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/04—Recording calls, or communications in printed, perforated or other permanent form
- H04M15/06—Recording class or number of calling, i.e. A-party or called party, i.e. B-party
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/51—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP for resellers, retailers or service providers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/56—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP for VoIP communications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/80—Rating or billing plans; Tariff determination aspects
- H04M15/8033—Rating or billing plans; Tariff determination aspects location-dependent, e.g. business or home
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/80—Rating or billing plans; Tariff determination aspects
- H04M15/8044—Least cost routing
- H04M15/8055—Selecting cheaper transport technology for a given service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/80—Rating or billing plans; Tariff determination aspects
- H04M15/8083—Rating or billing plans; Tariff determination aspects involving reduced rates or discounts, e.g. time-of-day reductions or volume discounts
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/82—Criteria or parameters used for performing billing operations
- H04M15/8228—Session based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/88—Provision for limiting connection, or expenditure
- H04M15/887—Provision for limiting connection, or expenditure limit per user or user related number
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M15/00—Arrangements for metering, time-control or time indication ; Metering, charging or billing arrangements for voice wireline or wireless communications, e.g. VoIP
- H04M15/88—Provision for limiting connection, or expenditure
- H04M15/888—Provision for limiting connection, or expenditure severing connection after predetermined time or data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/42025—Calling or Called party identification service
- H04M3/42085—Called party identification service
- H04M3/42102—Making use of the called party identifier
- H04M3/4211—Making use of the called party identifier where the identifier is used to access a profile
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M7/00—Arrangements for interconnection between switching centres
- H04M7/006—Networks other than PSTN/ISDN providing telephone service, e.g. Voice over Internet Protocol (VoIP), including next generation networks with a packet-switched transport layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M7/00—Arrangements for interconnection between switching centres
- H04M7/006—Networks other than PSTN/ISDN providing telephone service, e.g. Voice over Internet Protocol (VoIP), including next generation networks with a packet-switched transport layer
- H04M7/0075—Details of addressing, directories or routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q3/00—Selecting arrangements
- H04Q3/64—Distributing or queueing
- H04Q3/66—Traffic distributors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q3/00—Selecting arrangements
- H04Q3/70—Identification of class of calling subscriber
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13091—CLI, identification of calling line
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13141—Hunting for free outlet, circuit or channel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13196—Connection circuit/link/trunk/junction, bridge, router, gateway
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/1322—PBX
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13384—Inter-PBX traffic, PBX networks, e.g. corporate networks
Definitions
- This invention relates to voice over IP communications and methods and apparatus for routing and billing.
- IP telephones are typically personal computer (PC) based telephones connected within an IP network, such as the public Internet or a private network of a large organization. These IP telephones have installed "voice-over-IP” (VoIP) software enabling them to make and receive voice calls and send and receive information in data and video formats.
- VoIP voice-over-IP
- IP telephony switches installed within the IP network enable voice calls to be made within or between IP networks, and between an IP network and a switched circuit network (SCN), such as the public switched telephone network (PSTN). If the IP switch supports the Signaling System 7 (SS7) protocol, the IP telephone can also access PSTN databases.
- SCN switched circuit network
- PSTN public switched telephone network
- the PSTN network typically includes complex network nodes that contain all information about a local calling service area including user authentication and call routing.
- the PSTN network typically aggregates all information and traffic into a single location or node, processes it locally and then passes it on to other network nodes, as necessary, by maintaining route tables at the node.
- PSTN nodes are redundant by design and thus provide reliable service, but if a node should fail due to an earthquake or other natural disaster, significant, if not complete service outages can occur, with no other nodes being able to take up the load.
- VoIP systems do not allow for high availability and resiliency in delivering Voice Over IP based Session Initiation Protocol (SIP) Protocol service over a geographically dispersed area such as a city, region or continent. Most resiliency originates from the provision of IP based telephone services to one location or a small number of locations such as a single office or network of branch offices.
- SIP Session Initiation Protocol
- a process for operating a call routing controller to facilitate communication between callers and callees in a system comprising a plurality of nodes with which callers and callees are associated.
- the process involves, in response to initiation of a call by a calling subscriber, receiving a caller identifier and a callee identifier.
- the process also involves using call classification criteria associated with the caller identifier to classify the call as a public network call or a private network call.
- the process further involves producing a routing message identifying an address, on the private network, associated with the callee when the call is classified as a private network call.
- the process also involves producing a routing message identifying a gateway to the public network when the call is classified as a public network call.
- the process may involve receiving a request to establish a call, from a call controller in communication with a caller identified by the callee identifier.
- Using the call classification criteria may involve searching a database to locate a record identifying calling attributes associated with a caller identified by the caller identifier.
- Locating a record may involve locating a caller dialling profile comprising a username associated with the caller, a domain associated with the caller, and at least one calling attribute.
- Using the call classification criteria may involve comparing calling attributes associated with the caller dialling profile with aspects of the callee identifier.
- Comparing may involve determining whether the callee identifier includes a portion that matches an IDD associated with the caller dialling profile.
- Comparing may involve determining whether the callee identifier includes a portion that matches an NDD associated with the caller dialling profile.
- Comparing may involve determining whether the callee identifier includes a portion that matches an area code associated with the caller dialling profile.
- Comparing may involve determining whether the callee identifier has a length within a range specified in the caller dialling profile.
- the process may involve formatting the callee identifier into a pre-defined digit format to produce a re-formatted callee identifier.
- Formatting may involve removing an international dialling digit from the callee identifier, when the callee identifier begins with a digit matching an international dialling digit specified by the caller dialling profile associated with the caller.
- Formatting may involve removing a national dialling digit from the callee identifier and prepending a caller country code to the callee identifier when the callee identifier begins with a national dialling digit.
- Formatting may involve prepending a caller country code to the callee identifier when the callee identifier begins with digits identifying an area code specified by the caller dialling profile. Formatting may involve prepending a caller country code and an area code to the callee identifier when the callee identifier has a length that matches a caller dialling number format specified by the caller dialling profile and only one area code is specified as being associated with the caller in the caller dialling profile.
- the process may involve classifying the call as a private network call when the re-formatted callee identifier identifies a subscriber to the private network.
- the process may involve determining whether the callee identifier complies with a pre-defined username format and if so, classifying the call as a private network call.
- the process may involve causing a database of records to be searched to locate a direct in dial (DID) bank table record associating a public telephone number with the reformatted callee identifier and if the DID bank table record is found, classifying the call as a private network call and if a DID bank table record is not found, classifying the call as a public network call.
- DID direct in dial
- Producing the routing message identifying a node on the private network may involve setting a callee identifier in response to a username associated with the DID bank table record.
- Producing the routing message may involve determining whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier.
- Determining whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier may involve determining whether a prefix of the re-formatted callee identifier matches a corresponding prefix of a username associated with the caller dialling profile.
- the process involves producing a routing message including the caller identifier, the reformatted callee identifier and an identification of a private network node associated with the callee and communicating the routing message to a call controller.
- the process involves determining whether to perform at least one of the following: forward the call to another party, block the call and direct the caller to a voicemail server associated with the callee.
- Producing the routing message may involve producing a routing message having an identification of at least one of the callee identifier, an identification of a party to whom the call should be forwarded and an identification of a voicemail server associated with the callee.
- the process may involve communicating the routing message to a call controller.
- Producing a routing message identifying a gateway to the public network may involve searching a database of route records associating route identifiers with dialling codes to find a route record having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- the process may involve searching a database of supplier records associating supplier identifiers with the route identifiers to locate at least one supplier record associated with the route identifier associated with the route record having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- the process may involve loading a routing message buffer with the reformatted callee identifier and an identification of specific routes associated respective ones of the supplier records associated with the route record and loading the routing message buffer with a time value and a timeout value.
- the process may involve communicating a routing message involving the contents of the routing message buffer to a call controller.
- the process may involve causing the dialling profile to include a maximum concurrent call value and a concurrent call count value and causing the concurrent call count value to be incremented when the user associated with the dialling profile initiates a call and causing the concurrent call count value to be decremented when a call with the user associated with the dialling profile is ended.
- a call routing apparatus for facilitating communications between callers and callees in a system comprising a plurality of nodes with which callers and callees are associated.
- the apparatus includes receiving provisions for receiving a caller identifier and a callee identifier, in response to initiation of a call by a calling subscriber.
- the apparatus also includes classifying provisions for classifying the call as a private network call or a public network call according to call classification criteria associated with the caller identifier.
- the apparatus further includes provisions for producing a routing message identifying an address, on the private network, associated with the callee when the call is classified as a private network call.
- the apparatus also includes provisions for producing a routing message identifying a gateway to the public network when the call is classified as a public network call.
- the receiving provisions may be operably configured to receive a request to establish a call, from a call controller in communication with a caller identified by the callee identifier.
- the apparatus may further include searching provisions for searching a database including records associating calling attributes with subscribers to the private network to locate a record identifying calling attributes associated with a caller identified by the caller identifier.
- the records may include dialling profiles each including a username associated with the subscriber, an identification of a domain associated with the subscriber, and an identification of at least one calling attribute associated with the subscriber.
- the call classification provisions may be operably configured to compare calling attributes associated with the caller dialling profile with aspects of the callee identifier.
- the calling attributes may include an international dialling digit and call classification provisions may be operably configured to determine whether the callee identifier includes a portion that matches an IDD associated with the caller dialling profile.
- the calling attributes may include an national dialling digit and the call classification provisions may be operably configured to determine whether the callee identifier includes a portion that matches an NDD associated with the caller dialling profile.
- the calling attributes may include an area code and the call classification provisions may be operably configured to determine whether the callee identifier includes a portion that matches an area code associated with the caller dialling profile.
- the calling attribute may include a number length range and the call classification provisions may be operably configured to determine whether the callee identifier has a length within a number length range specified in the caller dialling profile.
- the apparatus may further include formatting provisions for formatting the callee identifier into a pre-defined digit format to produce a re-formatted callee identifier.
- the formatting provisions may be operably configured to remove an international dialling digit from the callee identifier, when the callee identifier begins with a digit matching an international dialling digit specified by the caller dialling profile associated with the caller.
- the formatting provisions may be operably configured to remove a national dialling digit from the callee identifier and prepend a caller country code to the callee identifier when the callee identifier begins with a national dialling digit.
- the formatting provisions may be operably configured to prepend a caller country code to the callee identifier when the callee identifier begins with digits identifying an area code specified by the caller dialling profile.
- the formatting provisions may be operably configured to prepend a caller country code and area code to the callee identifier when the callee identifier has a length that matches a caller dialling number format specified by the caller dialling profile and only one area code is specified as being associated with the caller in the caller dialling profile.
- the classifying provisions may be operably configured to classify the call as a private network call when the re-formatted callee identifier identifies a subscriber to the private network.
- the classifying provisions may be operably configured to classify the call as a private network call when the callee identifier complies with a pre-defined username format.
- the apparatus may further include searching provisions for searching a database of records to locate a direct in dial (DID) bank table record associating a public telephone number with the reformatted callee identifier and the classifying provisions may be operably configured to classify the call as a private network call when the DID bank table record is found and to classify the call as a public network call when a DID bank table record is not found.
- DID direct in dial
- the private network routing message producing provisions may be operably configured to produce a routing message having a callee identifier set according to a username associated with the DID bank table record.
- the private network routing message producing provisions may be operably configured to determine whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier.
- the private network routing provisions may include provisions for determining whether a prefix of the re-formatted callee identifier matches a corresponding prefix of a username associated with the caller dialling profile.
- the private network routing message producing provisions may be operably configured to produce a routing message including the caller identifier, the reformatted callee identifier and an identification of a private network node associated with the callee and to communicate the routing message to a call controller.
- the private network routing message producing provisions may be operably configured to perform at least one of the following forward the call to another party, block the call and direct the caller to a voicemail server associated with the callee, when the node associated with the caller is the same as the node associated with the callee.
- the provisions for producing the private network routing message may be operably configured to produce a routing message having an identification of at least one of the callee identifier, an identification of a party to whom the call should be forwarded and an identification of a voicemail server associated with the callee.
- the apparatus further includes provisions for communicating the routing message to a call controller.
- the provisions for producing a public network routing message identifying a gateway to the public network may include provisions for searching a database of route records associating route identifiers with dialling codes to find a route record having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- the apparatus further includes provisions for searching a database of supplier records associating supplier identifiers with the route identifiers to locate at least one supplier record associated with the route identifier associated with the route record having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- the apparatus further includes a routing message buffer and provisions for loading the routing message buffer with the reformatted callee identifier and an identification of specific routes associated respective ones of the supplier records associated with the route record and loading the routing message buffer with a time value and a timeout value.
- the apparatus further includes provisions for communicating a routing message including the contents of the routing message buffer to a call controller.
- the apparatus further includes means for causing said dialling profile to include a maximum concurrent call value and a concurrent call count value and for causing said concurrent call count value to be incremented when the user associated with said dialling profile initiates a call and for causing said concurrent call count value to be decremented when a call with said user associated with said dialling profile is ended.
- a data structure for access by an apparatus for producing a routing message for use by a call routing controller in a communications system.
- the data structure includes dialling profile records comprising fields for associating with respective subscribers to the system, a subscriber user name, direct-in-dial records comprising fields for associating with respective subscriber usernames, a user domain and a direct-in-dial number, prefix to node records comprising fields for associating with at least a portion of the respective subscriber usernames, a node address of a node in the system, whereby a subscriber name can be used to find a user domain, at least a portion of the a subscriber name can be used to find a node with which the subscriber identified by the subscriber name is associated, and a user domain and subscriber name can be located in response to a direct-in-dial number.
- a data structure for access by an apparatus for producing a routing message for use by a call routing controller in a communications system.
- the data structure includes master list records comprising fields for associating a dialling code with respective master list identifiers and supplier list records linked to master list records by the master list identifiers, said supplier list records comprising fields for associating with a communications services supplier, a supplier id, a master list id, a route identifier and a billing rate code, whereby communications services suppliers are associated with dialling codes, such that dialling codes can be used to locate suppliers capable of providing a communications link associated with a given dialling code.
- a method for determining a time to permit a communication session to be conducted involves calculating a cost per unit time, calculating a first time value as a sum of a free time attributed to a participant in the communication session and the quotient of a funds balance held by the participant to the cost per unit time value and producing a second time value in response to the first time value and a billing pattern associated with the participant, the billing pattern including first and second billing intervals and the second time value being the time to permit a communication session to be conducted.
- Calculating the first time value may involve retrieving a record associated with the participant and obtaining from the record at least one of the free time and the funds balance.
- Producing the second time value may involve producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between the first time value and the first billing interval.
- Producing the second time value may involve setting a difference between the first time value and the remainder as the second time value.
- the method may further involve setting the second time value to zero when the remainder is greater than zero and the first time value is less than the free time associated with the participant.
- Calculating the cost per unit time may involve locating a record in a database, the record comprising a markup type indicator, a markup value and a billing pattern and setting a reseller rate equal to the sum of the markup value and the buffer rate.
- Locating the record in a database may involve locating at least one of a record associated with a reseller and a route associated with the reseller, a record associated with the reseller and a default reseller markup record.
- Calculating the cost per unit time value further may involve locating at least one of an override record specifying a route cost per unit time amount associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session, a default operator markup record specifying a default cost per unit time.
- the method may further involve setting as the cost per unit time the sum of the reseller rate and at least one of the route cost per unit time, the reseller cost per unit time and the default cost per unit time.
- the method may further involve receiving a communication session time representing a duration of the communication session and incrementing a reseller balance by the product of the reseller rate and the communication session time.
- the method may further involve receiving a communication session time representing a duration of the communication session and incrementing a system operator balance by a product of the buffer rate and the communication session time.
- an apparatus for determining a time to permit a communication session to be conducted includes a processor circuit, a computer readable medium coupled to the processor circuit and encoded with instructions for directing the processor circuit to calculate a cost per unit time for the communication session, calculate a first time value as a sum of a free time attributed to a participant in the communication session and the quotient of a funds balance held by the participant to the cost per unit time value and produce a second time value in response to the first time value and a billing pattern associated with the participant, the billing pattern including first and second billing intervals and the second time value being the time to permit a communication session to be conducted.
- the instructions may include instructions for directing the processor circuit to retrieve a record associated with the participant and obtain from the record at least one of the free time and the funds balance.
- the instructions may include instructions for directing the processor circuit to produce the second time value by producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between the first time value and the first billing interval.
- the instructions may include instructions for directing the processor circuit to produce the second time value comprises setting a difference between the first time value and the remainder as the second time value.
- the instructions may include instructions for directing the processor circuit to set the second time value to zero when the remainder is greater than zero and the first time value is less than the free time associated with the participant.
- the instructions for directing the processor circuit to calculate the cost per unit time may include instructions for directing the processor circuit to locate a record in a database, the record comprising a markup type indicator, a markup value and a billing pattern and set a reseller rate equal to the sum of the markup value and the buffer rate.
- the instructions for directing the processor circuit to locate the record in a database may include instructions for directing the processor circuit to locate at least one of a record associated with a reseller and a route associated with the reseller, a record associated with the reseller, and a default reseller markup record.
- the instructions for directing the processor circuit to calculate the cost per unit time value may further include instructions for directing the processor circuit to locate at least one of an override record specifying a route cost per unit time amount associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session, a default operator markup record specifying a default cost per unit time.
- the instructions may include instructions for directing the processor circuit to set as the cost per unit time the sum of the reseller rate and at least one of the route cost per unit time, the reseller cost per unit time and the default cost per unit time.
- the instructions may include instructions for directing the processor circuit to receive a communication session time representing a duration of the communication session and increment a reseller balance by the product of the reseller rate and the communication session time.
- the instructions may include instructions for directing the processor circuit to receive a communication session time representing a duration of the communication session and increment a system operator balance by a product of the buffer rate and the communication session time.
- a process for attributing charges for communications services involves determining a first chargeable time in response to a communication session time and a pre-defined billing pattern, determining a user cost value in response to the first chargeable time and a free time value associated with a user of the communications services, changing an account balance associated with the user in response to a user cost per unit time.
- the process may further involve changing an account balance associated with a reseller of the communications services in response to a reseller cost per unit time and the communication session time and changing an account balance associated with an operator of the communications services in response to an operator cost per unit time and the communication session time.
- Determining the first chargeable time may involve locating at least one of an override record specifying a route cost per unit time and billing pattern associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time and billing pattern associated with the reseller for the communication session and a default record specifying a default cost per unit time and billing pattern and setting as the pre-defined billing pattern the billing pattern of the record located.
- the billing pattern of the record located may involve a first billing interval and a second billing interval.
- Determining the first chargeable time may involve setting the first chargeable time equal to the first billing interval when the communication session time is less than or equal to the first billing interval.
- Determining the first chargeable time may involve producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between communication session time and the first interval when the communication session time is greater than the communication session time and setting the first chargeable time to a difference between the communication session time and the remainder when the remainder is greater than zero and setting the first chargeable time to the communication session time when the remainder is not greater than zero.
- the process may further involve determining a second chargeable time in response to the first chargeable time and the free time value associated with the user of the communications services when the first chargeable time is greater than or equal to the free time value associated with the user of the communications services.
- Determining the second chargeable time may involve setting the second chargeable time to a difference between the first chargeable time.
- the process may further involve resetting the free time value associated with the user to zero when the first chargeable time is greater than or equal to the free time value associated with the user of the communications services.
- Changing an account balance associated with the user may involve calculating a user cost value in response to the second chargeable time and the user cost per unit time.
- the process may further involve changing a user free cost balance in response to the user cost value.
- the process may further involve setting the user cost to zero when the first chargeable time is less than the free time value associated with the user.
- the process may further involve changing a user free time balance in response to the first chargeable time.
- an apparatus for attributing charges for communications services includes a processor circuit, a computer readable medium in communication with the processor circuit and encoded with instructions for directing the processor circuit to determine a first chargeable time in response to a communication session time and a pre-defined billing pattern, determine a user cost value in response to the first chargeable time and a free time value associated with a user of the communications services, change an account balance associated with the user in response to a user cost per unit time.
- the instructions may further include instructions for changing an account balance associated with a reseller of the communications services in response to a reseller cost per unit time and the communication session time and changing an account balance associated with an operator of the communications services in response to an operator cost per unit time and the communication session time.
- the instructions for directing the processor circuit to determine the first chargeable time may further include instructions for causing the processor circuit to communicate with a database to locate at least one of an override record specifying a route cost per unit time and billing pattern associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time and billing pattern associated with the reseller for the communication session and a default record specifying a default cost per unit time and billing pattern and instructions for setting as the pre-defined billing pattern the billing pattern of the record located.
- the billing pattern of the record located may include a first billing interval and a second billing interval.
- the instructions for causing the processor circuit to determine the first chargeable time may include instructions for directing the processor circuit to set the first chargeable time equal to the first billing interval when the communication session time is less than or equal to the first billing interval.
- the instructions for causing the processor circuit to determine the first chargeable time may include instructions for producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between communication session time and the first interval when the communication session time is greater than the communication session time and instructions for causing the processor circuit to set the first chargeable time to a difference between the communication session time and the remainder when the remainder is greater than zero and instructions for causing the processor circuit to set the first chargeable time to the communication session time when the remainder is not greater than zero.
- the instructions may further include instructions for causing the processor circuit to determine a second chargeable time in response to the first chargeable time and the free time value associated with the user of the communications services when the first chargeable time is greater than or equal to the free time value associated with the user of the communications services.
- the instructions for causing the processor circuit to determine the second chargeable time may include instructions for causing the processor circuit to set the second chargeable time to a difference between the first chargeable time.
- the instructions may further include instructions for causing the processor circuit to reset the free time value associated with the user to zero when the first chargeable time is greater than or equal to the free time value associated with the user of the communications services.
- the instructions for causing the processor circuit to change an account balance associated with the user may include instructions for causing the processor circuit to calculate a user cost value in response to the second chargeable time and the user cost per unit time.
- the instructions may further include instructions for causing the processor circuit to change a user free cost balance in response to the user cost value.
- the instructions may further include instructions for causing the processor circuit to set the user cost to zero when the first chargeable time is less than the free time value associated with the user.
- the instructions may further include instructions for causing the processor circuit to change a user free time balance in response to the first chargeable time.
- a computer readable medium encoded with codes for directing a processor circuit to execute one or more of the methods described above and/or variants thereof.
- a system for making voice over IP telephone/videophone calls is shown generally at 10.
- the system includes a first super node shown generally at 11 and a second super node shown generally at 21.
- the first super node 11 is located in geographical area, such as Vancouver, B.C., Canada for example and the second super node 21 is located in London, England, for example.
- Different super nodes may be located in different geographical regions throughout the world to provide telephone/videophone service to subscribers in respective regions.
- These super nodes may be in communication with each other by high speed/ high data throughput links including optical fibre, satellite and/or cable links, forming a backbone to the system.
- These super nodes may alternatively or, in addition, be in communication with each other through conventional internet services.
- the Vancouver supernode 11 provides telephone/videophone service to western Canadian customers from Vancouver Island to Ontario.
- Another node may be located in Eastern Canada to provide services to subscribers in that area.
- nodes of the type shown may also be employed within the geographical area serviced by a supernode, to provide for call load sharing, for example within a region of the geographical area serviced by the supernode.
- all nodes are similar and have the properties described below in connection with the Vancouver supernode 11.
- the Vancouver supernode includes a call controller (C) 14, a routing controller (RC) 16, a database 18 and a voicemail server 19 and a media relay 9.
- C call controller
- RC routing controller
- the voicemail server 19 need not be included in the node and can be provided by an outside service provider.
- Subscribers such as a subscriber in Vancouver and a subscriber in Calgary communicate with the Vancouver supernode using their own internet service providers which route internet traffic from these subscribers over the internet shown generally at 13 in Figure 1 .
- IP internet protocol
- the Vancouver supernode is accessible at a pre-determined internet protocol (IP) address or a fully qualified domain name that can be accessed in the usual way through a subscriber's internet service provider.
- IP internet protocol
- the subscriber in Vancouver uses a telephone 12 that is capable of communicating with the Vancouver supernode 11 using Session Initiation Protocol (SIP) messages and the Calgary subscriber uses a similar telephone 15, in Calgary AB.
- SIP Session Initiation Protocol
- IP/UDP addresses of all elements such as the caller and callee telephones, call controller, media relay, and any others, will be assumed to be valid IP/UDP addresses directly accessible via the Internet or a private IP network, for example, depending on the specific implementation of the system.
- the caller and callee telephones will have IP/UDP addresses directly accessible by the call controllers and the media relays on their respective supernodes, and those addresses will not be obscured by Network Address Translation (NAT) or similar mechanisms.
- NAT Network Address Translation
- the IP/UDP information contained in SIP messages (for example the SIP Invite message or the RC Request message which will be described below) will match the IP/UDP addresses of the IP packets carrying these SIP messages.
- IP addresses assigned to various elements of the system may be in a private IP address space, and thus not directly accessible from other elements.
- NAT is commonly used to share a "public" IP address between multiple devices, for example between home PCs and IP telephones sharing a single Internet connection.
- a home PC may be assigned an IP address such as 192.168.0.101 and a Voice over IP telephone may be assigned an IP address of 192.168.0.103.
- IP non-routable
- IP addresses In order for these devices to communicate with other computers located on the Internet, these IP addresses have to be converted into a "public" IP address, for example 24.10.10.123 assigned by the Internet Service Provider to the subscriber, by a device performing NAT, typically a home router.
- NAT In addition to translating the IP addresses, NAT typically also translates UDP port numbers, for example an audio path originating at a VoIP telephone and using a UDP port 12378 at its private IP address, may have be translated to a UDP port 23465 associated with the public IP address of the NAT device.
- the source IP/UDP address contained in the IP packet header will be 24.10.10.1:23465, whereas the source IP/UDP address information contained in the SIP message inside this IP packet will be 192.168.0.103:12378.
- the mismatch in the IP/UDP addresses may cause a problem for SIP-based VoIP systems because, for example, a supernode will attempt to send messages to a private address of a telephone but the messages will never get there.
- the Vancouver telephone/videophone in an attempt to make a call by the Vancouver telephone/videophone 12 to the Calgary telephone/videophone 15, the Vancouver telephone/videophone sends a SIP invite message to the Vancouver supernode 11 and in response, the call controller 14 sends an RC request message to the RC 16 which makes various enquiries of the database 18 to produce a routing message which is sent back to the call controller 14.
- the call controller 14 then communicates with the media relay 9 to cause a communications link including an audio path and a videophone (if a videopath call) to be established through the media relay to the same node, a different node or to a communications supplier gateway as shown generally at 20 to carry audio, and where applicable, video traffic to the call recipient or callee.
- the RC 16 executes a process to facilitate communication between callers and callees.
- the process involves, in response to initiation of a call by a calling subscriber, receiving a callee identifier from the calling subscriber, using call classification criteria associated with the calling subscriber to classify the call as a public network call or a private network call and producing a routing message identifying an address on the private network, associated with the callee when the call is classified as a private network call and producing a routing message identifying a gateway to the public network when the call is classified as a public network call.
- the telephone/videophone 12 includes a processor circuit shown generally at 30 comprising a microprocessor 32, program memory 34, an input/output (I/O) port 36, parameter memory 38 and temporary memory 40.
- the program memory 34, I/O port 36, parameter memory 38 and temporary memory 40 are all in communication with the microprocessor 32.
- the I/O port 36 has a dial input 42 for receiving a dialled telephone/videophone number from a keypad, for example, or from a voice recognition unit or from pre-stored telephone/videophone numbers stored in the parameter memory 38, for example.
- a box labelled dialling functions 44 represents any device capable of informing the microprocessor 32 of a callee identifier, e.g., a callee telephone/videophone number.
- the processor 32 stores the callee identifier in a dialled number buffer 45.
- the I/O port 36 also has a handset interface 46 for receiving and producing signals from and to a handset that the user may place to his ear.
- This interface 46 may include a BLUETOOTHTM wireless interface, a wired interface or speaker phone, for example.
- the handset acts as a termination point for an audio path (not shown) which will be appreciated later.
- the I/O port 36 also has an internet connection 48 which is preferably a high speed internet connection and is operable to connect the telephone/videophone to an internet service provider.
- the internet connection 48 also acts as a part of the voice path, as will be appreciated later. It will be appreciated that where the subscriber device is a videophone, a separate video path is established in the same way an audio path is established. For simplicity, the following description refers to a telephone call, but it is to be understood that a videophone call is handled similarly, with the call controller causing the media relay to facilitate both an audio path and a video path instead of only an audio path.
- the parameter memory 38 has a username field 50, a password field 52 an IP address field 53 and a SIP proxy address field 54, for example.
- the user name field 50 is operable to hold a user name, which in this case is 2001 1050 8667.
- the user name is assigned upon subscription or registration into the system and, in this embodiment, includes a twelve digit number having a continent code 61, a country code 63, a dealer code 70 and a unique number code 74.
- the continent code 61 is comprised of the first or left-most digit of the user name in this embodiment.
- the country code 63 is comprised of the next three digits.
- the dealer code 70 is comprised of the next four digits and the unique number code 74 is comprised of the last four digits.
- the password field 52 holds a password of up to 512 characters, in this example.
- the IP address field 53 stores an IP address of the telephone, which for this explanation is 192.168.0.20.
- the SIP proxy address field 54 holds an IP protocol compatible proxy address which may be provided to the telephone through the internet connection 48 as part of a registration procedure.
- the program memory 34 stores blocks of codes for directing the processor 32 to carry out the functions of the telephone, one of which includes a firewall block 56 which provides firewall functions to the telephone, to prevent access by unauthorized persons to the microprocessor 32 and memories 34, 38 and 40 through the internet connection 48.
- the program memory 34 also stores codes 57 for establishing a call ID.
- the call ID codes 57 direct the processor 32 to produce a call identifier having a format comprising a hexadecimal string at an IP address, the IP address being the IP address of the telephone.
- an exemplary call identifier might be [email protected].
- the microprocessor 32 in response to picking up the handset interface 46 and activating a dialling function 44, the microprocessor 32 produces and sends a SIP invite message as shown in Figure 3 , to the routing controller 16 shown in Figure 1 .
- This SIP invite message is essentially to initiate a call by a calling subscriber.
- the SIP invite message includes a caller ID field 60, a callee identifier field 62, a digest parameters field 64, a call ID field 65 an IP address field 67 and a caller UDP port field 69.
- the caller ID field 60 includes the user name 2001 10508667 that is the Vancouver user name stored in the user name field 50 of the parameter memory 38 in the telephone 12 shown in Figure 2 .
- the callee identifier field 62 includes a callee identifier which in this embodiment is the user name 2001 1050 2222 that is the dialled number of the Calgary subscriber stored in the dialled number buffer 45 shown in Figure 2 .
- the digest parameters field 64 includes digest parameters and the call ID field 65 includes a code comprising a generated prefix code (FF10) and a suffix which is the Internet Protocol (IP) address of the telephone 12 stored in the IP address field 53 of the telephone.
- the IP address field 67 holds the IP address assigned to the telephone, in this embodiment 192.168.0.20, and the caller UDP port field 69 includes a UDP port identifier identifying a UDP port at which the audio path will be terminated at the caller's telephone.
- the call controller circuit 100 includes a microprocessor 102, program memory 104 and an I/O port 106.
- the circuit 100 may include a plurality of microprocessors, a plurality of program memories and a plurality of I/O ports to be able to handle a large volume of calls.
- the call controller circuit 100 will be described as having only one microprocessor 102, program memory 104 and I/O port 106, it being understood that there may be more.
- the I/O port 106 includes an input 108 for receiving messages such as the SIP invite message shown in Figure 3 , from the telephone shown in Figure 2 .
- the I/O port 106 also has an RC request message output 110 for transmitting an RC request message to the RC 16 of Figure 1 , an RC message input 112 for receiving routing messages from the RC 16, a gateway output 114 for transmitting messages to one of the gateways 20 shown in Figure 1 to advise the gateway to establish an audio path, for example, and a gateway input 116 for receiving messages from the gateway.
- the I/O port 106 further includes a SIP output 118 for transmitting messages to the telephone 12 to advise the telephone of the IP addresses of the gateways which will establish the audio path.
- the I/O port 106 further includes a voicemail server input and output 117, 119 respectively for communicating with the voicemail server 19 shown in Figure 1 .
- the messages sent to the RC 16 and received from the RC 16 may be transmitted and received on the same single IP port.
- the program memory 104 includes blocks of code for directing the microprocessor 102 to carry out various functions of the call controller 14.
- these blocks of code include a first block 120 for causing the call controller circuit 100 to execute a SIP invite to RC request process to produce an RC request message in response to a received SIP invite message.
- block 122 of Figure 5 directs the call controller circuit 100 of Figure 4 to authenticate the user. This may be done, for example, by prompting the user for a password, by sending a message back to the telephone 12 which is interpreted at the telephone as a request for a password entry or the password may automatically be sent to the call controller 14 from the telephone, in response to the message.
- the call controller 14 may then make enquiries of databases to which it has access, to determine whether or not the user's password matches a password stored in the database.
- Various functions may be used to pass encryption keys or hash codes back and forth to ensure that the transmittal of passwords is secure.
- block 121 directs the call controller circuit 100 to determine whether or not the contents of the caller ID field 60 of the SIP invite message received from the telephone is an IP address. If it is an IP address, then block 123 directs the call controller circuit 100 to set the contents of a type field variable maintained by the microprocessor 102 to a code representing that the call type is a third party invite. If at block 121 the caller ID field contents do not identify an IP address, then block 125 directs the microprocessor to set the contents of the type field to a code indicating that the call is being made by a system subscriber.
- block 126 directs the call controller circuit to read the call identifier 65 provided in the SIP invite message from the telephone 12, and at block 128 the processor is directed to produce an RC request message that includes that call ID.
- Block 129 then directs the call controller circuit 100 to send the RC request to the RC 16.
- an RC request message is shown generally at 150 and includes a caller field 152, a callee field 154, a digest field 156, a call ID field 158 and a type field 160.
- the caller, callee, digest call ID fields 152, 154, 156 and 158 contain copies of the caller, callee, digest parameters and call ID fields 60, 62, 64 and 65 of the SIP invite message shown in Figure 3 .
- the type field 160 contains the type code established at blocks 123 or 125 of Figure 5 to indicate whether the call is from a third party or system subscriber, respectively.
- the caller identifier field may include a PSTN number or a system subscriber username as shown, for example.
- the RC 16 is shown in greater detail and includes an RC processor circuit shown generally at 200.
- the RC processor circuit 200 includes a processor 202, program memory 204, a table memory 206, buffer memory 207, and an I/O port 208, all in communication with the processor 202. (As earlier indicated, there may be a plurality of processor circuits (202), memories (204), etc..)
- the buffer memory 207 includes a caller id buffer 209 and a callee id buffer 211.
- the I/O port 208 includes a database request port 210 through which a request to the database (18 shown in Figure 1 ) can be made and includes a database response port 212 for receiving a reply from the database 18.
- the I/O port 208 further includes an RC request message input 214 for receiving the RC request message from the call controller (14 shown in Figure 1 ) and includes a routing message output 216 for sending a routing message back to the call controller 14.
- the I/O port 208 thus acts to receive caller identifier and a callee identifier contained in the RC request message from the call controller, the RC request message being received in response to initiation of a call by a calling subscriber.
- the program memory 204 includes blocks of codes for directing the processor 202 to carry out various functions of the RC (16).
- One of these blocks includes an RC request message handler 250 which directs the RC to produce a routing message in response to a received RC request message.
- the RC request message handler process is shown in greater detail at 250 in Figures 8A through 8D .
- the RC request message handler begins with a first block 252 that directs the RC processor circuit (200) to store the contents of the RC request message (150) in buffers in the buffer memory 207 of Figure 7 , one of which includes the caller ID buffer 209 of Figure 7 for separately storing the contents of the callee field 154 of the RC request message.
- Block 254 then directs the RC processor circuit to use the contents of the caller field 152 in the RC request message shown in Figure 6 , to locate and retrieve from the database 18 a record associating calling attributes with the calling subscriber.
- the located record may be referred to as a dialling profile for the caller.
- the retrieved dialling profile may then be stored in the buffer memory 207, for example.
- an exemplary data structure for a dialling profile is shown generally at 253 and includes a user name field 258, a domain field 260, and calling attributes comprising a national dialling digits (NDD) field 262, an international dialling digits (IDD) field 264, a country code field 266, a local area codes field 267, a caller minimum local length field 268, a caller maximum local length field 270, a reseller field 273, a maximum number of concurrent calls field 275 and a current number of concurrent calls field 277.
- NDD national dialling digits
- IDDD international dialling digits
- dialling profile is a record identifying calling attributes of the caller identified by the caller identifier. More generally, dialling profiles represent calling attributes of respective subscribers.
- An exemplary caller profile for the Vancouver subscriber is shown generally at 276 in Figure 10 and indicates that the user name field 258 includes the user name (2001 1050 8667) that has been assigned to the subscriber and is stored in the user name field 50 in the telephone as shown in Figure 2 .
- the domain field 260 includes a domain name as shown at 282, including a node type identifier 284, a location code identifier 286, a system provider identifier 288 and a domain portion 290.
- the domain field 260 effectively identifies a domain or node associated with the user identified by the contents of the user name field 258.
- the node type identifier 284 includes the code "sp" identifying a supernode and the location identifier 286 identifies the supernode as being in Vancouver (YVR).
- the system provider identifier 288 identifies the company supplying the service and the domain portion 290 identifies the "com" domain.
- the national dialled digit field 262 in this embodiment includes the digit "1" and, in general, includes a number specified by the International Telecommunications Union (ITU) Telecommunications Standardization Sector (ITU-T) E. 164 Recommendation which assigns national dialling digits to countries.
- ITU International Telecommunications Union
- ITU-T International Telecommunications Standardization Sector
- the international dialling digit field 264 includes a code also assigned according to the ITU-T according to the country or location of the user.
- the country code field 266 also includes the digit "1" and, in general, includes a number assigned according to the ITU-T to represent the country in which the user is located.
- the local area codes field 267 includes a list of area codes that have been assigned by the ITU-T to the geographical area in which the subscriber is located.
- the caller minimum and maximum local number length fields 268 and 270 hold numbers representing minimum and maximum local number lengths permitted in the area code(s) specified by the contents of the local area codes field 267.
- the reseller field 273 is optional and holds a code identifying a retailer of the services, in this embodiment "Klondike".
- the maximum number of concurrent calls field 275 holds a code identifying the maximum number of concurrent calls that the user is entitled to cause to concurrently exist. This permits more than one call to occur concurrently while all calls for the user are billed to the same account.
- the current number of concurrent calls field 277 is initially 0 and is incremented each time a concurrent call associated with the user is initiated and is decremented when a concurrent call is terminated.
- the area codes associated with the user are the area codes associated with the location code identifier 286 of the contents of the domain field 260.
- a dialling profile of the type shown in Figure 9 is produced whenever a user registers with the system or agrees to become a subscriber to the system.
- a user wishing to subscribe to the system may contact an office maintained by a system operator and personnel in the office may ask the user certain questions about his location and service preferences, whereupon tables can be used to provide office personnel with appropriate information to be entered into the user name 258, domain 260, NDD 262, IDD 264, country code 266, local area codes 267, caller minimum and maximum local length fields 268 and 270 reseller field 273 and concurrent call fields 275 and 277 to establish a dialling profile for the user.
- a direct-in-dial (DID) record of the type shown at 278 in Figure 13 is added to a direct-in-dial bank table in the database (18 in Figure 1 ) to associate the username and a host name of the supernode with which the user is associated, with an E.164 number associated with the user on the PSTN network.
- DID direct-in-dial
- An exemplary DID table record entry for the Calgary callee is shown generally at 300 in Figure 14 .
- the user name field 281 and user domain field 272 are analogous to the user name and user domain fields 258 and 260 of the caller dialling profile shown in Figure 10 .
- the contents of the DID field 274 include a E.164 public telephone number including a country code 283, an area code 285, an exchange code 287 and a number 289. If the user has multiple telephone numbers, then multiple records of the type shown at 300 would be included in the DID bank table, each having the same user name and user domain, but different DID field 274 contents reflecting the different telephone numbers associated with that user.
- call blocking records of the type shown in Figure 26 may be added to the database 18 when a new subscriber is added to the system.
- call forwarding records of the type shown in Figure 28 may be added to the database 18 when a new subscriber is added to the system.
- the RC processor circuit 200 is directed to block 256 which directs the processor circuit (200) to determine whether the contents of the concurrent call field 277 are less than the contents of the maximum concurrent call field 275 of the dialling profile for the caller and, if so, block 271 directs the processor circuit to increment the contents of the concurrent call field 277.
- block 259 directs the processor circuit 200 to send an error message back to the call controller (14) to cause the call controller to notify the caller that the maximum number of concurrent calls has been reached and no further calls can exist concurrently, including the presently requested call.
- the RC processor circuit 200 is directed to perform certain checks on the callee identifier provided by the contents of the callee field 154 in Figure 6 , of the RC request message 150. These checks are shown in greater detail in Figure 8B .
- the processor (202 in Figure 7 ) is directed to a first block 257 that causes it to determine whether a digit pattern of the callee identifier (154) provided in the RC request message (150) includes a pattern that matches the contents of the international dialling digits (IDD) field 264 in the caller profile shown in Figure 10 .
- block 259 directs the processor (202) to set a call type code identifier variable maintained by the processor to indicate that the call is an international call and block 261 directs the processor to produce a reformatted callee identifier by reformatting the callee identifier into a predefined digit format. In this embodiment, this is done by removing the pattern of digits matching the IDD field contents 264 of the caller dialling profile to effectively shorten the callee identifier. Then, block 263 directs the processor 202 to determine whether or not the callee identifier has a length which meets criteria establishing it as a number compliant with the E.164 Standard set by the ITU.
- block 265 directs the processor 202 to send back to the call controller (14) a message indicating the length is not correct. The process is then ended.
- routines (not shown) stored in the program memory 104 may direct the processor (102 of Figure 4 ) to respond to the incorrect length message by transmitting a message back to the telephone (12 shown in Figure 1 ) to indicate that an invalid number has been dialled.
- block 269 directs the processor (202 of Figure 7 ) to make a database request to determine whether or not the amended callee identifier is found in a record in the direct-in-dial bank (DID) table.
- DID direct-in-dial bank
- the processor 202 receives a response from the database indicating that the reformatted callee identifier produced at block 261 is found in a record in the DID bank table, then the callee is a subscriber to the system and the call is classified as a private network call by directing the processor to block 279 which directs the processor to copy the contents of the corresponding user name field (281 in Figure 14 ) from the callee DID bank table record (300 in Figure 14 ) into the callee ID buffer (211 in Figure 7 ). Thus, the processor 202 locates a subscriber user name associated with the reformatted callee identifier. The processor 202 is then directed to point B in Figure 8A .
- block 280 directs the processor (202 of Figure 7 ) to execute a process to determine whether or not the node associated with the reformatted callee identifier is the same node that is associated with the caller identifier. To do this, the processor 202 determines whether or not a prefix (e.g., continent code 61) of the callee name held in the callee ID buffer (211 in Figure 7 ), is the same as the corresponding prefix of the caller name held in the username field 258 of the caller dialling profile shown in Figure 10 .
- a prefix e.g., continent code 61
- block 302 in Figure 8A directs the processor (202 in Figure 7 ) to set a call type flag in the buffer memory (207 in Figure 7 ) to indicate the call is a cross-domain call. Then, block 350 of Figure 8A directs the processor (202 of Figure 7 ) to produce a routing message identifying an address on the private network with which the callee identified by the contents of the callee ID buffer is associated and to set a time to live for the call at a maximum value of 99999, for example.
- the routing message includes a caller identifier, a call identifier set according to a username associated with the located DID bank table record and includes an identifier of a node on the private network with which the callee is associated.
- the node in the system with which the callee is associated is determined by using the callee identifier to address a supernode table having records of the type as shown at 370 in Figure 17 .
- Each record 370 has a prefix field 372 and a supernode address field 374.
- the supernode address field 374 holds a code representing the IP address or a fully qualified domain name of the node associated with the code stored in the callee identifier prefix field 372. Referring to Figure 18 , for example, if the prefix is 20, the supernode address associated with that prefix is sp.yvr.digifonica.com.
- a generic routing message is shown generally at 352 and includes an optional supplier prefix field 354, and optional delimiter field 356, a callee user name field 358, at least one route field 360, a time to live field 362 and other fields 364.
- the optional supplier prefix field 354 holds a code for identifying supplier traffic.
- the optional delimiter field 356 holds a symbol that delimits the supplier prefix code from the callee user name field 358. In this embodiment, the symbol is a number sign (#).
- the route field 360 holds a domain name or IP address of a gateway or node that is to carry the call
- the time to live field 362 holds a value representing the number of seconds the call is permitted to be active, based on subscriber available minutes and other billing parameters.
- FIG. 8A and Figure 16 an example of a routing message produced by the processor at block 350 for a caller associated with a different node than the caller is shown generally at 366 and includes only a callee field 359, a route field 361 and a time to live field 362.
- block 381 directs the processor (202 of Figure 7 ) to send the routing message shown in Figure 16 to the call controller 14 shown in Figure 1 .
- block 380 directs the processor (202) to determine whether or not the callee identifier begins with the same national dial digit code as assigned to the caller. To do this, the processor (202) is directed to refer to the retrieved caller dialling profile as shown in Figure 10 . In Figure 10 , the national dialling digit code 262 is the number 1. Thus, if the callee identifier begins with the number 1, then the processor (202) is directed to block 382 in Figure 8B .
- Block 382 directs the processor (202 of Figure 7 ) to examine the callee identifier to determine whether or not the digits following the NDD digit identify an area code that is the same as any of the area codes identified in the local area codes field 267 of the caller dialling profile 276 shown in Figure 10 . If not, block 384 of Figure 8B directs the processor 202 to set the call type flag to indicate that the call is a national call. If the digits following the NDD digit identify an area code that is the same as a local area code associated with the caller as indicated by the caller dialling profile, block 386 directs the processor 202 to set the call type flag to indicate a local call, national style.
- block 388 directs the processor 202 to format the callee identifier into a pre-defined digit format to produce a re-formatted callee identifier by removing the national dialled digit and prepending a caller country code identified by the country code field 266 of the caller dialling profile shown in Figure 10 .
- the processor (202) is then directed to block 263 of Figure 8B to perform other processing as already described above.
- block 390 directs the processor (202) to determine whether the callee identifier begins with digits that identify the same area code as the caller. Again, the reference for this is the retrieved caller dialling profile shown in Figure 10 .
- the processor (202) determines whether or not the first few digits of the callee identifier identify an area code corresponding to the local area code field 267 of the retrieved caller dialling profile.
- block 392 directs the processor 202 to set the call type flag to indicate that the call is a local call and block 394 directs the processor (202) to format the callee identifier into a pre-defined digit format to produce a reformatted callee identifier by prepending the caller country code to the callee identifier, the caller country code being determined from the country code field 266 of the retrieved caller dialling profile shown in Figure 10 .
- the processor (202) is then directed to block 263 for further processing as described above.
- block 396 directs the processor (202 of Figure 7 ) to determine whether the number of digits in the callee identifier, i.e. the length of the callee identifier, is within the range of digits indicated by the caller minimum local number length field 268 and the caller maximum local number length field 270 of the retrieved caller dialling profile shown in Figure 10 .
- block 398 directs the processor (202) to set the call type flag to indicate a local call and block 400 directs the processor (202) to format the callee identifier into a pre-defined digit format to produce a reformatted callee identifier by prepending to the callee identifier the caller country code (as indicated by the country code field 266 of the retrieved caller dialling profile shown in Figure 10 ) followed by the caller area code (as indicated by the local area code field 267 of the caller profile shown in Figure 10 ).
- the processor (202) is then directed to block 263 of Figure 8B for further processing as described above.
- block 402 directs the processor 202 of Figure 7 to determine whether or not the callee identifier identifies a valid user name. To do this, the processor 202 searches through the database (18 of Figure 10 of dialling profiles to find a dialling profile having user name field contents (258 in Figure 10 ) that match the callee identifier. If no match is found, block 404 directs the processor (202) to send an error message back to the call controller (14).
- block 406 directs the processor 202 to set the call type flag to indicate that the call is a private network call and then the processor is directed to block 280 of Figure 8A .
- the call is classified as a private network call when the callee identifier identifies a subscriber to the private network.
- Block 269 in Figure 8B This enables block 269 in Figure 8B to have a consistent format of callee identifiers for use in searching through the DID bank table records of the type shown in Figure 13 to determine how to route calls for subscriber to subscriber calls on the same system. Effectively, therefore blocks 257, 380, 390, 396 and 402 establish call classification criteria for classifying the call as a public network call or a private network call.
- Block 269 classifies the call, depending on whether or not the formatted callee identifier has a DID bank table record and this depends on how the call classification criteria are met and block 402 directs the processor 202 of Figure 7 to classify the call as a private network call when the callee identifier complies with a pre-defined format, i.e. is a valid user name and identifies a subscriber to the private network, after the callee identifier has been subjected to the classification criteria of blocks 257, 380, 390 and 396.
- block 410 of Figure 8B directs the processor (202) to search a database of route or master list records associating route identifiers with dialling codes shown in Figure 19 to locate a router having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- Each master list record includes a master list ID field 500, a dialling code field 502, a country code field 504, a national sign number field 506, a minimum length field 508, a maximum length field 510, a national dialled digit field 512, an international dialled digit field 514 and a buffer rate field 516.
- the master list ID field 500 holds a unique code such as 1019, for example, identifying the record.
- the dialling code field 502 holds a predetermined number pattern that the processor 202 of Figure 7 uses at block 410 in Figure 8B to find the master list record having a dialling code matching the first few digits of the amended callee identifier stored in the callee id buffer 211.
- the country code field 504 holds a number representing the country code associated with the record and the national sign number field 506 holds a number representing the area code associated with the record.
- the dialling code is a combination of the contents of the country code field 504 and the national sign number field 506.
- the minimum length field 508 holds a number representing the minimum length of digits associated with the record and the maximum length field 51 holds a number representing the maximum number of digits in a number with which the record may be compared.
- the national dialled digit (NDD) field 512 holds a number representing an access code used to make a call within the country specified by the country code
- the international dialled digit (IDD) field 514 holds a number representing the international prefix needed to dial a call from the country indicated by the country code.
- a master list record may have a format as shown in Figure 20 with exemplary field contents as shown.
- block 410 directs the processor 202 of Figure 7 to find a master list record such as the one shown in Figure 20 having a dialling code that matches the country code (1) and area code (604) of the callee identifier.
- the processor (202) would find a master list record having an ID field containing the number 1019. This number may be referred to as a route ID.
- a route ID number is found in the master list record associated with a predetermined number pattern in the reformatted callee identifier.
- block 412 directs the processor 202 of Figure 7 to use the route ID number to search a database of supplier records associating supplier identifiers with route identifiers to locate at least one supplier record associated with the route identifier to identify at least one supplier operable to supply a communications link for the route.
- Supplier list records include a supplier ID field 540, a master list ID field 542, an optional prefix field 544, a specific route identifier field 546, a NDD/IDD rewrite field 548, a rate field 550, and a timeout field 551.
- the supplier ID field 540 holds a code identifying the name of the supplier and the master list ID field 542 holds a code for associating the supplier record with a master list record.
- the prefix field 544 holds a string used to identify the supplier traffic and the specific route identifier field 546 holds an IP address of a gateway operated by the supplier indicated by the supplier ID field 540.
- the NDD/IDD rewrite field 548 holds a code representing a rewritten value of the NDD/IDD associated with this route for this supplier
- the rate field 550 holds a code indicating the cost per second to the system operator to use the route provided by the gateway specified by the contents of the route identifier field 546.
- the timeout field 551 holds a code indicating a time that the call controller should wait for a response from the associated gateway before giving up and trying the next gateway. This time value may be in seconds, for example.
- Exemplary supplier records are shown in Figures 22, 23 and 24 for the exemplary suppliers shown at 20 in Figure 1 , namely Telus, Shaw and Sprint.
- the processor 202 finds all supplier records that identify the master list ID found at block 410 of Figure 8B .
- block 560 directs the processor 202 of Figure 7 to begin to produce a routing message of the type shown in Figure 15 .
- the processor 202 loads a routing message buffer as shown in Figure 25 with a supplier prefix of the least costly supplier where the least costly supplier is determined from the rate fields 550 of Figure 21 of the records associated with respective suppliers.
- the supplier "Telus" has the lowest number in the rate field 550 and therefore the prefix 4973 associated with that supplier is loaded into the routing message buffer shown in Figure 25 first.
- Block 562 in Figure 8D directs the processor to delimit the prefix 4973 by the number sign (#) and to next load the reformatted callee identifier into the routing message buffer shown in Figure 25 .
- the contents of the route identifier field 546 of Figure 21 of the record associated with the supplier "Telus" are added by the processor 202 of Figure 7 to the routing message buffer shown in Figure 25 after an @ sign delimiter, and then block 564 in Figure 8D directs the processor to get a time to live value, which in one embodiment may be 3600 seconds, for example.
- Block 566 then directs the processor 202 to load this time to live value and the timeout value (551) in Figure 21 in the routing message buffer of Figure 25 . Accordingly, a first part of the routing message for the Telus gateway is shown generally at 570 in Figure 25 .
- block 571 directs the processor 202 back to block 560 and causes it to repeat blocks 560, 562, 563, 564 and 566 for each successive supplier until the routing message buffer is loaded with information pertaining to each supplier identified by the processor at block 412.
- a second portion of the routing message as shown at 572 in Figure 25 relates to the second supplier identified by the record shown in Figure 23 .
- the routing message buffer holds a routing message identifying a plurality of different suppliers able to provide gateways to the public telephone network (i.e. specific routes) to establish at least part of a communication link through which the caller may contact the callee.
- each of the suppliers is identified, in succession, according to rate.
- Other criteria for determining the order in which suppliers are listed in the routing message may include preferred supplier priorities which may be established based on service agreements, for example.
- block 568 directs the processor 202 of Figure 7 to send the routing message shown in Figure 25 to the call controller 14 in Figure 1 .
- block 600 directs the processor 202 to use the callee identifier in the callee id buffer 211 to locate and retrieve a dialling profile for the callee.
- the dialling profile may be of the type shown in Figure 11 or 12 , for example.
- Block 602 of Figure 8A then directs the processor 202 of Figure 7 to get call block, call forward and voicemail records from the database 18 of Figure 1 based on the user name identified in the callee dialling profile retrieved by the processor at block 600.
- Call block, call forward and voicemail records may be as shown in Figures 26, 27, 28 and 30 for example.
- the call block records include a user name field 604 and a block pattern field 606.
- the user name field holds a user name corresponding to the user name in the user name field (258 in Figure 10 ) of the callee profile and the block pattern field 606 holds one or more E.164-compatible numbers or user names identifying PSTN numbers or system subscribers from whom the subscriber identified in the user name field 604 does not wish to receive calls.
- block 608 directs the processor 202 of Figure 7 to determine whether or not the caller identifier received in the RC request message matches a block pattern stored in the block pattern field 606 of the call block record associated with the callee identified by the contents of the user name field 604 in Figure 26 . If the caller identifier matches a block pattern, block 610 directs the processor to send a drop call or non-completion message to the call controller (14) and the process is ended.
- block 609 directs the processor to store the username and domain of the callee, as determined from the callee dialling profile, and a time to live value in the routing message buffer as shown at 650 in Figure 32 .
- block 612 then directs the processor 202 to determine whether or not call forwarding is required.
- the call forwarding records include a user name field 614, a destination number field 616, and a sequence number field 618.
- the user name field 614 stores a code representing a user with which the record is associated.
- the destination number field 616 holds a user name representing a number to which the current call should be forwarded, and the sequence number field 618 holds an integer number indicating the order in which the user name associated with the corresponding destination number field 616 should be attempted for call forwarding.
- the call forwarding table may have a plurality of records for a given user.
- the processor 202 of Figure 7 uses the contents of the sequence number field 618 to place the records for a given user in order. As will be appreciated below, this enables the call forwarding numbers to be tried in an ordered sequence.
- the call forwarding record for the callee identified by the callee identifier contains no contents in the destination number field 616 and accordingly no contents in the sequence number field 618, there are no call forwarding entries for this callee, and the processor 202 is directed to block 620 in Figure 8C . If there are entries in the call forwarding table 27, block 622 in Figure 8A directs the processor 202 to search the dialling profile table to find a dialling profile record as shown in Figure 9 , for the user identified by the destination number field 616 of the call forward record shown in Figure 28 .
- the processor 202 of Figure 7 is further directed to store the username and domain for that user and a time to live value in the routing message buffer as shown at 652 in Figure 32 , to produce a routing message as illustrated. This process is repeated for each call forwarding record associated with the callee identified by the callee id buffer 211 in Figure 7 to add to the routing message buffer all call forwarding usernames and domains associated with the callee.
- the processor 202 is directed to determine whether or not the user identified by the callee identifier has paid for voicemail service. This is done by checking to see whether or not a flag is set in a voicemail record of the type shown in Figure 30 in a voicemail table stored in the database 18 shown in Figure 1 .
- voicemail records in this embodiment may include a user name field 624, a voicemail server field 626, a seconds to voicemail field 628 and an enable field 630.
- the user name field 624 stores the user name of the callee.
- the voicemail server field 626 holds a code identifying a domain name of a voicemail server associated with the user identified by the user name field 624.
- the seconds to voicemail field 628 holds a code identifying the time to wait before engaging voicemail
- the enable field 630 holds a code representing whether or not voicemail is enabled for the user.
- Block 620 if the processor 202 of Figure 7 finds a voicemail record as shown in Figure 30 having user name field 624 contents matching the callee identifier, the processor is directed to examine the contents of the enabled field 630 to determine whether or not voicemail is enabled. If voicemail is enabled, then block 640 in Figure 8C directs the processor 202 to Figure 7 to store the contents of the voicemail server field 626 and the contents of the seconds to voicemail field 628 in the routing message buffer, as shown at 654 in Figure 32 . Block 642 then directs the processor 202 to get time to live values for each path specified by the routing message according to the cost of routing and the user's balance. These time to live values are then appended to corresponding paths already stored in the routing message buffer.
- block 644 then directs the processor 202 of Figure 7 to store the IP address of the current node in the routing message buffer as shown at 656 in Figure 32 .
- Block 646 then directs the processor 202 to send the routing message shown in Figure 32 to the call controller 14 in Figure 1 .
- the routing controller will produce a routing message that will cause at least one of the following: forward the call to another party, block the call and direct the caller to a voicemail server.
- the routing message whether of the type shown in Figures 16 , 25 or 32 , is received at the call controller 14 and the call controller interprets the receipt of the routing message as a request to establish a call.
- the program memory 104 of the call controller 14 includes a routing to gateway routine depicted generally at 122.
- routing to gateway routine 122 shown in Figure 4 may direct the processor 102 cause a message to be sent back through the internet 13 shown in Figure 1 to the callee telephone 15, knowing the IP address of the callee telephone 15 from the user name.
- the call controller may send a SIP invite message along the high speed backbone 17 connected to the other node.
- the other node functions as explained above, in response to receipt of a SIP invite message.
- the call controller sends a SIP invite message to the first supplier, in this case Telus, using a dedicated line or an internet connection to determine whether or not Telus is able to handle the call. If the Telus gateway returns a message indicating it is not able to handle the call, the call controller 14 then proceeds to send a SIP invite message to the next supplier, in this case Shaw. The process is repeated until one of the suppliers responds indicating that it is available to carry the call. Once a supplier responds indicating that it is able to carry the call, the supplier sends back to the call controller 14 an IP address for a gateway provided by the supplier through which the call or audio path of the call will be carried.
- a SIP invite message to the first supplier, in this case Telus, using a dedicated line or an internet connection to determine whether or not Telus is able to handle the call. If the Telus gateway returns a message indicating it is not able to handle the call, the call controller 14 then proceeds to send a SIP invite message to the next supplier, in this case Shaw.
- This IP address is sent in a message from the call controller 14 to the media relay 9 which responds with a message indicating an IP address to which the caller telephone should send its audio/video, traffic and an IP address to which the gateway should send its audio/video for the call.
- the call controller conveys the IP address at which the media relay expects to receive audio/video from the caller telephone, to the caller telephone 12 in a message.
- the caller telephone replies to the call controller with an IP address at which it would like to receive audio/video and the call controller conveys that IP address to the media relay.
- the call may then be conducted between the caller and callee through the media relay and gateway.
- the call controller 14 if the call controller 14 receives a routing message of the type shown in Figure 32 , and which has at least one call forwarding number and/or a voicemail number, the call controller attempts to establish a call to the callee telephone 15 by seeking from the callee telephone a message indicating an IP address to which the media relay should send audio/video. If no such message is received from the callee telephone, no call is established. If no call is established within a pre-determined time, the call controller 14 attempts to establish a call with the next user identified in the call routing message in the same manner.
- the call controller communicates with the voicemail server 19 identified in the routing message to obtain an IP address to which the media relay should send audio/video and the remainder of the process mentioned above for establishing IP addresses at the media relay 9 and the caller telephone is carried out to establish audio/video paths to allowing the caller to leave a voicemail message with the voicemail server.
- a call timer maintained by the call controller 14 logs the start date and time of the call and logs the call ID and an identification of the route (i.e., audio/video path IP address) for later use in billing.
- a process for determining a time to live value for any of blocks 642 in Figure 8C , 350 in Figure 8A or 564 in Figure 8D above is described.
- the process is executed by the processor 202 shown in Figure 7 .
- the process involves calculating a cost per unit time, calculating a first time value as a sum of a free time attributed to a participant in the communication session and the quotient of a funds balance held by the participant to the cost per unit time value and producing a second time value in response to the first time value and a billing pattern associated with the participant, the billing pattern including first and second billing intervals and the second time value being the time to permit a communication session to be conducted.
- the process begins with a first block 700 that directs the RC processor to determine whether or not the call type set at block 302 in Figure 8A indicates the call is a network or cross-domain call. If the call is a network or cross-domain call, block 702 of Figure 33A directs the RC processor to set the time to live equal to 99999 and the process is ended. Thus, the network or cross-domain call type has a long time to live. If at block 700 the call type is determined not to be a network or cross-domain type, block 704 directs the RC processor to get a subscriber bundle table record from the database 18 in Figure 1 and store it locally in the subscriber bundle record buffer at the RC 14.
- a subscriber bundle table record is shown generally at 706.
- the record includes a user name field 708 and a services field 710.
- the user name field 708 holds a code identifying the subscriber user name and the services field 710 holds codes identifying service features assigned to the subscriber, such as free local calling, call blocking and voicemail, for example.
- Figure 35 shows an exemplary subscriber bundle record for the Vancouver caller.
- the user name field 708 is loaded with the user name 2001 1050 8667 and the services field 710 is loaded with codes 10, 14 and 16 corresponding to free local calling, call blocking and voicemail, respectively.
- user 2001 1050 8667 has free local calling, call blocking and voicemail features.
- block 712 directs the RC processor to search the database (18) determine whether or not there is a bundle override table record for the master list ID value that was determined at block 410 in Figure 8B .
- An exemplary bundle override table record is shown at 714 in Figure 36 .
- the bundle table record includes a master list ID field 716, an override type field 718, an override value field 720 a first interval field 722 and a second interval field 724.
- the master list ID field 716 holds a master list ID code.
- the override type field 718 holds an override type code indicating a fixed, percent or cent amount to indicate the amount by which a fee will be increased.
- the override value field 720 holds a real number representing the value of the override type.
- the first interval field 722 holds a value indicating the minimum number of seconds for a first level of charging and the second interval field 724 holds a number representing a second level of charging.
- a bundle override record for the located master list ID code is shown generally at 726 and includes a master list ID field 716 holding the code 1019 which was the code located in block 410 of Figure 8B .
- the override type field 718 includes a code indicating the override type is a percentage value and the override value field 720 holds the value 10.0 indicating that the override will be 10.0% of the charged value.
- the first interval field 722 holds a value representing 30 seconds and the second interval field 724 holds a value representing 6 seconds.
- the 30 second value in the first interval field 722 indicates that charges for the route will be made at a first rate for 30 seconds and thereafter the charges will be made at a different rate in increments of 6 seconds, as indicated by the contents of the second interval field 724.
- block 728 directs the processor to store the bundle override record in local memory.
- the bundle override record shown in Figure 37 is stored in the bundle override record buffer at the RC as shown in Figure 7 .
- block 730 then directs the RC processor to determine whether or not the subscriber bundle table record 706 in Figure 35 has a services field including a code identifying that the user is entitled to free local calling and also directs the processor to determine whether or not the call type is not a cross domain cell, i.e. it is a local or local/national style.
- block 732 directs the processor to set the time to live equal to 99999, giving the user a long period of time for the call. The process is then ended. If the conditions associated with block 730 are not satisfied, block 734 of Figure 33B directs the RC processor to retrieve a subscriber account record associated with a participant in the call. This is done by copying and storing in the subscriber account record buffer a subscriber account record for the caller.
- an exemplary subscriber account table record is shown generally at 736.
- the record includes a user name field 738, a funds balance field 740 and a free time field 742.
- the user name field 738 holds a subscriber user name
- the funds balance field 740 holds a real number representing the dollar value of credit available to the subscriber
- the free time field 742 holds an integer representing the number of free seconds that the user is entitled to.
- An exemplary subscriber account record for the Vancouver caller is shown generally at 744 in Figure 39 , wherein the user name field 738 holds the user name 2001 1050 8667, the funds balance field 740 holds the value $10.00, and the free time field 742 holds the value 100.
- the funds balance field holding the value of $10.00 indicates the user has $10.00 worth of credit and the free time field having the value of 100 indicates that the user has a balance of 100 free seconds of call time.
- block 746 directs the processor to determine whether or not the subscriber account record funds balance field 740 or free time field 742 are greater than zero. If they are not greater than zero, block 748 directs the processor to set the time to live equal to zero and the process is ended. The RC then sends a message back to the call controller to cause the call controller to deny the call to the caller. If the conditions associated with block 746 are satisfied, block 750 directs the processor to calculate the call cost per unit time. A procedure for calculating the call cost per unit time is described below in connection with Figure 41 .
- block 752 directs the processor 202 in Figure 7 to determine whether or not the cost per second is equal to zero. If so, block 754 directs the processor to set the time to live to 99999 to give the caller a very long length of call and the process is ended.
- block 756 directs the processor 202 in Figure 7 to calculate a first time to live value as a sum of a free time attributed to the participant in the communication session and the quotient of the funds balance held by the participant to the cost per unit time value.
- the processor 202 of Figure 7 is directed to set a first time value or temporary time to live value equal to the sum of the free time provided in the free time field 742 of the subscriber account record shown in Figure 39 and the quotient of the contents of the funds balance field 740 in the subscriber account record for the call shown in Figure 39 and the cost per second determined at block 750 of Figure 33B .
- the cost per second is determined to be three cents per second and the funds balance field holds the value $10.00
- the quotient of the funds balance and cost per second is 333 seconds and this is added to the contents of the free time field 742, which is 100, resulting in a time to live of 433 seconds.
- Block 758 then directs the RC processor to produce a second time value in response to the first time value and the billing pattern associated with the participant as established by the bundle override record shown in Figure 37 .
- This process is shown in greater detail at 760 in Figure 40 and generally involves producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between the first time value and the first billing interval.
- the process for producing the second time value begins with a first block 762 that directs the processor 202 in Figure 7 to set a remainder value equal to the difference between the time to live value calculated at block 756 in Figure 33B and the contents of the first interval field 722 of the record shown in Figure 37 , multiplied by the modulus of the contents of the second interval field 724 of Figure 37 .
- the difference between the time to live field and the first interval field is 433 minus 30, which is 403 and therefore the remainder produced by the mod of 403 divided by 6 is 0.17.
- Block 764 then directs the processor to determine whether or not this remainder value is greater than zero and, if so, block 766 directs the processor to subtract the remainder from the first time value and set the difference as the second time value. To do this the processor is directed to set the time to live value equal to the current time to live of 403 minus the remainder of 1, i.e., 402 seconds. The processor is then returned back to block 758 of Figure 33B . Referring back to Figure 40 , if at block 764 the remainder is not greater than zero, block 768 directs the processor 202 of Figure 7 to determine whether or not the time to live is less than the contents of the first interval field 722 in the record shown in Figure 37 .
- block 770 of Figure 40 directs the processor to set the time to live equal to zero.
- the second time value is set to zero when the remainder is greater than zero and the first time value is less than the free time associated with the participant in the call. If at block 768 the conditions of that block are not satisfied, the processor returns the first time to live value as the second time to live value.
- block 772 directs the processor to set the time to live value for use in blocks 342, 350 or 564.
- a process for calculating a cost per unit time is shown generally at 780.
- the process is executed by the processor 202 in Figure 7 and generally involves locating a record in a database, the record comprising a markup type indicator, a markup value and a billing pattern and setting a reseller rate equal to the sum of the markup value and the buffer rate, locating at least one of an override record specifying a route cost per unit time amount associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session and a default operator markup record specifying a default cost per unit time and setting as the cost per unit time the sum of the reseller rate and at least one of the route cost per unit time, the reseller cost per unit time and the default cost per unit time.
- Block 782 directs the processor to address the database 18 to look for a record associated with a reseller and a route with the reseller by looking for a special rate record based on the master list ID established at block 410 in Figure 8C .
- a system operator special rate table record is shown generally at 784.
- the record includes a reseller field 786, a master list ID field 788, a mark-up type field 790, a mark-up value field 792, a first interval field 794 and a second interval field 796.
- the reseller field 786 holds a reseller ID code and the master list ID field 788 holds a master list ID code.
- the mark-up type field 790 holds a mark-up type such as fixed percent or cents and the mark-up value field 792 holds a real number representing the value corresponding to the mark-up type.
- the first interval field 794 holds a number representing a first level of charging and the second interval field 796 holds a number representing a second level of charging.
- FIG. 43 An exemplary system operator special rate table for a reseller known as "Klondike" is shown at 798 in Figure 43 .
- the reseller field 786 holds a code indicating the retailer ID is Klondike
- the master list ID field 788 holds the code 1019 to associate the record with the master list ID code 1019.
- the mark-up type field 790 holds a code indicating the mark-up type is cents and the mark-up value field 792 holds a mark-up value indicating 1/10 of one cent.
- the first interval field 794 holds the value 30 and the second interval field 796 holds the value 6, these two fields indicating that the operator allows 30 seconds for free and then billing is done in increments of 6 seconds after that.
- block 802 directs the processor to address the database 18 to look in a system operator mark-up table for a mark-up record associated with the reseller.
- an exemplary system operator mark-up table record is shown generally at 804.
- the record includes a reseller field 806, a mark-up type field 808, a mark-up value field 810, a first interval field 812 and a second interval field 814.
- the reseller mark-up type, mark-up value, first interval and second interval fields are as described in connection with the fields by the same names in the system operator special rates table shown in Figure 42 .
- Figure 45 provides an exemplary system operator mark-up table record for the reseller known as Klondike and therefore the reseller field 806 holds the value "Klondike", the mark-up type field 808 holds the value cents, the markup value field holds the value 0.01, the first interval field 812 holds the value 30 and the second interval field 814 holds the value 6. This indicates that the reseller "Klondike" charges by the cent at a rate of one cent per minute. The first 30 seconds of the call are free and billing is charged at the rate of one cent per minute in increments of 6 seconds.
- Figure 46 provides an exemplary system operator mark-up table record for cases where no specific system operator mark-up table record exists for a particular reseller, i.e., a default reseller mark-up record.
- This record is similar to the record shown in Figure 45 and the reseller field 806 holds the value "all", the mark-up type field 808 is loaded with a code indicating mark-up is based on a percentage, the mark-up value field 810 holds the percentage by which the cost is marked up, and the first and second interval fields 812 and 814 identify first and second billing levels.
- block 820 directs the processor to get the mark-up record shown in Figure 46 , having the "all" code in the reseller field 806. The processor is then directed to block 800.
- the processor 202 of Figure 7 is directed to set a reseller rate equal to the sum of the mark-up value of the record located by blocks 782, 802 or 820 and the buffer rate specified by the contents of the buffer rate field 516 of the master list record shown in Figure 20 .
- the RC processor sets a variable entitled "reseller cost per second" to a value equal to the sum of the contents of the mark-up value field (792, 810) of the associated record, plus the contents of the buffer rate field (516) from the master list record associated with the master list ID.
- block 822 directs the processor to set a system operator cost per second variable equal to the contents of the buffer rate field (516) from the master list record.
- Block 824 then directs the processor to determine whether the call type flag indicates the call is local or national/local style and whether the caller has free local calling. If both these conditions are met, then block 826 sets the user cost per second variable equal to zero and sets two increment variables equal to one, for use in later processing. The cost per second has thus been calculated and the process shown in Figure 41 is ended.
- the processor 202 of Figure 7 is directed to locate at least one of a bundle override table record specifying a route cost per unit time associated with a route associated with the communication session, a reseller special destinations table record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session and a default reseller global markup record specifying a default cost per unit time.
- a bundle override table record specifying a route cost per unit time associated with a route associated with the communication session
- a reseller special destinations table record associated with a reseller of the communications session the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session
- a default reseller global markup record specifying a default cost per unit time.
- block 830 directs the processor to find a reseller special destinations table record in a reseller special destinations table in the database (18), having a master list ID code equal to the master list ID code of the master list ID that was determined at block 410 in Figure 8B .
- An exemplary reseller special destinations table record is shown in Figure 47 at 832.
- the reseller special destinations table record includes a reseller field 834, a master list ID field 836, a mark-up type field 838, a mark-up value field 840, a first interval field 842 and a second interval field 844.
- This record has the same format as the system operator special rates table record shown in Figure 42 , but is stored in a different table to allow for different mark-up types and values and time intervals to be set according to resellers' preferences.
- an exemplary reseller special destinations table record for the reseller "Klondike” is shown at 846 in Figure 48 .
- the reseller field 834 holds a value indicating the reseller as the reseller "Klondike” and the master list ID field holds the code 1019.
- the markup type field 838 holds a code indicating the mark-up type is percent and the mark-up value field 840 holds a number representing the mark-up value as 5%.
- the first and second interval fields identify different billing levels used as described earlier.
- the record shown in Figure 48 may be located at block 830, for example. If at block 830 such a record is not found, then block 832 directs the processor to get a default operator global mark-up record based on the reseller ID.
- an exemplary default reseller global mark-up table record is shown generally at 848.
- This record includes a reseller field 850, a mark-up type field 852, a mark-up value field 854, a first interval field 856 and a second interval field 858.
- the reseller field 850 holds a code identifying the reseller.
- the mark-up type field 852, the mark-up value field 854 and the first and second interval fields 856 and 858 are of the same type as described in connection with fields of the same name in Figure 47 , for example.
- the contents of the fields of this record 860 may be set according to system operator preferences, for example.
- an exemplary reseller global mark-up table record is shown generally at 860.
- the reseller field 850 holds a code indicating the reseller is "Klondike”
- the mark-up type field 852 holds a code indicating the mark-up type is percent
- the mark-up value field 854 holds a value representing 10% as the mark-up value
- the first interval field 856 holds the value 30
- the second interval field 858 holds the values 30 and 6 respectively to indicate the first 30 seconds are free and billing is to be done in 6 second increments after that.
- the reseller global mark-up table record as shown in Figure 50 is retrieved from the database and stored locally at the RC.
- the processor is then directed to block 862 which causes it to set an override value equal to the contents of the mark-up value field of the located record, to set the first increment variable equal to the contents of the first interval field of the located record and to set the second increment variable equal to the contents of the second interval field of the located record.
- the increment variables were alternatively set to specific values at block 826 in Figure 41 .
- the located record could be a bundle override record of the type shown in Figure 37 or the located record could be a reseller special destination record of the type shown in Figure 48 or the record could be a reseller global mark-up table record of the type shown in Figure 50 .
- the processor 202 if Figure 7 is directed to set as the cost per unit time the sum of the reseller rate and at least one of the route cost per unit time, the reseller cost per unit time and the default cost per unit time, depending on which record was located.
- block 864 directs the processor to set the cost per unit time equal to the sum of the reseller cost set at block 800 in Figure 41 , plus the contents of the override variable calculated in block 862 in Figure 41 .
- the cost per unit time has thus been calculated and it is this cost per unit time that is used in block 752 of Figure 33B , for example.
- An exemplary SIP bye message is shown at 900 in Figure 51 and includes a caller field 902, a callee field 904 and a call ID field 906.
- the caller field 902 holds a twelve digit user name
- the callee field 904 holds a PSTN compatible number or user name
- the call ID field 906 holds a unique call identifier field of the type shown in the call ID field 65 of the SIP invite message shown in Figure 3 .
- a SIP bye message for the Calgary callee is shown generally at 908 and the caller field 902 holds a user name identifying the caller, in this case 2001 1050 8667, the callee field 904 holds a user name identifying the Calgary callee, in this case 2001 1050 2222, and the call ID field 906 holds the code FA10 @ 192.168.0.20, which is the call ID for the call.
- the SIP bye message shown in Figure 52 is received at the call controller 14 and the call controller executes a process as shown generally at 910 in Figure 53 .
- the process includes a first block 912 that directs the call controller processor 202 of Figure 7 to copy the caller, callee and call ID field contents from the SIP bye message received from the terminating party to corresponding fields of an RC stop message buffer (not shown).
- Block 914 then directs the processor to copy the call start time from the call timer and to obtain a call stop time from the call timer.
- Block 916 then directs the call controller to calculate a communication session time by determining the difference in time between the call start time and the call stop time. This session time is then stored in a corresponding field of the RC call stop message buffer.
- Block 917 then directs the processor to decrement the contents of the current concurrent call field 277 of the dialling profile for the caller as shown in Figure 10 , to indicate that there is one less concurrent call in progress.
- a copy of the amended dialling profile for the caller is then stored in the database 18 of Figure 1 .
- Block 918 then directs the processor to copy the route from the call log.
- An RC call stop message produced as described above is shown generally at 1000 in Figure 54 .
- An RC call stop message specifically associated with the call made to the Calgary callee is shown generally at 1020 in Figure 55 .
- the RC stop call message includes a caller field 1002, callee field 1004, a call ID field 1006, an account start time field 1008, an account stop time field 1010, a communication session time 1012 and a route field 1014.
- the caller field 1002 holds a username
- the callee field 1004 holds a PSTN-compatible number or system number
- the call ID field 1006 hold the unique call identifier received from the SIP invite message shown in Figure 3
- the account start time field 1008 holds the date and start time of the call
- the account stop time field 1010 holds the date and time the call ended
- the communication session time field 1012 holds a value representing the difference between the start time and the stop time, in seconds
- the route field 1014 holds the IP address for the communications link that was established.
- an exemplary RC stop call message for the Calgary callee is shown generally at 1020.
- the caller field 1002 holds the user name 2001 1050 8667 identifying the Vancouver-based caller and the callee field 1004 holds the user name 2001 1050 2222 identifying the Calgary callee.
- the contents of the call ID field 1006 are FA10 @ 192.168.0.20.
- the contents of the account start time field 1008 are 2006-12-30 12:12:12 and the contents of the account stop time field are 2006-12-30 12:12:14.
- the contents of the communication session time field 1012 are 2 to indicate 2 seconds call duration and the contents of the route field are 72.64.39.58.
- block 920 directs the processor 202 in Figure 7 to send the RC stop message compiled in the RC call stop message buffer to the RC 16 of Figure 1 .
- Block 922 directs the call controller 14 to send a "bye" message back to the party that did not terminate the call.
- the RC 16 of Figure 1 receives the call stop message and an RC call stop message process is invoked at the RC, the process being shown at 950 in
- the RC stop message process 950 begins with a first block 952 that directs the processor 202 in Figure 7 to determine whether or not the communication session time is less than or equal to the first increment value set by the cost calculation routine shown in Figure 41 , specifically blocks 826 or 862 thereof. If this condition is met, then block 954 of Figure 56A directs the RC processor to set a chargeable time variable equal to the first increment value set at block 826 or 862 of Figure 41 .
- block 956 directs the RC processor to set a remainder variable equal to the difference between the communication session time and the first increment value mod the second increment value produced at block 826 or 862 of Figure 41 . Then, the processor is directed to block 958 of Figure 56A which directs it to determine whether or not the remainder is greater than zero. If so, block 960 directs the RC processor to set the chargeable time variable equal to the difference between the communication session time and the remainder value.
- block 962 directs the RC processor to set the chargeable time variable equal to the contents of the communication session time from the RC stop message.
- the processor is then directed to block 964.
- the processor is directed to block 964.
- Block 964 directs the processor 202 of Figure 7 to determine whether or not the chargeable time variable is greater than or equal to the free time balance as determined from the free time field 742 of the subscriber account record shown in Figure 39 . If this condition is satisfied, block 966 of Figure 56A directs the processor to set the free time field 742 in the record shown in Figure 39 , to zero. If the chargeable time variable is not greater than or equal to the free time balance, block 968 directs the RC processor to set a user cost variable to zero and Block 970 then decrements the free time field 742 of the subscriber account record for the caller by the chargeable time amount determined by block 954, 960 or 962.
- Block 972 directs the processor to set a remaining chargeable time variable equal to the difference between the chargeable time and the contents of the free time field (742 of Figure 39 ).
- Block 974 then directs the processor to set the user cost variable equal to the product of the remaining chargeable time and the cost per second calculated at Block 750 in Figure 33B .
- Block 976 then directs the processor to decrement the funds balance field (740) of the subscriber account record shown in Figure 39 by the contents of the user cost variable calculated at Block 974.
- Block 978 of Figure 56B directs the processor 202 of Figure 7 to calculate a reseller cost variable as the product of the reseller rate as indicated in the mark-up value field 810 of the system operator mark-up table record shown in Figure 45 and the communication session time determined at Block 916 in Figure 53 .
- Block 980 of Figure 56B directs the processor to add the reseller cost to the reseller balance field 986 of a reseller account record of the type shown in Figure 57 at 982.
- the reseller account record includes a reseller ID field 984 and the aforementioned reseller balance field 986.
- the reseller ID field 984 holds a reseller ID code
- the reseller balance field 986 holds an accumulated balance of charges.
- a specific reseller accounts record for the reseller "Klondike” is shown generally at 988.
- the reseller ID field 984 holds a code representing the reseller "Klondike” and the reseller balance field 986 holds a balance of $100.02.
- the contents of the reseller balance field 986 in Figure 58 are incremented by the reseller cost calculated at block 978 of Figure 56B .
- Block 990 directs the processor to 202 of Figure 7 calculate a system operator cost as the product of the system operator cost per second, as set at block 822 in Figure 41 , and the communication session time as determined at Block 916 in Figure 53 .
- Block 992 then directs the processor to add the system operator cost value calculated at Block 990 to a system operator accounts table record of the type shown at 994 in Figure 59 .
- This record includes a system operator balance field 996 holding an accumulated charges balance. Referring to Figure 60 in the embodiment described, the system operator balance field 996 may hold the value $1,000.02 for example, and to this value the system operator cost calculated at Block 990 is added when the processor executes Block 992 of Figure 56B .
- the final reseller balance 986 in Figure 58 holds a number representing an amount owed to the reseller by the system operator and the system operator balance 996 of Figure 59 holds a number representing an amount of profit for the system operator.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Chemical & Material Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Medicinal Chemistry (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Immunology (AREA)
- Organic Chemistry (AREA)
- Multimedia (AREA)
- Pharmacology & Pharmacy (AREA)
- Epidemiology (AREA)
- Animal Behavior & Ethology (AREA)
- Public Health (AREA)
- Veterinary Medicine (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Biomedical Technology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Oncology (AREA)
- Mycology (AREA)
- Biochemistry (AREA)
- Biophysics (AREA)
- Genetics & Genomics (AREA)
- Molecular Biology (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Microbiology (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Meter Arrangements (AREA)
Abstract
Description
- This invention relates to voice over IP communications and methods and apparatus for routing and billing.
- Internet protocol (IP) telephones are typically personal computer (PC) based telephones connected within an IP network, such as the public Internet or a private network of a large organization. These IP telephones have installed "voice-over-IP" (VoIP) software enabling them to make and receive voice calls and send and receive information in data and video formats.
- IP telephony switches installed within the IP network enable voice calls to be made within or between IP networks, and between an IP network and a switched circuit network (SCN), such as the public switched telephone network (PSTN). If the IP switch supports the Signaling System 7 (SS7) protocol, the IP telephone can also access PSTN databases.
- The PSTN network typically includes complex network nodes that contain all information about a local calling service area including user authentication and call routing. The PSTN network typically aggregates all information and traffic into a single location or node, processes it locally and then passes it on to other network nodes, as necessary, by maintaining route tables at the node. PSTN nodes are redundant by design and thus provide reliable service, but if a node should fail due to an earthquake or other natural disaster, significant, if not complete service outages can occur, with no other nodes being able to take up the load.
- Existing VoIP systems do not allow for high availability and resiliency in delivering Voice Over IP based Session Initiation Protocol (SIP) Protocol service over a geographically dispersed area such as a city, region or continent. Most resiliency originates from the provision of IP based telephone services to one location or a small number of locations such as a single office or network of branch offices.
- In accordance with one aspect of the invention, there is provided a process for operating a call routing controller to facilitate communication between callers and callees in a system comprising a plurality of nodes with which callers and callees are associated. The process involves, in response to initiation of a call by a calling subscriber, receiving a caller identifier and a callee identifier. The process also involves using call classification criteria associated with the caller identifier to classify the call as a public network call or a private network call. The process further involves producing a routing message identifying an address, on the private network, associated with the callee when the call is classified as a private network call. The process also involves producing a routing message identifying a gateway to the public network when the call is classified as a public network call.
- The process may involve receiving a request to establish a call, from a call controller in communication with a caller identified by the callee identifier.
- Using the call classification criteria may involve searching a database to locate a record identifying calling attributes associated with a caller identified by the caller identifier.
- Locating a record may involve locating a caller dialling profile comprising a username associated with the caller, a domain associated with the caller, and at least one calling attribute.
- Using the call classification criteria may involve comparing calling attributes associated with the caller dialling profile with aspects of the callee identifier.
- Comparing may involve determining whether the callee identifier includes a portion that matches an IDD associated with the caller dialling profile.
- Comparing may involve determining whether the callee identifier includes a portion that matches an NDD associated with the caller dialling profile.
- Comparing may involve determining whether the callee identifier includes a portion that matches an area code associated with the caller dialling profile.
- Comparing may involve determining whether the callee identifier has a length within a range specified in the caller dialling profile.
- The process may involve formatting the callee identifier into a pre-defined digit format to produce a re-formatted callee identifier.
- Formatting may involve removing an international dialling digit from the callee identifier, when the callee identifier begins with a digit matching an international dialling digit specified by the caller dialling profile associated with the caller.
- Formatting may involve removing a national dialling digit from the callee identifier and prepending a caller country code to the callee identifier when the callee identifier begins with a national dialling digit.
- Formatting may involve prepending a caller country code to the callee identifier when the callee identifier begins with digits identifying an area code specified by the caller dialling profile. Formatting may involve prepending a caller country code and an area code to the callee identifier when the callee identifier has a length that matches a caller dialling number format specified by the caller dialling profile and only one area code is specified as being associated with the caller in the caller dialling profile.
- The process may involve classifying the call as a private network call when the re-formatted callee identifier identifies a subscriber to the private network.
- The process may involve determining whether the callee identifier complies with a pre-defined username format and if so, classifying the call as a private network call.
- The process may involve causing a database of records to be searched to locate a direct in dial (DID) bank table record associating a public telephone number with the reformatted callee identifier and if the DID bank table record is found, classifying the call as a private network call and if a DID bank table record is not found, classifying the call as a public network call.
- Producing the routing message identifying a node on the private network may involve setting a callee identifier in response to a username associated with the DID bank table record.
- Producing the routing message may involve determining whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier.
- Determining whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier may involve determining whether a prefix of the re-formatted callee identifier matches a corresponding prefix of a username associated with the caller dialling profile. When the node associated with the caller is not the same as the node associated with the callee, the process involves producing a routing message including the caller identifier, the reformatted callee identifier and an identification of a private network node associated with the callee and communicating the routing message to a call controller.
- When the node associated with the caller is the same as the node associated with the callee, the process involves determining whether to perform at least one of the following: forward the call to another party, block the call and direct the caller to a voicemail server associated with the callee.
- Producing the routing message may involve producing a routing message having an identification of at least one of the callee identifier, an identification of a party to whom the call should be forwarded and an identification of a voicemail server associated with the callee.
- The process may involve communicating the routing message to a call controller.
- Producing a routing message identifying a gateway to the public network may involve searching a database of route records associating route identifiers with dialling codes to find a route record having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- The process may involve searching a database of supplier records associating supplier identifiers with the route identifiers to locate at least one supplier record associated with the route identifier associated with the route record having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- The process may involve loading a routing message buffer with the reformatted callee identifier and an identification of specific routes associated respective ones of the supplier records associated with the route record and loading the routing message buffer with a time value and a timeout value.
- The process may involve communicating a routing message involving the contents of the routing message buffer to a call controller.
- The process may involve causing the dialling profile to include a maximum concurrent call value and a concurrent call count value and causing the concurrent call count value to be incremented when the user associated with the dialling profile initiates a call and causing the concurrent call count value to be decremented when a call with the user associated with the dialling profile is ended.
- In accordance with another aspect of the invention, there is provided a call routing apparatus for facilitating communications between callers and callees in a system comprising a plurality of nodes with which callers and callees are associated. The apparatus includes receiving provisions for receiving a caller identifier and a callee identifier, in response to initiation of a call by a calling subscriber. The apparatus also includes classifying provisions for classifying the call as a private network call or a public network call according to call classification criteria associated with the caller identifier. The apparatus further includes provisions for producing a routing message identifying an address, on the private network, associated with the callee when the call is classified as a private network call. The apparatus also includes provisions for producing a routing message identifying a gateway to the public network when the call is classified as a public network call.
- The receiving provisions may be operably configured to receive a request to establish a call, from a call controller in communication with a caller identified by the callee identifier.
- The apparatus may further include searching provisions for searching a database including records associating calling attributes with subscribers to the private network to locate a record identifying calling attributes associated with a caller identified by the caller identifier.
- The records may include dialling profiles each including a username associated with the subscriber, an identification of a domain associated with the subscriber, and an identification of at least one calling attribute associated with the subscriber.
- The call classification provisions may be operably configured to compare calling attributes associated with the caller dialling profile with aspects of the callee identifier.
- The calling attributes may include an international dialling digit and call classification provisions may be operably configured to determine whether the callee identifier includes a portion that matches an IDD associated with the caller dialling profile.
- The calling attributes may include an national dialling digit and the call classification provisions may be operably configured to determine whether the callee identifier includes a portion that matches an NDD associated with the caller dialling profile.
- The calling attributes may include an area code and the call classification provisions may be operably configured to determine whether the callee identifier includes a portion that matches an area code associated with the caller dialling profile.
- The calling attribute may include a number length range and the call classification provisions may be operably configured to determine whether the callee identifier has a length within a number length range specified in the caller dialling profile.
- The apparatus may further include formatting provisions for formatting the callee identifier into a pre-defined digit format to produce a re-formatted callee identifier.
- The formatting provisions may be operably configured to remove an international dialling digit from the callee identifier, when the callee identifier begins with a digit matching an international dialling digit specified by the caller dialling profile associated with the caller.
- The formatting provisions may be operably configured to remove a national dialling digit from the callee identifier and prepend a caller country code to the callee identifier when the callee identifier begins with a national dialling digit.
- The formatting provisions may be operably configured to prepend a caller country code to the callee identifier when the callee identifier begins with digits identifying an area code specified by the caller dialling profile.
- The formatting provisions may be operably configured to prepend a caller country code and area code to the callee identifier when the callee identifier has a length that matches a caller dialling number format specified by the caller dialling profile and only one area code is specified as being associated with the caller in the caller dialling profile.
- The classifying provisions may be operably configured to classify the call as a private network call when the re-formatted callee identifier identifies a subscriber to the private network. The classifying provisions may be operably configured to classify the call as a private network call when the callee identifier complies with a pre-defined username format.
- The apparatus may further include searching provisions for searching a database of records to locate a direct in dial (DID) bank table record associating a public telephone number with the reformatted callee identifier and the classifying provisions may be operably configured to classify the call as a private network call when the DID bank table record is found and to classify the call as a public network call when a DID bank table record is not found.
- The private network routing message producing provisions may be operably configured to produce a routing message having a callee identifier set according to a username associated with the DID bank table record.
- The private network routing message producing provisions may be operably configured to determine whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier.
- The private network routing provisions may include provisions for determining whether a prefix of the re-formatted callee identifier matches a corresponding prefix of a username associated with the caller dialling profile.
- The private network routing message producing provisions may be operably configured to produce a routing message including the caller identifier, the reformatted callee identifier and an identification of a private network node associated with the callee and to communicate the routing message to a call controller.
- The private network routing message producing provisions may be operably configured to perform at least one of the following forward the call to another party, block the call and direct the caller to a voicemail server associated with the callee, when the node associated with the caller is the same as the node associated with the callee.
- The provisions for producing the private network routing message may be operably configured to produce a routing message having an identification of at least one of the callee identifier, an identification of a party to whom the call should be forwarded and an identification of a voicemail server associated with the callee.
- The apparatus further includes provisions for communicating the routing message to a call controller.
- The provisions for producing a public network routing message identifying a gateway to the public network may include provisions for searching a database of route records associating route identifiers with dialling codes to find a route record having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- The apparatus further includes provisions for searching a database of supplier records associating supplier identifiers with the route identifiers to locate at least one supplier record associated with the route identifier associated with the route record having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier.
- The apparatus further includes a routing message buffer and provisions for loading the routing message buffer with the reformatted callee identifier and an identification of specific routes associated respective ones of the supplier records associated with the route record and loading the routing message buffer with a time value and a timeout value. The apparatus further includes provisions for communicating a routing message including the contents of the routing message buffer to a call controller.
- The apparatus further includes means for causing said dialling profile to include a maximum concurrent call value and a concurrent call count value and for causing said concurrent call count value to be incremented when the user associated with said dialling profile initiates a call and for causing said concurrent call count value to be decremented when a call with said user associated with said dialling profile is ended.
- In accordance with another aspect of the invention, there is provided a data structure for access by an apparatus for producing a routing message for use by a call routing controller in a communications system. The data structure includes dialling profile records comprising fields for associating with respective subscribers to the system, a subscriber user name, direct-in-dial records comprising fields for associating with respective subscriber usernames, a user domain and a direct-in-dial number, prefix to node records comprising fields for associating with at least a portion of the respective subscriber usernames, a node address of a node in the system, whereby a subscriber name can be used to find a user domain, at least a portion of the a subscriber name can be used to find a node with which the subscriber identified by the subscriber name is associated, and a user domain and subscriber name can be located in response to a direct-in-dial number.
- In accordance with another aspect of the invention, there is provided a data structure for access by an apparatus for producing a routing message for use by a call routing controller in a communications system. The data structure includes master list records comprising fields for associating a dialling code with respective master list identifiers and supplier list records linked to master list records by the master list identifiers, said supplier list records comprising fields for associating with a communications services supplier, a supplier id, a master list id, a route identifier and a billing rate code, whereby communications services suppliers are associated with dialling codes, such that dialling codes can be used to locate suppliers capable of providing a communications link associated with a given dialling code.
- In accordance with another aspect of the invention, there is provided a method for determining a time to permit a communication session to be conducted. The method involves calculating a cost per unit time, calculating a first time value as a sum of a free time attributed to a participant in the communication session and the quotient of a funds balance held by the participant to the cost per unit time value and producing a second time value in response to the first time value and a billing pattern associated with the participant, the billing pattern including first and second billing intervals and the second time value being the time to permit a communication session to be conducted.
- Calculating the first time value may involve retrieving a record associated with the participant and obtaining from the record at least one of the free time and the funds balance.
- Producing the second time value may involve producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between the first time value and the first billing interval.
- Producing the second time value may involve setting a difference between the first time value and the remainder as the second time value.
- The method may further involve setting the second time value to zero when the remainder is greater than zero and the first time value is less than the free time associated with the participant.
- Calculating the cost per unit time may involve locating a record in a database, the record comprising a markup type indicator, a markup value and a billing pattern and setting a reseller rate equal to the sum of the markup value and the buffer rate.
- Locating the record in a database may involve locating at least one of a record associated with a reseller and a route associated with the reseller, a record associated with the reseller and a default reseller markup record.
- Calculating the cost per unit time value further may involve locating at least one of an override record specifying a route cost per unit time amount associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session, a default operator markup record specifying a default cost per unit time.
- The method may further involve setting as the cost per unit time the sum of the reseller rate and at least one of the route cost per unit time, the reseller cost per unit time and the default cost per unit time.
- The method may further involve receiving a communication session time representing a duration of the communication session and incrementing a reseller balance by the product of the reseller rate and the communication session time.
- The method may further involve receiving a communication session time representing a duration of the communication session and incrementing a system operator balance by a product of the buffer rate and the communication session time.
- In accordance with another aspect of the invention, there is provided an apparatus for determining a time to permit a communication session to be conducted. The apparatus includes a processor circuit, a computer readable medium coupled to the processor circuit and encoded with instructions for directing the processor circuit to calculate a cost per unit time for the communication session, calculate a first time value as a sum of a free time attributed to a participant in the communication session and the quotient of a funds balance held by the participant to the cost per unit time value and produce a second time value in response to the first time value and a billing pattern associated with the participant, the billing pattern including first and second billing intervals and the second time value being the time to permit a communication session to be conducted.
- The instructions may include instructions for directing the processor circuit to retrieve a record associated with the participant and obtain from the record at least one of the free time and the funds balance.
- The instructions may include instructions for directing the processor circuit to produce the second time value by producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between the first time value and the first billing interval.
- The instructions may include instructions for directing the processor circuit to produce the second time value comprises setting a difference between the first time value and the remainder as the second time value. The instructions may include instructions for directing the processor circuit to set the second time value to zero when the remainder is greater than zero and the first time value is less than the free time associated with the participant.
- The instructions for directing the processor circuit to calculate the cost per unit time may include instructions for directing the processor circuit to locate a record in a database, the record comprising a markup type indicator, a markup value and a billing pattern and set a reseller rate equal to the sum of the markup value and the buffer rate.
- The instructions for directing the processor circuit to locate the record in a database may include instructions for directing the processor circuit to locate at least one of a record associated with a reseller and a route associated with the reseller, a record associated with the reseller, and a default reseller markup record. The instructions for directing the processor circuit to calculate the cost per unit time value may further include instructions for directing the processor circuit to locate at least one of an override record specifying a route cost per unit time amount associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session, a default operator markup record specifying a default cost per unit time.
- The instructions may include instructions for directing the processor circuit to set as the cost per unit time the sum of the reseller rate and at least one of the route cost per unit time, the reseller cost per unit time and the default cost per unit time.
- The instructions may include instructions for directing the processor circuit to receive a communication session time representing a duration of the communication session and increment a reseller balance by the product of the reseller rate and the communication session time.
- The instructions may include instructions for directing the processor circuit to receive a communication session time representing a duration of the communication session and increment a system operator balance by a product of the buffer rate and the communication session time.
- In accordance with another aspect of the invention, there is provided a process for attributing charges for communications services. The process involves determining a first chargeable time in response to a communication session time and a pre-defined billing pattern, determining a user cost value in response to the first chargeable time and a free time value associated with a user of the communications services, changing an account balance associated with the user in response to a user cost per unit time. The process may further involve changing an account balance associated with a reseller of the communications services in response to a reseller cost per unit time and the communication session time and changing an account balance associated with an operator of the communications services in response to an operator cost per unit time and the communication session time.
- Determining the first chargeable time may involve locating at least one of an override record specifying a route cost per unit time and billing pattern associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time and billing pattern associated with the reseller for the communication session and a default record specifying a default cost per unit time and billing pattern and setting as the pre-defined billing pattern the billing pattern of the record located. The billing pattern of the record located may involve a first billing interval and a second billing interval.
- Determining the first chargeable time may involve setting the first chargeable time equal to the first billing interval when the communication session time is less than or equal to the first billing interval.
- Determining the first chargeable time may involve producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between communication session time and the first interval when the communication session time is greater than the communication session time and setting the first chargeable time to a difference between the communication session time and the remainder when the remainder is greater than zero and setting the first chargeable time to the communication session time when the remainder is not greater than zero.
- The process may further involve determining a second chargeable time in response to the first chargeable time and the free time value associated with the user of the communications services when the first chargeable time is greater than or equal to the free time value associated with the user of the communications services.
- Determining the second chargeable time may involve setting the second chargeable time to a difference between the first chargeable time.
- The process may further involve resetting the free time value associated with the user to zero when the first chargeable time is greater than or equal to the free time value associated with the user of the communications services.
- Changing an account balance associated with the user may involve calculating a user cost value in response to the second chargeable time and the user cost per unit time.
- The process may further involve changing a user free cost balance in response to the user cost value.
- The process may further involve setting the user cost to zero when the first chargeable time is less than the free time value associated with the user.
- The process may further involve changing a user free time balance in response to the first chargeable time.
- In accordance with another aspect of the invention, there is provided an apparatus for attributing charges for communications services. The apparatus includes a processor circuit, a computer readable medium in communication with the processor circuit and encoded with instructions for directing the processor circuit to determine a first chargeable time in response to a communication session time and a pre-defined billing pattern, determine a user cost value in response to the first chargeable time and a free time value associated with a user of the communications services, change an account balance associated with the user in response to a user cost per unit time.
- The instructions may further include instructions for changing an account balance associated with a reseller of the communications services in response to a reseller cost per unit time and the communication session time and changing an account balance associated with an operator of the communications services in response to an operator cost per unit time and the communication session time.
- The instructions for directing the processor circuit to determine the first chargeable time may further include instructions for causing the processor circuit to communicate with a database to locate at least one of an override record specifying a route cost per unit time and billing pattern associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time and billing pattern associated with the reseller for the communication session and a default record specifying a default cost per unit time and billing pattern and instructions for setting as the pre-defined billing pattern the billing pattern of the record located. The billing pattern of the record located may include a first billing interval and a second billing interval.
- The instructions for causing the processor circuit to determine the first chargeable time may include instructions for directing the processor circuit to set the first chargeable time equal to the first billing interval when the communication session time is less than or equal to the first billing interval.
- The instructions for causing the processor circuit to determine the first chargeable time may include instructions for producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between communication session time and the first interval when the communication session time is greater than the communication session time and instructions for causing the processor circuit to set the first chargeable time to a difference between the communication session time and the remainder when the remainder is greater than zero and instructions for causing the processor circuit to set the first chargeable time to the communication session time when the remainder is not greater than zero.
- The instructions may further include instructions for causing the processor circuit to determine a second chargeable time in response to the first chargeable time and the free time value associated with the user of the communications services when the first chargeable time is greater than or equal to the free time value associated with the user of the communications services.
- The instructions for causing the processor circuit to determine the second chargeable time may include instructions for causing the processor circuit to set the second chargeable time to a difference between the first chargeable time.
- The instructions may further include instructions for causing the processor circuit to reset the free time value associated with the user to zero when the first chargeable time is greater than or equal to the free time value associated with the user of the communications services.
- The instructions for causing the processor circuit to change an account balance associated with the user may include instructions for causing the processor circuit to calculate a user cost value in response to the second chargeable time and the user cost per unit time.
- The instructions may further include instructions for causing the processor circuit to change a user free cost balance in response to the user cost value.
- The instructions may further include instructions for causing the processor circuit to set the user cost to zero when the first chargeable time is less than the free time value associated with the user.
- The instructions may further include instructions for causing the processor circuit to change a user free time balance in response to the first chargeable time.
- In accordance with another aspect of the invention, there is provided a computer readable medium encoded with codes for directing a processor circuit to execute one or more of the methods described above and/or variants thereof.
- Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.
- In drawings which illustrate embodiments of the invention,
-
Figure 1 is a block diagram of a system according to a first embodiment of the invention; -
Figure 2 is a block diagram of a caller telephone according to the first embodiment of the invention; -
Figure 3 is a schematic representation of a SIP invite message transmitted between the caller telephone and a controller shown inFigure 1 ; -
Figure 4 is a block diagram of a call controller shown inFigure 1 ; -
Figure 5 is a flowchart of a process executed by the call controller shown inFigure 1 ; -
Figure 6 is a schematic representation of a routing, billing and rating (RC) request message produced by the call controller shown inFigure 1 ; -
Figure 7 is a block diagram of a processor circuit of a routing, billing, rating element of the system shown inFigure 1 ; -
Figures 8A-8D is a flowchart of a RC request message handler executed by the RC processor circuit shown inFigure 7 ; -
Figure 9 is a tabular representation of a dialling profile stored in a database accessible by the RC shown inFigure 1 ; -
Figure 10 is a tabular representation of a dialling profile for a caller using the caller telephone shown inFigure 1 ; -
Figure 11 is a tabular representation of a callee profile for a callee located in Calgary; -
Figure 12 is a tabular representation of a callee profile for a callee located in London; -
Figure 13 is a tabular representation of a Direct-in-Dial (DID) bank table record stored in the database shown inFigure 1 ; -
Figure 14 is a tabular representation of an exemplary DID bank table record for the Calgary callee referenced inFigure 11 ; -
Figure 15 is a tabular representation of a routing message transmitted from the RC to the call controller shown inFigure 1 ; -
Figure 16 is a schematic representation of a routing message buffer holding a routing message for routing a call to the Calgary callee referenced inFigure 11 ; -
Figure 17 is a tabular representation of a prefix to supernode table record stored in the database shown inFigure 1 ; -
Figure 18 is a tabular representation of a prefix to supernode table record that would be used for the Calgary callee referenced inFigure 11 ; -
Figure 19 is a tabular representation of a master list record stored in a master list table in the database shown inFigure 1 ; -
Figure 20 is a tabular representation of a populated master list record; -
Figure 21 is a tabular representation of a suppliers list record stored in the database shown inFigure 1 ; -
Figure 22 is a tabular representation of a specific supplier list record for a first supplier; -
Figure 23 is a tabular representation of a specific supplier list record for a second supplier; -
Figure 24 is a tabular representation of a specific supplier list record for a third supplier; -
Figure 25 is a schematic representation of a routing message, held in a routing message buffer, identifying to the controller a plurality of possible suppliers that may carry the call; -
Figure 26 is a tabular representation of a call block table record; -
Figure 27 is a tabular representation of a call block table record for the Calgary callee; -
Figure 28 is a tabular representation of a call forwarding table record; -
Figure 29 is a tabular representation of a call forwarding table record specific for the Calgary callee; -
Figure 30 is a tabular representation of a voicemail table record specifying voicemail parameters to enable the caller to leave a voicemail message for the callee; -
Figure 31 is a tabular representation of a voicemail table record specific to the Calgary callee; -
Figure 32 is a schematic representation of an exemplary routing message, held in a routing message buffer, indicating call forwarding numbers and a voicemail server identifier; -
Figures 33A and33B are respective portions of a flowchart of a process executed by the RC processor for determining a time to live value; -
Figure 34 is a tabular representation of a subscriber bundle table record; -
Figure 35 is a tabular representation of a subscriber bundle record for the Vancouver caller; -
Figure 36 is a tabular representation of a bundle override table record; -
Figure 37 is a tabular representation of bundle override record for a located master list ID; -
Figure 38 is a tabular representation of a subscriber account table record; -
Figure 39 is a tabular representation of a subscriber account record for the Vancouver caller; -
Figure 40 is a flowchart of a process for producing a second time value executed by the RC processor circuit shown inFigure 7 ; -
Figure 41 is a flowchart for calculating a call cost per unit time; -
Figure 42 is a tabular representation of a system operator special rates table record; -
Figure 43 is a tabular representation of a system operator special rates table record for a reseller named Klondike; -
Figure 44 is a tabular representation of a system operator mark-up table record; -
Figure 45 is a tabular representation of a system operator mark-up table record for the reseller Klondike; -
Figure 46 is a tabular representation of a default system operator mark-up table record; -
Figure 47 is a tabular representation of a reseller special destinations table record; -
Figure 48 is a tabular representation of a reseller special destinations table record for the reseller Klondike; -
Figure 49 is a tabular representation of a reseller global mark-up table record; -
Figure 50 is a tabular representation of a reseller global mark-up table record for the reseller Klondike; -
Figure 51 is a tabular representation of a SIP bye message transmitted from either of the telephones shown inFigure 1 to the call controller; -
Figure 52 is a tabular representation of a SIP bye message sent to the controller from the Calgary callee; -
Figure 53 is a flowchart of a process executed by the call controller for producing a RC stop message in response to receipt of a SIP bye message; -
Figure 54 is a tabular representation of an exemplary RC call stop message; -
Figure 55 is a tabular representation of an RC call stop message for the Calgary callee; -
Figures 56A and56B are respective portions of a flowchart of a RC call stop message handling routine executed by the RC shown inFigure 1 ; -
Figure 57 is a tabular representation of a reseller accounts table record; -
Figure 58 is a tabular representation of a reseller accounts table record for the reseller Klondike; -
Figure 59 is a tabular representation of a system operator accounts table record; and -
Figure 60 is a tabular representation of a system operator accounts record for the system operator described herein. - Referring to
Figure 1 , a system for making voice over IP telephone/videophone calls is shown generally at 10. The system includes a first super node shown generally at 11 and a second super node shown generally at 21. The firstsuper node 11 is located in geographical area, such as Vancouver, B.C., Canada for example and the secondsuper node 21 is located in London, England, for example. Different super nodes may be located in different geographical regions throughout the world to provide telephone/videophone service to subscribers in respective regions. These super nodes may be in communication with each other by high speed/ high data throughput links including optical fibre, satellite and/or cable links, forming a backbone to the system. These super nodes may alternatively or, in addition, be in communication with each other through conventional internet services. - In the embodiment shown, the
Vancouver supernode 11 provides telephone/videophone service to western Canadian customers from Vancouver Island to Ontario. Another node (not shown) may be located in Eastern Canada to provide services to subscribers in that area. - Other nodes of the type shown may also be employed within the geographical area serviced by a supernode, to provide for call load sharing, for example within a region of the geographical area serviced by the supernode. However, in general, all nodes are similar and have the properties described below in connection with the
Vancouver supernode 11. - In this embodiment, the Vancouver supernode includes a call controller (C) 14, a routing controller (RC) 16, a
database 18 and avoicemail server 19 and amedia relay 9. Each of these may be implemented as separate modules on a common computer system or by separate computers, for example. Thevoicemail server 19 need not be included in the node and can be provided by an outside service provider. - Subscribers such as a subscriber in Vancouver and a subscriber in Calgary communicate with the Vancouver supernode using their own internet service providers which route internet traffic from these subscribers over the internet shown generally at 13 in
Figure 1 . To these subscribers the Vancouver supernode is accessible at a pre-determined internet protocol (IP) address or a fully qualified domain name that can be accessed in the usual way through a subscriber's internet service provider. The subscriber in Vancouver uses atelephone 12 that is capable of communicating with theVancouver supernode 11 using Session Initiation Protocol (SIP) messages and the Calgary subscriber uses asimilar telephone 15, in Calgary AB. - It should be noted that throughout the description of the embodiments of this invention, the IP/UDP addresses of all elements such as the caller and callee telephones, call controller, media relay, and any others, will be assumed to be valid IP/UDP addresses directly accessible via the Internet or a private IP network, for example, depending on the specific implementation of the system. As such, it will be assumed, for example, that the caller and callee telephones will have IP/UDP addresses directly accessible by the call controllers and the media relays on their respective supernodes, and those addresses will not be obscured by Network Address Translation (NAT) or similar mechanisms. In other words, the IP/UDP information contained in SIP messages (for example the SIP Invite message or the RC Request message which will be described below) will match the IP/UDP addresses of the IP packets carrying these SIP messages.
- It will be appreciated that in many situations, the IP addresses assigned to various elements of the system may be in a private IP address space, and thus not directly accessible from other elements. Furthermore, it will also be appreciated that NAT is commonly used to share a "public" IP address between multiple devices, for example between home PCs and IP telephones sharing a single Internet connection. For example, a home PC may be assigned an IP address such as 192.168.0.101 and a Voice over IP telephone may be assigned an IP address of 192.168.0.103. These addresses are located in so called "non-routable" (IP) address space and cannot be accessed directly from the Internet. In order for these devices to communicate with other computers located on the Internet, these IP addresses have to be converted into a "public" IP address, for example 24.10.10.123 assigned by the Internet Service Provider to the subscriber, by a device performing NAT, typically a home router. In addition to translating the IP addresses, NAT typically also translates UDP port numbers, for example an audio path originating at a VoIP telephone and using a UDP port 12378 at its private IP address, may have be translated to a UDP port 23465 associated with the public IP address of the NAT device. In other words, when a packet originating from the above VoIP telephone arrives at an Internet-based supernode, the source IP/UDP address contained in the IP packet header will be 24.10.10.1:23465, whereas the source IP/UDP address information contained in the SIP message inside this IP packet will be 192.168.0.103:12378. The mismatch in the IP/UDP addresses may cause a problem for SIP-based VoIP systems because, for example, a supernode will attempt to send messages to a private address of a telephone but the messages will never get there.
- Referring to
Figure 1 , in an attempt to make a call by the Vancouver telephone/videophone 12 to the Calgary telephone/videophone 15, the Vancouver telephone/videophone sends a SIP invite message to theVancouver supernode 11 and in response, thecall controller 14 sends an RC request message to theRC 16 which makes various enquiries of thedatabase 18 to produce a routing message which is sent back to thecall controller 14. Thecall controller 14 then communicates with themedia relay 9 to cause a communications link including an audio path and a videophone (if a videopath call) to be established through the media relay to the same node, a different node or to a communications supplier gateway as shown generally at 20 to carry audio, and where applicable, video traffic to the call recipient or callee. - Generally, the
RC 16 executes a process to facilitate communication between callers and callees. The process involves, in response to initiation of a call by a calling subscriber, receiving a callee identifier from the calling subscriber, using call classification criteria associated with the calling subscriber to classify the call as a public network call or a private network call and producing a routing message identifying an address on the private network, associated with the callee when the call is classified as a private network call and producing a routing message identifying a gateway to the public network when the call is classified as a public network call. - In greater detail, referring to
Figure 2 , in this embodiment, the telephone/videophone 12 includes a processor circuit shown generally at 30 comprising a microprocessor 32,program memory 34, an input/output (I/O)port 36,parameter memory 38 andtemporary memory 40. Theprogram memory 34, I/O port 36,parameter memory 38 andtemporary memory 40 are all in communication with the microprocessor 32. The I/O port 36 has adial input 42 for receiving a dialled telephone/videophone number from a keypad, for example, or from a voice recognition unit or from pre-stored telephone/videophone numbers stored in theparameter memory 38, for example. For simplicity, inFigure 2 a box labelled dialling functions 44 represents any device capable of informing the microprocessor 32 of a callee identifier, e.g., a callee telephone/videophone number. - The processor 32 stores the callee identifier in a dialled
number buffer 45. In this case, assume the dialled number is 2001 1050 2222 and that it is a number associated with the Calgary subscriber. The I/O port 36 also has ahandset interface 46 for receiving and producing signals from and to a handset that the user may place to his ear. Thisinterface 46 may include a BLUETOOTH™ wireless interface, a wired interface or speaker phone, for example. The handset acts as a termination point for an audio path (not shown) which will be appreciated later. The I/O port 36 also has aninternet connection 48 which is preferably a high speed internet connection and is operable to connect the telephone/videophone to an internet service provider. - The
internet connection 48 also acts as a part of the voice path, as will be appreciated later. It will be appreciated that where the subscriber device is a videophone, a separate video path is established in the same way an audio path is established. For simplicity, the following description refers to a telephone call, but it is to be understood that a videophone call is handled similarly, with the call controller causing the media relay to facilitate both an audio path and a video path instead of only an audio path. - The
parameter memory 38 has a username field 50, apassword field 52 anIP address field 53 and a SIPproxy address field 54, for example. The user name field 50 is operable to hold a user name, which in this case is 2001 1050 8667. The user name is assigned upon subscription or registration into the system and, in this embodiment, includes a twelve digit number having acontinent code 61, acountry code 63, adealer code 70 and aunique number code 74. Thecontinent code 61 is comprised of the first or left-most digit of the user name in this embodiment. Thecountry code 63 is comprised of the next three digits. Thedealer code 70 is comprised of the next four digits and theunique number code 74 is comprised of the last four digits. Thepassword field 52 holds a password of up to 512 characters, in this example. TheIP address field 53 stores an IP address of the telephone, which for this explanation is 192.168.0.20. The SIPproxy address field 54 holds an IP protocol compatible proxy address which may be provided to the telephone through theinternet connection 48 as part of a registration procedure. - The
program memory 34 stores blocks of codes for directing the processor 32 to carry out the functions of the telephone, one of which includes afirewall block 56 which provides firewall functions to the telephone, to prevent access by unauthorized persons to the microprocessor 32 andmemories internet connection 48. Theprogram memory 34 also storescodes 57 for establishing a call ID. Thecall ID codes 57 direct the processor 32 to produce a call identifier having a format comprising a hexadecimal string at an IP address, the IP address being the IP address of the telephone. Thus, an exemplary call identifier might be [email protected]. - Generally, in response to picking up the
handset interface 46 and activating adialling function 44, the microprocessor 32 produces and sends a SIP invite message as shown inFigure 3 , to therouting controller 16 shown inFigure 1 . This SIP invite message is essentially to initiate a call by a calling subscriber. - Referring to
Figure 3 , the SIP invite message includes acaller ID field 60, acallee identifier field 62, a digestparameters field 64, acall ID field 65 anIP address field 67 and a callerUDP port field 69. In this embodiment, thecaller ID field 60 includes theuser name 2001 10508667 that is the Vancouver user name stored in the user name field 50 of theparameter memory 38 in thetelephone 12 shown inFigure 2 . In addition, referring back toFigure 3 , thecallee identifier field 62 includes a callee identifier which in this embodiment is theuser name 2001 1050 2222 that is the dialled number of the Calgary subscriber stored in the diallednumber buffer 45 shown inFigure 2 . The digest parameters field 64 includes digest parameters and thecall ID field 65 includes a code comprising a generated prefix code (FF10) and a suffix which is the Internet Protocol (IP) address of thetelephone 12 stored in theIP address field 53 of the telephone. TheIP address field 67 holds the IP address assigned to the telephone, in this embodiment 192.168.0.20, and the callerUDP port field 69 includes a UDP port identifier identifying a UDP port at which the audio path will be terminated at the caller's telephone. - Referring to
Figure 4 , a call controller circuit of the call controller 14 (Figure 1 ) is shown in greater detail at 100. Thecall controller circuit 100 includes amicroprocessor 102,program memory 104 and an I/O port 106. Thecircuit 100 may include a plurality of microprocessors, a plurality of program memories and a plurality of I/O ports to be able to handle a large volume of calls. However, for simplicity, thecall controller circuit 100 will be described as having only onemicroprocessor 102,program memory 104 and I/O port 106, it being understood that there may be more. - Generally, the I/
O port 106 includes aninput 108 for receiving messages such as the SIP invite message shown inFigure 3 , from the telephone shown inFigure 2 . The I/O port 106 also has an RCrequest message output 110 for transmitting an RC request message to theRC 16 ofFigure 1 , anRC message input 112 for receiving routing messages from theRC 16, agateway output 114 for transmitting messages to one of thegateways 20 shown inFigure 1 to advise the gateway to establish an audio path, for example, and agateway input 116 for receiving messages from the gateway. The I/O port 106 further includes aSIP output 118 for transmitting messages to thetelephone 12 to advise the telephone of the IP addresses of the gateways which will establish the audio path. The I/O port 106 further includes a voicemail server input andoutput voicemail server 19 shown inFigure 1 . - While certain inputs and outputs have been shown as separate, it will be appreciated that some may be a single IP address and IP port. For example, the messages sent to the
RC 16 and received from theRC 16 may be transmitted and received on the same single IP port. - The
program memory 104 includes blocks of code for directing themicroprocessor 102 to carry out various functions of thecall controller 14. For example, these blocks of code include afirst block 120 for causing thecall controller circuit 100 to execute a SIP invite to RC request process to produce an RC request message in response to a received SIP invite message. In addition, there is a routing message to gateway message block 122 which causes thecall controller circuit 100 to produce a gateway query message in response to a received routing message from theRC 16. - Referring to
Figure 5 , the SIP invite to RC request process is shown in more detail at 120. On receipt of a SIP invite message of the type shown inFigure 3 , block 122 ofFigure 5 directs thecall controller circuit 100 ofFigure 4 to authenticate the user. This may be done, for example, by prompting the user for a password, by sending a message back to thetelephone 12 which is interpreted at the telephone as a request for a password entry or the password may automatically be sent to thecall controller 14 from the telephone, in response to the message. Thecall controller 14 may then make enquiries of databases to which it has access, to determine whether or not the user's password matches a password stored in the database. Various functions may be used to pass encryption keys or hash codes back and forth to ensure that the transmittal of passwords is secure. - Should the authentication process fail, the
call controller circuit 100 is directed to an error handling routine 124 which causes messages to be displayed at thetelephone 12 to indicate there was an authentication problem. If the authentication procedure is passed, block 121 directs thecall controller circuit 100 to determine whether or not the contents of thecaller ID field 60 of the SIP invite message received from the telephone is an IP address. If it is an IP address, then block 123 directs thecall controller circuit 100 to set the contents of a type field variable maintained by themicroprocessor 102 to a code representing that the call type is a third party invite. If atblock 121 the caller ID field contents do not identify an IP address, then block 125 directs the microprocessor to set the contents of the type field to a code indicating that the call is being made by a system subscriber. Then, block 126 directs the call controller circuit to read thecall identifier 65 provided in the SIP invite message from thetelephone 12, and atblock 128 the processor is directed to produce an RC request message that includes that call ID.Block 129 then directs thecall controller circuit 100 to send the RC request to theRC 16. - Referring to
Figure 6 , an RC request message is shown generally at 150 and includes acaller field 152, acallee field 154, a digestfield 156, acall ID field 158 and atype field 160. The caller, callee, digest call ID fields 152, 154, 156 and 158 contain copies of the caller, callee, digest parameters and call ID fields 60, 62, 64 and 65 of the SIP invite message shown inFigure 3 . Thetype field 160 contains the type code established atblocks Figure 5 to indicate whether the call is from a third party or system subscriber, respectively. The caller identifier field may include a PSTN number or a system subscriber username as shown, for example. - Referring to
Figure 7 , theRC 16 is shown in greater detail and includes an RC processor circuit shown generally at 200. TheRC processor circuit 200 includes aprocessor 202,program memory 204, atable memory 206,buffer memory 207, and an I/O port 208, all in communication with theprocessor 202. (As earlier indicated, there may be a plurality of processor circuits (202), memories (204), etc..) - The
buffer memory 207 includes acaller id buffer 209 and acallee id buffer 211. - The I/
O port 208 includes adatabase request port 210 through which a request to the database (18 shown inFigure 1 ) can be made and includes adatabase response port 212 for receiving a reply from thedatabase 18. The I/O port 208 further includes an RCrequest message input 214 for receiving the RC request message from the call controller (14 shown inFigure 1 ) and includes arouting message output 216 for sending a routing message back to thecall controller 14. The I/O port 208 thus acts to receive caller identifier and a callee identifier contained in the RC request message from the call controller, the RC request message being received in response to initiation of a call by a calling subscriber. - The
program memory 204 includes blocks of codes for directing theprocessor 202 to carry out various functions of the RC (16). One of these blocks includes an RCrequest message handler 250 which directs the RC to produce a routing message in response to a received RC request message. The RC request message handler process is shown in greater detail at 250 inFigures 8A through 8D . - Referring to
Figure 8A , the RC request message handler begins with afirst block 252 that directs the RC processor circuit (200) to store the contents of the RC request message (150) in buffers in thebuffer memory 207 ofFigure 7 , one of which includes thecaller ID buffer 209 ofFigure 7 for separately storing the contents of thecallee field 154 of the RC request message.Block 254 then directs the RC processor circuit to use the contents of thecaller field 152 in the RC request message shown inFigure 6 , to locate and retrieve from the database 18 a record associating calling attributes with the calling subscriber. The located record may be referred to as a dialling profile for the caller. The retrieved dialling profile may then be stored in thebuffer memory 207, for example. - Referring to
Figure 9 , an exemplary data structure for a dialling profile is shown generally at 253 and includes auser name field 258, adomain field 260, and calling attributes comprising a national dialling digits (NDD)field 262, an international dialling digits (IDD)field 264, acountry code field 266, a localarea codes field 267, a caller minimumlocal length field 268, a caller maximumlocal length field 270, a reseller field 273, a maximum number ofconcurrent calls field 275 and a current number ofconcurrent calls field 277. - Effectively the dialling profile is a record identifying calling attributes of the caller identified by the caller identifier. More generally, dialling profiles represent calling attributes of respective subscribers.
- An exemplary caller profile for the Vancouver subscriber is shown generally at 276 in
Figure 10 and indicates that theuser name field 258 includes the user name (2001 1050 8667) that has been assigned to the subscriber and is stored in the user name field 50 in the telephone as shown inFigure 2 . - Referring back to
Figure 10 , thedomain field 260 includes a domain name as shown at 282, including anode type identifier 284, alocation code identifier 286, asystem provider identifier 288 and adomain portion 290. Thedomain field 260 effectively identifies a domain or node associated with the user identified by the contents of theuser name field 258. - In this embodiment, the
node type identifier 284 includes the code "sp" identifying a supernode and thelocation identifier 286 identifies the supernode as being in Vancouver (YVR). Thesystem provider identifier 288 identifies the company supplying the service and thedomain portion 290 identifies the "com" domain. - The national dialled
digit field 262 in this embodiment includes the digit "1" and, in general, includes a number specified by the International Telecommunications Union (ITU) Telecommunications Standardization Sector (ITU-T) E. 164 Recommendation which assigns national dialling digits to countries. - The international
dialling digit field 264 includes a code also assigned according to the ITU-T according to the country or location of the user. - The
country code field 266 also includes the digit "1" and, in general, includes a number assigned according to the ITU-T to represent the country in which the user is located. - The local
area codes field 267 includes a list of area codes that have been assigned by the ITU-T to the geographical area in which the subscriber is located. The caller minimum and maximum localnumber length fields area codes field 267. The reseller field 273 is optional and holds a code identifying a retailer of the services, in this embodiment "Klondike". The maximum number ofconcurrent calls field 275 holds a code identifying the maximum number of concurrent calls that the user is entitled to cause to concurrently exist. This permits more than one call to occur concurrently while all calls for the user are billed to the same account. The current number ofconcurrent calls field 277 is initially 0 and is incremented each time a concurrent call associated with the user is initiated and is decremented when a concurrent call is terminated. - The area codes associated with the user are the area codes associated with the
location code identifier 286 of the contents of thedomain field 260. - A dialling profile of the type shown in
Figure 9 is produced whenever a user registers with the system or agrees to become a subscriber to the system. Thus, for example, a user wishing to subscribe to the system may contact an office maintained by a system operator and personnel in the office may ask the user certain questions about his location and service preferences, whereupon tables can be used to provide office personnel with appropriate information to be entered into theuser name 258,domain 260,NDD 262,IDD 264,country code 266,local area codes 267, caller minimum and maximum local length fields 268 and 270 reseller field 273 and concurrent call fields 275 and 277 to establish a dialling profile for the user. - Referring to
Figures 11 and 12 , callee dialling profiles for users in Calgary and London, respectively for example, are shown. - In addition to creating dialling profiles when a user registers with the system, a direct-in-dial (DID) record of the type shown at 278 in
Figure 13 is added to a direct-in-dial bank table in the database (18 inFigure 1 ) to associate the username and a host name of the supernode with which the user is associated, with an E.164 number associated with the user on the PSTN network. - An exemplary DID table record entry for the Calgary callee is shown generally at 300 in
Figure 14 . Theuser name field 281 anduser domain field 272 are analogous to the user name and user domain fields 258 and 260 of the caller dialling profile shown inFigure 10 . The contents of the DID field 274 include a E.164 public telephone number including acountry code 283, anarea code 285, anexchange code 287 and anumber 289. If the user has multiple telephone numbers, then multiple records of the type shown at 300 would be included in the DID bank table, each having the same user name and user domain, but different DID field 274 contents reflecting the different telephone numbers associated with that user. - In addition to creating dialling profiles as shown in
Figure 9 and DID records as shown inFigure 13 when a user registers with the system, call blocking records of the type shown inFigure 26 , call forwarding records of the type shown inFigure 28 and voicemail records of the type shown inFigure 30 may be added to thedatabase 18 when a new subscriber is added to the system. - Referring back to
Figure 8A , after retrieving a dialling profile for the caller, such as shown at 276 inFigure 10 , theRC processor circuit 200 is directed to block 256 which directs the processor circuit (200) to determine whether the contents of theconcurrent call field 277 are less than the contents of the maximumconcurrent call field 275 of the dialling profile for the caller and, if so, block 271 directs the processor circuit to increment the contents of theconcurrent call field 277. If the contents ofconcurrent call field 277 are equal to or greater than the contents of the maximumconcurrent call field 275, block 259 directs theprocessor circuit 200 to send an error message back to the call controller (14) to cause the call controller to notify the caller that the maximum number of concurrent calls has been reached and no further calls can exist concurrently, including the presently requested call. - Assuming
block 256 allows the call to proceed, theRC processor circuit 200 is directed to perform certain checks on the callee identifier provided by the contents of thecallee field 154 inFigure 6 , of theRC request message 150. These checks are shown in greater detail inFigure 8B . Referring toFigure 8B , the processor (202 inFigure 7 ) is directed to afirst block 257 that causes it to determine whether a digit pattern of the callee identifier (154) provided in the RC request message (150) includes a pattern that matches the contents of the international dialling digits (IDD)field 264 in the caller profile shown inFigure 10 . If so, then block 259 directs the processor (202) to set a call type code identifier variable maintained by the processor to indicate that the call is an international call and block 261 directs the processor to produce a reformatted callee identifier by reformatting the callee identifier into a predefined digit format. In this embodiment, this is done by removing the pattern of digits matching theIDD field contents 264 of the caller dialling profile to effectively shorten the callee identifier. Then, block 263 directs theprocessor 202 to determine whether or not the callee identifier has a length which meets criteria establishing it as a number compliant with the E.164 Standard set by the ITU. If the length does not meet this criteria, block 265 directs theprocessor 202 to send back to the call controller (14) a message indicating the length is not correct. The process is then ended. At thecall controller 14, routines (not shown) stored in theprogram memory 104 may direct the processor (102 ofFigure 4 ) to respond to the incorrect length message by transmitting a message back to the telephone (12 shown inFigure 1 ) to indicate that an invalid number has been dialled. - Still referring to
Figure 8B , if the length of the amended callee identifier meets the criteria set forth atblock 263, block 269 directs the processor (202 ofFigure 7 ) to make a database request to determine whether or not the amended callee identifier is found in a record in the direct-in-dial bank (DID) table. Referring back toFigure 8B , atblock 269, if theprocessor 202 receives a response from the database indicating that the reformatted callee identifier produced atblock 261 is found in a record in the DID bank table, then the callee is a subscriber to the system and the call is classified as a private network call by directing the processor to block 279 which directs the processor to copy the contents of the corresponding user name field (281 inFigure 14 ) from the callee DID bank table record (300 inFigure 14 ) into the callee ID buffer (211 inFigure 7 ). Thus, theprocessor 202 locates a subscriber user name associated with the reformatted callee identifier. Theprocessor 202 is then directed to point B inFigure 8A . - Referring to
Figure 8A , block 280 directs the processor (202 ofFigure 7 ) to execute a process to determine whether or not the node associated with the reformatted callee identifier is the same node that is associated with the caller identifier. To do this, theprocessor 202 determines whether or not a prefix (e.g., continent code 61) of the callee name held in the callee ID buffer (211 inFigure 7 ), is the same as the corresponding prefix of the caller name held in theusername field 258 of the caller dialling profile shown inFigure 10 . If the corresponding prefixes are not the same, block 302 inFigure 8A directs the processor (202 inFigure 7 ) to set a call type flag in the buffer memory (207 inFigure 7 ) to indicate the call is a cross-domain call. Then, block 350 ofFigure 8A directs the processor (202 ofFigure 7 ) to produce a routing message identifying an address on the private network with which the callee identified by the contents of the callee ID buffer is associated and to set a time to live for the call at a maximum value of 99999, for example. - Thus the routing message includes a caller identifier, a call identifier set according to a username associated with the located DID bank table record and includes an identifier of a node on the private network with which the callee is associated.
- The node in the system with which the callee is associated is determined by using the callee identifier to address a supernode table having records of the type as shown at 370 in
Figure 17 . Eachrecord 370 has aprefix field 372 and asupernode address field 374. Theprefix field 372 includes the first n digits of the callee identifier. In this embodiment n=2. Thesupernode address field 374 holds a code representing the IP address or a fully qualified domain name of the node associated with the code stored in the calleeidentifier prefix field 372. Referring toFigure 18 , for example, if the prefix is 20, the supernode address associated with that prefix is sp.yvr.digifonica.com. - Referring to
Figure 15 , a generic routing message is shown generally at 352 and includes an optionalsupplier prefix field 354, andoptional delimiter field 356, a calleeuser name field 358, at least oneroute field 360, a time to live field 362 and other fields 364. The optionalsupplier prefix field 354 holds a code for identifying supplier traffic. Theoptional delimiter field 356 holds a symbol that delimits the supplier prefix code from the calleeuser name field 358. In this embodiment, the symbol is a number sign (#). Theroute field 360 holds a domain name or IP address of a gateway or node that is to carry the call, and the time to live field 362 holds a value representing the number of seconds the call is permitted to be active, based on subscriber available minutes and other billing parameters. - Referring to
Figure 8A andFigure 16 , an example of a routing message produced by the processor atblock 350 for a caller associated with a different node than the caller is shown generally at 366 and includes only acallee field 359, aroute field 361 and a time to live field 362. - Referring to
Figure 8A , having produced a routing message as shown inFigure 16 , block 381 directs the processor (202 ofFigure 7 ) to send the routing message shown inFigure 16 to thecall controller 14 shown inFigure 1 . - Referring back to
Figure 8B , if atblock 257, the callee identifier stored in the callee id buffer (211 inFigure 7 ) does not begin with an international dialling digit, block 380 directs the processor (202) to determine whether or not the callee identifier begins with the same national dial digit code as assigned to the caller. To do this, the processor (202) is directed to refer to the retrieved caller dialling profile as shown inFigure 10 . InFigure 10 , the nationaldialling digit code 262 is thenumber 1. Thus, if the callee identifier begins with thenumber 1, then the processor (202) is directed to block 382 inFigure 8B . -
Block 382 directs the processor (202 ofFigure 7 ) to examine the callee identifier to determine whether or not the digits following the NDD digit identify an area code that is the same as any of the area codes identified in the local area codes field 267 of thecaller dialling profile 276 shown inFigure 10 . If not, block 384 ofFigure 8B directs theprocessor 202 to set the call type flag to indicate that the call is a national call. If the digits following the NDD digit identify an area code that is the same as a local area code associated with the caller as indicated by the caller dialling profile, block 386 directs theprocessor 202 to set the call type flag to indicate a local call, national style. After executingblocks processor 202 to format the callee identifier into a pre-defined digit format to produce a re-formatted callee identifier by removing the national dialled digit and prepending a caller country code identified by thecountry code field 266 of the caller dialling profile shown inFigure 10 . The processor (202) is then directed to block 263 ofFigure 8B to perform other processing as already described above. - If at
block 380, the callee identifier does not begin with a national dialled digit, block 390 directs the processor (202) to determine whether the callee identifier begins with digits that identify the same area code as the caller. Again, the reference for this is the retrieved caller dialling profile shown inFigure 10 . The processor (202) determines whether or not the first few digits of the callee identifier identify an area code corresponding to the localarea code field 267 of the retrieved caller dialling profile. If so, then block 392 directs theprocessor 202 to set the call type flag to indicate that the call is a local call and block 394 directs the processor (202) to format the callee identifier into a pre-defined digit format to produce a reformatted callee identifier by prepending the caller country code to the callee identifier, the caller country code being determined from thecountry code field 266 of the retrieved caller dialling profile shown inFigure 10 . The processor (202) is then directed to block 263 for further processing as described above. - Referring back to
Figure 8B , atblock 390, the callee identifier does not start with the same area code as the caller, block 396 directs the processor (202 ofFigure 7 ) to determine whether the number of digits in the callee identifier, i.e. the length of the callee identifier, is within the range of digits indicated by the caller minimum localnumber length field 268 and the caller maximum localnumber length field 270 of the retrieved caller dialling profile shown inFigure 10 . If so, then block 398 directs the processor (202) to set the call type flag to indicate a local call and block 400 directs the processor (202) to format the callee identifier into a pre-defined digit format to produce a reformatted callee identifier by prepending to the callee identifier the caller country code (as indicated by thecountry code field 266 of the retrieved caller dialling profile shown inFigure 10 ) followed by the caller area code (as indicated by the localarea code field 267 of the caller profile shown inFigure 10 ). The processor (202) is then directed to block 263 ofFigure 8B for further processing as described above. - Referring back to
Figure 8B , if atblock 396, the callee identifier has a length that does not fall within the range specified by the caller minimum local number length field (268 inFigure 10 ) and the caller maximum local number length field (270 inFigure 10 ), block 402 directs theprocessor 202 ofFigure 7 to determine whether or not the callee identifier identifies a valid user name. To do this, theprocessor 202 searches through the database (18 ofFigure 10 of dialling profiles to find a dialling profile having user name field contents (258 inFigure 10 ) that match the callee identifier. If no match is found, block 404 directs the processor (202) to send an error message back to the call controller (14). If atblock 402, a dialling profile having auser name field 258 that matches the callee identifier is found, block 406 directs theprocessor 202 to set the call type flag to indicate that the call is a private network call and then the processor is directed to block 280 ofFigure 8A . Thus, the call is classified as a private network call when the callee identifier identifies a subscriber to the private network. - From
Figure 8B , it will be appreciated that there are certain groups of blocks of codes that direct theprocessor 202 inFigure 7 to determine whether the callee identifier has certain features such as an international dialling digit, a national dialling digit, an area code and a length that meet certain criteria, and cause theprocessor 202 to reformat the callee identifier stored in thecallee id buffer 211, as necessary into a predetermined target format including only a country code, area code, and a normal telephone number, for example, to cause the callee identifier to be compatible with the E.164 number plan standard in this embodiment. This enablesblock 269 inFigure 8B to have a consistent format of callee identifiers for use in searching through the DID bank table records of the type shown inFigure 13 to determine how to route calls for subscriber to subscriber calls on the same system. Effectively, therefore blocks 257, 380, 390, 396 and 402 establish call classification criteria for classifying the call as a public network call or a private network call.Block 269 classifies the call, depending on whether or not the formatted callee identifier has a DID bank table record and this depends on how the call classification criteria are met and block 402 directs theprocessor 202 ofFigure 7 to classify the call as a private network call when the callee identifier complies with a pre-defined format, i.e. is a valid user name and identifies a subscriber to the private network, after the callee identifier has been subjected to the classification criteria ofblocks - Not all calls will be subscriber to subscriber calls and this will be detected by the
processor 202 ofFigure 7 when it executes block 269 inFigure 8B , and does not find a DID bank table record that is associated with the callee, in the DID bank table. When this occurs, the call is classified as a public network call by directing theprocessor 202 to block 408 ofFigure 8B which causes it to set the contents of thecallee id buffer 211 ofFigure 7 equal to the newly formatted callee identifier, i.e., a number compatible with the E.164 standard. Then, block 410 ofFigure 8B directs the processor (202) to search a database of route or master list records associating route identifiers with dialling codes shown inFigure 19 to locate a router having a dialling code having a number pattern matching at least a portion of the reformatted callee identifier. - Referring to
Figure 19 , a data structure for a master list or route list record is shown. Each master list record includes a masterlist ID field 500, a diallingcode field 502, acountry code field 504, a nationalsign number field 506, aminimum length field 508, amaximum length field 510, a national dialleddigit field 512, an international dialleddigit field 514 and abuffer rate field 516. - The master
list ID field 500 holds a unique code such as 1019, for example, identifying the record. The diallingcode field 502 holds a predetermined number pattern that theprocessor 202 ofFigure 7 uses atblock 410 inFigure 8B to find the master list record having a dialling code matching the first few digits of the amended callee identifier stored in thecallee id buffer 211. Thecountry code field 504 holds a number representing the country code associated with the record and the nationalsign number field 506 holds a number representing the area code associated with the record. (It will be observed that the dialling code is a combination of the contents of thecountry code field 504 and the nationalsign number field 506.) Theminimum length field 508 holds a number representing the minimum length of digits associated with the record and the maximum length field 51 holds a number representing the maximum number of digits in a number with which the record may be compared. The national dialled digit (NDD)field 512 holds a number representing an access code used to make a call within the country specified by the country code, and the international dialled digit (IDD)field 514 holds a number representing the international prefix needed to dial a call from the country indicated by the country code. - Thus, for example, a master list record may have a format as shown in
Figure 20 with exemplary field contents as shown. - Referring back to
Figure 8B , using the country code and area code portions of the reformatted callee identifier stored in thecallee id buffer 211, block 410 directs theprocessor 202 ofFigure 7 to find a master list record such as the one shown inFigure 20 having a dialling code that matches the country code (1) and area code (604) of the callee identifier. Thus, in this example, the processor (202) would find a master list record having an ID field containing thenumber 1019. This number may be referred to as a route ID. Thus, a route ID number is found in the master list record associated with a predetermined number pattern in the reformatted callee identifier. - After executing
block 410 inFigure 8B , the process continues as shown inFigure 8D . Referring toFigure 8D , block 412 directs theprocessor 202 ofFigure 7 to use the route ID number to search a database of supplier records associating supplier identifiers with route identifiers to locate at least one supplier record associated with the route identifier to identify at least one supplier operable to supply a communications link for the route. - Referring to
Figure 21 , a data structure for a supplier list record is shown. Supplier list records include asupplier ID field 540, a masterlist ID field 542, anoptional prefix field 544, a specificroute identifier field 546, a NDD/IDD rewrite field 548, a rate field 550, and atimeout field 551. Thesupplier ID field 540 holds a code identifying the name of the supplier and the masterlist ID field 542 holds a code for associating the supplier record with a master list record. Theprefix field 544 holds a string used to identify the supplier traffic and the specificroute identifier field 546 holds an IP address of a gateway operated by the supplier indicated by thesupplier ID field 540. The NDD/IDD rewrite field 548 holds a code representing a rewritten value of the NDD/IDD associated with this route for this supplier, and the rate field 550 holds a code indicating the cost per second to the system operator to use the route provided by the gateway specified by the contents of theroute identifier field 546. Thetimeout field 551 holds a code indicating a time that the call controller should wait for a response from the associated gateway before giving up and trying the next gateway. This time value may be in seconds, for example. Exemplary supplier records are shown inFigures 22, 23 and 24 for the exemplary suppliers shown at 20 inFigure 1 , namely Telus, Shaw and Sprint. - Referring back to
Figure 8D , atblock 412 theprocessor 202 finds all supplier records that identify the master list ID found atblock 410 ofFigure 8B . - Referring back to
Figure 8D , block 560 directs theprocessor 202 ofFigure 7 to begin to produce a routing message of the type shown inFigure 15 . To do this, theprocessor 202 loads a routing message buffer as shown inFigure 25 with a supplier prefix of the least costly supplier where the least costly supplier is determined from the rate fields 550 ofFigure 21 of the records associated with respective suppliers. - Referring to
Figures 22-24 , in the embodiment shown, the supplier "Telus" has the lowest number in the rate field 550 and therefore theprefix 4973 associated with that supplier is loaded into the routing message buffer shown inFigure 25 first. -
Block 562 inFigure 8D directs the processor to delimit theprefix 4973 by the number sign (#) and to next load the reformatted callee identifier into the routing message buffer shown inFigure 25 . Atblock 563 ofFigure 8D , the contents of theroute identifier field 546 ofFigure 21 of the record associated with the supplier "Telus" are added by theprocessor 202 ofFigure 7 to the routing message buffer shown inFigure 25 after an @ sign delimiter, and then block 564 inFigure 8D directs the processor to get a time to live value, which in one embodiment may be 3600 seconds, for example.Block 566 then directs theprocessor 202 to load this time to live value and the timeout value (551) inFigure 21 in the routing message buffer ofFigure 25 . Accordingly, a first part of the routing message for the Telus gateway is shown generally at 570 inFigure 25 . - Referring back to
Figure 8D , block 571 directs theprocessor 202 back to block 560 and causes it to repeatblocks block 412. Thus, a second portion of the routing message as shown at 572 inFigure 25 relates to the second supplier identified by the record shown inFigure 23 . Referring back toFigure 25 , a third portion of the routing message as shown at 574 and is associated with a third supplier as indicated by the supplier record shown inFigure 24 . - Consequently, referring to
Figure 25 , the routing message buffer holds a routing message identifying a plurality of different suppliers able to provide gateways to the public telephone network (i.e. specific routes) to establish at least part of a communication link through which the caller may contact the callee. In this embodiment, each of the suppliers is identified, in succession, according to rate. Other criteria for determining the order in which suppliers are listed in the routing message may include preferred supplier priorities which may be established based on service agreements, for example. - Referring back to
Figure 8D , block 568 directs theprocessor 202 ofFigure 7 to send the routing message shown inFigure 25 to thecall controller 14 inFigure 1 . - Referring back to
Figure 8A , if atblock 280, the callee identifier received in the RC request message has a prefix that identifies the same node as that associated with the caller, block 600 directs theprocessor 202 to use the callee identifier in thecallee id buffer 211 to locate and retrieve a dialling profile for the callee. The dialling profile may be of the type shown inFigure 11 or 12 , for example.Block 602 ofFigure 8A then directs theprocessor 202 ofFigure 7 to get call block, call forward and voicemail records from thedatabase 18 ofFigure 1 based on the user name identified in the callee dialling profile retrieved by the processor atblock 600. Call block, call forward and voicemail records may be as shown inFigures 26, 27, 28 and30 for example. - Referring to
Figure 26 , the call block records include auser name field 604 and a block pattern field 606. The user name field holds a user name corresponding to the user name in the user name field (258 inFigure 10 ) of the callee profile and the block pattern field 606 holds one or more E.164-compatible numbers or user names identifying PSTN numbers or system subscribers from whom the subscriber identified in theuser name field 604 does not wish to receive calls. - Referring to
Figure 8A andFigure 27 , block 608 directs theprocessor 202 ofFigure 7 to determine whether or not the caller identifier received in the RC request message matches a block pattern stored in the block pattern field 606 of the call block record associated with the callee identified by the contents of theuser name field 604 inFigure 26 . If the caller identifier matches a block pattern, block 610 directs the processor to send a drop call or non-completion message to the call controller (14) and the process is ended. If the caller identifier does not match a block pattern associated with the callee, block 609 directs the processor to store the username and domain of the callee, as determined from the callee dialling profile, and a time to live value in the routing message buffer as shown at 650 inFigure 32 . Referring back toFigure 8A , block 612 then directs theprocessor 202 to determine whether or not call forwarding is required. - Referring to
Figure 28 , the call forwarding records include auser name field 614, adestination number field 616, and asequence number field 618. Theuser name field 614 stores a code representing a user with which the record is associated. Thedestination number field 616 holds a user name representing a number to which the current call should be forwarded, and thesequence number field 618 holds an integer number indicating the order in which the user name associated with the correspondingdestination number field 616 should be attempted for call forwarding. The call forwarding table may have a plurality of records for a given user. Theprocessor 202 ofFigure 7 uses the contents of thesequence number field 618 to place the records for a given user in order. As will be appreciated below, this enables the call forwarding numbers to be tried in an ordered sequence. - Referring to
Figure 8A andFigure 29 , if atblock 612, the call forwarding record for the callee identified by the callee identifier contains no contents in thedestination number field 616 and accordingly no contents in thesequence number field 618, there are no call forwarding entries for this callee, and theprocessor 202 is directed to block 620 inFigure 8C . If there are entries in the call forwarding table 27, block 622 inFigure 8A directs theprocessor 202 to search the dialling profile table to find a dialling profile record as shown inFigure 9 , for the user identified by thedestination number field 616 of the call forward record shown inFigure 28 . Theprocessor 202 ofFigure 7 is further directed to store the username and domain for that user and a time to live value in the routing message buffer as shown at 652 inFigure 32 , to produce a routing message as illustrated. This process is repeated for each call forwarding record associated with the callee identified by thecallee id buffer 211 inFigure 7 to add to the routing message buffer all call forwarding usernames and domains associated with the callee. Referring back toFigure 8A , if atblock 612 there are no call forwarding records, then atblock 620 inFigure 8C theprocessor 202 is directed to determine whether or not the user identified by the callee identifier has paid for voicemail service. This is done by checking to see whether or not a flag is set in a voicemail record of the type shown inFigure 30 in a voicemail table stored in thedatabase 18 shown inFigure 1 . - Referring to
Figure 30 , voicemail records in this embodiment may include auser name field 624, a voicemail server field 626, a seconds to voicemail field 628 and an enablefield 630. Theuser name field 624 stores the user name of the callee. The voicemail server field 626 holds a code identifying a domain name of a voicemail server associated with the user identified by theuser name field 624. The seconds to voicemail field 628 holds a code identifying the time to wait before engaging voicemail, and the enablefield 630 holds a code representing whether or not voicemail is enabled for the user. Referring back toFigure 8C , atblock 620 if theprocessor 202 ofFigure 7 finds a voicemail record as shown inFigure 30 havinguser name field 624 contents matching the callee identifier, the processor is directed to examine the contents of theenabled field 630 to determine whether or not voicemail is enabled. If voicemail is enabled, then block 640 inFigure 8C directs theprocessor 202 toFigure 7 to store the contents of the voicemail server field 626 and the contents of the seconds to voicemail field 628 in the routing message buffer, as shown at 654 inFigure 32 .Block 642 then directs theprocessor 202 to get time to live values for each path specified by the routing message according to the cost of routing and the user's balance. These time to live values are then appended to corresponding paths already stored in the routing message buffer. - Referring back to
Figure 8C , block 644 then directs theprocessor 202 ofFigure 7 to store the IP address of the current node in the routing message buffer as shown at 656 inFigure 32 .Block 646 then directs theprocessor 202 to send the routing message shown inFigure 32 to thecall controller 14 inFigure 1 . Thus in the embodiment described the routing controller will produce a routing message that will cause at least one of the following: forward the call to another party, block the call and direct the caller to a voicemail server. - Referring back to
Figure 1 , the routing message whether of the type shown inFigures 16 ,25 or32 , is received at thecall controller 14 and the call controller interprets the receipt of the routing message as a request to establish a call. - Referring to
Figure 4 , theprogram memory 104 of thecall controller 14 includes a routing to gateway routine depicted generally at 122. - Where a routing message of the type shown in
Figure 32 is received by thecall controller 14, the routing togateway routine 122 shown inFigure 4 may direct theprocessor 102 cause a message to be sent back through theinternet 13 shown inFigure 1 to thecallee telephone 15, knowing the IP address of thecallee telephone 15 from the user name. - Alternatively, if the routing message is of the type shown in
Figure 16 , which identifies a domain associated with another node in the system, the call controller may send a SIP invite message along thehigh speed backbone 17 connected to the other node. The other node functions as explained above, in response to receipt of a SIP invite message. - If the routing message is of the type shown in
Figure 25 where there are a plurality of gateway suppliers available, the call controller sends a SIP invite message to the first supplier, in this case Telus, using a dedicated line or an internet connection to determine whether or not Telus is able to handle the call. If the Telus gateway returns a message indicating it is not able to handle the call, thecall controller 14 then proceeds to send a SIP invite message to the next supplier, in this case Shaw. The process is repeated until one of the suppliers responds indicating that it is available to carry the call. Once a supplier responds indicating that it is able to carry the call, the supplier sends back to thecall controller 14 an IP address for a gateway provided by the supplier through which the call or audio path of the call will be carried. This IP address is sent in a message from thecall controller 14 to themedia relay 9 which responds with a message indicating an IP address to which the caller telephone should send its audio/video, traffic and an IP address to which the gateway should send its audio/video for the call. The call controller conveys the IP address at which the media relay expects to receive audio/video from the caller telephone, to thecaller telephone 12 in a message. The caller telephone replies to the call controller with an IP address at which it would like to receive audio/video and the call controller conveys that IP address to the media relay. The call may then be conducted between the caller and callee through the media relay and gateway. - Referring back to
Figure 1 , if thecall controller 14 receives a routing message of the type shown inFigure 32 , and which has at least one call forwarding number and/or a voicemail number, the call controller attempts to establish a call to thecallee telephone 15 by seeking from the callee telephone a message indicating an IP address to which the media relay should send audio/video. If no such message is received from the callee telephone, no call is established. If no call is established within a pre-determined time, thecall controller 14 attempts to establish a call with the next user identified in the call routing message in the same manner. This process is repeated until all call forwarding possibilities have been exhausted, in which case the call controller communicates with thevoicemail server 19 identified in the routing message to obtain an IP address to which the media relay should send audio/video and the remainder of the process mentioned above for establishing IP addresses at themedia relay 9 and the caller telephone is carried out to establish audio/video paths to allowing the caller to leave a voicemail message with the voicemail server. - When an audio/video path through the media relay is established, a call timer maintained by the
call controller 14 logs the start date and time of the call and logs the call ID and an identification of the route (i.e., audio/video path IP address) for later use in billing. - Referring to
Figures 33A and33B , a process for determining a time to live value for any ofblocks 642 inFigure 8C , 350 inFigure 8A or 564 inFigure 8D above is described. The process is executed by theprocessor 202 shown inFigure 7 . Generally, the process involves calculating a cost per unit time, calculating a first time value as a sum of a free time attributed to a participant in the communication session and the quotient of a funds balance held by the participant to the cost per unit time value and producing a second time value in response to the first time value and a billing pattern associated with the participant, the billing pattern including first and second billing intervals and the second time value being the time to permit a communication session to be conducted. - Referring to
Figure 33A , in this embodiment, the process begins with afirst block 700 that directs the RC processor to determine whether or not the call type set atblock 302 inFigure 8A indicates the call is a network or cross-domain call. If the call is a network or cross-domain call, block 702 ofFigure 33A directs the RC processor to set the time to live equal to 99999 and the process is ended. Thus, the network or cross-domain call type has a long time to live. If atblock 700 the call type is determined not to be a network or cross-domain type, block 704 directs the RC processor to get a subscriber bundle table record from thedatabase 18 inFigure 1 and store it locally in the subscriber bundle record buffer at theRC 14. - Referring to
Figure 34 , a subscriber bundle table record is shown generally at 706. The record includes auser name field 708 and aservices field 710. Theuser name field 708 holds a code identifying the subscriber user name and theservices field 710 holds codes identifying service features assigned to the subscriber, such as free local calling, call blocking and voicemail, for example.Figure 35 shows an exemplary subscriber bundle record for the Vancouver caller. In this record theuser name field 708 is loaded with theuser name 2001 1050 8667 and theservices field 710 is loaded withcodes - Thus,
user 2001 1050 8667 has free local calling, call blocking and voicemail features. - Referring back to
Figure 33A , after having loaded a subscriber bundle record into the subscriber bundle record buffer, block 712 directs the RC processor to search the database (18) determine whether or not there is a bundle override table record for the master list ID value that was determined atblock 410 inFigure 8B . An exemplary bundle override table record is shown at 714 inFigure 36 . The bundle table record includes a master list ID field 716, anoverride type field 718, an override value field 720 afirst interval field 722 and asecond interval field 724. The master list ID field 716 holds a master list ID code. Theoverride type field 718 holds an override type code indicating a fixed, percent or cent amount to indicate the amount by which a fee will be increased. Theoverride value field 720 holds a real number representing the value of the override type. Thefirst interval field 722 holds a value indicating the minimum number of seconds for a first level of charging and thesecond interval field 724 holds a number representing a second level of charging. - Referring to
Figure 37 , a bundle override record for the located master list ID code is shown generally at 726 and includes a master list ID field 716 holding thecode 1019 which was the code located inblock 410 ofFigure 8B . Theoverride type field 718 includes a code indicating the override type is a percentage value and theoverride value field 720 holds the value 10.0 indicating that the override will be 10.0% of the charged value. Thefirst interval field 722 holds a value representing 30 seconds and thesecond interval field 724 holds a value representing 6 seconds. The 30 second value in thefirst interval field 722 indicates that charges for the route will be made at a first rate for 30 seconds and thereafter the charges will be made at a different rate in increments of 6 seconds, as indicated by the contents of thesecond interval field 724. - Referring back to
Figure 33A , if atblock 712 the processor finds a bundle override record of the type shown inFigure 37 , block 728 directs the processor to store the bundle override record in local memory. In the embodiment shown, the bundle override record shown inFigure 37 is stored in the bundle override record buffer at the RC as shown inFigure 7 . Still referring toFigure 33A , block 730 then directs the RC processor to determine whether or not the subscriberbundle table record 706 inFigure 35 has a services field including a code identifying that the user is entitled to free local calling and also directs the processor to determine whether or not the call type is not a cross domain cell, i.e. it is a local or local/national style. If both of these conditions are satisfied, block 732 directs the processor to set the time to live equal to 99999, giving the user a long period of time for the call. The process is then ended. If the conditions associated withblock 730 are not satisfied, block 734 ofFigure 33B directs the RC processor to retrieve a subscriber account record associated with a participant in the call. This is done by copying and storing in the subscriber account record buffer a subscriber account record for the caller. - Referring to
Figure 38 , an exemplary subscriber account table record is shown generally at 736. The record includes auser name field 738, afunds balance field 740 and afree time field 742. Theuser name field 738 holds a subscriber user name, thefunds balance field 740 holds a real number representing the dollar value of credit available to the subscriber and thefree time field 742 holds an integer representing the number of free seconds that the user is entitled to. - An exemplary subscriber account record for the Vancouver caller is shown generally at 744 in
Figure 39 , wherein theuser name field 738 holds theuser name 2001 1050 8667, thefunds balance field 740 holds the value $10.00, and thefree time field 742 holds thevalue 100. The funds balance field holding the value of $10.00 indicates the user has $10.00 worth of credit and the free time field having the value of 100 indicates that the user has a balance of 100 free seconds of call time. - Referring back to
Figure 33B , after copying and storing the subscriber account record shown inFigure 39 from the database to the subscriber account record buffer RC, block 746 directs the processor to determine whether or not the subscriber account record funds balancefield 740 orfree time field 742 are greater than zero. If they are not greater than zero, block 748 directs the processor to set the time to live equal to zero and the process is ended. The RC then sends a message back to the call controller to cause the call controller to deny the call to the caller. If the conditions associated withblock 746 are satisfied, block 750 directs the processor to calculate the call cost per unit time. A procedure for calculating the call cost per unit time is described below in connection withFigure 41 . - Assuming the procedure for calculating the cost per second returns a number representing the call cost per second, block 752 directs the
processor 202 inFigure 7 to determine whether or not the cost per second is equal to zero. If so, block 754 directs the processor to set the time to live to 99999 to give the caller a very long length of call and the process is ended. - If at
block 752 the call cost per second is not equal to zero, block 756 directs theprocessor 202 inFigure 7 to calculate a first time to live value as a sum of a free time attributed to the participant in the communication session and the quotient of the funds balance held by the participant to the cost per unit time value. To do this, theprocessor 202 ofFigure 7 is directed to set a first time value or temporary time to live value equal to the sum of the free time provided in thefree time field 742 of the subscriber account record shown inFigure 39 and the quotient of the contents of thefunds balance field 740 in the subscriber account record for the call shown inFigure 39 and the cost per second determined atblock 750 ofFigure 33B . Thus, for example, if atblock 750 the cost per second is determined to be three cents per second and the funds balance field holds the value $10.00, the quotient of the funds balance and cost per second is 333 seconds and this is added to the contents of thefree time field 742, which is 100, resulting in a time to live of 433 seconds. -
Block 758 then directs the RC processor to produce a second time value in response to the first time value and the billing pattern associated with the participant as established by the bundle override record shown inFigure 37 . - This process is shown in greater detail at 760 in
Figure 40 and generally involves producing a remainder value representing a portion of the second billing interval remaining after dividing the second billing interval into a difference between the first time value and the first billing interval. - Referring to
Figure 40 , the process for producing the second time value begins with afirst block 762 that directs theprocessor 202 inFigure 7 to set a remainder value equal to the difference between the time to live value calculated atblock 756 inFigure 33B and the contents of thefirst interval field 722 of the record shown inFigure 37 , multiplied by the modulus of the contents of thesecond interval field 724 ofFigure 37 . Thus, in the example given, the difference between the time to live field and the first interval field is 433 minus 30, which is 403 and therefore the remainder produced by the mod of 403 divided by 6 is 0.17.Block 764 then directs the processor to determine whether or not this remainder value is greater than zero and, if so, block 766 directs the processor to subtract the remainder from the first time value and set the difference as the second time value. To do this the processor is directed to set the time to live value equal to the current time to live of 403 minus the remainder of 1, i.e., 402 seconds. The processor is then returned back to block 758 ofFigure 33B . Referring back toFigure 40 , if atblock 764 the remainder is not greater than zero, block 768 directs theprocessor 202 ofFigure 7 to determine whether or not the time to live is less than the contents of thefirst interval field 722 in the record shown inFigure 37 . If so, then block 770 ofFigure 40 directs the processor to set the time to live equal to zero. Thus, the second time value is set to zero when the remainder is greater than zero and the first time value is less than the free time associated with the participant in the call. If atblock 768 the conditions of that block are not satisfied, the processor returns the first time to live value as the second time to live value. - Thus, referring to
Figure 33B , after having produced a second time to live value, block 772 directs the processor to set the time to live value for use inblocks - Referring back to
Figure 33B , atblock 750 it was explained that a call cost per unit time is calculated. The following explains how that call cost per unit time value is calculated. - Referring to
Figure 41 , a process for calculating a cost per unit time is shown generally at 780. The process is executed by theprocessor 202 inFigure 7 and generally involves locating a record in a database, the record comprising a markup type indicator, a markup value and a billing pattern and setting a reseller rate equal to the sum of the markup value and the buffer rate, locating at least one of an override record specifying a route cost per unit time amount associated with a route associated with the communication session, a reseller record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session and a default operator markup record specifying a default cost per unit time and setting as the cost per unit time the sum of the reseller rate and at least one of the route cost per unit time, the reseller cost per unit time and the default cost per unit time. The process begins with a first set ofblocks processor 202 inFigure 7 to locate at least one of a record associated with a reseller and a route associated with the reseller, a record associated with the reseller, and a default reseller mark-up record.Block 782, in particular, directs the processor to address thedatabase 18 to look for a record associated with a reseller and a route with the reseller by looking for a special rate record based on the master list ID established atblock 410 inFigure 8C . - Referring to
Figure 42 , a system operator special rate table record is shown generally at 784. The record includes areseller field 786, a masterlist ID field 788, a mark-uptype field 790, a mark-upvalue field 792, afirst interval field 794 and asecond interval field 796. Thereseller field 786 holds a reseller ID code and the masterlist ID field 788 holds a master list ID code. The mark-uptype field 790 holds a mark-up type such as fixed percent or cents and the mark-upvalue field 792 holds a real number representing the value corresponding to the mark-up type. Thefirst interval field 794 holds a number representing a first level of charging and thesecond interval field 796 holds a number representing a second level of charging. - An exemplary system operator special rate table for a reseller known as "Klondike" is shown at 798 in
Figure 43 . In this record, thereseller field 786 holds a code indicating the retailer ID is Klondike, the masterlist ID field 788 holds thecode 1019 to associate the record with the masterlist ID code 1019. - The mark-up
type field 790 holds a code indicating the mark-up type is cents and the mark-upvalue field 792 holds a mark-up value indicating 1/10 of one cent. Thefirst interval field 794 holds thevalue 30 and thesecond interval field 796 holds thevalue 6, these two fields indicating that the operator allows 30 seconds for free and then billing is done in increments of 6 seconds after that. Referring back toFigure 41 , if at block 782 a record such as the one shown inFigure 43 is located in the system operator special rates table, the processor is directed to block 800 inFigure 41 . If such a record is not found in the system operator special rates table, block 802 directs the processor to address thedatabase 18 to look in a system operator mark-up table for a mark-up record associated with the reseller. - Referring to
Figure 44 , an exemplary system operator mark-up table record is shown generally at 804. The record includes areseller field 806, a mark-uptype field 808, a mark-upvalue field 810, afirst interval field 812 and asecond interval field 814. The reseller mark-up type, mark-up value, first interval and second interval fields are as described in connection with the fields by the same names in the system operator special rates table shown inFigure 42 . -
Figure 45 provides an exemplary system operator mark-up table record for the reseller known as Klondike and therefore thereseller field 806 holds the value "Klondike", the mark-uptype field 808 holds the value cents, the markup value field holds the value 0.01, thefirst interval field 812 holds thevalue 30 and thesecond interval field 814 holds thevalue 6. This indicates that the reseller "Klondike" charges by the cent at a rate of one cent per minute. The first 30 seconds of the call are free and billing is charged at the rate of one cent per minute in increments of 6 seconds. -
Figure 46 provides an exemplary system operator mark-up table record for cases where no specific system operator mark-up table record exists for a particular reseller, i.e., a default reseller mark-up record. This record is similar to the record shown inFigure 45 and thereseller field 806 holds the value "all", the mark-uptype field 808 is loaded with a code indicating mark-up is based on a percentage, the mark-upvalue field 810 holds the percentage by which the cost is marked up, and the first and second interval fields 812 and 814 identify first and second billing levels. Referring back toFigure 41 , if at block 802 a specific mark-up record for the reseller identified atblock 782 is not located, block 820 directs the processor to get the mark-up record shown inFigure 46 , having the "all" code in thereseller field 806. The processor is then directed to block 800. - Referring back to
Figure 41 , atblock 800, theprocessor 202 ofFigure 7 is directed to set a reseller rate equal to the sum of the mark-up value of the record located byblocks buffer rate field 516 of the master list record shown inFigure 20 . To do this, the RC processor sets a variable entitled "reseller cost per second" to a value equal to the sum of the contents of the mark-up value field (792, 810) of the associated record, plus the contents of the buffer rate field (516) from the master list record associated with the master list ID. Then, block 822 directs the processor to set a system operator cost per second variable equal to the contents of the buffer rate field (516) from the master list record.Block 824 then directs the processor to determine whether the call type flag indicates the call is local or national/local style and whether the caller has free local calling. If both these conditions are met, then block 826 sets the user cost per second variable equal to zero and sets two increment variables equal to one, for use in later processing. The cost per second has thus been calculated and the process shown inFigure 41 is ended. - If at
block 824 the conditions of that block are not met, theprocessor 202 ofFigure 7 is directed to locate at least one of a bundle override table record specifying a route cost per unit time associated with a route associated with the communication session, a reseller special destinations table record associated with a reseller of the communications session, the reseller record specifying a reseller cost per unit time associated with the reseller for the communication session and a default reseller global markup record specifying a default cost per unit time. To do this block 828 directs theprocessor 202 ofFigure 7 to determine whether or not thebundle override record 726 inFigure 37 located atblock 712 inFigure 33A has a master list ID equal to the stored master list ID that was determined atblock 410 inFigure 8B . If not, block 830 directs the processor to find a reseller special destinations table record in a reseller special destinations table in the database (18), having a master list ID code equal to the master list ID code of the master list ID that was determined atblock 410 inFigure 8B . An exemplary reseller special destinations table record is shown inFigure 47 at 832. The reseller special destinations table record includes areseller field 834, a masterlist ID field 836, a mark-uptype field 838, a mark-upvalue field 840, afirst interval field 842 and asecond interval field 844. This record has the same format as the system operator special rates table record shown inFigure 42 , but is stored in a different table to allow for different mark-up types and values and time intervals to be set according to resellers' preferences. Thus, for example, an exemplary reseller special destinations table record for the reseller "Klondike" is shown at 846 inFigure 48 . Thereseller field 834 holds a value indicating the reseller as the reseller "Klondike" and the master list ID field holds thecode 1019. Themarkup type field 838 holds a code indicating the mark-up type is percent and the mark-upvalue field 840 holds a number representing the mark-up value as 5%. The first and second interval fields identify different billing levels used as described earlier. - Referring back to
Figure 41 , the record shown inFigure 48 may be located atblock 830, for example. If atblock 830 such a record is not found, then block 832 directs the processor to get a default operator global mark-up record based on the reseller ID. - Referring to
Figure 49 , an exemplary default reseller global mark-up table record is shown generally at 848. This record includes areseller field 850, a mark-uptype field 852, a mark-upvalue field 854, afirst interval field 856 and asecond interval field 858. Thereseller field 850 holds a code identifying the reseller. The mark-uptype field 852, the mark-upvalue field 854 and the first and second interval fields 856 and 858 are of the same type as described in connection with fields of the same name inFigure 47 , for example. The contents of the fields of thisrecord 860 may be set according to system operator preferences, for example. - Referring to
Figure 50 , an exemplary reseller global mark-up table record is shown generally at 860. In this record, thereseller field 850 holds a code indicating the reseller is "Klondike", the mark-uptype field 852 holds a code indicating the mark-up type is percent, the mark-upvalue field 854 holds a value representing 10% as the mark-up value, thefirst interval field 856 holds thevalue 30 and thesecond interval field 858 holds thevalues - Referring back to
Figure 41 , should the processor get to block 832, the reseller global mark-up table record as shown inFigure 50 is retrieved from the database and stored locally at the RC. As seen inFigure 41 , it will be appreciated that if the conditions are met inblocks block 832, the processor is then directed to block 862 which causes it to set an override value equal to the contents of the mark-up value field of the located record, to set the first increment variable equal to the contents of the first interval field of the located record and to set the second increment variable equal to the contents of the second interval field of the located record. (The increment variables were alternatively set to specific values at block 826 inFigure 41 .) - It will be appreciated that the located record could be a bundle override record of the type shown in
Figure 37 or the located record could be a reseller special destination record of the type shown inFigure 48 or the record could be a reseller global mark-up table record of the type shown inFigure 50 . After the override and first and second increment variables have been set atblock 862, theprocessor 202 ifFigure 7 is directed to set as the cost per unit time the sum of the reseller rate and at least one of the route cost per unit time, the reseller cost per unit time and the default cost per unit time, depending on which record was located. To do this, block 864 directs the processor to set the cost per unit time equal to the sum of the reseller cost set atblock 800 inFigure 41 , plus the contents of the override variable calculated inblock 862 inFigure 41 . The cost per unit time has thus been calculated and it is this cost per unit time that is used inblock 752 ofFigure 33B , for example. - In the event that either the caller or the callee terminates a call, the telephone of the terminating party sends a SIP bye message to the
controller 14. An exemplary SIP bye message is shown at 900 inFigure 51 and includes acaller field 902, acallee field 904 and acall ID field 906. Thecaller field 902 holds a twelve digit user name, thecallee field 904 holds a PSTN compatible number or user name, and thecall ID field 906 holds a unique call identifier field of the type shown in thecall ID field 65 of the SIP invite message shown inFigure 3 . - Thus, for example, referring to
Figure 52 , a SIP bye message for the Calgary callee is shown generally at 908 and thecaller field 902 holds a user name identifying the caller, in thiscase 2001 1050 8667, thecallee field 904 holds a user name identifying the Calgary callee, in thiscase 2001 1050 2222, and thecall ID field 906 holds the code FA10 @ 192.168.0.20, which is the call ID for the call. - The SIP bye message shown in
Figure 52 is received at thecall controller 14 and the call controller executes a process as shown generally at 910 inFigure 53 . The process includes afirst block 912 that directs thecall controller processor 202 ofFigure 7 to copy the caller, callee and call ID field contents from the SIP bye message received from the terminating party to corresponding fields of an RC stop message buffer (not shown).Block 914 then directs the processor to copy the call start time from the call timer and to obtain a call stop time from the call timer.Block 916 then directs the call controller to calculate a communication session time by determining the difference in time between the call start time and the call stop time. This session time is then stored in a corresponding field of the RC call stop message buffer.Block 917 then directs the processor to decrement the contents of the currentconcurrent call field 277 of the dialling profile for the caller as shown inFigure 10 , to indicate that there is one less concurrent call in progress. A copy of the amended dialling profile for the caller is then stored in thedatabase 18 ofFigure 1 .Block 918 then directs the processor to copy the route from the call log. An RC call stop message produced as described above is shown generally at 1000 inFigure 54 . An RC call stop message specifically associated with the call made to the Calgary callee is shown generally at 1020 inFigure 55 . - Referring to
Figure 54 , the RC stop call message includes acaller field 1002,callee field 1004, acall ID field 1006, an account starttime field 1008, an accountstop time field 1010, acommunication session time 1012 and aroute field 1014. Thecaller field 1002 holds a username, thecallee field 1004 holds a PSTN-compatible number or system number, thecall ID field 1006 hold the unique call identifier received from the SIP invite message shown inFigure 3 , the account starttime field 1008 holds the date and start time of the call, the accountstop time field 1010 holds the date and time the call ended, the communicationsession time field 1012 holds a value representing the difference between the start time and the stop time, in seconds, and theroute field 1014 holds the IP address for the communications link that was established. - Referring to
Figure 55 , an exemplary RC stop call message for the Calgary callee is shown generally at 1020. In this example thecaller field 1002 holds theuser name 2001 1050 8667 identifying the Vancouver-based caller and thecallee field 1004 holds theuser name 2001 1050 2222 identifying the Calgary callee. The contents of thecall ID field 1006 are FA10 @ 192.168.0.20. The contents of the account starttime field 1008 are 2006-12-30 12:12:12 and the contents of the account stop time field are 2006-12-30 12:12:14. The contents of the communicationsession time field 1012 are 2 to indicate 2 seconds call duration and the contents of the route field are 72.64.39.58. - Referring back to
Figure 53 , after having produced an RC call stop message, block 920 directs theprocessor 202 inFigure 7 to send the RC stop message compiled in the RC call stop message buffer to theRC 16 ofFigure 1 .Block 922 directs thecall controller 14 to send a "bye" message back to the party that did not terminate the call. - The
RC 16 ofFigure 1 receives the call stop message and an RC call stop message process is invoked at the RC, the process being shown at 950 in -
Figures 56A ,56B and 56C. Referring toFigure 56A , the RCstop message process 950 begins with afirst block 952 that directs theprocessor 202 inFigure 7 to determine whether or not the communication session time is less than or equal to the first increment value set by the cost calculation routine shown inFigure 41 , specifically blocks 826 or 862 thereof. If this condition is met, then block 954 ofFigure 56A directs the RC processor to set a chargeable time variable equal to the first increment value set atblock 826 or 862 ofFigure 41 . If atblock 952 ofFigure 56A the condition is not met, block 956 directs the RC processor to set a remainder variable equal to the difference between the communication session time and the first increment value mod the second increment value produced atblock 826 or 862 ofFigure 41 . Then, the processor is directed to block 958 ofFigure 56A which directs it to determine whether or not the remainder is greater than zero. If so, block 960 directs the RC processor to set the chargeable time variable equal to the difference between the communication session time and the remainder value. - If at
block 958 the remainder is not greater than zero, block 962 directs the RC processor to set the chargeable time variable equal to the contents of the communication session time from the RC stop message. The processor is then directed to block 964. In addition, after executingblock 954 or block 960, the processor is directed to block 964. -
Block 964 directs theprocessor 202 ofFigure 7 to determine whether or not the chargeable time variable is greater than or equal to the free time balance as determined from thefree time field 742 of the subscriber account record shown inFigure 39 . If this condition is satisfied, block 966 ofFigure 56A directs the processor to set thefree time field 742 in the record shown inFigure 39 , to zero. If the chargeable time variable is not greater than or equal to the free time balance, block 968 directs the RC processor to set a user cost variable to zero andBlock 970 then decrements thefree time field 742 of the subscriber account record for the caller by the chargeable time amount determined byblock - If at
Block 964 theprocessor 202 ofFigure 7 was directed to Block 966 which causes the free time field (742 ofFigure 39 ) to be set to zero, referring toFigure 56B ,Block 972 directs the processor to set a remaining chargeable time variable equal to the difference between the chargeable time and the contents of the free time field (742 ofFigure 39 ).Block 974 then directs the processor to set the user cost variable equal to the product of the remaining chargeable time and the cost per second calculated atBlock 750 inFigure 33B .Block 976 then directs the processor to decrement the funds balance field (740) of the subscriber account record shown inFigure 39 by the contents of the user cost variable calculated atBlock 974. - After completing
Block 976 or after completingBlock 970 inFigure 56A , block 978 ofFigure 56B directs theprocessor 202 ofFigure 7 to calculate a reseller cost variable as the product of the reseller rate as indicated in the mark-upvalue field 810 of the system operator mark-up table record shown inFigure 45 and the communication session time determined atBlock 916 inFigure 53 . Then,Block 980 ofFigure 56B directs the processor to add the reseller cost to thereseller balance field 986 of a reseller account record of the type shown inFigure 57 at 982. - The reseller account record includes a reseller ID field 984 and the aforementioned
reseller balance field 986. The reseller ID field 984 holds a reseller ID code, and thereseller balance field 986 holds an accumulated balance of charges. - Referring to
Figure 58 , a specific reseller accounts record for the reseller "Klondike" is shown generally at 988. In this record the reseller ID field 984 holds a code representing the reseller "Klondike" and thereseller balance field 986 holds a balance of $100.02. Thus, the contents of thereseller balance field 986 inFigure 58 are incremented by the reseller cost calculated atblock 978 ofFigure 56B . - Still referring to
Figure 56B , after adding the reseller cost to the reseller balance field as indicated byBlock 980,Block 990 directs the processor to 202 ofFigure 7 calculate a system operator cost as the product of the system operator cost per second, as set atblock 822 inFigure 41 , and the communication session time as determined atBlock 916 inFigure 53 .Block 992 then directs the processor to add the system operator cost value calculated atBlock 990 to a system operator accounts table record of the type shown at 994 inFigure 59 . This record includes a systemoperator balance field 996 holding an accumulated charges balance. Referring toFigure 60 in the embodiment described, the systemoperator balance field 996 may hold the value $1,000.02 for example, and to this value the system operator cost calculated atBlock 990 is added when the processor executesBlock 992 ofFigure 56B . - Ultimately, the
final reseller balance 986 inFigure 58 holds a number representing an amount owed to the reseller by the system operator and thesystem operator balance 996 ofFigure 59 holds a number representing an amount of profit for the system operator. - While specific embodiments of the invention have been described and illustrated, such embodiments should be considered illustrative of the invention only and not as limiting the invention as construed in accordance with the accompanying claims.
- The following numbered clauses also define features of the invention.
- 1. An aspect of the invention provides a process for operating a call routing controller to facilitate communication between callers and callees in a system comprising a plurality of nodes with which callers and callees are associated, the process comprising:
- in response to initiation of a call by a calling subscriber, receiving a caller identifier and a callee identifier;
- using call classification criteria associated with the caller identifier to classify the call as a public network call or a private network call;
- producing a routing message identifying an address, on the private network, associated with the callee when the call is classified as a private network call; and
- producing a routing message identifying a gateway to the public network when the call is classified as a public network call.
- Embodiments may provide:
- 2. The process of
clause 1 further comprising receiving a request to establish a call, from a call controller in communication with a caller identified by said callee identifier. - 3. The process of
clause 1 wherein using said call classification criteria comprises searching a database to locate a record identifying calling attributes associated with a caller identified by said caller identifier. - 4. The process of clause 3 wherein locating a record comprises locating a caller dialling profile comprising a username associated with said caller, a domain associated with said caller, and at least one calling attribute.
- 5. The process of clause 4 wherein using said call classification criteria comprises comparing calling attributes associated with said caller dialling profile with aspects of said callee identifier.
- 6. The process of clause 4 wherein comparing comprises determining whether said callee identifier includes a portion that matches an IDD associated with said caller dialling profile.
- 7. The process of clause 4 wherein comparing comprises determining whether said callee identifier includes a portion that matches an NDD associated with said caller dialling profile.
- 8. The process of clause 4 wherein comparing comprises determining whether said callee identifier includes a portion that matches an area code associated with said caller dialling profile.
- 9. The process of clause 4 wherein comparing comprises determining whether said callee identifier has a length within a range specified in said caller dialling profile.
- 10. The process of clause 4 further comprising formatting said callee identifier into a pre-defined digit format to produce a re-formatted callee identifier.
- 11. The process of
clause 10 wherein formatting comprises removing an international dialling digit from said callee identifier, when said callee identifier begins with a digit matching an international dialling digit specified by said caller dialling profile associated with said caller. - 12. The process of
clause 10 wherein formatting comprises removing a national dialling digit from said callee identifier and prepending a caller country code to said callee identifier when said callee identifier begins with a national dialling digit. - 13. The process of
clause 10 wherein formatting comprises prepending a caller country code to said callee identifier when said callee identifier begins with digits identifying an area code specified by said caller dialling profile. - 14. The process of
clause 10 wherein formatting comprises prepending a caller country code and area code to said callee identifier when said callee identifier has a length that matches a caller dialling number format specified by said caller dialling profile and only one area code is specified as being associated with said caller in said caller dialling profile. - 15. The process of
clause 10 further comprising classifying said call as a private network call when said re-formatted callee identifier identifies a subscriber to the private network. - 16. The process of
clause 10 further comprising determining whether said callee identifier complies with a pre-defined username format and if so classifying the call as a private network call. - 17. The process of
clause 10 further comprising causing a database of records to be searched to locate a direct in dial (DID) bank table record associating a public telephone number with said reformatted callee identifier and if said DID bank table record is found classifying the call as a private network call and if a DID bank table record is not found classifying the call as a public network call. - 18. The process of
clause 17 wherein producing said routing message identifying a node on the private network comprises setting a callee identifier in response to a username associated with said DID bank table record. - 19. The process of
clause 18 wherein producing said routing message comprises determining whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier. - 20. The process of
clause 19 wherein determining whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier comprises determining whether a prefix of said re-formatted callee identifier matches a corresponding prefix of a username associated with said caller dialling profile. - 21. The process of
clause 20 wherein when said node associated with said caller is not the same as the node associated with the callee, producing a routing message including said caller identifier, said reformatted callee identifier and an identification of a private network node associated with said callee and communicating said routing message to a call controller. - 22. The process of
clause 19 wherein when said node associated with said caller is the same as the node associated with said callee, determining whether to perform at least one of the following: forward said call to another party, block the call and direct the caller to a voicemail server associated with the callee. - 23. The process of clause 22 wherein producing said routing message comprises producing a routing message having an identification of at least one of the callee identifier, an identification of a party to whom the call should be forwarded and an identification of a voicemail server associated with the callee.
- 24. The process of clause 23 further comprising communicating said routing message to a call controller.
- 25. The process of
clause 10 wherein producing a routing message identifying a gateway to the public network comprises searching a database of route records associating route identifiers with dialling codes to find a route record having a dialling code having a number pattern matching at least a portion of said reformatted callee identifier. - 26. The process of clause 25 further comprising searching a database of supplier records associating supplier identifiers with said route identifiers to locate at least one supplier record associated with said route identifier associated with said route record having a dialling code having a number pattern matching at least a portion of said reformatted callee identifier.
- 27. The process of clause 26 further comprising loading a routing message buffer with the reformatted callee identifier and an identification of specific routes associated respective ones of the supplier records associated with said route record and loading said routing message buffer with a time value and a timeout value.
- 28. The process of clause 27 further comprising communicating a routing message comprising the contents of said routing message buffer to a call controller.
- 29. The process of clause 4 further comprising causing said dialling profile to include a maximum concurrent call value and a concurrent call count value and causing said concurrent call count value to be incremented when the user associated with said dialling profile initiates a call and causing said concurrent call count value to be decremented when a call with said user associated with said dialling profile is ended.
- 30. A computer readable medium encoded with codes for directing a processor to execute the method of any one of clauses 1-29.
- 31. Another aspect of the invention provides a call routing apparatus for facilitating communications between callers and callees in a system comprising a plurality of nodes with which callers and callees are associated, the apparatus comprising:
- receiving means for receiving a caller identifier and a callee identifier, in response to initiation of a call by a calling subscriber;
- classifying means for classifying the call as a private network call or a public network call according to call classification criteria associated with the caller identifier;
- means for producing a routing message identifying an address, on the private network, associated with the callee when the call is classified as a private network call; and
Embodiments may provide: - 32. The apparatus of clause 31 wherein said receiving means is operably configured to receive a request to establish a call, from a call controller in communication with a caller identified by said callee identifier.
- 33. The apparatus of clause 31 further comprising searching means for searching a database comprising records associating calling attributes with subscribers to said private network to locate a record identifying calling attributes associated with a caller identified by said caller identifier.
- 34. The apparatus of clause 33 wherein said records include dialling profiles each comprising a username associated with said subscriber, an identification of a domain associated with said subscriber, and an identification of at least one calling attribute associated with said subscriber.
- 35. The apparatus of
clause 34 wherein said call classification means is operably configured to compare calling attributes associated with said caller dialling profile with aspects of said callee identifier. - 36. The apparatus of clause 35 wherein said calling attributes include an international dialling digit and wherein said call classification means is operably configured to determine whether said callee identifier includes a portion that matches an IDD associated with said caller dialling profile.
- 37. The apparatus of
clause 34 wherein said calling attributes include an national dialling digit and wherein said call classification means is operably configured to determine whether said callee identifier includes a portion that matches an NDD associated with said caller dialling profile. - 38. The apparatus of
clause 34 wherein said calling attributes include an area code and wherein said call classification means is operably configured to determine whether said callee identifier includes a portion that matches an area code associated with said caller dialling profile. - 39. The apparatus of
clause 34 wherein said calling attribute include a number length range and wherein said call classification means is operably configured to determine whether said callee identifier has a length within a range specified in said caller dialling profile. - 40. The apparatus of
clause 34 further comprising formatting means for formatting said callee identifier into a pre-defined digit format to produce a re-formatted callee identifier. - 41. The apparatus of
clause 40 wherein said formatting means is operably configured to remove an international dialling digit from said callee identifier, when said callee identifier begins with a digit matching an international dialling digit specified by said caller dialling profile associated with said caller. - 42. The apparatus of
clause 40 wherein said formatting means is operably configured to remove a national dialling digit from said callee identifier and prepend a caller country code to said callee identifier when said callee identifier begins with a national dialling digit. - 43. The apparatus of
clause 40 wherein said formatting means is operably configured to prepend a caller country code to said callee identifier when said callee identifier begins with digits identifying an area code specified by said caller dialling profile. - 44. The apparatus of
clause 40 wherein said formatting means is operably configured to prepend a caller country code and area code to said callee identifier when said callee identifier has a length that matches a caller dialling number format specified by said caller dialling profile and only one area code is specified as being associated with said caller in said caller dialling profile. - 45. The apparatus of
clause 40 wherein said classifying means is operably configured to classifying said call as a private network call when said re-formatted callee identifier identifies a subscriber to the private network. - 46. The apparatus of
clause 40 wherein said classifying means is operably configured to classify the call as a private network call when said callee identifier complies with a pre-defined username format. - 47. The apparatus of
clause 40 further comprising searching means for searching a database of records to locate a direct in dial (DID) bank table record associating a public telephone number with said reformatted callee identifier and wherein said classifying means is operably configured to classify the call as a private network call when said DID bank table record is found and to classify the call as a public network call when a DID bank table record is not found. - 48. The apparatus of
clause 47 wherein said private network routing message producing means is operably configured to produce a routing message having a callee identifier set according to a username associated with said DID bank table record. - 49. The apparatus of
clause 48 wherein said private network routing message producing means is operably configured to determine whether a node associated with the reformatted callee identifier is the same as a node associated the caller identifier. - 50. The apparatus of clause 49 wherein said private network routing means includes means for determining whether a prefix of said re-formatted callee identifier matches a corresponding prefix of a username associated with said caller dialling profile.
- 51. The apparatus of clause 50 wherein said private network routing message producing means is operably configured to produce a routing message including said caller identifier, said reformatted callee identifier and an identification of a private network node associated with said callee and communicating said routing message to a call controller.
- 52. The apparatus of clause 49 wherein said private network routing message producing means is operably configured to perform at least one of the following: forward said call to another party, block the call and direct the caller to a voicemail server associated with the callee, when said node associated with said caller is the same as the node associated with said callee.
- 53. The apparatus of
clause 52 wherein said means for producing said private network routing message is operably configured to produce a routing message having an identification of at least one of the callee identifier, an identification of a party to whom the call should be forwarded and an identification of a voicemail server associated with the callee. - 54. The apparatus of
clause 53 further comprising means for communicating said routing message to a call controller. - 55. The apparatus of
clause 40 wherein said means for producing a public network routing message identifying a gateway to the public network comprises means for searching a database of route records associating route identifiers with dialling codes to find a route record having a dialling code having a number pattern matching at least a portion of said reformatted callee identifier. - 56. The apparatus of clause 55 further comprising means for searching a database of supplier records associating supplier identifiers with said route identifiers to locate at least one supplier record associated with said route identifier associated with said route record having a dialling code having a number pattern matching at least a portion of said reformatted callee identifier.
- 57. The apparatus of
clause 56 further comprising a routing message buffer and means for loading said routing message buffer with the reformatted callee identifier and an identification of specific routes associated respective ones of the supplier records associated with said route record and loading said routing message buffer with a time value and a timeout value. - 58. The apparatus of
clause 57 further comprising means for communicating a routing message comprising the contents of said routing message buffer to a call controller. - 59. The apparatus of
clause 34 further comprising means for causing said dialling profile to include a maximum concurrent call value and a concurrent call count value and for causing said concurrent call count value to be incremented when the user associated with said dialling profile initiates a call and for causing said concurrent call count value to be decremented when a call with said user associated with said dialling profile is ended. -
- 60. Another aspect of the invention provides a data structure for access by an apparatus for producing a routing message for use by a call routing controller in a communications system, the data structure comprising:
- dialling profile records comprising fields for associating with respective subscribers to the system:
- a subscriber user name direct-in-dial records comprising fields for associating with respective subscriber usernames:
- a user domain; and
- a direct-in-dial number;
- prefix to node records comprising fields for associating with at least a portion of said respective subscriber usernames:
- a node address of a node in said system,
- whereby a subscriber name can be used to find a user domain, at least a portion of said a subscriber name can be used to find a node with which the subscriber identified by the subscriber name is associated, and a user domain and subscriber name can be located in response to a direct-in-dial number.
- dialling profile records comprising fields for associating with respective subscribers to the system:
- 61. Another aspect of the invention provides a data structure for access by an apparatus for producing a routing message for use by a call routing controller in a communications system, the data structure comprising:
- master list records comprising fields for associating a dialling code with respective master list identifiers; and
- supplier list records linked to master list records by said master list identifiers, aid supplier list records comprising fields for associating with a communications services supplier:
- a supplier id;
- a master list id;
- a route identifier; and
- a billing rate code,
- whereby communications services suppliers are associated with dialling codes, such that dialling codes can be used to locate suppliers capable of providing a communications link associated with a given dialling code.
- 62. Another aspect of the invention provides a method of determining a time to permit a communication session to be conducted, the method comprising:
- calculating a cost per unit time;
- calculating a first time value as a sum of a free time attributed to a participant in the communication session and the quotient of a funds balance held by said participant to said cost per unit time value; and
- producing a second time value in response to said first time value and a billing pattern associated with said participant, said billing pattern including first and second billing intervals and said second time value being said time to permit a communication session to be conducted.
- Embodiments may provide
- 63. The method of
clause 62 wherein calculating said first time value comprises retrieving a record associated with said participant and obtaining from said record at least one of said free time and said funds balance. - 64. The method of
clause 62 wherein producing said second time value comprises producing a remainder value representing a portion of said second billing interval remaining after dividing said second billing interval into a difference between said first time value and said first billing interval. - 65. The method of
clause 64 wherein producing said second time value comprises setting a difference between said first time value and said remainder as said second time value. - 66. The method of
clause 62 further comprising setting said second time value to zero when said remainder is greater than zero and said first time value is less than said free time associated with said participant. - 67. The method of
clause 62 wherein calculating said cost per unit time comprises:- locating a record in a database, said record comprising a markup type indicator, a markup value and a billing pattern;
and - setting a reseller rate equal to the sum of said markup value and said buffer rate.
- locating a record in a database, said record comprising a markup type indicator, a markup value and a billing pattern;
- 68. The method of
clause 67 wherein locating said record in a database comprises locating at least one of:- a record associated with a reseller and a route associated with the reseller;
- a record associated with the reseller; and a default reseller markup record.
- 69. The method of
clause 67 wherein calculating said cost per unit time value further comprises locating at least one of:- an override record specifying a route cost per unit time amount associated with a route associated with the communication session;
- a reseller record associated with a reseller of said communications session, said reseller record specifying a reseller cost per unit time associated with said reseller for the communication session;
- a default operator markup record specifying a default cost per unit time.
- 70. The method of
clause 69 further comprising setting as said cost per unit time the sum of said reseller rate and at least one of said route cost per unit time, said reseller cost per unit time and said default cost per unit time. - 71. The method of
clause 69 further comprising receiving a communication session time representing a duration of said communication session and incrementing a reseller balance by the product of said reseller rate and said communication session time. - 72. The method of
clause 69 further comprising receiving a communication session time representing a duration of said communication session and incrementing a system operator balance by a product of said buffer rate and said communication session time. - 73. A computer readable medium encoded with instructions for directing a processor circuit to execute the method of any one of clauses 62-72.
- 74. Another aspect of the invention provides an apparatus for determining a time to permit a communication session to be conducted, the apparatus comprising:
- a processor circuit;
- a computer readable medium coupled to the processor circuit and encoded with instructions for directing the processor circuit to:
- calculate a cost per unit time for the communication session;
- calculate a first time value as a sum of a free time attributed to a participant in the communication session and the quotient of a funds balance held by said participant to said cost per unit time value; and
- produce a second time value in response to said first time value and a billing pattern associated with said participant, said billing pattern including first and second billing intervals and said second time value being said time to permit a communication session to be conducted.
- Embodiments may provide:
- 75. The apparatus of
clause 74 wherein said instructions include instructions for directing the processor circuit to retrieve a record associated with said participant and obtain from said record at least one of said free time and said funds balance. - 76. The apparatus of
clause 74 wherein said instructions include instructions for directing the processor circuit to produce said second time value by producing a remainder value representing a portion of said second billing interval remaining after dividing said second billing interval into a difference between said first time value and said first billing interval. - 77. The apparatus of clause 76 wherein said instructions include instructions for directing the processor circuit to produce said second time value comprises setting a difference between said first time value and said remainder as said second time value.
- 78. The apparatus of
clause 74 wherein said instructions include instructions for directing the processor circuit to set said second time value to zero when said remainder is greater than zero and said first time value is less than said free time associated with said participant. - 79. The apparatus of
clause 74 wherein said instructions for directing said processor circuit to calculate said cost per unit time comprises instructions for directing the processor circuit to:- locate a record in a database, said record comprising a markup type indicator, a markup value and a billing pattern; and
- set a reseller rate equal to the sum of said markup value and said buffer rate.
- 80. The apparatus of clause 79 wherein said instructions for directing the processor circuit to locate said record in a database comprises instruction for directing the processor circuit to locate at least one of:
- a record associated with a reseller and a route associated with the reseller;
- a record associated with the reseller;
- a default reseller markup record.
- 81. The apparatus of clause 79 wherein said instructions for directing the processor circuit to calculate said cost per unit time value further comprises instructions for directing the processor circuit to locate at least one of:
- an override record specifying a route cost per unit time amount associated with a route associated with the communication session;
- a reseller record associated with a reseller of said communications session, said reseller record specifying a reseller cost per unit time associated with said reseller for the communication session;
- a default operator markup record specifying a default cost per unit time.
- 82. The apparatus of clause 81 wherein said instructions include instructions for directing the processor circuit to set as said cost per unit time the sum of said reseller rate and at least one of said route cost per unit time, said reseller cost per unit time and said default cost per unit time.
- 83. The apparatus of clause 81 wherein said instructions include instructions for directing the processor circuit to receive a communication session time representing a duration of said communication session and increment a reseller balance by the product of said reseller rate and said communication session time.
- 84. The apparatus of clause 81 wherein said instructions include instructions for directing the processor circuit to receive a communication session time representing a duration of said communication session and increment a system operator balance by a product of said buffer rate and said communication session time.
-
- 85. Another aspect of the invention provides a process for attributing charges for communications services, the process comprising:
- determining a first chargeable time in response to a communication session time and a pre-defined billing pattern;
- determining a user cost value in response to said first chargeable time and a free time value associated with a user of said communications services;
- changing an account balance associated with said user in response to a user cost per unit time;
- changing an account balance associated with a reseller of said communications services in response to a reseller cost per unit time and said communication session time; and
- changing an account balance associated with an operator of said communications services in response to an operator cost per unit time and said communication session time.
- Embodiments may provide:
- 86. The process of
clause 85 wherein determining said first chargeable time comprises:- locating at least one of:
- an override record specifying a route cost per unit time and billing pattern associated with a route associated with the communication session;
- a reseller record associated with a reseller of said communications session, said reseller record specifying a reseller cost per unit time and billing pattern associated with said reseller for the communication session; and
- a default record specifying a default cost per unit time and billing pattern; and
- setting as said pre-defined billing pattern the billing pattern of the record located,
wherein the billing pattern of the record located comprises a first billing interval and a second billing interval.
- locating at least one of:
- 87. The process of
clause 85 wherein determining said first chargeable time comprises setting said first chargeable time equal to said first billing interval when said communication session time is less than or equal to said first billing interval. - 88. The process of clause 86 wherein determining said first chargeable time comprises producing a remainder value representing a portion of said second billing interval remaining after dividing said second billing interval into a difference between communication session time and said first interval when said communication session time is greater than said communication session time; and
setting said first chargeable time to a difference between said communication session time and said remainder when said remainder is greater than zero; and
setting said first chargeable time to said communication session time when said remainder is not greater than zero. - 89. The process of clause 88 further comprising determining a second chargeable time in response to said first chargeable time and said free time value associated with said user of said communications services when said first chargeable time is greater than or equal to said free time value associated with said user of said communications services.
- 90. The process of clause 89 wherein determining said second chargeable time comprises setting said second chargeable time to a difference between said first chargeable time.
- 91. The process of clause 89 further comprising resetting said free time value associated with the user to zero when said first chargeable time is greater than or equal to said free time value associated with said user of said communications services.
- 92. The process of clause 90 wherein changing an account balance associated with the user comprises calculating a user cost value in response to said second chargeable time and said user cost per unit time.
- 93. The process of clause 92 further comprising changing a user free cost balance in response to said user cost value.
- 94. The process of
clause 85 further comprising setting said user cost to zero when said first chargeable time is less than said free time value associated with the user. - 95. The process of
clause 85 further comprising changing a user free time balance in response to said first chargeable time. - 96. A computer readable medium encoded with instructions for directing a processor circuit to execute the process of any one of clauses 85-95.
- 97. Another aspect of the invention provides an apparatus for attributing charges for communications services, the apparatus comprising:
- a processor circuit;
- a computer readable medium in communication with the processor circuit and encoded with instructions for directing said processor circuit to:
- determine a first chargeable time in response to a communication session time and a pre-defined billing pattern; determine a user cost value in response to said first chargeable time and a free time value associated with a user of said communications services;
- change an account balance associated with said user in response to a user cost per unit time;
- change an account balance associated with a reseller of said communications services in response to a reseller cost per unit time and said communication session time; and
- change an account balance associated with an operator of said communications services in response to an operator cost per unit time and said communication session time.
- Embodiments may provide:
- 98. The apparatus of clause 97 wherein said instructions for directing the processor circuit to determine said first chargeable time comprises:
- instructions for causing said processor circuit to communicate with a database to locate at least one of:
- an override record specifying a route cost per unit time and billing pattern associated with a route associated with the communication session;
- a reseller record associated with a reseller of said communications session, said reseller record specifying a reseller cost per unit time and billing pattern associated with said reseller for the communication session; and a default record specifying a default cost per unit time and billing pattern; and
- instructions for setting as said pre-defined billing pattern the billing pattern of the record located,
- wherein the billing pattern of the record located comprises a first billing interval and a second billing interval.
- instructions for causing said processor circuit to communicate with a database to locate at least one of:
- 99. The apparatus of clause 97 wherein said instructions causing the processor circuit to determine said first chargeable time comprises instructions for directing the processor circuit to set said first chargeable time equal to said first billing interval when said communication session time is less than or equal to said first billing interval.
- 100. The apparatus of clause 98 wherein said instructions for causing the processor circuit to determine said first chargeable time comprises instructions for producing a remainder value representing a portion of said second billing interval remaining after dividing said second billing interval into a difference between communication session time and said first interval when said communication session time is greater than said communication session time; and
instructions for causing the processor circuit to set said first chargeable time to a difference between said communication session time and said remainder when said remainder is greater than zero; and
instructions for causing the processor circuit to set said first chargeable time to said communication session time when said remainder is not greater than zero. - 101. The apparatus of
clause 100 wherein the computer readable medium is further encoded with instructions for causing the processor circuit to determine a second chargeable time in response to said first chargeable time and said free time value associated with said user of said communications services when said first chargeable time is greater than or equal to said free time value associated with said user of said communications services. - 102. The apparatus of clause 101 wherein said instructions for causing the processor circuit to determine said second chargeable time comprises instructions for causing the processor circuit to set said second chargeable time to a difference between said first chargeable time. 103. The apparatus of clause 101 wherein the computer readable medium is further encoded with instructions for causing the processor circuit to reset said free time value associated with the user to zero when said first chargeable time is greater than or equal to said free time value associated with said user of said communications services.
- 104. The apparatus of
clause 102 wherein said instructions for causing the processor circuit to change an account balance associated with the user comprises instructions for causing the processor circuit to calculate a user cost value in response to said second chargeable time and said user cost per unit time. - 105. The apparatus of
clause 104 wherein the computer readable medium is further encoded with instructions for causing the processor circuit to change a user free cost balance in response to said user cost value. - 106. The apparatus of clause 97 wherein the computer readable medium is further encoded with instructions for causing the processor circuit to set said user cost to zero when said first chargeable time is less than said free time value associated with the user.
- 107. The apparatus of clause 97 wherein the computer readable medium is further encoded with instructions for causing the processor circuit to change a user free time balance in response to said first chargeable time.
Claims (32)
- A process for routing communications between parties using a communication system for operating a first communication network, the first communication network comprising a plurality of nodes with which parties are associated, the first communication network being interconnected through at least one gateway to a second communication network, the process comprising:receiving a first party identifier identifying a first party associated with a first communication device, the first party being a subscriber of the first communication network;receiving a second party identifier identifying a second party associated with a second communication device, wherein the first party device is operable to use the second party identifier to initiate communications with the second communication device;using communication classification criteria associated with the first party identifier to classify a communication initiated from the first communication device to the second communication device, using the second party identifier, as a first network communication or a second network communication, wherein the communication is classified as a first network communication when the second party identifier identifies a subscriber to the first communication network;producing a routing message identifying an address, on the first communication network, associated with the second party when the communication is classified as a first network communication; andproducing a routing message identifying a gateway to the second communication network when the communication is classified as a second network communication.
- The process of claim 1 wherein the plurality of nodes in the first communication network comprise at least a first node (11) and a second node (21) in communication with each other, wherein each node is operably configured to provide service to a respective set of subscribers associated with that node, the first party (12) being associated with the first node (11), and wherein the routing message identifies a gateway or node that is to carry the communication.
- The process of claim 1, wherein the routing message comprises a domain name or IP address of the gateway or node that will be used to carry the communication to its destination.
- The process of any one of claims 1 or 3, wherein the first communication device is associated with a first node from among the plurality of nodes of the first communication network, the process further comprising:causing a communications link to be established through a media relay to the first node, a different node than the first node, or to the gateway, to carry the communication to the second communication device;wherein the first node of the first communication network carries the communication if the second participant device is associated with the same node as the first communication device;wherein the different node of the first communication network carries the communication if the second participant device is associated with the different node of the first communication network; andwherein the gateway carries the communication if the second communication device is not associated with the first communication network.
- The process of any one of claims 1 to 4, further comprising determining whether the communication should be blocked based on a blocking record associated with the second party.
- The process of any one of claims 1 to 5, further comprising searching a database (18) of the first communication network for a profile for the second party.
- The process of any one of claims 1 to 5 further comprising:
determining a domain name or Internet Protocol (IP) address of a node associated with the second party based on a profile for the second party, and including the domain name or IP address of the node associated with the second party in the routing message. - The process of any one of claims 1 to 7, wherein using communication classification criteria further comprises storing communication attributes associated with the first party in at least one memory, the attributes being associated with a profile for the first party.
- The process of any one of claims 1 to 7, further comprising at least one of:
determining whether the second party identifier matches a format specified by a profile for the first party; and
reformatting the second party identifier into a predetermined target format based on the profile for the first party. - The process of any one of claims 8 or 9, further comprising determining whether at least a portion of the second party identifier matches an attribute in the profile for the first party.
- The process of claim 10 wherein determining whether at least a portion of the second party identifier matches an attribute in the profile for the first party comprises at least one of:determining whether the second participant identifier includes a portion that matches an international dialling digit (IDD) associated with the first participant profile;determining whether the second participant identifier includes a portion that matches a national dialling digit (NDD) associated with the first participant profile;determining whether the second participant identifier includes a portion that matches an area code associated with the first participant profile; anddetermining whether the second participant identifier has a length within a range specified in the first participant profile.
- The process of any one of claims 8 to 11, further comprising processing the profile for the first party to determine whether the communication is allowed to proceed, and if the communication is not allowed to proceed, sending an error message to a communication controller.
- The process of any one of claims 8 to 12, wherein the profile for the first party comprises at least one code representing a geographical area associated with the first party, the routing message being based on the at least one code.
- The process of any one of claims 1 to 13, wherein the routing message comprises at least one of: (a) a username associated with the second party, (b) a PSTN compatible number associated with the second party; (c) an address of a voicemail server; (d) an address of a node associated with the first party; (e) a communication session time to live (TTL) value; and (f) a communication session timeout (TO) value.
- The process of any one of claims 1 to 14, wherein the communication comprises a communication session that involves transmission of one or more of audio traffic, video traffic and message traffic.
- The process of any one of claims 1 to 15, further comprising determining whether the second party identifier identifies a valid subscriber user name, and, if the second party identifier identifies a valid subscriber user name, classifying the communication as a first network communication.
- The process of any one of claims 1 to 16, wherein when the communication is classified as a first network communication, the first and second communication devices each have a respective Internet connection that is operably configured to connect to at least one internet service provider to provide a path for the communication.
- The process of any one of claims 1 to 17, further comprising causing a voicemail message to be stored on a server associated with the second party.
- The process of any one of claims 1 to 18, wherein the second party device is associated with a username that was assigned upon subscription of the second party to the communication system, wherein the routing message is produced based on the username of the second party.
- The process of any one of claims 1 to 19, further comprising searching at least one database to determine whether an entry associated with the second party identifier is found, and if not, classifying the communication as a second network communication.
- The process of any one of claims 1 to 20, wherein the gateway to the second communication network is selected from a plurality of available gateways from the first communication network to the second communication network.
- The process of any one of claims 1 to 21, wherein the routing message causes the communication to be established to the second communication device.
- The process of any one of claims 1 to 21, wherein the routing message causes:
the communication to be forwarded to a communication device associated with another party, other than the second party, based on an identification of a party to whom the communication should be forwarded in the routing message. - The process of any one of claims 1 to 23, wherein the communication comprises a voice over IP communication.
- A computer readable medium storing instructions for directing at least one processor to execute the process of any one of claims 1 to 24.
- An apparatus for routing communications between parties using a communication system associated with a first communication network, the first communication network being interconnected through at least one gateway to a second communication network, the apparatus comprising:at least one processor;at least one memory in communication with the at least one processor and storing instructions for directing the at least one processor to classify and facilitate routing of communications initiated by a first party, the at least one processor being operably configured to:receive a first party identifier identifying the first party, the first party being associated with a first communication device;receive a second party identifier identifying a second party, the second party being associated with a second communication device,
wherein the second party identifier is used by the first party device to initiate a communication to the second party device;classify the communication from the first party communication device to the second communication device as a first network communication or a second network communication, based on communication classification criteria associated with the first party identifier;
wherein the communication is classified as a first network communication when the second party identifier identifies a subscriber to the first communication network;produce a routing message to facilitate routing the communication to the second communication device based on whether the communication is classified as a first network communication or a second network communication;wherein if the communication has been classified as a first network communication, the routing message identifies an address, on the first communication network, associated with the second party; andwherein if the communication has been classified as a second network communication, the routing message identifies a gateway to the second communication network. - The apparatus of claim 26, wherein the at least one processor classifies the communication as a second network communication when a profile associated with the second party is not found in at least one database of the first communication network.
- The apparatus of claim 26, wherein the at least one processor identifies a node with which the second party is associated based on a subscriber username associated with a profile for the second party.
- The apparatus of any one of claims 26 or 27, wherein the at least one processor classifies the communication as a second network communication when an identifier associated with the second party is not found in at least one database of the first communication network.
- The apparatus of any one of claims 26 to 29, wherein the routing message causes a communication session to be established between the first and second participant devices.
- The apparatus of any one of claims 26 to 30, wherein the at least one processor causes retrieval of at least one communication blocking record from a first communication network database, the communication blocking record identifying at least one party from whom the second party does not wish to receive communications.
- The apparatus of any one of claims 26 to 31, wherein the routing message comprises a route field that holds a domain name or IP address identifying a network element for routing the communication.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US85621206P | 2006-11-02 | 2006-11-02 | |
EP07816106.4A EP2084868B1 (en) | 2006-11-02 | 2007-11-01 | Producing routing messages for voice over ip communications |
PCT/CA2007/001956 WO2008052340A1 (en) | 2006-11-02 | 2007-11-01 | Producing routing messages for voice over ip communications |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP07816106.4A Division EP2084868B1 (en) | 2006-11-02 | 2007-11-01 | Producing routing messages for voice over ip communications |
Publications (1)
Publication Number | Publication Date |
---|---|
EP3386155A1 true EP3386155A1 (en) | 2018-10-10 |
Family
ID=39343752
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP18174930.0A Withdrawn EP3386155A1 (en) | 2006-11-02 | 2007-11-01 | Producing routing messages for voice over ip communications |
EP07816106.4A Active EP2084868B1 (en) | 2006-11-02 | 2007-11-01 | Producing routing messages for voice over ip communications |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP07816106.4A Active EP2084868B1 (en) | 2006-11-02 | 2007-11-01 | Producing routing messages for voice over ip communications |
Country Status (14)
Country | Link |
---|---|
US (14) | US8542815B2 (en) |
EP (2) | EP3386155A1 (en) |
KR (1) | KR20090086428A (en) |
CN (1) | CN101584166A (en) |
BR (1) | BRPI0718312B1 (en) |
CA (9) | CA3045683C (en) |
DK (1) | DK2084868T3 (en) |
ES (1) | ES2685443T3 (en) |
HK (1) | HK1256252A1 (en) |
HU (1) | HUE040485T2 (en) |
MX (1) | MX2009004811A (en) |
PL (1) | PL2084868T3 (en) |
PT (1) | PT2084868T (en) |
WO (1) | WO2008052340A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10880721B2 (en) | 2008-07-28 | 2020-12-29 | Voip-Pal.Com, Inc. | Mobile gateway |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8166547B2 (en) | 2005-09-06 | 2012-04-24 | Fortinet, Inc. | Method, apparatus, signals, and medium for managing a transfer of data in a data network |
CA3045683C (en) | 2006-11-02 | 2021-10-26 | Voip-Pal.Com, Inc. | Producing routing messages for voice over ip communications |
CA2670510C (en) | 2006-11-29 | 2020-12-22 | Digifonica (International) Limited | Intercepting voice over ip communications and other data communications |
US20080172545A1 (en) * | 2007-01-12 | 2008-07-17 | John Christian Boucard | System and method for accessing and displaying interactive content and advertising |
WO2008116296A1 (en) | 2007-03-26 | 2008-10-02 | Digifonica (International) Limited | Emergency assistance calling for voice over ip communications systems |
EP2387843A1 (en) * | 2009-01-16 | 2011-11-23 | Telefonaktiebolaget LM Ericsson (publ) | Signalling messages in a communications network node to communicate a called address string |
ES2563044T3 (en) | 2009-09-17 | 2016-03-10 | Digifonica (International) Limited | Uninterrupted transmission of internet protocol transmissions during endpoint changes |
US9305273B2 (en) * | 2011-12-31 | 2016-04-05 | Verizon Patent And Licensing Inc. | Telephone number use analysis for grouping of consecutive telephone numbers based on assignment status |
EP3057097B1 (en) * | 2015-02-11 | 2017-09-27 | Nxp B.V. | Time zero convergence single microphone noise reduction |
US10581795B2 (en) * | 2015-10-07 | 2020-03-03 | Google Llc | Systems and methods for dynamically selecting a communication identifier |
US10069871B2 (en) * | 2016-02-01 | 2018-09-04 | Verizon Patent And Licensing Inc. | Measuring session initiation protocol (SIP) messaging latency |
US11509764B1 (en) * | 2016-06-23 | 2022-11-22 | 8X8, Inc. | Region-based connecting of calls using client-specific control and provisioned numbers |
CN109691067A (en) * | 2016-07-05 | 2019-04-26 | 皇家Kpn公司 | System and method for transmitting and receiving interest messages |
IT201700093693A1 (en) * | 2017-08-14 | 2019-02-14 | St Microelectronics Srl | PROCEDURE FOR TRANSMITTING AT LEAST A PACKAGE OF IP DATA, ITS SYSTEM AND IT PRODUCT |
CN108712327B (en) * | 2018-03-30 | 2020-09-08 | 苏州诺登德智能科技有限公司 | Wired access screens formula gateway device |
US20210099576A1 (en) * | 2018-07-09 | 2021-04-01 | Victor Tokunbo Ojesina | Global Dialing Format |
US10644893B2 (en) | 2018-08-06 | 2020-05-05 | At&T Intellectual Property I, L.P. | Ensuring correctness of session identifiers in call duration records in mobile networks |
US10694035B2 (en) * | 2018-08-07 | 2020-06-23 | First Orion Corp. | Call content management for mobile devices |
US11412005B2 (en) * | 2019-08-29 | 2022-08-09 | Juniper Networks, Inc. | Lawfully intercepting traffic for analysis based on an application identifier or a uniform resource locator (URL) associated with the traffic |
US11438940B2 (en) * | 2020-04-21 | 2022-09-06 | At&T Intellectual Property I, L.P. | Selectively enabling identifier resources for connections in a fifth generation (5G) or other next generation wireless network |
US20220094788A1 (en) * | 2020-09-22 | 2022-03-24 | Capital One Services, Llc | Systems and methods for routing a call with local telecommunication platforms |
US11863594B2 (en) * | 2021-01-07 | 2024-01-02 | Samsung Electronics Co., Ltd. | Electronic device and method for processing call request in electronic device |
EP4360282A4 (en) * | 2021-06-21 | 2025-04-16 | Niantic Inc | ROUTES USING PARTIAL MESSAGE ANALYSIS |
US11916787B2 (en) * | 2021-11-23 | 2024-02-27 | Capital One Services, Llc | Stream listening cache updater |
US11765252B2 (en) | 2021-11-23 | 2023-09-19 | Capital One Services, Llc | Prepopulation of call center cache |
US11695696B2 (en) | 2021-11-23 | 2023-07-04 | Capital One Services, Llc | Prepopulation of caches |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6597686B1 (en) * | 1997-04-22 | 2003-07-22 | Telcordia Technologies, Inc. | Apparatus and method for internet telephony routing |
WO2004008786A1 (en) * | 2002-07-16 | 2004-01-22 | Nokia Corporation | Optimized routing between communication networks |
US7046658B1 (en) * | 2000-06-23 | 2006-05-16 | At & T Corp. | Method and system for customer selected direct dialed voice-over-internet protocol (VOIP) |
Family Cites Families (419)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4747124A (en) | 1982-09-28 | 1988-05-24 | Opcom | PBX telephone call control system |
US5255309A (en) | 1985-07-10 | 1993-10-19 | First Data Resources Inc. | Telephonic-interface statistical analysis system |
US4845739A (en) | 1985-07-10 | 1989-07-04 | Fdr Interactive Technologies | Telephonic-interface statistical analysis system |
DE3637737A1 (en) | 1986-11-05 | 1988-05-19 | Waldner Gmbh & Co Hermann | DRYERS, ESPECIALLY FOR THE CHEMICAL INDUSTRY |
JPS63278145A (en) * | 1987-05-11 | 1988-11-15 | Nec Corp | Parameter correspondence check system |
JPH01198770A (en) | 1987-10-16 | 1989-08-10 | Ricoh Co Ltd | Controller for copying machine |
US5726984A (en) | 1989-01-31 | 1998-03-10 | Norand Corporation | Hierarchical data collection network supporting packetized voice communications among wireless terminals and telephones |
US5303297A (en) | 1991-07-25 | 1994-04-12 | Motorola, Inc. | Dynamic pricing method and apparatus for communication systems |
US5265155A (en) | 1991-07-31 | 1993-11-23 | Integrated Communications, Ltd. | Method and apparatus for prepayment of telecommunication connections in a telecommunication switching network |
US5146491A (en) | 1991-08-08 | 1992-09-08 | Pilgrim Telephone, Inc. | Telephone billing method |
US5359642A (en) * | 1991-10-30 | 1994-10-25 | International Integrated Communications, Inc. | Method and apparatus for prepayment of telecommunication connections by registered groups of subscribers in a telecommunication switching network |
US5608756A (en) * | 1991-11-06 | 1997-03-04 | Televerket | Device for identifying traffic on a paired cable |
US5247571A (en) | 1992-02-28 | 1993-09-21 | Bell Atlantic Network Services, Inc. | Area wide centrex |
EP0564669A1 (en) | 1992-04-04 | 1993-10-13 | Alcatel SEL Aktiengesellschaft | Network of voice and/or fax storage systems |
US5325421A (en) | 1992-08-24 | 1994-06-28 | At&T Bell Laboratories | Voice directed communications system platform |
FI96156C (en) * | 1992-11-18 | 1996-05-10 | Nokia Telecommunications Oy | Method and Device for Forming Data Transfer Connection to Data Transfer Devices Located on a Defined Call Area |
US5469497A (en) | 1993-01-19 | 1995-11-21 | Teledebit | Networked interactive call management subsystems with prevention of simultaneous use of a single account number |
US5506893A (en) | 1993-02-19 | 1996-04-09 | At&T Corp. | Telecommunication network arrangement for providing real time access to call records |
US5802502A (en) | 1993-05-24 | 1998-09-01 | British Telecommunications Public Limited Company | System for selective communication connection based on transaction pricing signals |
SE9304119D0 (en) | 1993-12-10 | 1993-12-10 | Ericsson Ge Mobile Communicat | Devices and mobile stations for providing packaged data communication in digital TDMA cellular systems |
JP3299620B2 (en) * | 1994-01-21 | 2002-07-08 | 富士通株式会社 | Billing control method |
US5425085C1 (en) | 1994-03-18 | 2001-10-09 | Rates Technology Inc | Least control routing device for separate connection into phone line |
US5519769C1 (en) | 1994-04-04 | 2002-05-28 | Rates Technology Inc | Method and system for updating a call rating database |
US5793762A (en) | 1994-04-12 | 1998-08-11 | U S West Technologies, Inc. | System and method for providing packet data and voice services to mobile subscribers |
US5768521A (en) | 1994-05-16 | 1998-06-16 | Intel Corporation | General purpose metering mechanism for distribution of electronic information |
US5719926A (en) | 1994-06-10 | 1998-02-17 | Communications Product Development, Inc. | Prepaid long-distance telephone service system with flexible operating parameters |
US5559871A (en) | 1994-09-23 | 1996-09-24 | Lucent Technologies Inc. | Call charge control and notification |
US6005926A (en) | 1997-08-29 | 1999-12-21 | Anip, Inc. | Method and system for global communications network management |
CA2139081C (en) | 1994-12-23 | 1999-02-02 | Alastair Gordon | Unified messaging system and method |
US5854975A (en) * | 1994-12-23 | 1998-12-29 | Freedom Wireless, Inc. | Prepaid security cellular telecommunications system |
US5722067A (en) | 1994-12-23 | 1998-02-24 | Freedom Wireless, Inc. | Security cellular telecommunications system |
JP2910608B2 (en) | 1995-03-17 | 1999-06-23 | 日本電気株式会社 | Call charge notice system and call charge notice device |
US5677955A (en) | 1995-04-07 | 1997-10-14 | Financial Services Technology Consortium | Electronic funds transfer instruments |
CA2195968C (en) | 1995-05-24 | 2001-11-20 | Jay S. Walker | 900 number billing and collection system and method for on-line computer services |
US5799072A (en) | 1995-07-21 | 1998-08-25 | Callmanage | Telecommunications call management system |
US5621787A (en) | 1995-09-13 | 1997-04-15 | Bell Atlantic Network Services, Inc. | Prepaid cash card |
US5712907A (en) | 1995-09-18 | 1998-01-27 | Open Port Technology, Inc. | Pro-active message delivery system and method |
US5745556A (en) | 1995-09-22 | 1998-04-28 | At&T Corp. | Interactive and information data services telephone billing system |
US5953504A (en) | 1995-10-10 | 1999-09-14 | Suntek Software Corporation | Public accessible terminal capable of opening an account for allowing access to the internet and E-mail by generating ID code and security code for users |
US5724355A (en) | 1995-10-24 | 1998-03-03 | At&T Corp | Network access to internet and stored multimedia services from a terminal supporting the H.320 protocol |
US5661790A (en) | 1995-11-03 | 1997-08-26 | Ericsson, Inc. | Call back service for a regulatory restrictive area |
IL115967A (en) | 1995-11-12 | 1999-05-09 | Phonet Communication Ltd | Network based distributed pbx system |
US5838682A (en) | 1995-11-28 | 1998-11-17 | Bell Atlantic Network Services, Inc. | Method and apparatus for establishing communications with a remote node on a switched network based on hypertext dialing information received from a packet network |
US5825863A (en) | 1995-12-11 | 1998-10-20 | Walker Asset Management Limited Partnership | Prepaid limited usage calling card |
US5930343A (en) | 1995-12-15 | 1999-07-27 | Lucent Technologies Inc. | Toll call rate provider |
JP3644108B2 (en) | 1995-12-19 | 2005-04-27 | ソニー株式会社 | Call system, connection device, communication terminal device, and call method |
US5751961A (en) | 1996-01-31 | 1998-05-12 | Bell Communications Research, Inc. | Integrated internet system for translating logical addresses of internet documents to physical addresses using integrated service control point |
US5956391A (en) | 1996-02-09 | 1999-09-21 | Telefonaktiebolaget Lm Ericsson | Billing in the internet |
US6069890A (en) | 1996-06-26 | 2000-05-30 | Bell Atlantic Network Services, Inc. | Internet telephone service |
US5905736A (en) | 1996-04-22 | 1999-05-18 | At&T Corp | Method for the billing of transactions over the internet |
US5883891A (en) | 1996-04-30 | 1999-03-16 | Williams; Wyatt | Method and apparatus for increased quality of voice transmission over the internet |
US5850433A (en) | 1996-05-01 | 1998-12-15 | Sprint Communication Co. L.P. | System and method for providing an on-line directory service |
US6295549B1 (en) | 1996-05-08 | 2001-09-25 | Apple Computer, Inc. | Method and apparatus for listening for incoming calls on multiple port/socket combinations |
US6141404A (en) | 1996-06-13 | 2000-10-31 | @Track Communications, Inc. | Voice and data communication |
US6021126A (en) | 1996-06-26 | 2000-02-01 | Bell Atlantic Network Services, Inc. | Telecommunication number portability |
US6014379A (en) | 1996-06-26 | 2000-01-11 | Bell Atlantic Network Services, Inc. | Telecommunications custom calling services |
US5970477A (en) | 1996-07-15 | 1999-10-19 | Bellsouth Intellectual Property Management Corporation | Method and system for allocating costs in a distributed computing network |
US6115737A (en) | 1996-07-24 | 2000-09-05 | Telcordia Technologies, Inc. | System and method for accessing customer contact services over a network |
US6005870A (en) * | 1996-08-12 | 1999-12-21 | At&T Corp. | Method for called party control of telecommunications network services |
US6594254B1 (en) | 1996-08-16 | 2003-07-15 | Netspeak Corporation | Domain name server architecture for translating telephone number domain names into network protocol addresses |
DE19634664A1 (en) | 1996-08-28 | 1998-03-05 | Sel Alcatel Ag | Method and device for setting a fee in a telecommunications network |
US5845267A (en) | 1996-09-06 | 1998-12-01 | At&T Corp | System and method for billing for transactions conducted over the internet from within an intranet |
US5974043A (en) | 1996-09-16 | 1999-10-26 | Solram Electronics Ltd. | System and method for communicating information using the public switched telephone network and a wide area network |
US5923659A (en) | 1996-09-20 | 1999-07-13 | Bell Atlantic Network Services, Inc. | Telecommunications network |
ES2140965T3 (en) | 1996-10-07 | 2000-03-01 | Teles Ag | PROCEDURE FOR THE TRANSMISSION OF DATA IN A TELECOMMUNICATION NETWORK AND SWITCH FOR THE PERFORMANCE OF THE PROCEDURE. |
US5907547A (en) | 1996-10-24 | 1999-05-25 | At&T Corp | System and method for establishing internet communications links |
US6073013A (en) | 1996-11-04 | 2000-06-06 | Qualcomm Incorporated | Method and apparatus for performing position-based call processing in a mobile telephone system |
CA2218218A1 (en) | 1996-11-08 | 1998-05-08 | At&T Corp. | Promiscuous network monitoring utilizing multicasting within a switch |
US6188752B1 (en) * | 1996-11-12 | 2001-02-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for providing prepaid telecommunications services |
US5828740A (en) | 1996-11-14 | 1998-10-27 | Sprint Communications Co., L.P. | Prepaid calling card external/adjunct database processor |
US5867495A (en) | 1996-11-18 | 1999-02-02 | Mci Communications Corporations | System, method and article of manufacture for communications utilizing calling, plans in a hybrid network |
US5917899A (en) * | 1996-12-17 | 1999-06-29 | Ameritech Corporation | Method of connecting a plurality of virtual networks |
US5910946A (en) | 1997-01-13 | 1999-06-08 | Samsung Electronics Co., Ltd. | Wireless internet network architecture for voice and data communications |
US5940598A (en) | 1997-01-28 | 1999-08-17 | Bell Atlantic Network Services, Inc. | Telecommunications network to internetwork universal server |
US6029062A (en) | 1997-02-04 | 2000-02-22 | National Telemanagement Corporation | Prepay telecommunications system with unregistered roaming call processing |
US6058300A (en) | 1997-02-04 | 2000-05-02 | National Telemanagement Corporation | Prepay telecommunications system |
US6137869A (en) | 1997-09-16 | 2000-10-24 | Bell Atlantic Network Services, Inc. | Network session management |
US6104711A (en) | 1997-03-06 | 2000-08-15 | Bell Atlantic Network Services, Inc. | Enhanced internet domain name server |
US6785266B2 (en) | 1998-03-02 | 2004-08-31 | Robert Swartz | Internet controlled telephone system |
US6445694B1 (en) | 1997-03-07 | 2002-09-03 | Robert Swartz | Internet controlled telephone system |
US6542497B1 (en) | 1997-03-11 | 2003-04-01 | Verizon Services Corp. | Public wireless/cordless internet gateway |
US5889774A (en) | 1997-03-14 | 1999-03-30 | Efusion, Inc. | Method and apparatus for selecting an internet/PSTN changeover server for a packet based phone call |
US5909486A (en) | 1997-03-19 | 1999-06-01 | Walker Asset Management Limited Partnership | Method and apparatus for awarding and redeeming prepaid telephone time |
US6690779B2 (en) * | 1997-03-19 | 2004-02-10 | Walker Digital, Llc | Method and apparatus for awarding and redeeming prepaid telephone time |
US6104704A (en) | 1997-03-20 | 2000-08-15 | At&T Corp. | Methods and apparatus for gathering and processing billing information for internet telephony |
US20010048738A1 (en) | 1997-04-03 | 2001-12-06 | Sbc Technology Resourses, Inc. | Profile management system including user interface for accessing and maintaining profile data of user subscribed telephony services |
US5862202A (en) | 1997-04-10 | 1999-01-19 | Information Medical Retrieval, Inc. | Fax routing system and method using standard fax machine and personal computer |
US6192123B1 (en) | 1997-04-14 | 2001-02-20 | National Tech Team Inc. | Method and apparatus for initiating telephone calls using a data network |
US5915093A (en) | 1997-04-24 | 1999-06-22 | Howard Berlin | Computer network debit disk used for prepayment to transfer information from a central computer |
US5915005A (en) | 1997-05-23 | 1999-06-22 | Mci Communications Corporation | Method and system for toll charge and rate inquiry service for portable numbers |
US6298250B1 (en) * | 1997-06-19 | 2001-10-02 | Kimberly Nanette Engen | Wireless prepaid telephone system with extended capability |
US6036090A (en) * | 1997-07-17 | 2000-03-14 | Telefonaktiebolaget Lm Ericsson | Automated prepayment method for mobile terminals |
US5883810A (en) | 1997-09-24 | 1999-03-16 | Microsoft Corporation | Electronic online commerce card with transactionproxy number for online transactions |
US6614765B1 (en) | 1997-10-07 | 2003-09-02 | At&T Corp. | Methods and systems for dynamically managing the routing of information over an integrated global communication network |
CN1137562C (en) * | 1997-10-30 | 2004-02-04 | Ntt移动通信网株式会社 | packet communication network |
US6078647A (en) * | 1997-11-21 | 2000-06-20 | Hewlett Packard Company | Method and apparatus for detecting a data service provider in a public switched telephone network |
US6636833B1 (en) | 1998-03-25 | 2003-10-21 | Obis Patents Ltd. | Credit card system and method |
US6173272B1 (en) | 1998-04-27 | 2001-01-09 | The Clearing House Service Company L.L.C. | Electronic funds transfer method and system and bill presentment method and system |
US8254371B2 (en) | 1998-06-26 | 2012-08-28 | Alcatel Lucent | Method and system for routing and security for telephone calls over a packet-switched network |
US6151385A (en) | 1998-07-07 | 2000-11-21 | 911 Notify.Com, L.L.C. | System for the automatic notification that a 9-1-1 call has occurred |
US6185414B1 (en) * | 1998-07-24 | 2001-02-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Wireless telecommunication system with prepaid architecture |
US6249573B1 (en) | 1998-08-26 | 2001-06-19 | Harris Corporation | Method of time-to-talk calculation |
US6839734B1 (en) | 1998-09-21 | 2005-01-04 | Microsoft Corporation | Multimedia communications software with network streaming and multi-format conferencing |
GB2332337B (en) | 1998-09-22 | 2000-05-24 | Cellcom Ltd | Apparatus for generating billing data |
US7212522B1 (en) * | 1998-09-30 | 2007-05-01 | Cisco Technology, Inc. | Communicating voice over a packet-switching network |
US6128304A (en) | 1998-10-23 | 2000-10-03 | Gte Laboratories Incorporated | Network presence for a communications system operating over a computer network |
US6298062B1 (en) | 1998-10-23 | 2001-10-02 | Verizon Laboratories Inc. | System providing integrated services over a computer network |
US6240449B1 (en) | 1998-11-02 | 2001-05-29 | Nortel Networks Limited | Method and apparatus for automatic call setup in different network domains |
US7366157B1 (en) | 1998-11-17 | 2008-04-29 | Ericsson Inc. | Methods and system for routing emergency calls through the internet |
US6614781B1 (en) | 1998-11-20 | 2003-09-02 | Level 3 Communications, Inc. | Voice over data telecommunications network architecture |
US6243689B1 (en) | 1998-12-29 | 2001-06-05 | Robert G. Norton | System and method for authorizing electronic funds transfer at a point of sale |
US6674745B1 (en) | 1998-12-31 | 2004-01-06 | 3Com Corporation | Method and system for mapping phone numbers to IP addresses |
CA2299037A1 (en) | 1999-02-22 | 2000-08-22 | Peter O. Roach | Method and apparatus for providing quasi-mobile telephone service |
US6609113B1 (en) | 1999-05-03 | 2003-08-19 | The Chase Manhattan Bank | Method and system for processing internet payments using the electronic funds transfer network |
US6507644B1 (en) * | 1999-06-08 | 2003-01-14 | Worldcom, Inc. | Pre-paid telephone calling card linked to a stored value account |
US7882011B2 (en) | 2000-10-31 | 2011-02-01 | Integral Development Corp. | Systems and methods of conducting financial transactions |
US6650641B1 (en) | 1999-07-02 | 2003-11-18 | Cisco Technology, Inc. | Network address translation using a forwarding agent |
US7644037B1 (en) | 1999-08-16 | 2010-01-05 | Vladimir Ostrovsky | Method and system for transferring electronic funds |
US6560224B1 (en) | 1999-08-18 | 2003-05-06 | At&T Corp. | Automatic IP directory number masking and dynamic packet routing for IP phone surveillance |
US6553025B1 (en) | 1999-08-18 | 2003-04-22 | At&T Corp. | Multiple routing and automatic network detection of a monitored call from an intercepted targeted IP phone to multiple monitoring locations |
US6760324B1 (en) | 1999-09-10 | 2004-07-06 | Array Telecom Corporation | Method, system, and computer program product for providing voice over the internet communication |
US6351464B1 (en) | 1999-09-20 | 2002-02-26 | Mci Worldcom, Inc. | Virtual second line hybrid network communication system |
FR2799326B1 (en) | 1999-10-04 | 2001-12-28 | France Telecom | PROTOCOL FOR LAUNCHING A REMOTE SOFTWARE APPLICATION AND RESERVATION OF NETWORK RESOURCES WITH QUALITY OF SERVICE |
US7426492B1 (en) | 1999-11-05 | 2008-09-16 | American Express Travel Related Services Company, Inc. | Systems and methods for facilitating commercial transactions between parties residing at remote locations |
US6434143B1 (en) | 1999-11-08 | 2002-08-13 | Mci Worldcom, Inc. | Internet protocol telephony voice/video message deposit and retrieval |
US6798767B1 (en) * | 1999-11-16 | 2004-09-28 | Cisco Technology, Inc. | System and method for generating multiple line appearances in a communication network |
US6873599B1 (en) * | 1999-12-21 | 2005-03-29 | Lucent Technologies Inc. | Apparatus and method for error isolation in hybrid communications systems |
US6937713B1 (en) | 1999-12-30 | 2005-08-30 | At&T Corp. | IP call forward profile |
WO2001050693A1 (en) | 2000-01-05 | 2001-07-12 | Www.Internet Solutions Limited | Messaging system |
US7068668B2 (en) | 2000-01-07 | 2006-06-27 | Feuer Donald S | Method and apparatus for interfacing a public switched telephone network and an internet protocol network for multi-media communication |
US6597783B1 (en) * | 2000-02-01 | 2003-07-22 | Cisco Systems, Inc. | System and method for storing, routing, and tracking digital documents in a call center |
US6603977B1 (en) | 2000-02-04 | 2003-08-05 | Sbc Properties, Lp | Location information system for a wireless communication device and method therefor |
US6415018B1 (en) | 2000-02-08 | 2002-07-02 | Lucent Technologies Inc. | Telecommunication system and method for handling special number calls having geographic sensitivity |
US7143186B2 (en) | 2000-02-16 | 2006-11-28 | Bea Systems, Inc. | Pluggable hub system for enterprise wide electronic collaboration |
US6766159B2 (en) | 2000-03-10 | 2004-07-20 | Nokia Mobile Phones Ltd. | Alpha tagging and type indication of emergency call number |
US6934279B1 (en) | 2000-03-13 | 2005-08-23 | Nortel Networks Limited | Controlling voice communications over a data network |
US20010052081A1 (en) | 2000-04-07 | 2001-12-13 | Mckibben Bernard R. | Communication network with a service agent element and method for providing surveillance services |
US7006508B2 (en) | 2000-04-07 | 2006-02-28 | Motorola, Inc. | Communication network with a collection gateway and method for providing surveillance services |
GB2361389B (en) | 2000-04-15 | 2004-01-28 | Ericsson Telefon Ab L M | Telecommunications system |
US7324635B2 (en) | 2000-05-04 | 2008-01-29 | Telemaze Llc | Branch calling and caller ID based call routing telephone features |
US6574328B1 (en) | 2000-05-04 | 2003-06-03 | Telemaze, Inc. | Telephone call control system for the public switched telephone network |
US6839323B1 (en) | 2000-05-15 | 2005-01-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Method of monitoring calls in an internet protocol (IP)-based network |
US6892184B1 (en) | 2000-06-19 | 2005-05-10 | E4X Inc. | System and method for multiple currency transactions |
JP4250859B2 (en) | 2000-07-04 | 2009-04-08 | 沖電気工業株式会社 | Communication terminal device and communication interception device |
US6772210B1 (en) | 2000-07-05 | 2004-08-03 | Nortel Networks Limited | Method and apparatus for exchanging communications between telephone number based devices in an internet protocol environment |
US6772188B1 (en) | 2000-07-14 | 2004-08-03 | America Online, Incorporated | Method and apparatus for communicating with an entity automatically identified in an electronic communication |
US7031939B1 (en) | 2000-08-15 | 2006-04-18 | Yahoo! Inc. | Systems and methods for implementing person-to-person money exchange |
US7047561B1 (en) | 2000-09-28 | 2006-05-16 | Nortel Networks Limited | Firewall for real-time internet applications |
DE60133316T2 (en) | 2000-10-10 | 2008-07-10 | Nortel Networks Ltd., St. Laurent | SYSTEM AND METHOD FOR TERMINATING TELECOMMUNICATIONS |
US20020068545A1 (en) * | 2000-11-06 | 2002-06-06 | Johnson Oyama | Method and apparatus for coordinating charging for services provided in a multimedia session |
US6775356B2 (en) | 2000-11-13 | 2004-08-10 | Angelo Salvucci | Real-time incident and response information messaging INA system for the automatic notification that an emergency call has occurred from a telecommunication device |
US7218722B1 (en) | 2000-12-18 | 2007-05-15 | Westell Technologies, Inc. | System and method for providing call management services in a virtual private network using voice or video over internet protocol |
US20020122547A1 (en) | 2000-12-21 | 2002-09-05 | Hinchey Allan J. | Method and apparatus for telephony route selection |
US7554442B2 (en) | 2005-06-17 | 2009-06-30 | Terahop Networks, Inc. | Event-driven mobile hazmat monitoring |
US6674850B2 (en) | 2001-01-09 | 2004-01-06 | Santera Systems Inc. | Call processing digit translation and characterization |
US20020122391A1 (en) | 2001-01-12 | 2002-09-05 | Shalit Andrew L. | Method and system for providing audio conferencing services to users of on-line text messaging services |
US6744858B1 (en) | 2001-01-26 | 2004-06-01 | Telcontrol, Inc. | System and method for supporting multiple call centers |
US7801953B1 (en) | 2001-02-12 | 2010-09-21 | Nortel Networks Limited | Push-to-talk wireless telecommunications system utilizing an voice-over-IP network |
US20020116464A1 (en) | 2001-02-20 | 2002-08-22 | Mak Joon Mun | Electronic communications system and method |
US7055174B1 (en) | 2001-02-26 | 2006-05-30 | Sprint Spectrum L.P. | Method and system for wiretapping of packet-based communications |
US7120682B1 (en) * | 2001-03-08 | 2006-10-10 | Cisco Technology, Inc. | Virtual private networks for voice over networks applications |
EP1244250A1 (en) | 2001-03-21 | 2002-09-25 | Siemens Aktiengesellschaft | Method and telecommunication system for monitoring data streams in a data network |
US6724860B2 (en) | 2001-03-23 | 2004-04-20 | Siemens Information And Communication Networks, Inc. | Methods and apparatus for transmitting accurate emergency location identification numbers (ELINs) from behind a multi-line telephone system (MLTS) after an emergency caller disconnects |
US6961334B1 (en) | 2001-03-29 | 2005-11-01 | Sonus Networks, Inc. | Intelligence engine |
US7068772B1 (en) | 2001-03-30 | 2006-06-27 | Accessline Communications Corporation | Economical call processing system and method, such as for providing one-number telecommunication services |
US7165052B2 (en) | 2001-03-31 | 2007-01-16 | First Data Corporation | Payment service method and system |
US8363647B2 (en) | 2001-04-03 | 2013-01-29 | Voxpath Networks, Inc. | System and method for configuring an IP telephony device |
US7215643B2 (en) * | 2003-07-29 | 2007-05-08 | Level 3 Communications, Llc | System and method for providing alternate routing in a network |
US7593884B2 (en) | 2001-04-10 | 2009-09-22 | Goldman Sachs & Co. | Multi-currency marketplace |
US6907116B2 (en) * | 2001-04-25 | 2005-06-14 | Telecommunication Systems Inc. | Time balance based prepaid subscriber database and reporting |
ATE438238T1 (en) | 2001-05-16 | 2009-08-15 | Nokia Corp | METHOD AND SYSTEM FOR ALLOWING LEGITIMATE INTERCEPTION OF CONNECTIONS, SUCH AS VOICE OVER INTERNET PROTOCOL CALLS |
US7899742B2 (en) | 2001-05-29 | 2011-03-01 | American Express Travel Related Services Company, Inc. | System and method for facilitating a subsidiary card account |
US7010727B1 (en) * | 2001-06-15 | 2006-03-07 | Nortel Networks Limited | Method and system for negotiating compression techniques to be utilized in packet data communications |
US7996324B2 (en) | 2001-07-10 | 2011-08-09 | American Express Travel Related Services Company, Inc. | Systems and methods for managing multiple accounts on a RF transaction device using secondary identification indicia |
US20030043974A1 (en) | 2001-09-04 | 2003-03-06 | Emerson Harry E. | Stored profile system for storing and exchanging user communications profiles to integrate the internet with the public switched telephone network |
US7076529B2 (en) | 2001-09-27 | 2006-07-11 | Bellsouth Intellectual Property Corporation | Systems and methods for notification of electronic mail receipt in a shared computer environment via advanced intelligent network systems |
US7774711B2 (en) | 2001-09-28 | 2010-08-10 | Aol Inc. | Automatic categorization of entries in a contact list |
US7499533B2 (en) * | 2001-11-02 | 2009-03-03 | At&T Intellectual Property, I, L.P. | System and method for caller controlled time demarcation |
US7062222B2 (en) | 2001-12-17 | 2006-06-13 | Nokia Corporation | Initiating a wireless connection to a broadcast program |
US20030120553A1 (en) * | 2001-12-21 | 2003-06-26 | Bell Canada | Method and apparatus for vending and delivering telephone services |
US6947531B1 (en) * | 2001-12-27 | 2005-09-20 | Sprint Spectrum L.P. | System and method for advertising supported communications |
US6726092B2 (en) * | 2001-12-28 | 2004-04-27 | Interdigital Technology Corporation | Portable device service payments by multiple means |
US7836160B2 (en) | 2002-01-08 | 2010-11-16 | Verizon Services Corp. | Methods and apparatus for wiretapping IP-based telephone lines |
US7277528B2 (en) | 2002-02-12 | 2007-10-02 | Siemens Information And Communication Networks, Inc.- Boca Raton | Call-content determinative selection of interception access points in a soft switch controlled network |
US7062253B2 (en) * | 2002-04-10 | 2006-06-13 | Sprint Spectrum L.P. | Method and system for real-time tiered rating of communication services |
US7363055B2 (en) | 2002-05-09 | 2008-04-22 | Casabyte, Inc. | Method, apparatus and article to remotely associate wireless communications devices with subscriber identities and/or proxy wireless communications devices |
US7177311B1 (en) | 2002-06-04 | 2007-02-13 | Fortinet, Inc. | System and method for routing traffic through a virtual router-based network switch |
US20040019539A1 (en) * | 2002-07-25 | 2004-01-29 | 3Com Corporation | Prepaid billing system for wireless data networks |
EP1389862B1 (en) | 2002-08-08 | 2004-11-03 | Alcatel | Lawful interception for VoIP calls in IP based networks |
US8166533B2 (en) | 2002-08-17 | 2012-04-24 | Rockstar Bidco Lp | Method for providing media communication across firewalls |
US7676215B2 (en) | 2002-10-16 | 2010-03-09 | Alcatel Lucent Usa Inc. | Emergency call back method |
US6963739B2 (en) | 2002-10-21 | 2005-11-08 | Motorola, Inc. | Method and apparatus for providing information intercept in an ad-hoc wireless network |
US7539086B2 (en) | 2002-10-23 | 2009-05-26 | J2 Global Communications, Inc. | System and method for the secure, real-time, high accuracy conversion of general-quality speech into text |
US7330835B2 (en) | 2002-10-31 | 2008-02-12 | Federal Reserve Bank Of Minneapolis | Method and system for tracking and reporting automated clearing house transaction status |
US7454200B2 (en) | 2002-11-13 | 2008-11-18 | Lucent Technologies Inc. | Personal handyphone system component employment of prepay telephone service system component to allow user employment of wireless telephone service subsequent to purchase thereof |
EP1437693A1 (en) | 2003-01-08 | 2004-07-14 | Itsmobile Limited | A mobile telecommunications billing routing system and method |
JP4270888B2 (en) | 2003-01-14 | 2009-06-03 | パナソニック株式会社 | Service and address management method in WLAN interconnection |
US7003493B2 (en) | 2003-01-22 | 2006-02-21 | First Data Corporation | Direct payment with token |
US7457865B2 (en) * | 2003-01-23 | 2008-11-25 | Redknee Inc. | Method for implementing an internet protocol (IP) charging and rating middleware platform and gateway system |
US7797459B1 (en) | 2003-02-11 | 2010-09-14 | At&T Intellectual Property Ii, L.P. | Access independent common architecture for real-time communications services for networking environments |
US20040165709A1 (en) | 2003-02-24 | 2004-08-26 | Pence Robert Leslie | Stealth interception of calls within a VoIP network |
US6963557B2 (en) | 2003-03-29 | 2005-11-08 | Intrado Inc. | System and method for routing telephone calls involving internet protocol network |
EP1611768B1 (en) | 2003-04-09 | 2012-02-22 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Lawful interception of multimedia calls |
US7058052B2 (en) * | 2003-04-11 | 2006-06-06 | Nokia Corporation | System and method for using a mobile router tunneling protocol to locate functionality in a distributed architecture |
US20040218748A1 (en) | 2003-04-30 | 2004-11-04 | Stephen Fisher | Method and system for providing and using telephone call routing rules |
US7454510B2 (en) | 2003-05-29 | 2008-11-18 | Microsoft Corporation | Controlled relay of media streams across network perimeters |
US7436835B2 (en) | 2003-05-30 | 2008-10-14 | Lucent Technologies Inc. | Forced bearer routing for packet-mode interception |
US7447909B2 (en) | 2003-06-05 | 2008-11-04 | Nortel Networks Limited | Method and system for lawful interception of packet switched network services |
US7440441B2 (en) * | 2003-06-16 | 2008-10-21 | Redknee Inc. | Method and system for Multimedia Messaging Service (MMS) rating and billing |
US7620808B2 (en) * | 2003-06-19 | 2009-11-17 | Nokia Corporation | Security of a communication system |
US7627091B2 (en) | 2003-06-25 | 2009-12-01 | Avaya Inc. | Universal emergency number ELIN based on network address ranges |
US6932268B1 (en) | 2003-06-30 | 2005-08-23 | Checkfree Corporation | Dual mode credit card based payment technique |
WO2005009004A1 (en) | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | Packet sniffer |
EP1507395A1 (en) | 2003-08-14 | 2005-02-16 | Siemens Aktiengesellschaft | Method for the setting up of call forwarding for a SIP telephone number of a SIP client in a mixed circuit switched / packet network |
US7042985B1 (en) | 2003-08-27 | 2006-05-09 | Bellsouth Intellectual Property Corporation | Method, system and computer program product for providing a regional E911 network |
WO2005025257A1 (en) | 2003-09-05 | 2005-03-17 | Telefonaktiebolaget Lm Ericsson (Publ) | Monitoring in a telecommunication network |
US7477843B1 (en) | 2003-09-05 | 2009-01-13 | Nortel Networks Limited | Method of and system for routing in a photonic network |
US7027564B2 (en) | 2003-09-22 | 2006-04-11 | Foundry Networks, Inc. | System, method and apparatus for supporting E911 emergency services in a data communications network |
CA2483123A1 (en) | 2003-09-30 | 2005-03-30 | At&T Corp. | Enhanced call notification service |
US8543477B2 (en) | 2003-09-30 | 2013-09-24 | Federal Reserve Bank Of Atlanta | Value tracking and reporting of automated clearing house transactions |
US7486684B2 (en) | 2003-09-30 | 2009-02-03 | Alcatel-Lucent Usa Inc. | Method and apparatus for establishment and management of voice-over IP virtual private networks in IP-based communication systems |
US7440442B2 (en) | 2003-10-21 | 2008-10-21 | 3Com Corporation | IP-based enhanced emergency services using intelligent client devices |
US7715413B2 (en) | 2003-10-23 | 2010-05-11 | Emerj, Inc. | Multi-network exchange system for telephony applications |
EP1528774A1 (en) | 2003-10-30 | 2005-05-04 | Alcatel | Method and system of providing lawful interception of calls |
US7808895B2 (en) * | 2003-10-30 | 2010-10-05 | Intel Corporation | Isochronous device communication management |
US7203478B2 (en) | 2003-12-08 | 2007-04-10 | Lucent Technologies Inc. | Network support for mobile service plan minute exchange by category |
US8078164B2 (en) | 2004-01-06 | 2011-12-13 | Vasu Networks Corporation | Mobile telephone VOIP/cellular seamless roaming switching controller |
US7346156B1 (en) | 2004-01-29 | 2008-03-18 | Stanacard Llc | Methods and apparatuses for placing a telephone call |
US20050169248A1 (en) | 2004-02-04 | 2005-08-04 | Nortel Networks Limited | Method and apparatus for providing in-band location information in an emergency response network |
US20050192897A1 (en) | 2004-02-10 | 2005-09-01 | First Data Corporation | Methods and systems for payment-network enrollment |
US7587757B2 (en) | 2004-02-11 | 2009-09-08 | Texas Instruments Incorporated | Surveillance implementation in managed VOP networks |
US8594298B2 (en) | 2004-02-20 | 2013-11-26 | Avaya Inc. | Call management |
US7177399B2 (en) | 2004-02-27 | 2007-02-13 | Nortel Network Limited | Determining the geographical location from which an emergency call originates in a packet-based communications network |
US7574736B2 (en) | 2004-03-03 | 2009-08-11 | Microsoft Corporation | System and method for efficiently transferring media across firewalls |
US7702308B2 (en) | 2004-03-11 | 2010-04-20 | Alcatel-Lucent Usa Inc. | Method of associating data with a call to a call center |
US7738384B2 (en) | 2004-03-23 | 2010-06-15 | Level 3 Communications, Llc | Systems and methods for accessing voice transmissions |
US20050222952A1 (en) | 2004-03-31 | 2005-10-06 | Dave Garrett | System and method for real-time account validation for an on-line payment system |
US8145182B2 (en) | 2004-05-07 | 2012-03-27 | Interdigital Technology Corporation | Supporting emergency calls on a wireless local area network |
US7174156B1 (en) | 2004-05-10 | 2007-02-06 | Sprint Spectrum L.P. | Method and system for tracking and billing vocoder bypass calls in a wireless wide area network |
US7764944B2 (en) | 2004-06-24 | 2010-07-27 | Alcatel-Lucent Usa Inc. | Method of providing a unique call back number for wireless 9-1-1 calls |
US8016185B2 (en) | 2004-07-06 | 2011-09-13 | Visa International Service Association | Money transfer service with authentication |
US7437665B2 (en) | 2004-07-23 | 2008-10-14 | International Business Machines Corporation | SEF parser and EDI parser generator |
US7089012B2 (en) * | 2004-07-29 | 2006-08-08 | Motorola, Inc. | Method and system for use in reducing cost associated with lost connections in wireless communication |
US8571011B2 (en) | 2004-08-13 | 2013-10-29 | Verizon Business Global Llc | Method and system for providing voice over IP managed services utilizing a centralized data store |
EP1805718B1 (en) * | 2004-08-19 | 2009-10-07 | Miroslav Marc | Wireless toll collection system |
CN101019307B (en) | 2004-09-14 | 2010-11-17 | 皇家飞利浦电子股份有限公司 | Device for ultra wide band frequency generating |
US7580886B1 (en) | 2004-09-15 | 2009-08-25 | Federal Reserve Bank Of Atlanta | Managing foreign payments in an international ACH |
US8116307B1 (en) | 2004-09-23 | 2012-02-14 | Juniper Networks, Inc. | Packet structure for mirrored traffic flow |
US20060072547A1 (en) | 2004-09-29 | 2006-04-06 | Lucent Technologies Inc. | Systems and methods for serving VolP emergency calls |
US7643822B2 (en) | 2004-09-30 | 2010-01-05 | Google Inc. | Method and system for processing queries initiated by users of mobile devices |
US7764768B2 (en) | 2004-10-06 | 2010-07-27 | Alcatel-Lucent Usa Inc. | Providing CALEA/legal intercept information to law enforcement agencies for internet protocol multimedia subsystems (IMS) |
US7573982B2 (en) | 2004-10-12 | 2009-08-11 | Bellsouth Intellectual Property Corporation | Methods and systems for managing a call session |
US7441271B2 (en) | 2004-10-20 | 2008-10-21 | Seven Networks | Method and apparatus for intercepting events in a communication system |
US20060109960A1 (en) | 2004-10-25 | 2006-05-25 | D Evelyn Linda K | System and method for unilateral verification of caller location information |
US20060095320A1 (en) | 2004-11-03 | 2006-05-04 | Jones Lisa S | System and method of electronic advertisement and commerce |
US7190959B2 (en) | 2004-11-19 | 2007-03-13 | Tekelec | Methods and systems for signaling in a communications network for ported, migrated and/or dual-mode subscribers |
US8824655B2 (en) | 2004-11-23 | 2014-09-02 | Transera Communications, Inc. | Routing inbound communications across call centers and the like |
FI20041659A0 (en) | 2004-12-23 | 2004-12-23 | Nokia Corp | Method of routing communications to a VoIP terminal in a mobile communication system |
US8682919B1 (en) | 2004-12-23 | 2014-03-25 | Google Inc. | System and method for navigating related data |
US7593390B2 (en) | 2004-12-30 | 2009-09-22 | Intel Corporation | Distributed voice network |
JP2006191474A (en) | 2005-01-07 | 2006-07-20 | Oki Electric Ind Co Ltd | Emergency reporting system |
US7738915B2 (en) * | 2005-01-14 | 2010-06-15 | Nextel Communications Inc. | System and method for private wireless networks |
US8856359B2 (en) | 2005-06-29 | 2014-10-07 | Qualcomm Connected Experiences, Inc. | Caller-callee association of a plurality of networked devices |
NZ537800A (en) | 2005-01-20 | 2007-03-30 | Colin Lawrence Melvin Baker | Global telephone number |
US8718258B2 (en) | 2005-01-24 | 2014-05-06 | Sprint Communication Company L.P. | System and method for jurisdictional routing |
US20060195398A1 (en) | 2005-02-04 | 2006-08-31 | Sanjeev Dheer | Method and apparatus for processing payment requests |
US7715821B2 (en) | 2005-02-18 | 2010-05-11 | Alcatel-Lucent Usa Inc. | Method of updating a unique call back number for a wireless emergency call |
US7565131B2 (en) | 2005-03-08 | 2009-07-21 | Alcatel-Lucent Usa Inc. | Emergency call back through intersystem paging |
US20060235758A1 (en) | 2005-04-08 | 2006-10-19 | Paypal Inc. | Authorization techniques |
US7496182B2 (en) | 2005-04-15 | 2009-02-24 | Verizon Business Global Llc | Handling emergency service calls originating from internet telephony |
US7664495B1 (en) | 2005-04-21 | 2010-02-16 | At&T Mobility Ii Llc | Voice call redirection for enterprise hosted dual mode service |
GB2425679A (en) | 2005-04-27 | 2006-11-01 | Hewlett Packard Development Co | Scanning computing entities for vulnerabilities |
US20060258328A1 (en) | 2005-05-10 | 2006-11-16 | Lucent Technologies Inc. | User defined codes for emergency calls |
US7545761B1 (en) * | 2005-06-08 | 2009-06-09 | Cellco Partnership | Session classification for differentiated prepaid accounting |
US8750290B2 (en) | 2005-06-10 | 2014-06-10 | Zoom Telephonics, Inc. | Method and apparatus for ensuring accessibility to emergency service via VoIP or via PSTN |
US20060281437A1 (en) | 2005-06-13 | 2006-12-14 | Qwest Communications International Inc. | Systems and methods for supporting E911 emergency services in a data communications network |
US7843902B2 (en) | 2005-07-01 | 2010-11-30 | Relefonaktiebolaget L M Ericsson | Interception of multimedia services |
GB0515123D0 (en) | 2005-07-22 | 2005-08-31 | M M I Res Ltd | Method of compiling a list of identifiers associated with a mobile device user |
US20070036139A1 (en) | 2005-08-09 | 2007-02-15 | Ashish Patel | System and method for authenticating internetwork resource requests |
JP4457058B2 (en) | 2005-08-26 | 2010-04-28 | アラクサラネットワークス株式会社 | Packet transfer device with filtering |
US8166547B2 (en) | 2005-09-06 | 2012-04-24 | Fortinet, Inc. | Method, apparatus, signals, and medium for managing a transfer of data in a data network |
US20070064919A1 (en) | 2005-09-14 | 2007-03-22 | Zoneson Chen | Communication method for placing phone calls by using a fixed dial plan |
US7817608B2 (en) | 2005-09-23 | 2010-10-19 | Widevine Technologies, Inc. | Transitioning to secure IP communications for encoding, encapsulating, and encrypting data |
WO2007044454A2 (en) | 2005-10-06 | 2007-04-19 | Telecommunication Systems, Inc. | Voice over internet protocol (voip) location based 911 conferencing |
US7907551B2 (en) | 2005-10-06 | 2011-03-15 | Telecommunication Systems, Inc. | Voice over internet protocol (VoIP) location based 911 conferencing |
US8200575B2 (en) | 2005-10-11 | 2012-06-12 | Raul Armando Cordero Torres | Secure electronic payment system and methods |
US7907713B2 (en) * | 2005-10-25 | 2011-03-15 | Tekelec | Methods, systems, and computer program products for using a presence database to deliver enhanced presence information regarding communications made to or from a presentity |
ES2389973T3 (en) | 2005-11-03 | 2012-11-05 | Roamware, Inc. | System based on a network to re-route telephone calls from telephony networks to VoIP clients for itinerant users and subscribers who do not answer |
US7907718B2 (en) | 2005-11-18 | 2011-03-15 | Cisco Technology, Inc. | VoIP call routing |
US7639792B2 (en) | 2005-11-23 | 2009-12-29 | Att Knowledge Ventures, L.P. | System and method for location management and emergency support for a voice over internet protocol device |
US20070121866A1 (en) * | 2005-11-28 | 2007-05-31 | Nokia Corporation | Method, system and corresponding program products and devices for VoIP-communication |
US7599944B2 (en) | 2005-12-16 | 2009-10-06 | Microsoft Corporation | Electronic data interchange (EDI) schema simplification interface |
US7647500B2 (en) | 2005-12-16 | 2010-01-12 | Microsoft Corporation | Synchronous validation and acknowledgment of electronic data interchange (EDI) |
US7447707B2 (en) | 2005-12-16 | 2008-11-04 | Microsoft Corporation | Automatic schema discovery for electronic data interchange (EDI) at runtime |
WO2007081047A1 (en) | 2006-01-12 | 2007-07-19 | Nec Corporation | Mobile communication system, its talking method, and program software |
US8024785B2 (en) | 2006-01-16 | 2011-09-20 | International Business Machines Corporation | Method and data processing system for intercepting communication between a client and a service |
US20090214000A1 (en) | 2006-01-17 | 2009-08-27 | Medical Envelope L.L.C. | System and method for providing medical and contact information during an emergency call |
CN101496387B (en) | 2006-03-06 | 2012-09-05 | 思科技术公司 | System and method for access authentication in a mobile wireless network |
US7706779B2 (en) * | 2006-03-16 | 2010-04-27 | Research In Motion Limited | System and method for controlling VCC functionality in a network environment including IMS |
US7657011B1 (en) | 2006-03-16 | 2010-02-02 | Juniper Networks, Inc. | Lawful intercept trigger support within service provider networks |
US8036362B1 (en) * | 2006-03-17 | 2011-10-11 | RNK Inc. | Communication system and call forwarding management |
CA2659007C (en) | 2006-03-20 | 2015-06-16 | Google Inc. | Synchronous message management system |
US8768951B2 (en) | 2006-03-20 | 2014-07-01 | Bce Inc. | Method for populating a location information database used in the delivery of emergency and other location-based services in a VoIP environment |
US8763081B2 (en) | 2006-04-03 | 2014-06-24 | Bridgeport Networks, Inc. | Network based authentication |
US8228897B2 (en) | 2006-04-04 | 2012-07-24 | Telecommunication Systems, Inc. | SS7 ANSI-41 to SIP based call signaling conversion gateway for wireless VoIP E911 |
US20070253418A1 (en) | 2006-04-27 | 2007-11-01 | D.S.P. Group Ltd. | Routing path optimization between sip endpoints |
US7929955B1 (en) | 2006-04-28 | 2011-04-19 | At&T Mobility Ii Llc | Managing multiple CLI identities |
US8050273B2 (en) | 2006-06-22 | 2011-11-01 | Alcatel Lucent | Lawful interception in IP networks |
US7940896B2 (en) | 2006-06-29 | 2011-05-10 | Avaya Inc. | Adaption of emergency calls to the emergency services network based on caller location |
US8417791B1 (en) | 2006-06-30 | 2013-04-09 | Google Inc. | Hosted calling service |
US7680737B2 (en) | 2006-07-06 | 2010-03-16 | Moneygram International, Inc. | Systems and methods for processing payments with payment review features |
US9014197B2 (en) | 2006-07-14 | 2015-04-21 | Verizon Patent And Licensing Inc. | E911 implementation for IP phones |
US8036366B2 (en) | 2006-08-04 | 2011-10-11 | Microsoft Corporation | Intelligent formatting of VoIP telephone numbers |
US8774370B2 (en) | 2006-08-21 | 2014-07-08 | Connexon Telecom Inc. | System and method for delivering callback numbers for emergency calls in a VOIP system |
CA2598200C (en) | 2006-08-21 | 2015-10-27 | Connexon Telecom Inc. | System and method for delivering callback numbers for emergency calls in a voip system |
US8306063B2 (en) | 2006-08-29 | 2012-11-06 | EXFO Services Assurance, Inc. | Real-time transport protocol stream detection system and method |
US9432830B2 (en) * | 2006-08-29 | 2016-08-30 | Nokia Technologies Oy | Method of advertising using mobile communications |
US7676229B2 (en) | 2006-08-31 | 2010-03-09 | Syniverse Technologies, Inc. | Cellular-to-VoIP call establishment systems, methods, devices, and computer software |
US8161078B2 (en) | 2006-09-20 | 2012-04-17 | Microsoft Corporation | Electronic data interchange (EDI) data dictionary management and versioning system |
ITMI20061886A1 (en) | 2006-10-02 | 2008-04-03 | Ericsson Telefon Ab L M | PROCEDURE AND ARCHITECTURE OF LEGAL INTERCEPTION IN BROADBAND NETWORKS |
CA3045683C (en) * | 2006-11-02 | 2021-10-26 | Voip-Pal.Com, Inc. | Producing routing messages for voice over ip communications |
US7983691B1 (en) | 2006-11-06 | 2011-07-19 | Google Inc. | Geographically localizing mobile communciation devices |
CA2670510C (en) | 2006-11-29 | 2020-12-22 | Digifonica (International) Limited | Intercepting voice over ip communications and other data communications |
CA2612581C (en) | 2006-12-19 | 2011-05-24 | Bce Inc. | Method, system and apparatus for handling a request for a media-over-packet communication session |
US8599747B1 (en) | 2006-12-20 | 2013-12-03 | Radisys Canada Inc. | Lawful interception of real time packet data |
US8010079B2 (en) | 2006-12-28 | 2011-08-30 | Trueposition, Inc. | Emergency wireless location system including a wireless transceiver |
US20080167020A1 (en) | 2007-01-08 | 2008-07-10 | Jacob Guedalia | Methods and systems of accessing contact information on a mobile device |
US8427981B2 (en) | 2007-02-23 | 2013-04-23 | Interactive Intelligence, Inc. | System and method for recording and monitoring communications using a media server |
WO2008116296A1 (en) | 2007-03-26 | 2008-10-02 | Digifonica (International) Limited | Emergency assistance calling for voice over ip communications systems |
US7950046B2 (en) | 2007-03-30 | 2011-05-24 | Uranus International Limited | Method, apparatus, system, medium, and signals for intercepting a multiple-party communication |
US8060887B2 (en) | 2007-03-30 | 2011-11-15 | Uranus International Limited | Method, apparatus, system, and medium for supporting multiple-party communications |
US8702505B2 (en) | 2007-03-30 | 2014-04-22 | Uranus International Limited | Method, apparatus, system, medium, and signals for supporting game piece movement in a multiple-party communication |
US7765266B2 (en) | 2007-03-30 | 2010-07-27 | Uranus International Limited | Method, apparatus, system, medium, and signals for publishing content created during a communication |
US7765261B2 (en) | 2007-03-30 | 2010-07-27 | Uranus International Limited | Method, apparatus, system, medium and signals for supporting a multiple-party communication on a plurality of computer servers |
US8627211B2 (en) | 2007-03-30 | 2014-01-07 | Uranus International Limited | Method, apparatus, system, medium, and signals for supporting pointer display in a multiple-party communication |
US7978620B2 (en) | 2007-05-14 | 2011-07-12 | Cisco Technology, Inc. | Dynamically troubleshooting voice quality |
US9185216B2 (en) | 2007-06-15 | 2015-11-10 | Blackberry Limited | System and method for indicating emergency call back to user equipment |
ES2742548T3 (en) | 2007-06-27 | 2020-02-14 | Hoffmann La Roche | Treatment management system with an open architecture and a procedure for it |
US20090135735A1 (en) | 2007-11-27 | 2009-05-28 | Tellabs Operations, Inc. | Method and apparatus of RTP control protocol (RTCP) processing in real-time transport protocol (RTP) intermediate systems |
US20090135724A1 (en) | 2007-11-27 | 2009-05-28 | Tellabs Operations, Inc. | Method and apparatus of RTP control protocol (RTCP) processing in real-time transport protocol (RTP) intermediate systems |
US8514841B2 (en) | 2007-11-30 | 2013-08-20 | Broadsoft, Inc. | IP-based call content intercept using repeaters |
US8244204B1 (en) | 2007-12-11 | 2012-08-14 | Cellco Partnership | Timed override of incoming call restrictions to facilitate callback after an emergency call |
US8472431B2 (en) | 2008-01-24 | 2013-06-25 | At&T Intellectual Property I, L.P. | System and method of providing IMS services to users on terminating non IMS devices |
WO2009102245A1 (en) | 2008-02-14 | 2009-08-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Lawful interception of non-local subscribers |
US8300632B2 (en) | 2008-02-21 | 2012-10-30 | Avaya Inc. | System and method for distributed call monitoring/recording using the session initiation protocol (SIP) |
US8910272B2 (en) | 2008-02-28 | 2014-12-09 | Hob Gmbh & Co. Kg | Computer communication system for communication via public networks |
US20090238168A1 (en) | 2008-03-18 | 2009-09-24 | Paraxip Technologies Inc. | Communication node and method for handling sip communication |
EP3484135A1 (en) | 2008-04-02 | 2019-05-15 | Twilio Inc. | System and method for processing telephony sessions |
US8837465B2 (en) | 2008-04-02 | 2014-09-16 | Twilio, Inc. | System and method for processing telephony sessions |
US8219115B1 (en) | 2008-05-12 | 2012-07-10 | Google Inc. | Location based reminders |
US8165090B2 (en) | 2008-05-15 | 2012-04-24 | Nix John A | Efficient handover of media communications in heterogeneous IP networks |
CN101621506A (en) | 2008-07-01 | 2010-01-06 | 鸿富锦精密工业(深圳)有限公司 | Method for realizing real-time multi-media bidirectional communication by NAT |
CA2732148C (en) | 2008-07-28 | 2018-06-05 | Digifonica (International) Limited | Mobile gateway |
US8605869B1 (en) | 2008-08-08 | 2013-12-10 | Mobilesphere, Ltd. | Method and apparatus for forcing a call to a carrier provided voice mail facility |
US8493931B1 (en) | 2008-09-12 | 2013-07-23 | Google Inc. | Efficient handover of media communications in heterogeneous IP networks using handover procedure rules and media handover relays |
US7958233B2 (en) | 2008-09-26 | 2011-06-07 | Media Patents, S.L. | Method for lawfully intercepting communication IP packets exchanged between terminals |
CA2778905A1 (en) | 2008-10-29 | 2010-08-26 | Google Inc. | Network and application merging and asset tracking |
US8275404B2 (en) | 2008-10-29 | 2012-09-25 | Google Inc. | Managing and monitoring emergency services sector resources |
KR100964375B1 (en) | 2008-10-31 | 2010-06-17 | 한국전자통신연구원 | Interception method interworking with communication network and Internet network |
US8526306B2 (en) | 2008-12-05 | 2013-09-03 | Cloudshield Technologies, Inc. | Identification of patterns in stateful transactions |
JP5237083B2 (en) | 2008-12-25 | 2013-07-17 | 株式会社エヌ・ティ・ティ・ドコモ | Call control system, call control device, terminal device, and call control method |
EP2387843A1 (en) | 2009-01-16 | 2011-11-23 | Telefonaktiebolaget LM Ericsson (publ) | Signalling messages in a communications network node to communicate a called address string |
US8848887B2 (en) | 2009-02-27 | 2014-09-30 | Verizon Patent And Licensing Inc. | Jurisdictionally optimized call routing |
EP2227048A1 (en) | 2009-03-05 | 2010-09-08 | France Telecom | Method for managing user profiles in a peer-to-peer network |
US8396445B2 (en) | 2009-03-12 | 2013-03-12 | At&T Intellectual Property I, L.P. | Method to implement E911 services in IMS (IP Multimedia Subsystem) |
US8989175B2 (en) | 2009-03-18 | 2015-03-24 | Telefonaktiebolaget L M Ericsson (Publ) | Access node comprising VoIP cards with common IP/MAC addresses |
US8315521B2 (en) | 2009-05-01 | 2012-11-20 | Verizon Patent And Licensing Inc. | Peer-to-peer voice over internet protocol |
CN101582798B (en) | 2009-06-19 | 2012-01-11 | 中兴通讯股份有限公司 | Method for remote network management on voice home gateway terminal and system |
CN102484656B (en) | 2009-06-29 | 2015-07-15 | 瑞典爱立信有限公司 | Method and apparatus for relaying packets |
CN101605342B (en) | 2009-07-01 | 2012-12-19 | 中兴通讯股份有限公司 | Method, system and device for monitoring communication contents in IMS network |
US8255393B1 (en) | 2009-08-07 | 2012-08-28 | Google Inc. | User location reputation system |
BR112012003294B1 (en) | 2009-08-14 | 2021-06-22 | Telefonaktiebolaget Lm Ericsson (Publ) | METHOD FOR ESTABLISHING A CONNECTION BETWEEN A SOURCE TERMINAL AND A DESTINATION TERMINAL, NETWORK NODE TO A CORE NETWORK, ACCESS CONNECTION POINT OF A CORE NETWORK, HOLDER OF ELECTRONICALLY LEGIBLE DATA, AND, COMPUTING STORAGE MEANS |
ES2563044T3 (en) | 2009-09-17 | 2016-03-10 | Digifonica (International) Limited | Uninterrupted transmission of internet protocol transmissions during endpoint changes |
US8862701B2 (en) | 2009-09-22 | 2014-10-14 | George Havriluk | Communication network utilizing email or web addresses that describe a physical location |
US8837360B1 (en) | 2009-12-11 | 2014-09-16 | Google Inc. | Determining geographic location of network hosts |
US20110153809A1 (en) | 2009-12-23 | 2011-06-23 | Microsoft Corporation | Legal Intercept |
US8810392B1 (en) | 2010-02-04 | 2014-08-19 | Google Inc. | Device and method for monitoring the presence of items and issuing an alert if an item is not detected |
JP5447042B2 (en) | 2010-03-17 | 2014-03-19 | 株式会社リコー | Control device, control method, and program |
US9559869B2 (en) | 2010-05-04 | 2017-01-31 | Qwest Communications International Inc. | Video call handling |
US8819566B2 (en) | 2010-05-04 | 2014-08-26 | Qwest Communications International Inc. | Integrated multi-modal chat |
US9003306B2 (en) | 2010-05-04 | 2015-04-07 | Qwest Communications International Inc. | Doodle-in-chat-context |
US8468196B1 (en) | 2010-05-20 | 2013-06-18 | Google Inc. | System and method of reducing latency using adaptive retransmission timeouts |
US8228837B2 (en) | 2010-06-17 | 2012-07-24 | Google Inc. | Maintaining network connectivity |
US20120084288A1 (en) | 2010-10-01 | 2012-04-05 | Mohammed Abdul-Razzak | Criminal relationship analysis and visualization |
US8667057B1 (en) | 2010-10-01 | 2014-03-04 | Google Inc. | Method and system for delivering object update messages including payloads |
CN102457494B (en) | 2010-10-20 | 2014-10-01 | 中国移动通信集团四川有限公司 | A method and device for improving the monitoring success rate based on SIP signaling |
US8364172B2 (en) | 2010-12-15 | 2013-01-29 | Google Inc. | Peer-to-peer location service |
US20120155333A1 (en) | 2010-12-17 | 2012-06-21 | Electronics And Telecommunications Research Institute Of Daejeon | Appratus and method for lawful interception |
US8938534B2 (en) | 2010-12-30 | 2015-01-20 | Ss8 Networks, Inc. | Automatic provisioning of new users of interest for capture on a communication network |
US20120195236A1 (en) | 2011-02-02 | 2012-08-02 | Comvoice Holdings Llc | System for Multilocation Calling Line Identification Provisioning |
US8972612B2 (en) | 2011-04-05 | 2015-03-03 | SSB Networks, Inc. | Collecting asymmetric data and proxy data on a communication network |
CN102137024B (en) | 2011-04-19 | 2013-11-20 | 福建星网锐捷网络有限公司 | Message processing method, exit routing device and border routing device |
US8909556B2 (en) | 2011-07-20 | 2014-12-09 | Visa International Service Association | Security gateway communication |
US8948061B2 (en) | 2011-08-09 | 2015-02-03 | Google Technology Holdings LLC | Method of intercepting VOIP communications |
US9002793B1 (en) | 2011-10-05 | 2015-04-07 | Google Inc. | Database replication |
US8599837B2 (en) | 2011-11-18 | 2013-12-03 | Verizon Patent And Licensing Inc. | Local identity based on called number |
US8749610B1 (en) | 2011-11-29 | 2014-06-10 | Google Inc. | Managing nodes of a synchronous communication conference |
US8792374B1 (en) | 2011-12-07 | 2014-07-29 | Google Inc. | Managing network routes from a central server |
CN102572123B (en) | 2011-12-21 | 2014-10-22 | 成都三零瑞通移动通信有限公司 | Method for monitoring call record uploading of eavesdropping software X undercover |
US9305273B2 (en) | 2011-12-31 | 2016-04-05 | Verizon Patent And Licensing Inc. | Telephone number use analysis for grouping of consecutive telephone numbers based on assignment status |
US8712425B2 (en) | 2012-01-11 | 2014-04-29 | Apple Inc. | Managing a packet service call within mobile communications user equipment |
US8391136B1 (en) | 2012-01-27 | 2013-03-05 | Google Inc. | Fallback messaging |
US10484335B2 (en) | 2012-02-09 | 2019-11-19 | Connectify, Inc. | Secure remote computer network |
US9143429B2 (en) | 2012-02-28 | 2015-09-22 | Google Inc. | Identifying an egress point to a network location |
US8792905B1 (en) | 2012-03-01 | 2014-07-29 | Google Inc. | Location monitoring using clusters of entities |
US20130237198A1 (en) | 2012-03-06 | 2013-09-12 | Apple Inc. | System and method for managing data calls |
US9264390B2 (en) | 2012-03-22 | 2016-02-16 | Google Inc. | Synchronous communication system and method |
US8774721B2 (en) | 2012-04-10 | 2014-07-08 | Google Inc. | Detecting a communication tap via signal monitoring |
US8903360B2 (en) | 2012-05-17 | 2014-12-02 | International Business Machines Corporation | Mobile device validation |
US8738051B2 (en) | 2012-07-26 | 2014-05-27 | Twilio, Inc. | Method and system for controlling message routing |
WO2014066155A2 (en) | 2012-10-22 | 2014-05-01 | Google Inc. | Monitoring media consumption habits |
CN103973565B (en) | 2013-02-01 | 2017-11-28 | 华为技术有限公司 | It route area selecting method, device and system |
US20140244393A1 (en) | 2013-02-28 | 2014-08-28 | Google Inc. | Fall-back to saved location where user location is unknown |
US9055488B2 (en) | 2013-03-01 | 2015-06-09 | Apple Inc. | Assisting return to a first network from a second network after performance of a circuit switched fallback procedure |
US9338718B2 (en) | 2013-03-14 | 2016-05-10 | Apple Inc. | Voice call resumption on a legacy network |
CN104104781B (en) | 2013-04-09 | 2018-11-23 | 中兴通讯股份有限公司 | A kind of method and device showing SIM cards of mobile phones contact person |
US8903051B2 (en) | 2013-04-12 | 2014-12-02 | Verizon Patent And Licensing Inc. | Returning calls to emergency callers without valid telephone numbers |
US20140337961A1 (en) | 2013-05-08 | 2014-11-13 | Promise Technology, Inc. | System for implementing dynamic access to private cloud environment via public network |
US9282579B2 (en) | 2013-05-23 | 2016-03-08 | Broadcom Corporation | Deactivating elevated priority public data network connections in user equipment |
-
2007
- 2007-11-01 CA CA3045683A patent/CA3045683C/en active Active
- 2007-11-01 CA CA2916217A patent/CA2916217C/en active Active
- 2007-11-01 WO PCT/CA2007/001956 patent/WO2008052340A1/en active Application Filing
- 2007-11-01 CA CA3045672A patent/CA3045672C/en active Active
- 2007-11-01 PT PT07816106T patent/PT2084868T/en unknown
- 2007-11-01 EP EP18174930.0A patent/EP3386155A1/en not_active Withdrawn
- 2007-11-01 CN CNA200780049136XA patent/CN101584166A/en active Pending
- 2007-11-01 CA CA3045681A patent/CA3045681C/en active Active
- 2007-11-01 HU HUE07816106A patent/HUE040485T2/en unknown
- 2007-11-01 CA CA2668025A patent/CA2668025C/en active Active
- 2007-11-01 DK DK07816106.4T patent/DK2084868T3/en active
- 2007-11-01 CA CA3045694A patent/CA3045694C/en active Active
- 2007-11-01 EP EP07816106.4A patent/EP2084868B1/en active Active
- 2007-11-01 CA CA3103310A patent/CA3103310C/en active Active
- 2007-11-01 PL PL07816106T patent/PL2084868T3/en unknown
- 2007-11-01 CA CA3032707A patent/CA3032707C/en active Active
- 2007-11-01 ES ES07816106.4T patent/ES2685443T3/en active Active
- 2007-11-01 US US12/513,147 patent/US8542815B2/en active Active
- 2007-11-01 BR BRPI0718312A patent/BRPI0718312B1/en active IP Right Grant
- 2007-11-01 KR KR1020097011418A patent/KR20090086428A/en not_active Withdrawn
- 2007-11-01 CA CA2916220A patent/CA2916220C/en active Active
- 2007-11-01 MX MX2009004811A patent/MX2009004811A/en not_active Application Discontinuation
-
2013
- 2013-08-13 US US13/966,096 patent/US9179005B2/en active Active
- 2013-09-17 US US14/029,615 patent/US8774378B2/en not_active Expired - Fee Related
- 2013-09-17 US US14/029,671 patent/US9137385B2/en active Active
-
2014
- 2014-07-07 US US14/325,181 patent/US9998363B2/en not_active Expired - Fee Related
-
2015
- 2015-09-14 US US14/853,705 patent/US11171864B2/en active Active
- 2015-10-07 US US14/877,570 patent/US9537762B2/en active Active
-
2016
- 2016-12-30 US US15/396,344 patent/US9813330B2/en active Active
-
2017
- 2017-01-12 US US15/405,188 patent/US9826002B2/en active Active
- 2017-10-11 US US15/730,600 patent/US9935872B2/en active Active
- 2017-10-19 US US15/788,666 patent/US9948549B2/en active Active
-
2018
- 2018-03-30 US US15/942,282 patent/US10218606B2/en active Active
- 2018-11-29 HK HK18115309.4A patent/HK1256252A1/en unknown
-
2019
- 2019-02-25 US US16/285,162 patent/US20190199621A1/en not_active Abandoned
-
2021
- 2021-11-08 US US17/521,836 patent/US20220070088A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6597686B1 (en) * | 1997-04-22 | 2003-07-22 | Telcordia Technologies, Inc. | Apparatus and method for internet telephony routing |
US7046658B1 (en) * | 2000-06-23 | 2006-05-16 | At & T Corp. | Method and system for customer selected direct dialed voice-over-internet protocol (VOIP) |
WO2004008786A1 (en) * | 2002-07-16 | 2004-01-22 | Nokia Corporation | Optimized routing between communication networks |
Non-Patent Citations (2)
Title |
---|
IETF ENUM WG R STASTNY OEFEG INFORMATIONAL NUMBERING FOR VOIP AND OTHER IP COMMUNICATIONS: "Numbering for VoIP and other IP Communications; draft-stastny-enum-numbering-voip-00.txt", 20031001, 1 October 2003 (2003-10-01), pages 1 - 43, XP015035676, ISSN: 0000-0004 * |
LIND AT&T S: "ENUM Call Flows for VoIP Interworking ; draft-lind-enum-callflows-03.txt", 20020201, no. 3, 1 February 2002 (2002-02-01), pages 1 - 17, XP015004214, ISSN: 0000-0004 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10880721B2 (en) | 2008-07-28 | 2020-12-29 | Voip-Pal.Com, Inc. | Mobile gateway |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220070088A1 (en) | Determining a Time to Permit a Communications Session to Be Conducted | |
US20100172345A1 (en) | Emergency assistance calling for voice over ip communications systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN PUBLISHED |
|
AC | Divisional application: reference to earlier application |
Ref document number: 2084868 Country of ref document: EP Kind code of ref document: P |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC MT NL PL PT RO SE SI SK TR |
|
RIN1 | Information on inventor provided before grant (corrected) |
Inventor name: NICHOLSON, STEVE Inventor name: BJOERSELL, JOHAN EMIL VICTOR Inventor name: ARAFA, FUAD Inventor name: PERREAULT, CLAY Inventor name: THOMSON, ROD |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
17P | Request for examination filed |
Effective date: 20190409 |
|
RBV | Designated contracting states (corrected) |
Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC MT NL PL PT RO SE SI SK TR |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1256252 Country of ref document: HK |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
17Q | First examination report despatched |
Effective date: 20200526 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20220921 |