Producing Routing Messages for Voice Over IP Communications
A process and apparatus to facilitate communication between callers and callees in a system comprising a plurality of nodes with which callers and callees are associated is disclosed. In response to initiation of a call by a calling subscriber, a caller identifier and a callee identifier are received. Call classification criteria associated with the caller identifier are used to classify the call as a public network call or a private network call. A routing message identifying an address, on the private network, associated with the callee is produced when the call is classified as a private network call and a routing message identifying a gateway to the public network is produced when the call is classified as a public network call.
This invention relates to voice over IP communications and methods and apparatus for routing and billing.
Description of Related ArtInternet 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.
SUMMARY OF THE INVENTIONIn 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 dialing 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 dialing 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 dialing profile.
Comparing may involve determining whether the callee identifier includes a portion that matches an NDD associated with the caller dialing profile.
Comparing may involve determining whether the callee identifier includes a portion that matches an area code associated with the caller dialing profile.
Comparing may involve determining whether the callee identifier has a length within a range specified in the caller dialing 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 dialing digit from the callee identifier, when the callee identifier begins with a digit matching an international dialing digit specified by the caller dialing profile associated with the caller.
Formatting may involve removing a national dialing digit from the callee identifier and prepending a caller country code to the callee identifier when the callee identifier begins with a national dialing 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 dialing 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 dialing number format specified by the caller dialing profile and only one area code is specified as being associated with the caller in the caller dialing 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 dialing 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 dialing codes to find a route record having a dialing 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 dialing 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 dialing 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 dialing profile initiates a call and causing the concurrent call count value to be decremented when a call with the user associated with the dialing 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 cal 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 dialing 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 dialing profile with aspects of the callee identifier.
The calling attributes may include an international dialing 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 dialing profile.
The calling attributes may include an national dialing 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 dialing 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 dialing 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 dialing 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 dialing digit from the callee identifier, when the callee identifier begins with a digit matching an international dialing digit specified by the caller dialing profile associated with the caller.
The formatting provisions may be operably configured to remove a national dialing digit from the callee identifier and prepend a caller country code to the callee identifier when the callee identifier begins with a national dialing 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 dialing 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 dialing number format specified by the caller dialing profile and only one area code is specified as being associated with the caller in the caller dialing 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 dialing 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 dialing codes to find a route record having a dialing 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 dialing 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 dialing 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 dialing profile initiates a call and for causing said concurrent call count value to be decremented when a call with said user associated with said dialing 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 dialing 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 dialing 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 dialing codes, such that dialing codes can be used to locate suppliers capable of providing a communications link associated with a given dialing 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 predefined 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,
Referring to
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 a voicemail server 19 and a media relay 9. Each of these may be implemented as separate modules on a common computer system or by separate computers, for example. 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
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
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.
Subscriber TelephoneIn greater detail, referring to
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 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 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 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. Thus, an exemplary call identifier might be FF10@192.168.0.20.
Generally, in response to picking up the handset interface 46 and activating a dialing function 44, the microprocessor 32 produces and sends a SIP invite message as shown in
Referring to
Referring to
Generally, the I/O port 106 includes an input 108 for receiving messages such as the SIP invite message shown in
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 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. For example, 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. In addition, there is a routing message to gateway message block 122 which causes the call controller circuit 100 to produce a gateway query message in response to a received routing message from the RC 16.
Referring to
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 the telephone 12 to indicate there was an authentication problem. If the authentication procedure is passed, 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. Then, 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.
Referring to
Referring to
The I/O port 208 includes a database request port 210 through which a request to the database (18 shown in
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
Referring to
Referring to
An exemplary caller profile for the Vancouver subscriber is shown generally at 276 in
Referring back to
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 dialing digits to countries.
The international dialing 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 dialing profile of the type shown in
Referring to
In addition to creating dialing profiles when a user registers with the system, a direct-in-dial (DID) record of the type shown at 278 in
An exemplary DID table record entry for the Calgary callee is shown generally at 300 in
In addition to creating dialing profiles as shown in
Referring back to
Assuming block 256 allows the call to proceed, 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
Referring to
Still referring to
Referring to
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
Referring to
Referring to
Referring to
Referring back to
Block 382 directs the processor (202 of
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 dialing profile shown in
Referring back to
Referring back to
From
Not all calls will be subscriber to subscriber calls and this will be detected by the processor 202 of
Referring to
The master list ID field 500 holds a unique code such as 1019, for example, identifying the record. The dialing code field 502 holds a predetermined number pattern that the processor 202 of
Thus, for example, a master list record may have a format as shown in
Referring back to
After executing block 410 in
Referring to
Referring back to
Referring back to
Referring to
Referring back to
Consequently, referring to
Referring back to
Referring to
Referring to
Referring to
Referring to
Referring back to
Referring to
Referring back to
Referring back to
Referring to
Where a routing message of the type shown in
Alternatively, if the routing message is of the type shown in
If the routing message is of the type shown in
Referring back to
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.
Time to LiveReferring to
Referring to
Referring to
Referring back to
Referring to
Referring back to
Referring to
An exemplary subscriber account record for the Vancouver caller is shown generally at 744 in
Referring back to
Assuming the procedure for calculating the cost per second returns a number representing the call cost per second, block 752 directs the processor 202 in
If at block 752 the call cost per second is not equal to zero, block 756 directs the processor 202 in
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
Referring to
Referring back to
Thus, referring to
Referring back to
Referring to
The process begins with a first set of blocks 782, 802 and 820 which direct the processor 202 in
Referring to
An exemplary system operator special rate table for a reseller known as “Klondike” is shown at 798 in
Referring back to
Referring to
Referring back to
Referring back to
If at block 824 the conditions of that block are not met, the processor 202 of
To do this block 828 directs the processor 202 of
Referring back to
Referring to
Referring to
Referring back to
It will be appreciated that the located record could be a bundle override record of the type shown in
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 in
Thus, for example, referring to
The SIP bye message shown in
Referring to
Referring to
Referring back to
The RC 16 of
Block 964 directs the processor 202 of
If at Block 964 the processor 202 of
After completing Block 976 or after completing Block 970 in
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 the reseller balance field 986 holds an accumulated balance of charges.
Referring to
Still referring to
Ultimately, the final reseller balance 986 in
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.
Claims
1. A packet switched communication system for establishing communications between a first participant device of the packet switched communication system that is associated with a first participant and a second participant device associated with a second participant, the system comprising:
- a plurality of network elements operably configured to provide communication services from the first participant device to communication devices in the packet switched communication system;
- a plurality of gateways operably configured to provide communication services from the first participant device to communication devices in a public switched telephone network (PSTN) communication network;
- a communication controller operably configured to setup communications between the first participant device and a destination communication device by selectively using at least one of the plurality of network elements and the plurality of gateways; and
- a routing controller comprising at least one processor in communication with a memory storing instructions for directing the at least one processor to: access at least one memory that stores a first participant profile identifying at least one first participant attribute; receive a second participant identifier in response to the first participant using the first participant device to initiate a communication to the second participant device, the second participant identifier being associated with the second participant device; process the second participant identifier and the at least one first participant attribute to produce a new second participant identifier based on the second participant identifier and the at least one first participant attribute, wherein the new second participant identifier comprises a username with which the second participant device is associated in the packet switched communication system if the second participant device is in the packet switched communication system, and wherein the new second participant identifier comprises a PSTN number if the second participant device is not in the packet switched communication system; use the new second participant identifier to determine a device capable of carrying the communication to the second participant device, wherein the device is determined to be a destination network element associated with the second participant device that is selected from among the plurality of network elements if the new second participant identifier comprises the username, and wherein the device is determined to be at least one destination gateway associated with the second participant device that is selected from among the plurality of gateways if the new second participant identifier comprises the PSTN number; and produce a message for receipt by the communication controller, the message identifying the new second participant identifier and identifying an address of the destination network element or gateway associated with the second participant device and capable of carrying the communication to the second participant device;
- wherein the communication controller receives the message and attempts to establish the communication to the second participant device based on the new second participant identifier and the address of the device identified in the message.
2. A packet switched communication system for establishing communications between a first participant device associated with a first participant and a second participant device associated with a second participant, the system comprising:
- a plurality of network elements that provide communication services to communication devices associated with a geographic area associated with the second participant device;
- a communication controller operable to communicate with one or more of the plurality of network elements; and
- a routing controller comprising at least one processor in communication with a memory storing instructions for directing the at least one processor to: access at least one memory that stores a first participant profile identifying at least one first participant attribute; receive a second participant identifier in response to the first participant using the first participant device to initiate a communication to the second participant device, the second participant identifier being associated with the second participant device; process the second participant identifier and the at least one first participant attribute to produce a new second participant identifier based on at least one match between the second participant identifier and the at least one first participant attribute, the new second participant identifier comprising a username with which the second participant device is associated in the communication system; use the new second participant identifier to identify a destination network element associated with the second participant device from among the plurality of network elements, wherein the plurality of network elements provide load sharing of the communication services to the communication devices associated with the geographic area associated with the second participant device; and produce a network routing message for receipt by the communication controller, the network routing message comprising the username and identifying a network address of the destination network element associated with the second participant device in the packet switched communication system;
- wherein the communication controller receives the network routing message and attempts to establish the communication to the second participant device based on the network address of the destination network element associated with the second participant device.
3. The system of claim 2 further comprising one or more gateways interconnecting the packet switched communication system with a PSTN communication network;
- wherein the at least one memory further stores instructions for directing the at least one processor to: receive a third participant identifier in response to the first participant using the first participant device to initiate a further communication to a third participant device, the third participant identifier being associated with the third participant device; process the third participant identifier and the at least one first participant attribute identified from the first participant profile based on at least one match between the third participant identifier and the at least one first participant attribute, to produce a new third participant identifier comprising a public switched telephone network (PSTN) number; identify a destination gateway associated with the third participant device from among the one or more gateways interconnecting the packet switched communication system with the PSTN communication network, based on the new third participant identifier; produce a gateway routing message for receipt by the communication controller, the gateway routing message comprising the PSTN number and identifying a destination gateway address associated with the destination gateway; and
- wherein the communication controller receives the gateway routing message and attempts to establish the further communication, based on the destination gateway address, to the third participant device using the PSTN communication network.
4. The system of claim 3:
- wherein said one or more gateways comprise a plurality of gateways that provide potential alternative routing options from the first participant device on the packet switched communication system, to the third participant device on the PSTN communication network.
5. The system of claim 4 wherein the at least one memory further stores instructions for directing the at least one processor to:
- use the new third participant identifier to determine a route identifier associated with gateways capable of routing communications to the third participant device, and to select a second plurality of gateways from among the plurality of gateways based on the route identifier, each of the second plurality of gateways being associated with the route identifier and capable of routing the further communication to the third participant device.
6. The system of claim 2, wherein the at least one memory further stores instructions for directing the at least one processor to:
- receive a third participant identifier in response to the first participant using the first participant device to initiate a further communication to a third participant device, the third participant identifier being associated with the third participant device;
- process the third participant identifier and the at least one first participant attribute, to produce a new third participant identifier based on at least one match between the third participant identifier and the at least one first participant attribute, the new third participant identifier comprising a second username of the communication system associated with the third participant device;
- search at least one database of the communication system for blocking information associated with the second username, and if the communication blocking information is found, prevent the further communication to the third participant device from being established.
7. The system of claim 2, wherein the at least one memory further stores instructions for directing the at least one processor to:
- receive a third participant identifier in response to the first participant using the first participant device to initiate a further communication to a third participant device, the third participant identifier being associated with the third participant device;
- process the third participant identifier and the at least one first participant attribute, to produce a new third participant identifier based on at least one match between the third participant identifier and the at least one first participant attribute, the new third participant identifier comprising a second username of the communication system;
- determine whether forwarding information is associated with the second username in at least one database of the packet switched communication system, the forwarding information identifying at least one destination device to which the further communication can be forwarded; and
- attempt to forward the further communication to the at least one destination device if the forwarding information is associated with the second username in the at least one database.
8. The system of claim 2, wherein the communication controller is operably configured to:
- determine if the communication controller's attempt to establish the communication to the second participant device failed, and if the attempt to establish the communication to the second participant device failed, cause the communication to be stored on a server in association with the username to facilitate the second participant device retrieving the communication from the server.
9. The system of claim 3, wherein the at least one memory further stores instructions for directing the at least one processor to:
- identify a plurality of destination gateways from among the one or more gateways interconnecting the packet switched communication system with the PSTN communication network, wherein each of the plurality of destination gateways is capable of communicating with the third participant device; and
- produce at least one gateway routing message for receipt by the communication controller, the at least one gateway routing message comprising the new third participant identifier and identifying a plurality of destination gateway addresses respectively associated with the plurality of destination gateways;
- wherein the communication controller attempts to establish the further communication to the third participant device, based on the at least one gateway routing message, using at least one potential communication path associated with the plurality of destination gateways.
10. The system of claim 9, wherein the communication controller is configured to cause a query to be sent to the plurality of destination gateways to determine whether at least one gateway from the plurality of destination gateways is available to carry the further communication to the third participant device, and if so, to establish the communication to the third participant device via the at least one gateway available to carry the further communication.
11. The system of claim 10, wherein the communication controller is configured to query the plurality of destination gateways in a predetermined order of preference, and wherein the further communication comprising at least one of an audio path and video path is established through a gateway that is first to indicate its availability to carry the further communication.
12. The system of claim 2 wherein the at least one memory further stores instructions for directing the at least one processor to:
- access a database to locate communication forwarding information associated with the second participant, wherein the communication forwarding information comprises a plurality of communication destination identifiers; and
- produce a routing message, for receipt by the communication controller, to cause the communication controller to attempt to forward the communication to a plurality of communication destinations corresponding to the plurality of communication destination identifiers.
13. The system of claim 2 wherein the network routing message identifies a plurality of network addresses of network elements in the packet switched communication system.
14. The system of claim 13 wherein the communication controller attempts to establish the communication to each of the plurality of network addresses in a predetermined order.
15. The system of claim 1 wherein the network routing message identifies a network address of a server operably configured to store one or more communications directed to the second participant device for selective retrieval thereof by the second participant device.
16. The system of claim 2 wherein the at least one memory further stores instructions for directing the at least one processor to:
- process a plurality of communications from the first participant device to a plurality of communication destinations to determine whether each communication is capable of being communicated to the respective communication destinations via the packet switched communication network or via an external communication network; and
- produce a respective plurality of routing messages, each respective routing message identifying either an Internet Protocol (IP) address associated with a network element of the packet switched communication network or an IP address associated with at least one gateway to the external communication network, for routing the respective communication;
- wherein each of the plurality of routing messages cause the communication controller to attempt to establish the respective communication to the respective communication destination.
17. The system of claim 2 wherein the communication controller sends a message to an IP address of the second participant device based on the username in the network routing message.
18. The system of claim 2, wherein:
- (a) the system further comprises a plurality of communication nodes in communication with each other over a private network, each node comprising at least one of the plurality of network elements and being configured to provide communication services to a plurality of communication devices of the packet switched communication system; and
- (b) the communication controller is operably configured to establish the communication based on the network routing message by communicating with first and second communication nodes from the plurality of communication nodes, the first and second nodes being associated with the first and second participant devices, respectively.
19. The system of claim 2, wherein:
- (a) the system further comprises a plurality of communication nodes in communication with each other over a private network, each node comprising at least one of the plurality of network elements and being configured to provide communication services to a plurality of communication devices of the packet switched communication system, the first and second nodes being associated with the first and second participant devices, respectively; and
- (b) the routing controller is operably configured by the instructions stored in the at least one memory to determine whether the first and second nodes are the same or whether they are different and to produce the network routing message to include an identification of the node with which the second participant device is associated to facilitate the communication controller establishing the communication to the second participant device.
20. The system of claim 2 wherein the communication is established by the packet switched communication system as a voice-over-IP (VoIP) communication session.
21. A method of establishing communications in an packet switched communication system between a first participant device associated with a first participant and a second participant device associated with a second participant, the method comprising:
- accessing at least one memory that stores a first participant profile identifying at least one first participant attribute, by at least one processor of a routing controller in communication with a communication controller operable to communicate with one or more of a plurality of network elements that provide communication services to a plurality of communication devices associated with a geographic area associated with the second participant device;
- receiving a second participant identifier, by the at least one processor, in response to the first participant using the first participant device to initiate a communication to the second participant device, the second participant identifier being associated with the second participant device;
- producing a new second participant identifier, by the at least one processor, the new second participant identifier comprising a username with which the second participant device is associated in the packet switched communication system, based on at least one match between the second participant identifier and the at least one first participant attribute;
- using the new second participant identifier, by the at least one processor, to identify a destination network element associated with the second participant device from among the plurality of network elements, wherein the plurality of network elements provide load sharing of the communication services to the communication devices associated with the geographic area; and
- producing a network routing message for receipt by the communication controller, the network routing message identifying the username and a network address of the destination network element associated with the second participant device in the packet switched communication system;
- receiving the network routing message, by the communication controller, causing the communication controller to attempt to establish the communication to the second participant device based on the network address associated with the second participant device.
22. The method of claim 21 further comprising:
- receiving a third participant identifier, by the at least one processor, in response to the first participant using the first participant device to initiate a further communication to a third participant device, the third participant identifier being associated with the third participant device;
- producing a new third participant identifier comprising a public switched telephone network (PSTN) number, by the at least one processor, based on at least one match between the third participant identifier and the at least one first participant attribute;
- identifying a destination gateway, by the at least one processor, associated with the third participant device from among one or more gateways interconnecting the packet switched communication system with a PSTN communication network, based on the new third participant identifier;
- producing a gateway routing message for receipt by the communication controller, by the at least one processor, the gateway routing message identifying the PSTN number and a destination gateway address associated with the destination gateway; and
- receiving the gateway routing message, by the communication controller, causing the communication controller to attempt to establish the further communication to the third participant device using the PSTN communication network, based on the PSTN number and destination gateway address in the gateway routing message.
23. The method of claim 22:
- wherein said one or more gateways comprise a plurality of gateways that provide alternative routing options from the first participant device on the packet switched communication system, to the third participant device on the PSTN communication network.
24. The method of claim 23 further comprising:
- using the new third participant identifier, by the at least one processor, to determine a route identifier associated with gateways capable of routing communications to the third participant device, and selecting a second plurality of gateways from among the plurality of gateways based on the route identifier, wherein each of the second plurality of gateways is capable of routing the further communication to the third participant device.
25. The method of claim 21 further comprising:
- receiving a third participant identifier, by the at least one processor, in response to the first participant using the first participant device to initiate a further communication to a third participant device, the third participant identifier being associated with the third participant device;
- producing a new third participant identifier based on the third participant identifier and the at least one first participant attribute, by the at least one processor, wherein the new third participant identifier comprises a second username of the packet switched communication system associated with the third participant device;
- searching at least one database of the packet switched communication system, by the at least one processor, for blocking information associated with the second username, and if the communication blocking information is found, preventing the further communication to the third participant device from being established.
26. The method of claim 21 further comprising:
- receiving a third participant identifier, by the at least one processor, in response to the first participant using the first participant device to initiate a further communication to a third participant device, the third participant identifier being associated with the third participant device;
- producing a new third participant identifier based on at least one match between the third participant identifier and the at least one first participant attribute, by the at least one processor, the new third participant identifier comprising a second username of the communication system;
- determining whether forwarding information is associated with the second username in at least one database of the packet switched communication system, the forwarding information identifying at least one destination device to which the communication can be forwarded; and
- attempting to forward the further communication to the at least one destination device if forwarding information is associated with the second username in the at least one database.
27. The method of claim 21 further comprising:
- determining whether or not the communication to the second participant device was not established by the communication controller, and if not, storing the communication on a server in association with the username to facilitate the second participant device accessing the stored communication at a later time.
28. The method of claim 21 further comprising:
- sending, to the first participant device, an identification of an IP address associated with a media relay with which the first participant device should communicate; and
- causing a communications link to be established from the first participant device, through the media relay, to the second participant device.
29. The method of claim 21 further comprising:
- (a) identifying a plurality of possible paths for routing at least one communication from the first participant device to a destination device;
- (b) processing routing costs associated with each of the plurality of possible paths for routing the at least one communication; and
- (c) producing at least one routing message containing a time to live for a communication session which is based on the step of processing the routing costs.
30. A non-transitory computer readable medium storing computer readable instructions for directing at least one processor to execute the method of claim 21.
Type: Application
Filed: Feb 25, 2019
Publication Date: Jun 27, 2019
Inventors: Clay Perreault (Panama City), Steve Nicholson (Hamilton), Rod Thomson (North Vancouver), Johan Emil Viktor Björsell (North Vancouver), Fuad Arafa (Vancouver)
Application Number: 16/285,162