This invention relates to emergency assistance calling, voice over internet protocol communications and methods and apparatus for emergency assistance calling for voice over IP data communications.
An essential feature of traditional telephone systems (PSTN) is the ability of its subscribers to dial a universal emergency number (911 in North America) to access a host of emergency services such as fire, police and ambulance. Because of the hierarchical nature of telephone networks and numbering schemes, a call coming from a specific telephone number on the PSTN network is automatically routed to a nearest Emergency Response Center (ERC) based on the area code and exchange code contained in the specific telephone number. Normally, the specific telephone number will be compliant with the E.164 standard set by the International Telecommunication Union. When the call comes into the ERC, call information presended the ERC operator includes the phone number, and where available, the address associated with this phone number.
Since the late 1990s, an enhanced emergency service (E911) was mandated for PSTN and cellular carriers in North America and elsewhere. In particular, with this enhanced service the information automatically provided to the ERC includes the physical location of the person calling, even where the caller is using a cellular telephone. Moreover, a callback functionality is integrated into E911-compliant systems allowing an ERC operator to call back the person who placed the emergency call even if the original phone call was disconnected or if the calling line became busy.
In the realm of VoIP networks, implementation of 911 and E911 services often presents significant problems.
Even to provide basic 911 services, VoIP systems present a number of problems because they do not employ hierarchical numbering schemes, and the phone numbers assigned to VoIP system subscribers, while still in the E.164 format, do not actually reflect the subscribers physical location via area code and exchange codes. As a result, a VoIP provider is not able to automatically route an emergency call to an ERC nearest to the subscriber. Because VoIP subscriber phone numbers are assigned from a bulk of phone numbers that VoIP providers purchase from wireline PSTN carriers, a VoIP 911 emergency services call coming into the ERC is not associated with a subscriber address that can be accessed by the ERC operator.
In addition, because VoIP systems are not based on the Signaling System 7 (SS7) protocol, they do not natively support special short phone numbers such as 911. In particular, they do not natively support variable length phone number dialing, or dynamic translation of dialed universal phone numbers into actual destination phone numbers based on user attributes such as location or service type.
VoIP systems are also typically not able to comply with E911 service requirements, for the same reasons they are not able to comply with regular 911 services.
In accordance with one aspect of the invention, there is provided a process for handling emergency calls from a caller in a voice over IP system. The method involves receiving a routing request message including a caller identifier and a callee identifier. The method also involves setting an emergency call flag active in response to the callee identifier matching an emergency call identifier pre-associated with the caller. The method further involves producing an emergency response center identifier in response to the emergency call identifier. The method also involves determining whether the caller identifier is associated with a pre-associated direct inward dialing (DID) identifier. The method further involves producing a direct inward dialing (DID) identifier for the caller by associating a temporary DID identifier with the caller identifier when the emergency call flag is active and it is determined that the caller has no pre-associated DID identifier. The method also involves producing a routing message including the emergency response center identifier and the temporary DID identifier for receipt by a routing controller operable to cause a route to be established between the caller and the emergency response center.
Setting the emergency call flag active may involve retrieving a dialing profile associated with the caller and setting the emergency call flag active when the contents of an emergency call identifier field of the dialing profile match the callee identifier.
Determining whether the caller identifier is associated with a pre-associated DID identifier may involve searching a database for a DID record associating a DID identifier with the caller and determining that the caller identifier is associated with a pre-associated DID identifier when the record associating a DID identifier with the caller is found.
Associating a pre-assigned DID identifier with the caller identifier may involve copying the pre-associated DID identifier from the DID record to a DID identifier buffer.
Producing the routing message may involve causing the contents of the DID identifier buffer to define the DID identifier in the routing message.
Determining whether the caller identifier is associated with a pre-associated DID identifier may involve searching a database for a DID record associating a DID identifier with the caller and determining that the caller identifier is not associated with a pre-associated DID identifier when a record associating a DID identifier with the caller is not found.
Associating a temporary DID identifier with the caller identifier may involve associating with the caller identifier a DID identifier from a pool of pre-determined DID identifiers.
Associating the DID identifier from the pool may involve associating a temporary DID record with the caller, the temporary DID record having a DID identifier field populated with the DID identifier from the pool.
Associating the DID identifier from the pool may involve copying the DID identifier from the temporary DID record to a DID identifier buffer.
The method may involve canceling the temporary DID record after a pre-defined period of time.
Producing the emergency response center identifier may involve obtaining an emergency response center identifier from an emergency response center field of the dialing profile associated with the caller.
Obtaining may involve copying an emergency response center identifier from the dialing profile associated with the caller to a routing message buffer such that the emergency response center identifier is included in the routing message.
Producing the routing message may involve causing the routing message to specify a maximum call time for the emergency call, the maximum call time exceeding a duration of an average non-emergency telephone call.
In accordance with another aspect of the invention, there is provided an apparatus for handling emergency calls from a caller in a voice over IP system. The apparatus includes provisions for receiving a routing request message including a caller identifier and a callee identifier. The apparatus also includes setting provisions for setting an emergency call flag active in response to the callee identifier matching an emergency call identifier pre-associated with the caller. The apparatus further includes provisions for producing an emergency response center identifier in response to the emergency call identifier. The apparatus also includes provisions for determining whether the caller identifier is associated with a pre-associated direct inward dialing (DID) identifier. The apparatus further includes provisions for producing a direct inward dialing (DID) identifier for the caller including provisions for associating a temporary DID identifier with the caller identifier in response to the emergency call flag being active and the caller identifier not being pre-associated with direct inward dialing identifier. The provisions for producing a direct inward dialing (DID) identifier for the caller further include provisions for associating a pre-assigned DID identifier with the caller identifier when the caller identifier has no pre-associated direct inward dialing identifier. The apparatus also includes provisions for producing a routing message including the emergency response center identifier and the temporary DID identifier for receipt by a routing controller operable to cause a route to be established between the caller and the emergency response center.
The apparatus may further include provisions for accessing a database of dialing profiles associated with respective subscribers to the system, each of the dialing profiles including an emergency call identifier field and an emergency call center field and the setting provisions may comprise provisions for retrieving a dialing profile associated with the caller and for setting the emergency call flag active when the contents of the emergency call identifier field of the dialing profile match the callee identifier.
The apparatus may further include database accessing provisions for accessing a database including direct inward dialing (DID) records associated with at least some subscribers to the system, each of the direct inward dialing records comprising a system username and a direct inward dialing number, and wherein the determining provisions comprise searching provisions for searching a database for a DID record associating a DID identifier with the caller. The determining provisions may be operably configured to determine that the caller identifier is associated with a pre-associated DID identifier when a record associating a DID identifier with the caller is found.
The apparatus may further include a DID identifier buffer and the provisions for associating a pre-assigned DID identifier with the caller identifier may comprise provisions for copying the pre-associated DID identifier from the DID record to the DID identifier buffer.
The provisions for producing the routing message may include provisions for causing the contents of the DID identifier buffer to define the DID identifier in the routing message.
The apparatus may further include database accessing provisions for accessing a database including direct inward dialing records associated with at least some subscribers to the system, each of the direct inward dialing records comprising a system username and a direct inward dialing number and the determining provisions may comprise searching provisions for searching a database for a DID record associating a DID identifier with the caller and wherein the determining provisions may be operably configured to determine that the caller identifier is not associated with a pre-associated DID identifier when a record associating a DID identifier with the caller is not found.
The apparatus may further include provisions for accessing a pool of pre-determined DID identifiers and the provisions for associating a temporary DID identifier with the caller identifier may comprise provisions for associating a DID identifier from the pool of pre-determined DID identifiers with the caller identifier.
The provisions for associating the DID identifier from the pool may include provisions for associating a temporary DID record with the caller, the temporary DID record having a DID identifier field populated with the DID identifier from the pool.
The provisions for associating the DID identifier may include provisions for copying the DID identifier from the temporary DID record to a DID identifier buffer.
The apparatus may further include provisions for canceling the temporary DID record after a period of time.
The provisions for producing the emergency response center identifier may include provisions for obtaining an emergency response center identifier from an emergency response center field of the dialing profile associated with the caller.
The apparatus may include a routing message buffer and the provisions for obtaining may include provisions for copying the contents of the emergency response center field of the dialing profile associated with the caller to the routing message buffer such that the contents of the emergency response center field are included in the routing message.
The provisions for producing the routing message may include provisions for causing the routing message to include a maximum call time for the emergency call, the maximum call time exceeding a duration of an average non-emergency telephone call.
In accordance with another aspect of the invention, there is provided an apparatus for handling emergency calls from a caller in a voice over IP system. The apparatus includes an processor circuit operably configured to receive a routing request message including a caller identifier and a callee identifier. The processor circuit is also operably configured to set an emergency call flag active in response to the callee identifier matching an emergency call identifier pre-associated with the caller. The processor circuit is further operably configured to produce an emergency response center identifier in response to the emergency call identifier and to determine whether the caller identifier is associated with a pre-associated direct inward dialing (DID) identifier. The processor circuit is also operably configured to produce a direct inward dialing (DID) identifier for the caller by associating a temporary DID identifier with the caller identifier when the emergency call flag is active and it is determined that the caller identifier has no pre-associated DID identifier. The processor circuit is further operably configured to produce a routing message including the emergency response center identifier and the temporary DID identifier for receipt by a routing controller operable to cause a route to be established between the caller and the emergency response center.
The processor circuit may be operably configured to retrieve a dialing profile associated with the caller and to set the emergency call flag active when the contents of an emergency call identifier field of the dialing profile match the callee identifier.
The processor circuit may be operably configured to search a database for a DID record associating a DID identifier with the caller and to determine that the caller identifier is associated with a pre-associated DID identifier when the record associating a DID identifier with the caller is found.
The processor circuit may be operably configured to copy the pre-associated DID identifier from the DID record to a DID identifier buffer.
The processor circuit may be operably configured to cause the contents of the DID identifier buffer to define the DID identifier in the routing message.
The processor circuit may be operably configured to search a database for a DID record associating a DID identifier with the caller and to determine that the caller identifier is not associated with a pre-associated DID identifier when a record associating a DID identifier with the caller is not found.
The processor circuit may be operably configured to associate with the caller identifier a DID identifier from a pool of pre-determined DID identifiers.
The processor circuit may be operably configured to associate a temporary DID record with the caller, the temporary DID record having a DID identifier field populated with the DID identifier from the pool.
The processor circuit may be operably configured to copy the DID identifier from the temporary DID record to a DID buffer.
The processor circuit may be operably configured to cancel the temporary DID record after a period of time.
The processor circuit may be operably configured to obtain an emergency response center identifier from an emergency response center field of the dialing profile associated with the caller.
The apparatus may further a routing message buffer and the processor circuit may be operably configured to copy an emergency response center identifier from the dialing profile associated with the caller to the routing message buffer such that the emergency response center identifier is included in the routing message.
The processor circuit may be operably configured to cause the routing message to include a maximum call time for the emergency call, the maximum call time exceeding a duration of an average non-emergency telephone call.
In accordance with another aspect of the invention, there is provided a computer readable medium encoded with codes for directing a processor circuit to handle emergency calls from callers in a voice over IP system. The codes direct the processor circuit to receive a routing request message including a caller identifier and a callee identifier. The codes also direct the processor circuit to set an emergency call flag active in response to the callee identifier matching an emergency call identifier pre-associated with the caller. The codes further direct the processor circuit to produce an emergency response center identifier in response to the emergency call identifier. The codes also direct the processor circuit to determine whether the caller identifier is associated with a pre-associated direct inward dialing (DID) identifier. The codes further direct the processor circuit to produce a direct inward dialing (DID) identifier for the caller by associating a temporary DID identifier with the caller identifier when the emergency call flag is active and it is determined that the caller identifier has no pre-associated DID identifier. The codes also direct the processor circuit to produce a routing message including the emergency response center identifier and the temporary DID identifier for receipt by a routing controller operable to cause a route to be established between the caller and the emergency response center.
In drawings which illustrate embodiments of the invention,
Referring to
In the embodiment shown, the Vancouver supernode 11 provides telephone service to a geographical region comprising Western Canadian customers from Vancouver Island to Ontario and includes a Vancouver subscriber, a Calgary subscriber and an emergency response center (ERC) that is also a subscriber. The second supernode 21 may be located in London, England, for example, to service London and Glasgow subscribers, 22 and 25, for example through their own service providers 9 and 29. As will be seen below however, the emergency response center need not be a subscriber.
Other supernodes similar to 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 supernodes 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 (CC) 14, a routing controller (RC) 16, a database 18 and a media relay (MR) 17. Subscribers such as the Vancouver subscriber, the Calgary subscriber and the Emergency Response Center subscriber communicate with the Vancouver supernode 11 using their own Internet Service Providers (ISPs) 13, 19 and 31 respectively which route Internet Protocol (IP) traffic from these subscribers to the Vancouver Supernode over the Internet. To these subscribers the Vancouver supernode 11 is accessible through their ISP at a pre-determined IP address or a fully qualified domain name (FQDN). The subscriber in the city of Vancouver uses a telephone 12 that is capable of communicating with the Vancouver supernode 11 using Session Initiation Protocol (SIP) messages, and the Calgary and Emergency Response Center subscribers use similar telephones 15 and 33 respectively, to communicate with the Vancouver supernode from their locations. The London supernode 21 also has a call controller 24, a routing controller 26 and a database 28 and functions in a manner similar to the Vancouver supernode 11.
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 been translated to 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.123: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—the messages will never get there.
It will be appreciated that a number of methods are available to overcome this problem. For example, the SIP NATHelper open source software module may run on the supernode to correlate public IP/UDP address contained in the headers of the IP packets arriving from SIP devices with private IP/UDP addresses in the SIP messages contained in these packets. Therefore, the embodiments of the invention described below will function whether or not any of the elements of the system are located behind NAT devices that obscure their real IP/UDP addresses.
Referring to
In an attempt to make an emergency call, generally the call is made by dialing a short number such as 911 and the call is routed to an emergency response center (ERC) associated with the caller such as the emergency response center associated with the telephone 33. However, as will be appreciated from the description below, this system will permit emergency calls originating from subscribers associated with one supernode to be received by emergency response centers associated with a different supernode, if necessary.
Subscriber Telephone
Referring to
The processor 32 stores the callee identifier in a dialed number buffer 41. Where the callee is the London subscriber, the callee identifier may be 4401 1062 4444, for example, identifying the London subscriber or the callee identifier may be a standard telephone number, or where the callee is the Emergency Response Center, the callee identifier may be 911, for example.
The I/O interface 36 also has a handset interface 46 for receiving and producing signals from and to a handset that receives user's speech to produce audio signals and produces sound in response to received audio signals. The handset interface 46 may include a BLUETOOTH™ wireless interface, a wired interface or speakerphone, for example. The handset 45 acts as a termination point for an audio path (not shown) which will be appreciated later.
The I/O interface 36 also has a network interface 48 to an IP network, and is operable, for example, to connect the telephone to an ISP via a high speed Internet connection. The network interface 48 also acts as a part of the audio path, as will be appreciated later.
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. The username field 50 is operable to hold a username associated with the telephone 12, which in this case is 2001 1050 8667. The username is assigned upon subscription or registration into the system and, in this embodiment includes a twelve digit number having a prefix 61, a country code 63, a dealer code 70 and a unique number code 74. The prefix 61 is comprised of the first or left-most digit of the username in this embodiment. The prefix may act as a continent code in some embodiments, for example. 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 30, which for this explanation is 192.168.0.20. The SIP proxy address field 54 stores an IP address of a SIP proxy which may be provided to the telephone 12 through the network interface 48 as part of a registration procedure, for example.
The program memory 34 stores blocks of codes for directing the microprocessor 32 to carry out the functions of the telephone 12, one of which includes a firewall block 56 which provides firewall functions to the telephone, to prevent unauthorized access through the network interface 48 to the microprocessor 32 and memories 34, 38 and 40. The program memory 34 also stores codes 57 for establishing a call ID. The call ID codes 57 direct the microprocessor 32 to produce call identifiers, that may, for example have the format of a hexadecimal string and an IP address of the telephone stored in IP address field 53. Thus, an exemplary call identifier for a call might be FF10 @ 192.168.0.20.
Generally, in response to activating the handset 45 and using the dialing function 44, the microprocessor 32 produces and sends a SIP Invite message 59 as shown in
Referring to
Call Controller
Referring to
Generally, the I/O interface 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 associated with a single IP address and TCP or UDP port. For example, the messages sent and received from the RC 16 may be transmitted and received at the same single IP address and TCP or UDP port.
The program memory 104 of the call controller circuit 100 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 a RC Request message in response to a received SIP Invite message. In addition, there is a Routing Message to Media Relay message block 122 which causes the call controller circuit 100 to produce an MR Query message in response to a received routing message from the routing controller 16.
Referring to
Should the authentication process fail, the call controller circuit 100 is directed to an error handling block 134 which causes messages to be displayed at the caller telephone 12 to indicate that there was an authentication error. If the authentication process is successful, block 131 directs the call controller circuit 100 of
If at block 131 the caller identifier field 60 contents do not identify an IP address (for example, they may identify a PSTN number or Emergency Calling short number such as 911), then block 135 directs the call controller circuit 100 to associate a type code with the call to indicate the call type is a regular invite. Then, block 136 directs the call controller circuit 100 to establish a call ID by reading the call ID provided in the call ID field 65 of the SIP Invite message from the telephone 12, and at block 138 the call controller circuit is directed to produce a routing request message of the type shown in
Referring to
Routing Controller
Referring to
The I/O interface 208 includes a database output port 210 through which a request to the database 18 (
The program memory 204 includes blocks of codes for directing the RC processor circuit 200 to carry out various functions of the routing controller 16. One of these blocks includes an RC Request message handler process 250 which directs the RC processor circuit to produce a routing message in response to a received routing request message of the type shown at 150 in
RC Request Message Handler
Referring to
Referring to
An exemplary dialing profile for the Vancouver subscriber is shown generally at 276 in
Referring back to
In this embodiment, the supernode type identifier 284 includes the code “sp” identifying a supernode and the location code identifier 286 identifies the supernode as being in Vancouver (yvr). The system provider identifier 288 identifies the company supplying the service and the top level domain identifier 290 identifies the “corn” domain.
The NDD field 262 in this embodiment includes the digit “1” and in general includes a digit specified by the International Telecommunications Union—Telecommunications Standardization Sector (ITU-T) E.164 Recommendation which assigns national dialing digits to certain countries.
The IDD field 264 includes the code 011 and, in general, includes a code assigned by the ITU-T according to the country or geographical location of the subscriber.
The country code field 266 includes the digit “1” and, in general, includes a number assigned by the ITU-T to represent the country in which the subscriber is located.
The local area codes field 267 includes the numbers 604 and 778 and generally 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 each hold the number 10 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 holds a code identifying a retailer of the telephone services, and in the embodiment shown, the retailer is “Klondike”.
The address field 275 holds an address at which the subscriber telephone is normally located. The emergency short number field 277 holds the short emergency number such as “911” that the user is expected to dial in the event of an emergency. The ERC number field 279 holds a full PSTN number associated with an emergency response center that would desireably be geographically nearest to the address specified in the address field 275.
A dialing profile of the type shown at 256 in
A user wishing to subscribe to the system may contact an office maintained by a system operator. 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 username, domain, NDD, IDD, country code, local area codes and caller minimum and maximum local length fields, emergency short number field and ERC number field 258, 260, 262, 264, 266, 267, 268, 270, 277, 279 to establish a dialing profile for the user.
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 268 in
In this embodiment, the DID bank table records include a username field 291, a user domain field 272 and DID identifier field 274, for holding the username, hostname of the supernode and E.164 number respectively. Thus a DID bank table record pre-associates a DID identifier with a user (e.g. caller).
A DID bank table record may also include a creation time field and an expiration time field for use when the DID bank table record is a temporary record as will be explained below.
DID bank table records for the Vancouver, Calgary and London subscribers are shown in
In addition to creating dialing profiles and DID records when a user registers with the system, call blocking records of the type shown in
Referring back to
If the contents of the callee ID buffer 209 match the contents of the emergency call identifier field (277 in
In this embodiment, for regular and emergency call processing, beginning at location A in
IDD Testing
Referring to
NDD Testing
Referring back to
Block 382 directs the RC processor circuit 200 to examine the callee identifier to determine whether or not digits following the NDD code 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 dialing profile 276 shown in
Area Code Testing
If at block 381 the callee identifier does not begin with an NDD code, block 390 directs the RC processor circuit 200 to determine whether the callee identifier in the callee ID buffer 209 begins with digits that identify the same area code as the caller. Again, the reference for this is the caller profile 276 shown in
Callee ID Length Testing
If at block 390, the callee identifier does not have the same area code as the caller, as may be the case with non-emergency calls, block 396 directs the RC processor circuit 200 to determine whether the callee identifier in the callee ID buffer 209 has the same number of digits as the number of digits indicated in either the caller minimum local number length field 268 or the caller maximum local number length field 270 of the caller profile 276 shown in
Valid Subscriber Testing
If at block 396, the callee identifier in the callee ID buffer 209 has a length that does not match the length specified by the contents of the caller minimum local number length field 268 or the caller maximum local number length field 270 of the caller profile 276, block 402 directs the RC processor circuit 200 to determine whether or not the callee identifier identifies a valid username. To do this, the RC processor circuit 200 searches through the database 18 of dialing profiles to find a dialing profile having a username field 258 that matches the callee identifier. If no match is found, block 404 directs the RC processor circuit 200 to send an error message back to the call controller (14). If at block 402, a dialing profile having a username field 258 that matches the callee identifier is found, block 406 directs the RC processor circuit 200 to set the call type to a code indicating the call is a network call and the processor is directed to block 275 of
From
Still referring to
Exemplary DID records for the Vancouver, Calgary and London subscribers are shown in
Referring back to
Subscriber to Subscriber Calls Between Different Nodes
Referring back to
If no such DID record is found, the RC processor circuit 200 has effectively determined that the caller has no pre-associated DID identifier. In this case, block 285 then directs the RC processor circuit 200 to produce a DID identifier for the caller by associating a temporary DID identifier with the caller identifier by associating with the caller identifier a DID identifier from a pool of pre-determined DID identifiers. This is done by creating and associating with the caller a temporary DID record of the type shown in
A temporary DID record may be canceled after a pre-defined period of time. For example, the temporary DID identifier records are desirably as shown in
After a temporary DID record has been created and stored in the DID bank table in the database 18 shown in
Thus, where the caller identifier has no pre-assigned DID identifier, the RC processor produces a routing message including the emergency response center identifier and the temporary DID identifier for receipt by the routing controller to cause the routing controller to establish a route between the caller and the emergency response center.
Referring to
Desirably, the time to live field holds a number indicating a maximum call time for the call and where the call is an emergency call, desirably the maximum call time exceeds a duration of an average non-emergency telephone call. The caller ID field 364 holds a caller identifier which in this case, is the temporary or pre-associated DID number from the DID record associated with the caller.
Referring to
The callee field 358 holds the full username of the callee, and where the call is an emergency call as shown, the full username of the callee is the username of the emergency response center. The route field 360 contains the identification of the domain with which the emergency response center is associated, i.e., sp.yvr.digifonica.com. The TTL field holds the value 9999 set at block 157 in
Referring to
Referring to
Subscriber to Subscriber Calls Within the Same Node
Referring back to
If at block 559 the emergency call flag has not been set, regular non-emergency call processing ensues beginning with block 600 which directs the RC processor circuit 200 to use the callee identifier to locate and retrieve a dialing profile for the callee identified by the callee identifier stored in the callee ID buffer 209. The dialing profile is of the type shown in
Referring to
Referring back to
Referring to
Referring back to
Referring to
Referring to
Referring back to
Block 644 of
Subscriber to Non-Subscriber Calls
Not all calls will be subscriber-to-subscriber calls and this will be detected by the RC processor circuit 200 when it executes block 269 of
If no such DID record is found, the RC processor circuit 200 has effectively determined that the caller identifier is not associated with a pre-associated DID identifier. In this case, block 413 then directs the RC processor circuit 200 to associate a temporary DID identifier with the caller identifier by associating with the caller identifier a DID identifier from the pool of pre-determined DID identifiers. Again, this is done by creating and associating with the caller a temporary DID record of the type shown in
After a temporary DID record has been created or if the caller already has a DID record, block 415 directs the RC processor circuit to store the DID number (274 in
After having loaded the caller ID buffer 209 with the temporary or pre-associated DID number, or after having determined that the emergency call flag is not set, block 410 (
Each master list record includes a master list ID field 500, a dialing 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 NDD field 512, an IDD 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 dialing code field 502 holds a predetermined number pattern that the RC processor circuit 200 uses at block 410 in
Thus, for example, a master list record may have a format as shown in
Referring back to
After execution of block 410 in
Referring to
Referring back to
Block 560 of
Referring to
Referring back to
Response to Routing Message
Referring back to
Referring to
As a first step in the process for establishing audio paths, a message 1100 is sent from the call controller 14 to the media relay 17, the message including the call ID, the caller telephone IP address and UDP port as determined from the caller IP address field 67 and caller UDP port field 69 in the SIP Invite message 59 shown in broken outline.
In response, the media relay (MR) 17 sends a confirmation message 1102 back to the call controller 14, the message including a media relay IP address (192.168.2.10) and UDP port number (22123) defining a callee socket that the media relay will use to establish an audio path to the ERC telephone or a PSTN gateway to the ERC, where the Emergency Response Center is only available through the PSTN
The call controller 14 then sends a SIP Invite message 1104 of type shown in
The callee (ERC) telephone 33 of
The call controller 14 then sends a message 1108 to the media relay 17 including the IP address (192.168.3.10) and UDP port number (33123) identifying the socket at that the callee telephone 15 (or PSTN gateway) that is to be used for audio communications with the media relay. The media relay 17 then creates a caller socket identified by IP address 192.168.2.10 and UDP port number 22125 and creates an internal bridge for relaying audio traffic between the caller socket (192.168.2.10: 22125) and the callee socket (192.168.2.10: 22123).
The media relay 17 then sends a message 1110 including the call ID and the IP address (192.168.2.10) and UDP port number (22125) identifying the caller socket that the media relay assigned to the caller telephone 12, back to the call controller 14 to indicate that the caller and callee sockets have been established and that the call can proceed.
The call controller 14 then sends a SIP OK message 1112 to the caller telephone 12 to indicate that the call may now proceed. The SIP OK message includes the caller and callee usernames, the call ID and the IP address (192.168.2.10) and UDP port number (22125) identifying the caller socket at the media relay 17.
Alternatively, referring back to
In the case of an emergency call, the routing message is unlikely to identify a domain other than that of the caller.
In the case of a regular, non-emergency call, if the routing message is of the type shown in
Referring to
Referring back to
When audio paths are established, a call timer (not shown) maintained by the call controller logs the start date and time of the call and logs the call ID and an identification of the route (i.e., audio path IP address) for later use in billing, for example.
Terminating the Call
In the event that either the caller or the callee (or callee via the PSTN) terminates a call, the telephone of the terminating party (or gateway associated with the terminating party) sends a SIP Bye message to the call controller 14. An exemplary SIP Bye message is shown at 900 in
Thus, when terminating a regular non-emergency call, such as initiated by the Vancouver subscriber to the Calgary subscriber for example, referring to
The SIP Bye message shown in
Referring to
Referring to
Referring back to
The routing controller 16 receives the Call Stop message and an RC Call Stop message process is invoked at the RC to deal with charges and billing for the call.
Block 922 directs the call controller circuit 100 to send a Bye message back to the party that did not terminate the call.
Block 924 then directs the call controller circuit 100 to send a “Bye” message of the type shown 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.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/CA2008/000545 | 3/20/2008 | WO | 00 | 3/5/2010 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2008/116296 | 10/2/2008 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
4916491 | Katoh | Apr 1990 | A |
5146491 | Silver et al. | Sep 1992 | A |
5247571 | Kay et al. | Sep 1993 | A |
5303297 | Hillis | Apr 1994 | A |
5359642 | Castro | Oct 1994 | A |
5425085 | Weinberger et al. | Jun 1995 | A |
5440621 | Castro | Aug 1995 | A |
5454030 | de Oliveira et al. | Sep 1995 | A |
5469497 | Pierce et al. | Nov 1995 | A |
5506893 | Buscher et al. | Apr 1996 | A |
5519769 | Weinberger et al. | May 1996 | A |
5559871 | Smith | Sep 1996 | A |
5590133 | Billstrom et al. | Dec 1996 | A |
5608786 | Gordon | Mar 1997 | A |
5621787 | McKoy et al. | Apr 1997 | A |
5661790 | Hsu | Aug 1997 | A |
5712907 | Wegner et al. | Jan 1998 | A |
5724355 | Bruno et al. | Mar 1998 | A |
5726984 | Kubler et al. | Mar 1998 | A |
5737414 | Walker et al. | Apr 1998 | A |
5751961 | Smyk | May 1998 | A |
5793762 | Penners et al. | Aug 1998 | A |
5799072 | Vulcan et al. | Aug 1998 | A |
5802502 | Gell et al. | Sep 1998 | A |
5825863 | Walker | Oct 1998 | A |
5828740 | Khuc et al. | Oct 1998 | A |
5838682 | Dekelbaum et al. | Nov 1998 | A |
5845267 | Ronen | Dec 1998 | A |
5850433 | Rondeau | Dec 1998 | A |
5864610 | Ronen | Jan 1999 | A |
5867495 | Elliott et al. | Feb 1999 | A |
5883891 | Williams et al. | Mar 1999 | A |
5889774 | Mirashrafi et al. | Mar 1999 | A |
5905736 | Ronen et al. | May 1999 | A |
5907547 | Foladare et al. | May 1999 | A |
5910946 | Csapo | Jun 1999 | A |
5915005 | He | Jun 1999 | A |
5923659 | Curry et al. | Jul 1999 | A |
5930343 | Vasquez | Jul 1999 | A |
5937045 | Yaoya et al. | Aug 1999 | A |
5940598 | Strauss et al. | Aug 1999 | A |
5953504 | Sokal et al. | Sep 1999 | A |
5956391 | Melen et al. | Sep 1999 | A |
5970477 | Roden | Oct 1999 | A |
5974043 | Solomon | Oct 1999 | A |
5991291 | Asai et al. | Nov 1999 | A |
6005926 | Mashinsky | Dec 1999 | A |
6014379 | White et al. | Jan 2000 | A |
6021126 | White et al. | Feb 2000 | A |
6052445 | Bashoura et al. | Apr 2000 | A |
6058300 | Hanson | May 2000 | A |
6069890 | White et al. | May 2000 | A |
6073013 | Agre et al. | Jun 2000 | A |
6104704 | Buhler et al. | Aug 2000 | A |
6104711 | Voit | Aug 2000 | A |
6115737 | Ely et al. | Sep 2000 | A |
6128304 | Gardell et al. | Oct 2000 | A |
6137869 | Voit et al. | Oct 2000 | A |
6141404 | Westerlage et al. | Oct 2000 | A |
6151385 | Reich et al. | Nov 2000 | A |
6188752 | Lesley | Feb 2001 | B1 |
6282574 | Voit | Aug 2001 | B1 |
6298062 | Gardell et al. | Oct 2001 | B1 |
6351464 | Galvin et al. | Feb 2002 | B1 |
6359880 | Curry et al. | Mar 2002 | B1 |
6430275 | Voit et al. | Aug 2002 | B1 |
6507644 | Henderson et al. | Jan 2003 | B1 |
6597686 | Smyk | Jul 2003 | B1 |
6674745 | Schuster et al. | Jan 2004 | B1 |
6724860 | Stumer et al. | Apr 2004 | B2 |
6744858 | Ryan et al. | Jun 2004 | B1 |
6766159 | Lindholm | Jul 2004 | B2 |
6798767 | Alexander et al. | Sep 2004 | B1 |
6819929 | Antonucci et al. | Nov 2004 | B2 |
6954453 | Schindler et al. | Oct 2005 | B1 |
6963557 | Knox | Nov 2005 | B2 |
7046658 | Kundaje | May 2006 | B1 |
7055174 | Cope et al. | May 2006 | B1 |
7068772 | Widger et al. | Jun 2006 | B1 |
7079526 | Wipliez et al. | Jul 2006 | B1 |
7120682 | Salama | Oct 2006 | B1 |
7212522 | Shankar et al. | May 2007 | B1 |
7454510 | Kleyman et al. | Nov 2008 | B2 |
7950046 | Kropivny | May 2011 | B2 |
8116307 | Thesayi et al. | Feb 2012 | B1 |
20020051518 | Bondy et al. | May 2002 | A1 |
20020116464 | Mak | Aug 2002 | A1 |
20020122391 | Shalit | Sep 2002 | A1 |
20030200311 | Baum | Oct 2003 | A1 |
20030219103 | Rao et al. | Nov 2003 | A1 |
20040022237 | Elliott et al. | Feb 2004 | A1 |
20040157629 | Kallio et al. | Aug 2004 | A1 |
20040165709 | Pence et al. | Aug 2004 | A1 |
20040181599 | Kreusch et al. | Sep 2004 | A1 |
20040202295 | Shen et al. | Oct 2004 | A1 |
20040240439 | Castleberry et al. | Dec 2004 | A1 |
20040255126 | Reith | Dec 2004 | A1 |
20050025043 | Mussman et al. | Feb 2005 | A1 |
20050083911 | Grabelsky et al. | Apr 2005 | A1 |
20050094651 | Lutz et al. | May 2005 | A1 |
20050169248 | Truesdale et al. | Aug 2005 | A1 |
20050174937 | Scoggins et al. | Aug 2005 | A1 |
20050177843 | Williams | Aug 2005 | A1 |
20060072547 | Florkey et al. | Apr 2006 | A1 |
20060072550 | Davis et al. | Apr 2006 | A1 |
20060093135 | Fiatal et al. | May 2006 | A1 |
20060111116 | Palmer et al. | May 2006 | A1 |
20060153342 | Sasaki | Jul 2006 | A1 |
20060160565 | Singh et al. | Jul 2006 | A1 |
20060177035 | Cope et al. | Aug 2006 | A1 |
20060209768 | Yan et al. | Sep 2006 | A1 |
20060258328 | Godoy | Nov 2006 | A1 |
20060264200 | Laiho et al. | Nov 2006 | A1 |
20070036143 | Alt et al. | Feb 2007 | A1 |
20070112964 | Guedalia et al. | May 2007 | A1 |
20070253418 | Shiri et al. | Nov 2007 | A1 |
20080037715 | Prozeniuk et al. | Feb 2008 | A1 |
20080056235 | Albina et al. | Mar 2008 | A1 |
20080063153 | Krivorot et al. | Mar 2008 | A1 |
20090028146 | Kleyman et al. | Jan 2009 | A1 |
20090292539 | Jaroker | Nov 2009 | A1 |
20090325558 | Pridmore et al. | Dec 2009 | A1 |
20100086119 | De Luca et al. | Apr 2010 | A1 |
Number | Date | Country |
---|---|---|
2249668 | Apr 1999 | CA |
1 389 862 | Feb 2004 | EP |
1 389 862 | Nov 2004 | EP |
WO 0189145 | Nov 2001 | WO |
WO 2007044454 | Apr 2007 | WO |
WO 2008052340 | May 2008 | WO |
WO 2008064481 | Jun 2008 | WO |
WO 2008116296 | Oct 2008 | WO |
Entry |
---|
F. Baker et al. “RFC 3924—Cisco Architecture for Lawful Intercept in IP Networks.” Oct. 2004. |
Cisco. “Lawful Intercept Requirements Summary.” http://www.faqs.org/rfcs/rfc3924.html. Nov. 8, 2006. |
Sippy SIP B2BUA. “About Sippy RTPproxy.” http://www.rtpproxy.org. Jul. 15, 2009. |
ETSI Technical Specification. “Lawful Interception (LI); Handover Interface and Service-Specific Details (SSD) for IP delivery; Part 5: Service-specific details for IP Multimedia Services.” Apr. 2008, 25 pgs, v.2.3.1, France. |
M. Handley et al. “RFC 2543—SIP: Session Initiation Protocol.” Mar. 1999. |
The International Search Report and Written Opinion of the International Searching Authority completed Jun. 6, 2008 for corresponding PCT/CA2008/000545. |
The International Search Report and Written Opinion of the International Searching Authority completed Feb. 6, 2008 for related PCT/CA2007/001956. |
The International Preliminary Report on Patentability mailed May 14, 2009 for related PCT/CA2007/001956. |
The International Search Report and Written Opinion of the International Searching Authority completed Mar. 3, 2008 for related PCT/CA2007/002150. |
The International Preliminary Report on Patentability mailed Feb. 13, 2009 for related PCT/CA2007/002150. |
The International Preliminary Report on Patentability and Written Opinion of the International Searching Authority mailed Feb. 10, 2011 for related PCT Application No. PCT/CA2009/001062., Feb. 10, 2011. |
The International Preliminary Report on Patentability mailed Feb. 13, 2009 for corresponding PCT/CA2007/002150. |
The International Preliminary Report on Patentability mailed May 14, 2009 for corresponding PCT/CA2007/001956. |
The International Search Report and Written Opinion mailed on Mar. 12, 2010 for corresponding PCT Application No. PCT/CA2009/001062. |
The International Search Report and Written Opinion of the International Searching Authority completed Feb. 6, 2008 for corresponding PCT/CA2007/001956. |
The International Search Report and Written Opinion of the International Searching Authority completed Jun. 6, 2008 for related PCT/CA2008/000545. |
The International Search Report completed on Mar. 3, 2008 for corresponding PCT/CA2007/002150. |
The Written Opinion and International Search Report completed on Jun. 17, 2010 for related PCT Application No. PCT/CA2009/001317. |
The International Preliminary Report on Patentability issued on Mar. 20, 2012 for PCT/CA2009/001317. |
Townsley, et al.; “RFC 2661—Layer Two Tunneling Protocol ‘L2TP’”, Aug. 1999. |
IP2Location, http://www.ip2location.com/; printed Jun. 20, 2012. |
DOTS IP Address Validation, “Overview”, http://www.serviceobjects.com/products/dots—ipgeo.asp; printed Jun. 21, 2012. |
List of North American Numbering Plan area codes, http://en.wikipedia.org/wiki/List—of—NANP—area—codes; printed Jun. 20, 2012. |
DOTS Phone Exchange, “Overview”, http://www.serviceobjects.com/demos/PhoneExchangeDemo.asp (URL no longer valid, current URL is http://www.serviceobjects.com/products/phone/phone-exchange); printed Jun. 21, 2012. |
Rosenberg, et al.; “RFC 3261—SIP: Session Initiation Protocol”, Jun. 2002. |
Supplementary European Search Report for European Application No. 07816106 dated Jun. 18, 2012. |
Lind AT&T S: “ENUM Call Flows for VoIP Interworking; draft-lind-enum-callflows-03.txt”, No. 3, Feb. 1, 2002, pp. 1-17. |
IETF ENUM WG R STASTNY OEFEG Informational Numbering for VoIP and Other IP Communications: “Numbering for ViOP and other IP Communications, draft-stastny-enum-numbering-voip-00.txt”, Oct. 1, 2003, pp. 1-43. |
EPO, Supplementary European Search Report, dated Nov. 2, 2012, Application No. 07855436.7, corresponds to U.S. Appl. No. 12/517,026. |
Number | Date | Country | |
---|---|---|---|
20100172345 A1 | Jul 2010 | US |
Number | Date | Country | |
---|---|---|---|
60907224 | Mar 2007 | US |