U.S. patent application number 17/135796 was filed with the patent office on 2021-10-21 for mobile gateway.
This patent application is currently assigned to VoIP-Pal.com, Inc.. The applicant listed for this patent is VoIP-Pal.com, Inc.. Invention is credited to Johan Emil Viktor Bjorsell, Pentti Kalevi Huttunen, Emil Malak, Maksym Sobolyev.
Application Number | 20210329442 17/135796 |
Document ID | / |
Family ID | 1000005685220 |
Filed Date | 2021-10-21 |
United States Patent
Application |
20210329442 |
Kind Code |
A1 |
Bjorsell; Johan Emil Viktor ;
et al. |
October 21, 2021 |
Mobile Gateway
Abstract
A method of initiating a call to a callee using a mobile
telephone involves: receiving, from a user of the mobile telephone,
a callee identifier associated with the callee; transmitting an
access code request message to an access server, the access code
request message including the callee identifier; receiving an
access code reply message from the access server in response to the
access code request message, the access code reply message
including an access code different from the callee identifier and
associated with the callee identifier; and initiating a call with
the mobile telephone using the access code to identify the
callee.
Inventors: |
Bjorsell; Johan Emil Viktor;
(Vancouver, CA) ; Sobolyev; Maksym; (New
Westminster, CA) ; Huttunen; Pentti Kalevi;
(Vancouver, CA) ; Malak; Emil; (Vancouver,
CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
VoIP-Pal.com, Inc. |
Vancouver |
|
CA |
|
|
Assignee: |
VoIP-Pal.com, Inc.
|
Family ID: |
1000005685220 |
Appl. No.: |
17/135796 |
Filed: |
December 28, 2020 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14035806 |
Sep 24, 2013 |
10880721 |
|
|
17135796 |
|
|
|
|
13056277 |
Jan 27, 2011 |
8630234 |
|
|
PCT/CA2009/001062 |
Jul 28, 2009 |
|
|
|
14035806 |
|
|
|
|
61129898 |
Jul 28, 2008 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
H04W 8/02 20130101; H04W
76/15 20180201; H04W 76/11 20180201 |
International
Class: |
H04W 8/02 20060101
H04W008/02; H04W 76/11 20060101 H04W076/11 |
Claims
1-129. (canceled)
130. A mobile telephone comprising: a processor circuit, a network
interface in communication with the processor circuit, and a
computer readable medium in communication with the processor
circuit and encoded with codes for directing the processor circuit
to: receive, from a user of the mobile telephone, a callee
identifier associated with the callee; use the network interface to
cause at least one request message to be transmitted to an access
server, the at least one request message including the callee
identifier and an IP address associated with a location of the
mobile telephone; receive an access code reply message from the
access server in response to the at least one request message, the
access code reply message including an access code different from
the callee identifier and associated with the callee identifier,
the access code being based on the IP address associated with the
mobile telephone; and initiate a call using the access code to
identify the callee.
131. An access server comprising: a processor circuit, a network
interface in communication with the processor circuit, and a
computer readable medium encoded with codes for directing a
processor circuit to: receive at least one request message
associated with a mobile telephone initiating a call to a callee,
the at least one request message including a callee identifier
identifying the callee and an IP address associated with a location
of the mobile telephone; communicate with a routing controller to
obtain from the routing controller an access code identifying an
communication channel based on the IP address associated with a
location of the mobile phone, the access code being different from
the callee identifier and useable by the mobile telephone to
initiate a call to the callee using the communication channel; and
cause a reply message including the access code to be transmitted
to the mobile telephone.
132. A method of completing a call from a mobile telephone to a
callee using an access server, the method comprising: receiving, at
the access server, a callee identifier associated with the callee,
the callee identifier being transmitted by the mobile telephone;
receiving, at the access server, a location identifier associated
with a location associated with the mobile telephone; selecting an
access code identifying one of a telephone number or Internet
Protocol (IP) network address representing a channel capable of
carrying a call from the mobile telephone to the callee identified
by the callee identifier, said access code being based on the
location identifier associated with the location of the mobile
telephone; sending, from the access server to said mobile
telephone, said access code, said access code being different from
said callee identifier and being based on said location identifier;
and detecting a call made with the mobile telephone using said
access code to identify the callee and causing a routing controller
to establish the call to the callee.
133. The access server of claim 131, wherein the communication
channel is configured to cooperate with an IP network to cause a
call involving the mobile telephone and the callee to be routed
through the IP network in response to a call received at a gateway
associated with the communication channel.
134. The access server of claim 131, the server further comprising:
a network interface for receiving an one or more request messages,
said request messages including a callee identifier received from a
user of the mobile telephone and a location identifier separate and
distinctive from said callee identifier, said location identifier
identifying a location associated with the mobile telephone.
135. The access server of claim 131, the server further comprising:
an access code generator for selecting an access code from a pool
of access codes based on the location that is associated with the
mobile telephone, the selected access code enabling the mobile
telephone to establish a call to the callee identified by the
callee identifier, the selected access code being different from
said callee identifier; and a network interface for transmitting an
access code reply message to the mobile telephone, said access code
reply message including the selected access code, for use by the
mobile phone in initiating the call to the callee.
136. The method of claim 132 further comprising transmitting said
access code from said access server to the mobile telephone on a
non-voice network.
137. The method of claim 132 wherein said location identifier
represents a wireless voice signal station in wireless
communication with the mobile telephone.
138. The method of claim 132 wherein said location identifier
comprises a user-configured identifier of a location associated
with the mobile telephone.
139. The method of claim 132 wherein said access code is
temporarily associated with said callee identifier at least until
the call is completed.
140. The method of claim 132 wherein the said access comprises an
IP address associated with a channel operably configured to
cooperate with an IP network to cause a call involving the mobile
telephone and the callee to be routed through the IP network.
141. The method of claim 140 wherein the channel is associated with
a gateway that provides communication services to a set of
geographical locations including the location associated with the
mobile telephone.
142. The method of claim 132 further comprising: communicating with
the routing controller to obtain from the routing controller said
access code, wherein said access code identifies a gateway that is
useable by the mobile telephone to cause the routing controller to
establish a call to the callee using the gateway.
143. The method of claim 132 wherein said access code expires after
a period of time.
144. The method of claim 132 further comprising identifying an
access code that is associated with the location identified by the
location identifier and that is not currently associated with
another callee identifier.
145. The method of claim 132 further comprising selecting an access
code associated with a communication system node with which the
callee is associated.
146. The method of claim 132 wherein the access server receives a
message with a location identifier field for use in determining an
area associated with the mobile telephone.
147. The mobile telephone of claim 130 further comprising:
transmitting means for causing an access code request message to be
transmitted to an access server to cause the access server to seek
an access code from a pool of access codes wherein each access code
in said pool of access codes identifies one of a respective
telephone number or Internet Protocol (IP) network address that
enables a call to be made to call the callee identified by the
callee identifier, said access code request message including said
callee identifier and a location identifier separate and
distinctive from said callee identifier, said location identifier
identifying a location associated with the mobile telephone;
receiving means for receiving at the mobile telephone an access
code reply message from the access server in response to said
access code request message, said access code reply message
including an access code different from said callee identifier and
associated with said location identifier; and means for initiating
a call using said access code to identify the callee.
148. The mobile telephone of claim 130 wherein the telephone causes
a location identifier of a location associated with the mobile
telephone to be transmitted to the access server, wherein said
location identifier includes at least one of: an IP address
associated with the mobile telephone in an IP network; an
identifier of a wireless voice signal station in wireless
communication with the mobile telephone; and a user-configured
identifier of a location associated with the mobile telephone.
149. A system for initiating a call to a callee, the system
comprising the mobile telephone of claim 130 and further
comprising: a routing controller; and an access server comprising:
a network interface for receiving from the mobile telephone at
least one request message for an access code and for transmitting a
reply including said access code to the mobile telephone; and a
routing controller interface for communicating with said routing
controller to obtain from said routing controller said access code,
wherein said access code identifies a channel and is useable by the
mobile telephone to cause the routing controller to establish a
call to the callee using the channel..]
Description
INCORPORATION BY REFERENCE TO ANY PRIORITY APPLICATIONS
[0001] This application is a continuation of U.S. application Ser.
No. 14/035,806, filed Jan. 23, 2014, entitled "Mobile Gateway",
which is a continuation of U.S. application Ser. No. 13/056277,
filed Jan. 27, 2011, entitled "Mobile Gateway", which is a national
phase entry of PCT/CA2009/001062, filed Jul. 28, 2009, which claims
priority to U.S. Provisional Application No. 61/129,898, filed Jul.
28, 2008, all of which are incorporated by reference in their
entireties.
BACKGROUND
Field
[0002] This invention relates generally to telecommunication, and
more particularly to methods, systems, apparatuses, and computer
readable media for initiating or enabling a call with a mobile
telephone to a callee.
Description of the Related Technologies
[0003] Mobile telephone service providers often charge significant
fees for long distance telephone calls, particularly when the
mobile telephone is roaming in another mobile telephone service
provider's network.
[0004] One known technique for avoiding the long distance charges
of mobile telephone service providers is to use a "calling card". A
"calling card" may permit the user of the mobile telephone to place
a call to a local telephone number or to a less-expensive telephone
number (such as a toll-free number, for example) instead of placing
the call directly to the callee. The user may thus avoid the long
distance charges of the mobile telephone service provider, which
may be higher than the charges for using the "calling card".
However, this technique can be cumbersome and undesirable, because
it may require the user of the mobile telephone to follow a number
of complicated or cumbersome steps in order to initiate a call to
the callee, for example.
SUMMARY OF CERTAIN EMBODIMENTS
[0005] In accordance with one aspect there is provided a method of
initiating a call to a callee using a mobile telephone. The method
involves receiving, from a user of the mobile telephone, a callee
identifier associated with the callee; transmitting an access code
request message to an access server, the access code request
message including the callee identifier; receiving an access code
reply message from the access server in response to the access code
request message, the access code reply message including an access
code different from the callee identifier and associated with the
callee identifier; and initiating a call with the mobile telephone
using the access code to identify the callee.
[0006] Transmitting may involve transmitting the access code
request message to the access server on a non-voice network.
[0007] Transmitting may involve transmitting a location identifier
of a location associated with the mobile telephone to the access
server.
[0008] Transmitting the location identifier may involve
transmitting an IP address of the mobile telephone in a wireless IP
network.
[0009] Transmitting the location identifier may involve
transmitting an identifier of a wireless voice signal station in
wireless communication with the mobile telephone.
[0010] Transmitting the location identifier may involve
transmitting a user-configured identifier of a location associated
with the mobile telephone.
[0011] Receiving the access code reply message may involve
receiving the access code reply message from the access server on a
non-voice network.
[0012] Receiving the access code reply message may involve
receiving, in the access code reply message, an access code
temporarily associated with the callee identifier.
[0013] Receiving the access code reply message may involve
receiving, in the access code reply message, a telephone number
identifying a channel operably configured to cooperate with an IP
network to cause a call involving the mobile telephone and the
callee to be routed through the IP network.
[0014] Initiating the call may involve engaging a routing
controller to route the call on the IP network to the callee.
[0015] The method may further involve: receiving from the mobile
telephone the access code request message; communicating with a
routing controller to obtain from the routing controller the access
code wherein the access code identifies a channel and is useable by
the mobile telephone to cause the routing controller to establish a
call to the callee using the channel; and transmitting the access
code reply message to the mobile telephone.
[0016] In accordance with another aspect, there is provided a
mobile telephone. The mobile telephone includes: provisions for
receiving, from a user of the mobile telephone, a callee identifier
associated with the callee; transmitting provisions for
transmitting an access code request message to an access server,
the access code request message including the callee identifier;
provisions for receiving an access code reply message from the
access server in response to the access code request message, the
access code reply message including an access code different from
the callee identifier and associated with the callee identifier;
and provisions for initiating a call using the access code to
identify the callee.
[0017] The transmitting provisions may include a non-voice network
interface for transmitting the access code request message to the
access server on a non-voice network.
[0018] The access code request message may further include a
location identifier of a location associated with the mobile
telephone.
[0019] The location identifier may include an IP address of the
mobile telephone in a wireless IP network.
[0020] The location identifier may include an identifier of a
wireless voice signal station in wireless communication with the
mobile telephone.
[0021] The location identifier may include a user-configured
identifier of a location associated with the mobile telephone.
[0022] The provisions for receiving an access code reply message
may include a non-voice network interface for receiving the access
code reply message on a non-voice network.
[0023] The access code may include a telephone number.
[0024] The means for initiating may involve a mobile telephone
network interface.
[0025] In accordance with another aspect, there is provided a
system for initiating a call to a callee. The system includes the
mobile telephone, a routing controller, and an access server. The
access server includes: provisions for receiving from the mobile
telephone the access code request message; provisions for
communicating with the routing controller to obtain from the
routing controller the access code wherein the access code
identifies a channel and is useable by the mobile telephone to
cause the routing controller to establish a call to the callee
using the channel; and provisions for transmitting the access code
reply message including the access code to the mobile
telephone.
[0026] In accordance with another aspect, there is provided a
mobile telephone. The mobile telephone includes a processor
circuit, a network interface in communication with the processor
circuit, and a computer readable medium in communication with the
processor circuit and encoded with codes for directing the
processor circuit to: receive, from a user of the mobile telephone,
a callee identifier associated with the callee; cause an access
code request message to be transmitted to an access server, the
access code request message including the callee identifier;
receive an access code reply message from the access server in
response to the access code request message, the access code reply
message including an access code different from the callee
identifier and associated with the callee identifier; and initiate
a call using the access code to identify the callee.
[0027] The network interface may include a non-voice network
interface, and the codes for directing the processor circuit to
cause the access code request message to be transmitted may include
codes for directing the processor circuit to cause the access code
request message to be transmitted to the access server using the
non-voice network interface on a non-voice network.
[0028] The access code request message may further include a
location identifier of a location associated with the mobile
telephone.
[0029] The location identifier may include an IP address of the
mobile telephone in a wireless IP network.
[0030] The location identifier may include an identifier of a
wireless voice signal station in wireless communication with the
mobile telephone.
[0031] The location identifier may include a user-configured
identifier of a location associated with the mobile telephone.
[0032] The network interface may include a non-voice network
interface, and the codes for directing the processor circuit to
receive an access code reply message may include codes for
directing the processor circuit to cause the access code reply
message to be received from the access server using the non-voice
network interface on a non-voice network.
[0033] The access code may include a telephone number identifying a
channel operably configured to cooperate with an IP network to
cause a call involving the mobile telephone and the callee to be
routed through the IP network.
[0034] The network interface may include a mobile telephone network
interface, and the codes for directing the processor circuit to
initiate may include codes for directing the processor circuit to
cause a call to be initiated using the mobile telephone network
interface on a mobile telephone network.
[0035] In accordance with another aspect, there is provided a
system for initiating a call to a callee. The system includes: the
mobile telephone; a routing controller; and an access server
comprising a processor circuit and a computer readable medium in
communication with the processor circuit. The computer readable
medium is encoded with codes for directing the processor circuit
to: receive from the mobile telephone the access code request
message; communicate with the routing controller to obtain from the
routing controller the access code wherein the access code
identifies a channel and is useable by the mobile telephone to
cause the routing controller to establish a call to the callee
using the channel; and transmit the access code reply message to
the mobile telephone.
[0036] In accordance with another aspect, there is provided a
computer readable medium encoded with codes for directing a
processor circuit to: receive, from a user of a mobile telephone, a
callee identifier associated with a callee; transmit an access code
request message to an access server, the access code request
message including the callee identifier; receive an access code
reply message from the access server in response to the access code
request message, the access code reply message including an access
code different from the callee identifier and associated with the
callee identifier; and initiate a call using the access code to
identify the callee.
[0037] In accordance with another aspect, there is provided a
method for enabling a mobile telephone to initiate a call to a
callee through a channel. The method involves: receiving from the
mobile telephone an access code request message including a callee
identifier associated with the callee; communicating with a routing
controller to obtain from the routing controller an access code
identifying the channel, the access code being different from the
callee identifier and useable by the mobile telephone to initiate a
call to the callee using the channel; and transmitting an access
code reply message including the access code to the mobile
telephone.
[0038] Receiving may involve receiving the access code request
message on a non-voice network.
[0039] The method may further involve causing the routing
controller to produce the access code.
[0040] Producing may involve selecting the access code from a pool
of access codes, where each access code in the pool of access codes
identifies a respective telephone number.
[0041] The method may further involve determining a local calling
area associated with the mobile telephone.
[0042] Determining may involve accessing a dialing profile
associated with the caller, the dialing profile including a
location field having contents identifying at least a default
location of the caller.
[0043] Determining may involve receiving an IP address of the
mobile telephone in a wireless IP network.
[0044] Determining may involve receiving an identifier of a
wireless voice signal station in wireless communication with the
mobile telephone.
[0045] Determining may involve receiving a user-configured
identifier of a location associated with the mobile telephone.
[0046] Selecting may involve selecting an access code in the local
calling area associated with the mobile telephone.
[0047] Each access code in the pool of access codes may further
identify a respective channel operably configured to cooperate with
an IP network to cause a call involving the mobile telephone and
the callee to be routed through the IP network.
[0048] The method may further involve causing the routing
controller to establish communication through the IP network in
response to a call received on the channel.
[0049] Producing may further involve storing a caller identifier
associated with the mobile telephone in association with the access
code.
[0050] Causing the routing controller to establish communication
may involve causing the routing controller to establish
communication only if the caller identifier associated with the
access code identifies the mobile telephone.
[0051] Producing may further involve storing the callee identifier
in association with the access code.
[0052] Producing may further involve searching the pool of access
codes for an access code associated with the callee identifier to
identify the channel usable by the mobile telephone to initiate a
call to the callee.
[0053] Producing may further involve storing, in association with
the access code, a timestamp for use in determining when the
usability of the access code to initiate a call to the callee will
expire.
[0054] Causing the routing controller to establish communication
may involve causing the routing controller to establish
communication only if the usability of the access code to initiate
a call to the callee has not expired.
[0055] Transmitting may involve transmitting the access code reply
message on a non-voice network.
[0056] In accordance with another aspect, there is provided a
system for enabling a mobile telephone to initiate a call to a
callee through a channel. The system includes: provisions for
receiving from the mobile telephone an access code request message
including a callee identifier associated with the callee;
provisions for communicating with the routing controller to obtain
from the routing controller an access code identifying the channel,
the access code being different from the callee identifier and
useable by the mobile telephone to initiate a call to the callee
using the channel; and provisions for transmitting an access code
reply message including the access code to the mobile
telephone.
[0057] The provisions for receiving may include a non-voice network
interface for receiving the access code request message on a
non-voice network.
[0058] The system may further include provisions for producing the
access code.
[0059] The provisions for producing may include a processor circuit
operably configured to select the access code from a pool of access
codes, where each access code in the pool of access codes
identifies a respective telephone number.
[0060] The processor circuit may be operably configured to
determine a local calling area associated with the mobile
telephone.
[0061] The processor circuit may be operably configured to
determine a local calling area associated with the mobile telephone
using a dialing profile associated with the caller, the dialing
profile including a location field having contents identifying at
least a default location of the caller.
[0062] The processor circuit may be operably configured to
determine a local calling area associated with the mobile telephone
using an IP address of the mobile telephone in a wireless IP
network.
[0063] The processor circuit may be operably configured to
determine a local calling area associated with the mobile telephone
using an identifier of a wireless voice signal station in wireless
communication with the mobile telephone.
[0064] The processor circuit may be operably configured to
determine a local calling area associated with the mobile telephone
using a user-configured identifier of a location associated with
the mobile telephone.
[0065] The processor circuit may be operably configured to select
an access code in the local calling area associated with the mobile
telephone.
[0066] Each access code in the pool of access codes may further
identify a respective channel operably configured to cooperate with
an IP network to cause a call involving the mobile telephone and
the callee to be routed through the IP network.
[0067] The processor circuit may be operably configured to
establish communication through the IP network in response to a
call received on the channel.
[0068] The processor circuit may be operably configured to store a
caller identifier associated with the mobile telephone in
association with the access code.
[0069] The processor circuit may be operably configured to cause
the routing controller to establish communication only if the
caller identifier associated with the access code identifies the
mobile telephone.
[0070] The processor circuit may be operably configured to store
the callee identifier in association with the access code.
[0071] The processor circuit may be operably configured to search
the pool of access codes for an access code associated with the
callee identifier to identify the channel usable by the mobile
telephone to initiate a call to the callee.
[0072] The processor circuit may be operably configured to store,
in association with the access code, a timestamp for use in
determining when the usability of the access code to initiate a
call to the callee will expire.
[0073] The processor circuit may operably configured to establish
communication only if the usability of the access code to initiate
a call to the callee has not expired.
[0074] The provisions for transmitting may include a non-voice
network interface for transmitting the access code reply message on
a non-voice network.
[0075] In accordance with another aspect, there is provided a
system for enabling a mobile telephone to initiate a call to a
callee through a channel. The system includes a processor circuit,
a network interface in communication with the processor circuit,
and a computer readable medium in communication with the processor
circuit and encoded with codes for directing the processor circuit
to: receive from the mobile telephone an access code request
message including a callee identifier associated with the callee;
communicate with the routing controller to obtain from the routing
controller an access code identifying the channel, the access code
being different from the callee identifier and useable by the
mobile telephone to initiate a call to the callee using the
channel; and cause an access code reply message including the
access code to be transmitted to the mobile telephone.
[0076] The network interface may include a non-voice network
interface, and the codes for directing the processor circuit to
receive may include codes for directing the processor circuit to
cause the access code request message to be received using the
non-voice network interface on a non-voice network.
[0077] The computer readable medium may be further encoded with
codes for directing the processor circuit to cause the access code
to be produced.
[0078] The codes for directing the processor circuit to cause the
access code to be produced may cause the access code to be selected
from a pool of access codes, where each access code in the pool of
access codes identifies a respective telephone number.
[0079] The computer readable medium may be further encoded with
codes for directing the processor circuit to cause to be determined
a local calling area associated with the mobile telephone.
[0080] The codes for directing the processor circuit to cause to be
determined may cause a dialing profile associated with the caller
to be accessed, the dialing profile including a location field
having contents identifying at least a default location of the
caller.
[0081] The codes for directing the processor circuit to cause to be
determined may cause to be received an IP address of the mobile
telephone in a wireless IP network.
[0082] The codes for directing the processor circuit to cause to be
determined may cause to be received an identifier of a wireless
voice signal station in wireless communication with the mobile
telephone.
[0083] The codes for directing the processor circuit to cause to be
determined may cause to be received a user-configured identifier of
a location associated with the mobile telephone.
[0084] The codes for directing the processor circuit to cause the
access code to be produced may further cause to be selected an
access code in the local calling area associated with the mobile
telephone.
[0085] Each access code in the pool of access codes may further
identify a respective channel operably configured to cooperate with
an IP network to cause a call involving the mobile telephone and
the callee to be routed through the IP network.
[0086] The computer readable medium may be further encoded with
codes for directing the processor circuit to cause communication
through the IP network to be established in response to a call
received on the channel.
[0087] The codes for directing the processor circuit to cause the
access code to be produced may cause a caller identifier associated
with the mobile telephone to be stored in association with the
access code.
[0088] The codes for directing the processor circuit to cause
communication to be established may cause communication to be
established only if the caller identifier associated with the
access code identifies the mobile telephone.
[0089] The codes for directing the processor circuit to cause the
access code to be produced may cause the callee identifier to be
stored in association with the access code.
[0090] The codes for directing the processor circuit to cause the
access code to be produced may cause the pool of access codes to be
searched for an access code associated with the callee identifier
to identify the channel usable by the mobile telephone to initiate
a call to the callee.
[0091] The codes for directing the processor circuit to cause the
access code to be produced may cause a timestamp for use in
determining when the usability of the access code to initiate a
call to the callee will expire, to be stored in association with
the access code.
[0092] The codes for directing the processor circuit to cause
communication to be established may cause communication to be
established only if the usability of the access code to initiate a
call to the callee has not expired.
[0093] The network interface may include a non-voice network
interface, and the codes for directing the processor circuit to
transmit include codes for directing the processor circuit to cause
the access code reply message to be transmitted using the non-voice
network interface on a non-voice network.
[0094] In accordance with another aspect, there is provided a
computer readable medium encoded with codes for directing a
processor circuit to: receive from the mobile telephone an access
code request message including a callee identifier associated with
the callee; communicate with the routing controller to obtain from
the routing controller an access code identifying the channel, the
access code being different from the callee identifier and useable
by the mobile telephone to initiate a call to the callee using the
channel; and cause an access code reply message including the
access code to be transmitted to the mobile telephone.
[0095] Other aspects and features 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.
BRIEF DESCRIPTION OF THE DRAWINGS
[0096] In drawings which illustrate embodiments,
[0097] FIG. 1 is a block diagram of a system for enabling a mobile
telephone to initiate a call through a channel to a callee in
accordance with a first embodiment in the invention;
[0098] FIG. 2 is a block diagram of mobile telephone shown in FIG.
1;
[0099] FIG. 3 is a flow chart of a process executed by the mobile
telephone shown in FIG. 1;
[0100] FIG. 4 is a schematic representation of an access code
request message transmitted between the mobile telephone and an
access server shown in FIG. 1;
[0101] FIG. 5 is a schematic representation of an access code reply
message transmitted between the mobile telephone and the access
server shown in FIG. 1;
[0102] FIG. 6 is a block diagram of the access server shown in FIG.
1;
[0103] FIG. 7 is a flow chart of a process executed by the access
server shown in FIG. 1;
[0104] FIG. 8 is a block diagram of a routing controller shown in
FIG. 1;
[0105] FIG. 9 is a tabular representation of a dialing profile
stored in a database accessible by the routing controller
illustrated in FIG. 1;
[0106] FIG. 10 is a tabular representation of an access code
association table stored in memory accessible by the routing
controller shown in FIG. 1;
[0107] FIG. 11 is a schematic representation of a DID bank table
record stored in a database shown in FIG. 1;
[0108] FIG. 12 is a flow chart of a process executed by the routing
controller illustrated in FIG. 1;
[0109] FIG. 13 is a block diagram of a gateway shown in FIG. 1;
[0110] FIG. 14 is a tabular representation of an SIP invite message
transmitted between the gateway and a call controller illustrated
in FIG. 1;
[0111] FIG. 15 is a block diagram of the call controller
illustrated in FIG. 1;
[0112] FIG. 16 is a flow chart of a process executed by the call
controller illustrated in FIG. 1;
[0113] FIG. 17 is a tabular representation of an RC request message
transmitted between the call controller and the routing controller
illustrated in FIG. 1;
[0114] FIGS. 18A-18C are a flow chart of a process executed by the
routing controller illustrated in FIG. 1; and
[0115] FIG. 19 is a tabular representation of a gateway node
association table stored in the database illustrated in FIG. 1.
DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS
[0116] Referring to FIG. 1, a system for enabling a mobile
telephone to initiate a call to a callee is shown generally at 10.
The system 10 includes a first node 11, a second node 21, and a
mobile telephone 12.
[0117] The first and second nodes 11 and 21 in the illustrated
embodiment may support "voice-over-IP" (VoIP) calls between
telephones and/or videophones using the Internet Protocol (IP), as
described in PCT Publication No. WO 2008/052340, which is hereby
incorporated by reference in its entirety herein. In the embodiment
shown, the first node 11 is located in a geographical area, such as
Vancouver, British Columbia, Canada, for example, and the second
node 21 is located in London, England, for example. Different nodes
may be located in different geographical regions throughout the
world to provide telephone/videophone service to subscribers in
respective regions. These nodes may be in communication with each
other by high speed/high data throughput links including optical
fiber, satellite, and/or cable links illustrated generally at 17,
forming a backbone to the system. These nodes may alternatively, or
in addition, be in communication with each other through
conventional internet services.
[0118] In the embodiment shown, the first node 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, for example.
[0119] Other nodes of the type shown may also be employed within
the geographical area serviced by a node to provide for call load
sharing, for example, within a region of the geographical area
serviced by the node. However, in general, all nodes may be similar
and have the properties described in connection with the first node
11.
[0120] In this embodiment, the first node 11 includes a call
controller (CC) 13, an access server 14, a routing controller (RC)
30, a database 23, a voicemail server 19, and a media relay 28.
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 a third party service provider. Although the access
server 14 is illustrated as being part of the first node 11, access
servers in alternative embodiments may be separate from the node
and may be in communication with one or more nodes, for
example.
[0121] The mobile telephone 12 is configured to place calls over a
mobile telephone network, illustrated generally at 15, in a manner
well-known in the art. Furthermore, the mobile telephone 12 and the
access server 14 are configured to communicate with each other,
preferably on a non-voice network illustrated generally at 16, such
as a "WiFi" wireless IP network or a General Packet Radio Service
(GPRS) network, for example. However, in alternative embodiments,
the mobile telephone 12 and the access server 14 may communicate
with each other over other networks, such as a mobile telephone
network using Short Message Service (SMS) messages, for
example.
[0122] The system 10 further includes a gateway 18 in communication
with at least one, and preferably a plurality of, channels, which
are illustrated schematically at 20, 22, and 24, to which the
mobile telephone 12 may initiate a call over the mobile telephone
network 15. The channels 20, 22, and 24 maybe telephone lines in a
Public Switched Telephone Network (PSTN) 29. The channels 20, 22,
and 24 maybe associated with PSTN telephone numbers in a local
calling area associated with the mobile telephone 12, and thus
these channels preferably depend on a geographical location of the
mobile telephone. The expression "local calling area" herein refers
generally to a set of telephone numbers, typically defined by a
geographical region, to which telephone calls may be placed by
callers within the local calling area at either no additional
charge or at a lower additional charge than would be required for
calls to numbers that are outside of the local calling area.
However, it will be appreciated that in other embodiments, the
gateway 18 may be in communication with any number of channels,
which need not be PSTN telephone lines. Also, in the illustrated
embodiment, the channels 20, 22, and 24 are associated with
telephone numbers for Vancouver, British Columbia, Canada and the
surrounding area, although it will be appreciated that these
channels may include PSTN telephone lines associated with other
areas, for example, which may not necessarily be in a local calling
area associated with the mobile telephone 12.
[0123] In the illustrated embodiment, each of the channels 20, 22,
and 24 is configured by a PSTN service provider (which, in Canada,
may be Bell Canada or Telus, for example) to direct calls that are
received on the channels to the gateway 18. In the illustrated
embodiment, the PSTN service provider has configured the channels
20, 22, and 24 to communicate with a T1 multiplexer 25, which
multiplexes the channels 20, 22, and 24 in a manner known in the
art onto one or more T1 lines 27 that are in communication with the
gateway 18. The gateway 18 is in communication with an IP network
shown generally at 26. The channels 20, 22, and 24 are thus
configured to cooperate with the IP network 26 (via the gateway 18
in the illustrated embodiment) to cause a call involving the mobile
telephone 12 and the callee to be routed through the IP network in
response to a call received at one of the channels.
[0124] Also, in the illustrated embodiment, the access server 14 is
in communication with the routing controller 30 of the first node
11, and the routing controller 30 is configurable to associate a
callee identifier with one of the channels 20, 22, and 24, as
described below. A callee identifier associated with one of the
channels 20, 22, and 24 may be a telephone number of a PSTN
telephone 32 that is in communication with the IP network 26
through a gateway 34, or it may be a telephone number of a VoIP
telephone 36 that is directly in communication with the IP network
26, for example. Other routing controllers 30 of other nodes, such
as the second node 21, for example, may also associate callee
identifiers with other channels that are in communication with
other gateways (not shown).
Mobile Telephone
[0125] Referring to FIG. 2, in this embodiment, the mobile
telephone (12) includes a processor circuit shown generally at 50.
The processor circuit 50 includes a microprocessor 52, a program
memory 54, an input/output (I/O) port 56, parameter memory 58, and
temporary memory 60. The program memory 54, I/O port 56, parameter
memory 58, and temporary memory 60 are all in communication with
the microprocessor 52. The processor circuit 50 may alternatively
include a plurality of processors, a plurality of program memories,
a plurality of temporary memories, and/or a plurality of I/O ports,
or these components may alternatively be combined into a single
device. However, for simplicity, the components of the processor
circuit 50 are illustrated as shown in the example of FIG. 2.
[0126] In the illustrated embodiment, the I/O port 56 includes a
dialing input 62 for receiving a callee identifier from a key pad,
for example, or from a voice recognition unit, or from pre-stored
callee identifiers stored in the parameter memory 58, for example.
For illustration purposes only, a myriad of possible dialing
functions for providing a callee identifier are represented by the
block entitled dialing function 64. A callee identifier may be a
telephone number of a callee, for example.
[0127] The I/O port 56 also includes a handset interface 66 for
receiving and producing signals to and from a handset 68 that may
be placed close to the user's ear and mouth, for producing and
receiving audible signals for and from the user. It will be
appreciated that alternatively, the handset 68 may include a camera
and video screen, for example, and that video or other types of
signals may be transmitted additionally or alternatively to audible
signals.
[0128] The I/O port 56 also includes a non-voice network interface
70 for transmitting information to, and receiving information from,
the non-voice network 16 illustrated in FIG. 1, for example, and
preferably interfaces with a high-speed internet connection.
[0129] The I/O port 56 in the illustrated embodiment further
includes a mobile telephone network interface 72 for transmitting
signals to and receiving signals from a mobile telephone service
provider over a network such as a Global System for Mobile
communications (GSM) or a Code Division Multiple Access (CDMA)
network, such as the mobile telephone network 15 illustrated in
FIG. 1, for example. Again, for simplicity, a mobile telephone
network interface is illustrated, although it will be appreciated
that video signals or other signals may be handled similarly when
the mobile telephone (12) is facilitating communication of one or
more of these types of signals. It will also be appreciated that
alternatively, the non-voice network interface 70 and mobile
telephone network interface 72 need not be distinct, but may be a
single interface for communication over a single network, for
example, or may be configured to communicate over a plurality of
different networks, for example.
[0130] In the illustrated embodiment, the parameter memory 58
includes a username field 74 and a password field 76, although it
will be appreciated that the username and password may not be
necessary, or may be input by the user as required, for example.
The parameter memory 58 in the illustrated embodiment also includes
a caller identifier field 78 for storing a caller identifier, which
may be a telephone number associated with the mobile telephone (12)
for identifying a "channel" such as a telephone line assigned to
the mobile telephone that may be used to call back to the mobile
telephone, for example. Generally, the contents of the username
field 74, the password field 76, and the caller identifier field 78
are set once when the user first subscribes to the system.
[0131] The usernames referred to herein, such as the username in
the username field 74, preferably include a twelve digit number
such as 2001 1050 8667, for example, wherein the left-most digit is
a continent code (such as "2" to indicate North America, for
example), followed by a three-digit country code (such as "001" to
indicate Canada and the United States, for example), a four-digit
dealer code (such as "1050", for example), and a unique four-digit
number code (such as "8667", for example), as discussed more
generally in PCT Publication No. 2008/052340. Therefore, a prefix
of a username referred to herein preferably indicates a
geographical region associated with the user, or with the access
code, and more preferably indicates a node associated with the user
or access code.
[0132] The program memory 54 stores blocks of codes for directing
the microprocessor 52 to carry out the functions of the mobile
telephone (12), which are illustrated by example below.
[0133] Referring to FIGS. 2 and 3, a flow chart representing
functions performed by blocks of code that direct the
microprocessor 52 to initiate a call with the mobile telephone 12
to a callee is shown generally at 100. The blocks shown in FIG. 3
generally represent codes that may be stored in the program memory
54 for example, for directing the microprocessor 52 to perform
various functions relating to initiating a call with the mobile
telephone (12) to a callee. The actual code to implement each block
may be written in any suitable programming language, such as Java,
C, and/or C++, for example.
[0134] The process 100 begins at 102, in response to an interrupt
produced at or for the microprocessor 52 by the dialing function
64. Upon initiation of the process 100, block 104 directs the
microprocessor 52 to obtain a callee identifier from the dialing
function 64 at the dialing input 62 of the I/O port 56 in the
illustrated embodiment. The callee identifier is associated with a
desired callee, and may be a telephone number of the callee, for
example. The microprocessor 52 thus receives, from a user of the
mobile telephone (12), a callee identifier associated with a
callee.
[0135] Block 106 directs the microprocessor 52 to transmit, using
the non-voice network interface 70 in the illustrated embodiment,
an access code request message, the access code request message
including the callee identifier obtained at block 104, to the
access server 14 (illustrated in FIG. 1). In general, preferably
block 106 directs the microprocessor 52 to cause an access code
request message to be transmitted to the access server 14 over a
non-voice network, such as an internet, using WiFi or GPRS
technology for example. However, it will be appreciated that block
106 may direct the microprocessor 52 to transmit an access code
request message to the access server 14 using any suitable
technique, which may alternatively include a voice network, for
example.
[0136] Referring to FIG. 4, an exemplary access code request
message is shown generally at 110. The access code request message
110 includes a username field 112, a password field 114, a callee
identifier field 116, and a caller identifier field 118. In the
illustrated embodiment, values for the username, password, and
caller identifier fields 112, 114, and 118 are retrieved from the
username, password, and caller identifier fields 74, 76, and 78
respectively in the parameter memory 58 of the processor circuit 50
(illustrated in FIG. 2), and a value for the callee identifier
field 116 is obtained from the dialing function 64 in block 104,
and may be stored in the temporary memory (60), for example. It
will be appreciated that the username field 112, password field
114, and caller identifier field 118 are not essential, although
these fields are preferable in order to identify the user of the
mobile telephone for billing purposes, for example.
[0137] Referring to FIGS. 1 and 4, it will be appreciated that in
order to minimize charges from the mobile telephone service
provider of the mobile telephone 12, the channels 20, 22, 24 will
preferably be local or relatively inexpensive telephone lines
associated with a geographical location, more particularly a
pre-defined local calling area, associated with the mobile
telephone 12. Therefore, the exemplary access code request message
110 further includes a location identifier field 119. The location
identifier stored in the location identifier field 119 preferably
identifies a location of the mobile telephone 12 for use in
determining a local calling area associated with the mobile
telephone 12.
[0138] For example, the location identifier in the location
identifier field 119 may include an IP address of the mobile
telephone 12 in a wireless IP network, such as the non-voice
network 16 to which the non-voice network interface 70 shown in
FIG. 2 is connected, because this IP address may be an indicator of
a geographical location of the mobile telephone 12. The location
identifier may also or alternatively include an identifier of a
wireless voice signal station in wireless communication with the
mobile telephone. In the illustrated embodiment, the wireless voice
signal station is part of the mobile telephone network 15 that is
in communication with the mobile telephone 12 through the mobile
telephone network interface 72 illustrated in FIG. 2. In still
other embodiments, the location identifier may include a
user-configured identifier of a geographical location or local
calling area where the mobile telephone 12 is or may be situated.
The location identifier may thus be pre-determined and stored in
the parameter memory 58 shown in FIG. 2 or may be acquired from
non-voice network or wireless voice signal station or from user
input, for example. Therefore, in summary, the location identifier
in the location identifier field 119 may include one or more of an
IP address of the mobile telephone 12 in a wireless IP network, an
identifier of a wireless voice signal station in wireless
communication with the mobile telephone, and a user-configured
identifier.
[0139] As described below, the location identifier in the location
identifier field 119 may be used to determine a local calling area
associated with the mobile telephone 12, within which local calling
area channels (illustrated as 20, 22, and 24 in FIG. 1) are
available to the mobile telephone 12 for the lowest cost to the
user. However, it will be appreciated that the location identifier
may only approximately identify a local calling area, and may not
necessarily identify the lowest cost channel (illustrated as 20,
22, and 24 in FIG. 1) for the mobile telephone 12. It will also be
appreciated that in other embodiments, the location identifier
field 119 may be omitted.
[0140] Referring back to FIG. 3, the process 100 continues at block
130, which directs the microprocessor (52) to receive an access
code reply message from the access server (14) in response to the
access code request message that was transmitted at block 106.
[0141] Referring to FIG. 5, an exemplary access code reply message
is shown generally at 140. The access code reply message 140
includes an access code field 142 and a timeout field 144. In the
illustrated embodiment, the access code field 142 stores an access
code which is a telephone number associated with a telephone line
associated with one of the channels 20, 22, or 24 in FIG. 1. It
will be appreciated that the access code is different from the
callee identifier in the callee identifier field 116 shown in FIG.
4, in that the access code identifies a channel, other than that
provided by the callee identifier provided by the dialing function
64 in FIG. 2, that the mobile telephone (12) can use to initiate a
call to the callee. It will be appreciated that use of the access
code facilitates avoidance of long distance or roaming charges that
a mobile telephone service provider would charge for a call placed
directly using the callee identifier using conventional calling
processes, for example.
[0142] Still referring to FIG. 5, the timeout field 144 in the
illustrated embodiment stores a value that indicates a period of
time, for example a number of minutes, during which the access code
in the access code field 142 is associated with the callee
identifier in the callee identifier field 116 of the exemplary
access code request message 110 illustrated in FIG. 4, such that
the access code is only temporarily associated with the callee
identifier. In one embodiment, the value stored in the timeout
field 144 indicates 10 minutes, for example. It will be appreciated
that in other embodiments, the timeout field 144 may not be
necessary, but preferably it is included.
[0143] In the illustrated embodiment, the program codes in block
130 direct the microprocessor 52 to receive the access code reply
message over a non-voice network, such as a WiFi or GPRS network
(illustrated at 16 in FIG. 1) via the non-voice network interface
70 shown in FIG. 2. However, it will be appreciated that the access
code reply message may be received on any suitable network, even a
voice network, for example.
[0144] Referring back to FIGS. 2 and 3, block 149 directs the
microprocessor 52 to initiate a call with the mobile telephone (12)
on the mobile telephone network 15 (illustrated in FIG. 1) using
the access code received in the access code field 142 of the access
code reply message 140 (shown in FIG. 5) to identify the callee. In
the illustrated embodiment, the codes in block 149 direct the
microprocessor 52 to initiate a call to the channel (20, 22, or 24)
identified by the access code, using the mobile telephone network
interface 72 of the I/O port 56 of the mobile telephone (12), to
engage the mobile telephone network (15).
[0145] Referring to FIG. 1, in the embodiment shown, the access
code in the access code field (142) is a telephone number
identifying a channel 20, 22, or 24 that is in communication with
the gateway 18 to the IP network 26. Through the gateway 18, the
channel 20, 22, or 24 is thus operably configured to cooperate with
the IP network 26 to cause a call from the mobile telephone 12 to
the callee to be routed through the IP network. Routing the call
through the IP network may involve engaging the routing controller
30 to route the call on the IP network 26 to the callee, as
described below. However, it will be appreciated that in other
embodiments, the access code need not be a telephone number, but
may be any code identifying a channel through which the mobile
telephone 12 can initiate a call. Alternatively, if the mobile
telephone is capable of voice over IP communications, the access
code may be used to identify an IP address in the IP network to
which the call is routed. In this embodiment, the IP address may
act as the access code. The process 100 shown in FIG. 3 is then
ended.
Access Server
[0146] Referring to FIG. 6, the access server (14) includes a
processor circuit shown generally at 150. The processor circuit 150
includes a microprocessor 152, program memory 154, an I/O port 156,
parameter memory 158, and temporary memory 160. The program memory
154, I/O port 156, parameter memory 158, and temporary memory 160
are all in communication with the microprocessor 152. The processor
circuit 150 may alternatively include a plurality of
microprocessors or I/O ports, for example, and the components of
the illustrated processor circuit 150 may also alternatively be
combined into a single device.
[0147] The program memory 154 stores blocks of codes for directing
the microprocessor 152 to carry out the functions of the access
server 14. The I/O port 156 includes a non-voice network interface
162 for communicating with the non-voice network 16 illustrated in
FIG. 1. The I/O port 156 also includes a routing controller
interface 164 for interfacing with the routing controller 30
illustrated in FIG. 1.
[0148] Referring to FIGS. 6 and 7, a flow chart of blocks of code
for directing the microprocessor 152 of the access server (14) to
provide an access code to the mobile telephone (12) is shown
generally at 190. The blocks 190 in FIG. 7 generally represent
codes that may be stored in the program memory 154 for directing
the microprocessor 152 to perform various functions to provide the
access to the mobile telephone (12) to enable the mobile telephone
to place a call through a channel (20, 22, or 24).
[0149] The process 190 begins at 192, in response to an interrupt
created by or for the microprocessor 152 when it receives an access
code request message 110 (as illustrated in FIG. 4) from the mobile
telephone (12). In the illustrated embodiment, the access code
request message (110) is received via the non-voice network
interface 162 through a non-voice network (16) such as a WiFi or
GPRS network, for example. However, it will be appreciated that
other embodiments may use different techniques for receiving the
access code request message (110) from the mobile telephone
(12).
[0150] The process 190 continues at block 196, which directs the
microprocessor 152 to communicate with the routing controller 30 to
obtain from the routing controller an access code identifying a
channel (illustrated as 20, 22, or 24 in FIG. 1) in communication
with the gateway (18), wherein the access code is different from
the callee identifier in the callee identifier field 116 (shown in
FIG. 4) and is usable by the mobile telephone (12) to initiate a
call to the callee using the channel, as further described below.
Therefore, block 196 preferably causes an access code to be
produced by retransmitting the access code request message 110
illustrated in FIG. 4 that was received at 192 from the mobile
telephone (12), to the routing controller 30 through the routing
controller interface 164 of the I/O port 156.
[0151] The process 190 continues at block 198, which directs the
microprocessor 152 to transmit an access code reply message (140),
including the access code obtained by block 196, to the mobile
telephone (12). An exemplary access code reply message is shown in
FIG. 5. In the illustrated embodiment, an access code reply message
(140) is produced by the routing controller 30 in a manner
described below in response to the access code request message
(110) that was transmitted to the routing controller at block 196,
and the access code reply message (140) is received from the
routing controller through the routing controller interface 164 of
the I/O port 156. Block 198 then causes the access code reply
message that was received from the routing controller to be
retransmitted to the mobile telephone (12). In the illustrated
embodiment, the codes in block 198 direct the microprocessor 152 to
transmit the access code reply message (140) using the non-voice
network interface 162 to the non-voice network 16, which may be a
WiFi or GPRS network, for example. However, it will be appreciated
that other embodiments may employ other types of networks for
communicating the access code reply message (140) to the mobile
telephone (12). The process 190 is then ended.
[0152] In summary, referring to FIG. 1, the access server 14
generally acts as an interface to the routing controller 30 for
relaying access code request messages and access code reply
messages between the mobile telephone 12 and the routing
controller. Therefore, it will be appreciated that in alternative
embodiments, the access server 14 and the routing controller 30
need not be separate, but may, for example, be combined in a single
component.
Routing Controller (RC)
[0153] Referring to FIG. 1, generally, the routing controller 30
executes a process to facilitate communication between callers and
callees. The function of a routing controller generally in a VoIP
system is described in PCT Publication No. WO 2008/052340.
[0154] Referring to FIG. 8, the routing controller (30) includes a
processor circuit shown generally at 230. The processor circuit 230
includes a microprocessor (or more generally a processor) 232,
program memory 234, an I/O port 236, table memory 238, temporary
memory 240, and a clock 244. The program memory 234, I/O port 236,
table memory 238, temporary memory 240, and clock 244 are all in
communication with the processor 232. The processor circuit 230 may
include a plurality of microprocessors, for example, and the
aforementioned components of the processor circuit 230 may be
combined, for example. The program memory 234 includes blocks of
code for directing the processor 232 to carry out the functions of
the routing controller (30), and the I/O port 236 includes an
access server interface 242 for communicating with the access
server 14.
[0155] In the illustrated embodiment as described above, the access
server (14) transmits (at block 196 illustrated in FIG. 7) an
access code request message (110) to the routing controller (30) in
order to obtain from the routing controller (30) an access code.
When an access code request message (110) is received at the access
server interface 242, the processor 232 preferably stores certain
values from the access code request message in stores in the
temporary memory 240 for ease of retrieval. In particular, the
temporary memory 240 includes a callee identifier store 246 for
storing the callee identifier from the callee identifier field 116
in the access code request message 110 illustrated in FIG. 4, a
caller identifier store 248 for storing the caller identifier that
was stored in the caller identifier field 118 of the access code
request message 110 illustrated in FIG. 4, a caller username store
249 for storing the caller username that was stored in the caller
username field 112 of the access code request message 110
illustrated in FIG. 4, and an access code store 250 for storing an
access code that is selected when the routing controller (30)
receives an access code request message (110). The temporary memory
240 also includes a local calling area identifier store 245 for
storing an identifier of a local calling area associated with the
mobile telephone (12). The clock 244 generally maintains and stores
a representation of a current date and time.
[0156] The I/O port 236 further includes a database request port
256 through which a request to the database (23 in FIG. 1) can be
made, and also includes a database response port 258 for receiving
a reply from the database (23). The I/O port 236 further includes a
routing controller (RC) request message input 260 for receiving an
RC request message (illustrated in FIG. 17) from the call
controller (13 in FIG. 1) and includes a routing message output 262
for sending a routing message back to the call controller 13. The
I/O port 236 thus acts to receive a caller identifier and a callee
identifier contained in an RC request message from the call
controller, the RC request message being received in response to
initiation of a call by a subscriber of the system, as described
below.
[0157] The program memory 234 includes blocks of codes for
directing the processor 232 to carry out various functions of the
routing controller (30). One of these blocks includes an RC request
message handler 380 which directs the routing controller (30) to
produce a routing message in response to a received RC request
message, an example of which is illustrated in FIG. 17. The RC
request message handler process is shown in greater detail at 380
in FIGS. 18A through 18C. Another of these blocks in the program
memory 234 includes an access code generator, which is described at
270 in FIG. 12, and which directs the routing controller (30) to
produce an access code as directed by the program codes in block
196 shown in FIG. 7. Yet another of these blocks in the program
memory 234 includes a local calling area identifier generator,
which directs the routing controller (30) to produce a local
calling area identifier using the location identifier from the
location identifier field 119 of the access code request message
110 illustrated in FIG. 4.
Local Calling Area Identifier Generator
[0158] Referring to FIG. 1, it will be appreciated that preferably,
a call made by the mobile telephone 12 using the access code
obtained from the access server 14 will be a local call for the
mobile telephone 12, based on a geographical location of the mobile
telephone. Therefore, blocks in the program memory 234 include a
local calling area identifier generator, which directs the routing
controller 30 to produce a local calling area identifier.
[0159] For example, the local calling area identifier generator may
direct the microprocessor 152 to access a dialing profile
associated with the caller. The dialing profile may be identified
using the username in the username field 112 in the access code
request message 110 illustrated in FIG. 4, and to store in the
local calling area identifier field 245 a default location of the
caller retrieved from the dialing profile associated with the
caller.
[0160] Referring to FIG. 9, an exemplary dialing profile is
illustrated generally at 200 and includes a username field 202, a
domain field 204, and calling attributes comprising a national
dialing digits (NDD) field 206, an international dialing digits
(IDD) field 208, a country code field 210, a local area codes field
212, a caller minimum local number length field 214, a caller
maximum local number length field 216, a reseller field 218, a
maximum number of concurrent calls field 220, a current number of
concurrent calls field 222, and a default local calling area
identifier field 224. Therefore, in some embodiments, the local
calling area identifier generator directs the microprocessor 152 to
determine a local calling area associated with the mobile telephone
(12) by retrieving the default local calling area identifier from
the default local calling area identifier field 224 of the dialing
profile 200.
[0161] Effectively, the dialing profile 200 is a record identifying
calling attributes of the caller identified by the username in the
username field 202. More generally, dialing profiles 200 represent
calling attributes of respective users, and are discussed in more
detail in PCT publication No. WO 2008/052340. As described in PCT
publication No. WO 2008/052340, a dialing profile of the type shown
in FIG. 9, and also other records such as direct-in-dial (DID)
records, call blocking records, call forwarding records, and
voicemail records, may be created whenever a user registers with
the system or agrees to become a subscriber to the system.
[0162] Alternatively, the local calling area identifier generator
may generate a local calling area identifier to be stored in the
local calling area identifier store 245 using the location
identifier from the location identifier field 119 of the access
code request message 110 illustrated in FIG. 4. As described above,
the location identifier field (119) may store one or more of an IP
address of the mobile telephone (12) in a wireless IP network, an
identifier of a wireless voice signal station in wireless
communication with the mobile telephone, and a user-configured
identifier. One or more of these values may be used to identify a
local calling area that is or is likely to be associated with the
mobile telephone (12) in order to generate a local calling area
identifier to be stored in the local calling area identifier store
245.
[0163] For example, it has been found that services available from
web sites such as http://www.ip2location.com/ and
http://www.serviceobjects.com/products/dots_ipgeo.asp, for example,
can produce a name of a location, and also latitude and longitude
values, associated with an IP address. Using this information
derived from an IP address, or other information from the location
identifier field (119), a local calling area may be identified by
hierarchical jurisdictional designations (such as country,
province, and city in Canada or country, state, and city in the
United States) and encoded as codes identifying the local calling
area. These codes may then be stored in the local calling area
identifier store 245.
Access Code Association Table
[0164] In the illustrated embodiment, the table memory 238 (shown
in FIG. 8) includes an access code association table 170, an
example of which is illustrated in FIG. 10, for associating access
codes with callee identifiers, caller identifiers, caller
usernames, timeouts, and timestamps. Although the routing
controller (30) is illustrated in this embodiment as a separate
component from the access server (14), it will be appreciated that
in other embodiments, the routing controller (30) may be part of or
integrated with the access server (14), and in these other
embodiments, the access code association table 170 may be part of
or integrated with the access server.
[0165] Referring to FIGS. 1 and 10, the access code association
table 170 generally includes a plurality of records, each having an
access code field 173 storing an access code. The access codes in
the access code association table 170 may thus form a pool of
access codes, where each access code may identify a respective
telephone number. In the illustrated embodiment, the access codes
in the access code fields 173 of records of the access code
association table 170 identify respective channels (illustrated by
example only as 20, 22, and 24) that are operably configured to
cooperate with the IP network 26 via the gateway 18 to cause a call
involving the mobile telephone 12 to be routed through the IP
network.
[0166] Referring to FIG. 10, the exemplary access code association
table 170 includes records 172, 174, 176, 178, and 180, each having
respective fields for storing a local calling area identifier 171,
an access code 173, a channel identifier 175, a callee identifier
177, a caller identifier 179, a caller username 183, a timeout 181,
and a timestamp 182. Generally, a record in the access code
association table 170 will be created for each access code that
identifies a channel (such as the channels 20, 22, and 24
illustrated in FIG. 1) that is configured or configurable to
establish communication through a gateway (such as the gateway 18
illustrated in FIG. 1) to an IP network (26 in FIG. 1) in response
to a call received at the channel. When a record is created in
respect of a channel, the local calling area identifier field 171
is preferably initialized with an identifier of a local calling
area associated with the channel, the access code field 173 is
preferably initialized with an access code associated with the
channel, and the channel identifier field 175 is preferably
initialized with an identifier of the channel. The remaining fields
(for storing a callee identifier 177, a caller identifier 179, a
caller username 183, a timeout 181, and a timestamp 182) are
preferably initialized with default "null" values when a record is
created. The fields for storing a local calling area identifier
171, an access code 173, a channel identifier 175 preferably remain
generally constant during ordinary operation of the access code
association table 170, although the values stored in the fields for
storing a callee identifier 177, a caller identifier 179, a caller
username 183, a timeout 181, and a timestamp 182 may vary as
described below. It will be appreciated that in some embodiments,
one or more of the fields for storing a local calling area
identifier 171, a channel identifier 175, a caller identifier 179,
a caller username 183, a timeout 181, and a timestamp 182 may not
be required and be omitted.
[0167] As noted above, the local calling area identifier field 171
is preferably initialized with an identifier of a local calling
area associated with the channel. The local calling area identifier
field 171 preferably stores codes that are encoded in the same
manner as the codes in the local calling area identifier store 245,
as described above, so that an access code in the local calling
area identified by the codes in the local calling area identifier
store 245 may be identified by searching the access code
association table 170 for an access code associated with a local
calling area identifier in the associated local calling area
identifier field 171 that matches the local calling area identifier
in the local calling area identifier store 245. It has been found
that information available from web sites such as
http://en.wikipedia.org/wiki/List_of_NANP_area_codes, and services
available from web sites such as
http://www.serviceobjects.com/demos/PhoneExchangeDemo.asp, for
example, may be used to determine a local calling area identifier
associated with a given access code where, for example, the access
code is a PSTN telephone number.
[0168] In the exemplary access code association table 170, the
access codes in the access code fields 173 are telephone numbers
for PSTN lines, three of which are in the 604 area code in
Vancouver, British Columbia, Canada, and two of which are in the
416 area code in Toronto, Ontario, Canada. It will be appreciated
that the access code association table 170 is an example only, and
other access code association tables may include any number of
access codes, which need not be PSTN telephone numbers, and which
need not be limited to particular geographical areas.
[0169] In the exemplary access code association table 170, the
access code field 173 in the record 174 stores an access code
1-604-345-2323, which may be a local telephone number for
Vancouver, British Columbia, Canada, and the callee identifier
field 177 of the record 174 stores a callee identifier
1-403-789-1234, which may be a telephone number for a callee in
Calgary, Alberta, Canada for example, thereby associating the
callee identifier 1-403-789-1234 with the access code
1-604-345-2323. Furthermore, the caller identifier field 179 of the
record 174 stores a caller identifier 1-416-444-1441 and the caller
username field 183 stores a caller username 2001 1050 8667, thereby
associating the caller identifier 1-416-444-1441 and caller
username 2001 1050 8667 with the aforementioned access code and
callee identifier. The caller identifier 1-416-444-1441 may be
associated with a mobile telephone normally geographically located
in Toronto, Ontario, Canada, but which may be in Vancouver and is
therefore using a Vancouver-based access code to place a call to a
Calgary-based number, for example. In the example record 174, the
timestamp field 182 indicates that the callee identifier
1-403-789-1234, the caller identifier 1-416-444-1441, and the
caller username 2001 1050 8667 were associated with the access code
1-604-345-2323 on Jun. 15, 2008 at 10:31 am, and the timeout field
181 indicates that this association is to expire 10 minutes after
the time indicated in the timestamp field.
[0170] Likewise, the exemplary record 178 indicates that the callee
identifier 1-604-321-1234, the caller identifier 1-416-444-1234,
and the caller username 2001 1050 4141 were associated with the
access code 1-416-234-4646 on Jun. 15, 2008 at 2:21 pm, and the
timeout field 181 of the record 178 indicates that this association
is to expire within 10 minutes of the time in the timestamp field
182.
[0171] It will also be appreciated that the access code association
table 170 may, in other embodiments, be substituted with other data
structures or storage media. For example, in alternative
embodiments, as described below, a DID record of the type shown at
370 in FIG. 11 may associate an access code with a callee
identifier and with other information such as a caller identifier,
a timeout value, and a timestamp value, additionally or
alternatively to the access code association table 170.
DID Bank Table Records
[0172] As described in PCT Publication No. 2008/052340, a DID bank
table record may be created and stored in a DID bank table in the
database (23 in FIG. 1) when a user registers with the system, to
associate the username of the user and a host name of the node with
which the user is associated, with a number on the PSTN network
formatted in compliance with the E.164 standard set by the
International Telecommunication Union (ITU). However, as explained
below, DID records may, in some embodiments, also associate
usernames and host names with respective access codes, and may also
associate access codes with respective callee identifiers and with
other information such as caller identifiers, timeout values, and
timestamp values.
[0173] Referring to FIG. 11, an exemplary DID bank table record is
shown generally at 370, and includes a username field 371, a user
domain field 372, and a DID field 373. The username field 371 may
store a username of a user of the system, in which case the user
domain field 372 stores a host name of the node with which the user
is associated, and the DID field 373 stores an E.164 number on the
PSTN network associated with the user. Exemplary host names stored
in the user domain field 372 include sp.yvr.digifonica.com for
Vancouver, British Columbia, Canada and sp.lhr.digifonica.com for
London England, for example, as described in PCT Publication No.
2008/052340. If the user has multiple telephone numbers, then
multiple records of the type shown at 370 would be included in the
DID bank table, each having the same username and user domain, but
different DID field 373 contents reflecting the different telephone
numbers associated with that user.
[0174] However, DID fields 373 of DID bank table records 370 may
also store access codes, in which case the username field 371 may
store a username associated with the access code. In these DID bank
table records 370, the user domain field 372 stores a host name of
the node with which the access code is associated. Therefore, DID
bank table records 370 may, in some embodiments, associate
usernames and host names with respective access codes.
[0175] The exemplary DID bank table record 370 further includes a
callee identifier field 374, a caller identifier field 375, a
timeout field 376, a timestamp field 377, a local calling area
identifier field 378, a channel identifier field 379, and a caller
username field 381, which may be used in an analogous manner to the
callee identifier field 177, the caller identifier field 179, the
timeout field 181, the timestamp field 182, the local calling area
identifier field 171, the channel identifier field 175, and the
caller username field 183 respectively of the access code
association table 170 illustrated in FIG. 10. The DID bank table
records 370 may thus associate access codes with respective local
calling area identifiers, callee identifiers, caller identifiers,
caller usernames, timeouts, and timestamps, although the caller
identifier field 375, timeout field 376, timestamp field 377, local
calling area identifier field 378, channel identifier field 379,
and caller username field 381 may not be necessary, and one or more
of these fields may be omitted in some embodiments.
[0176] Furthermore, it will be appreciated that the callee
identifier field 374, caller identifier field 375, timeout field
376, and timestamp field 377 of the DID bank table record 370 may
be omitted for DID table records that are not in respect of access
codes, but rather are in respect of telephone numbers of users of
the system, for example, as described in PCT Publication No.
2008/052340. The callee identifier field 374, caller identifier
field 375, timeout field 376, and timestamp field 377 of the DID
bank table record 370 may also be omitted in embodiments where the
access code association table 170 includes records with these types
of fields.
[0177] For simplicity, the following description is directed to
embodiments wherein an access code association table 170 associates
access codes with respective callee identifiers, caller
identifiers, timeout values, and timestamp values. However, it will
be appreciated that the processes described herein for records in
the access code association table 170 may additionally or
alternatively be applied to DID bank table records 370 in an
analogous manner.
Access Code Generator
[0178] Referring back to FIGS. 1, 4, and 8 in the illustrated
embodiment as described above, the access server 14 transmits (at
block 196 illustrated in FIG. 7) an access code request message 110
to the routing controller 30 in order to obtain from the routing
controller 30 an access code. When an access code request message
110 is received at the access server interface 242, the processor
232 preferably authenticates the user by making various enquiries
of databases to which it has access, to determine whether or not
the password in the password field 114 of the access code request
message 110 matches a password stored in the database in
association with the username in the username field 112. Various
functions may be used to pass encryption keys or hash codes back
and forth to ensure that the transmittal of passwords is secure. If
the user is successfully authenticated, the processor 232 then
preferably produces an access code.
[0179] Referring to FIGS. 8 and 12, a process for producing an
access code is shown generally at 270. Essentially the process 270
determines whether the access code in a given record (referred to
below as the "currently addressed record") in the access code
association table shown at 170 in FIG. 10 is within the local
calling area identified by the local calling area identifier store
245, and whether the access code is currently available for
association with a callee identifier. In order to produce an access
code in response to receiving an access code request message (110)
from the access server (14), the processor 232 of the routing
controller (30) preferably searches the pool of access codes in the
access code association table (170) to identify an access code
identifying a channel usable by the mobile telephone (12) to
initiate a call to the callee, using the process 270 until an
available access code in the local calling area identified by the
local calling area identifier store 245 is identified. The access
code generator thus preferably selects an access code from the pool
of access codes in the access code association table (170), and
preferably selects an access code in a local calling area
associated with the mobile telephone (12).
[0180] Starting with the first record in the access code
association table, the process 270 begins at block 272, which
directs the processor 232 of the routing controller (30) to
determine whether the access code in the currently addressed record
of the access code association table 170 is associated with the
same local calling area as the mobile telephone (12) as identified
by the contents of the local calling area identifier store 245. If
at block 272 the access code of the currently addressed record is
not associated with the same local calling area as the mobile
telephone (12), the process 270 ends, the next record in the access
code association table 170 is addressed, and the process is
repeated for the next record in the access code association
table.
[0181] However, if at block 272 the access code of the currently
addressed record is associated with the same local calling area as
the mobile telephone (12), or if the access code request message
110 (illustrated in FIG. 4) did not include a local calling area
identifier, then the process 270 continues at block 274, which
directs the processor 232 to determine whether the access code of
the currently addressed record is associated with a callee
identifier. To do this, the processor 232 determines whether the
callee identifier field (177) of the currently addressed record
stores a "null" value that was assigned to it on initialization, or
whether the callee identifier field instead stores a callee
identifier. In other words the processor checks to see whether the
currently addressed record has already been in use.
[0182] If at block 274 the callee identifier field (177) of the
currently addressed record in the access code association table
(170) does store a callee identifier and not the "null" value that
was assigned to the callee identifier field on initialization (for
example, records 174 and 178 in FIG. 10), then the access code of
that record is associated with a callee identifier, and the process
270 continues at block 278, which directs the processor 232 to
determine whether the association of the callee identifier with the
access code has expired. In the illustrated embodiment, the codes
at block 278 direct the processor 232 to determine whether the sum
of the contents of the timestamp field (182) and of the timeout
field (181) in the currently addressed record of the access code
association table 170 (shown in FIG. 10) is less than the current
time represented by the clock 244. If at block 278 the sum of the
timeout and timestamp fields in the currently addressed record of
the access code association table 170 is less than the time
represented by the clock 244, then the association of the callee
identifier with the access code is not expired and the process 270
ends, the next record in the access code association table (170) is
addressed, and the process 270 is repeated for the next record in
the access code association table.
[0183] However, if at block 278 the sum of the contents of the
timeout and timestamp fields (181 and 182) in the currently
addressed record of the access code association table (170) is not
less than the time represented by the clock 244, then the
association of the callee identifier with the access code has
expired, and the process 270 continues at block 276 which directs
the processor 232 to store the contents of the access code field
173 of the currently addressed record in the access code store 250
of the temporary memory 240 of the routing controller 30.
[0184] Referring to FIGS. 8, 10, and 12, if at block 274 the callee
identifier field in the currently addressed record does not store a
callee identifier but stores instead the "null" value that was
assigned to the callee identifier field on initialization (for
example, records 172, 176, and 180), then the access code of that
record is not associated with a callee identifier, and the process
270 continues at block 276, which directs the processor 232 to
store the access code from the access code field 173 of the
currently addressed record, in the access code store 250 in the
temporary memory 240.
[0185] After the selected access code is stored in the access code
store 250 at block 276, the process 270 continues at block 280,
which directs the processor 232 to store the callee identifier from
the callee identifier store 246 in the callee identifier field 177
of the currently addressed record, thereby creating an association
of the callee identifier with the selected access code.
[0186] The process 270 then continues at block 282, which directs
the processor 232 to store the caller identifier from the caller
identifier store 248 (which identifies the mobile telephone 12
shown in FIG. 1) in the caller identifier field 179 of the
currently addressed record of the access code association table
170, thereby also storing the caller identifier in association with
the selected access code.
[0187] The process 270 then continues at block 283, which directs
the processor 232 to store the caller username from the caller
username store 249 in the caller username field 183 of the
currently addressed record of the access code association table
170, thereby also storing the caller username in association with
the selected access code.
[0188] The process 270 then continues at block 284, which directs
the processor 232 to store timeout and timestamp values in the
timeout and timestamp fields 181 and 182 of the currently addressed
record of the access code association table 170, thus further
storing, in association with the selected access code, a timestamp
for use in determining when the usability of the access code to
initiate a call to the callee will expire. A default value, such as
10 minutes, for example may be stored in the timeout field 181 of
the currently addressed record. Also, the current time indicated by
the clock 244 is preferably stored in the timestamp field 182 of
the currently addressed record.
[0189] In alternative embodiments, the access code association
table (170) might not include fields for a caller identifier,
caller username, a timeout, or a timestamp. In these embodiments,
one or more of blocks 282, 283, and 284 described above are not
necessary, and one or more of the caller identifier store 248 and
the caller username store 249 may be omitted.
[0190] In summary, the access code generator in the illustrated
embodiment responds to receiving an access code request message 110
illustrated in FIG. 4 from the access server (14) by first
authenticating the user, and then by searching through a pool of
access codes, using the process 270 shown in FIG. 12, to identify
an access code that is associated with the local calling area
identified by the local calling area identifier store (245) and
that is not previously and validly associated with another callee
identifier. It will be appreciated that in alternative embodiments,
different data structures and algorithms may be preferable for
identifying an access code that meets the aforementioned criteria.
For example, in accordance with conventional database design that
is well-known in the art, the records illustrated in the access
code association table 170 illustrated in FIG. 10 may alternatively
be organized in a binary tree according to the value in the local
calling area identifier field 171, or in separate tables for
respective local calling area identifiers, for example, in order to
enable a more efficient search of the access code association table
for an access code that satisfies the aforementioned criteria.
Therefore, the access code association table (170) and the process
270 illustrated in FIG. 12 are examples only, and one of ordinary
skill in the art will readily appreciate numerous alternative data
structures and algorithms.
Gateway
[0191] Referring to FIG. 13, in this embodiment, the gateway (18)
includes a processor circuit shown generally at 300, which includes
a microprocessor 302. The processor circuit 300 also includes a
program memory 304, a memory 305, and an I/O port 306, all of which
are in communication with the microprocessor 302. The processor
circuit 300 may include multiple processors etc., and the
aforementioned components of the processor circuit 300 may
alternatively be combined.
[0192] The I/O port 306 includes a channel interface 308, which, in
the illustrated embodiment, is in communication with the channels
20, 22, and 24 that were also illustrated in FIG. 1. Where, as in
the illustrated embodiment, the channels 20, 22, and 24 are PSTN
telephone lines in the PSTN network 29, the channel interface 308
may, for example, be a T1 port for communication with one or more
T1 lines (illustrated at 27 in FIG. 1) of a PSTN service provider,
in a manner well-known in the art. The I/O port in the illustrated
embodiment also includes an internet interface 309 for interfacing
with the Internet Protocol (IP) network 26 illustrated in FIG. 1.
The program memory 304 stores blocks of codes for directing the
microprocessor 302 to carry out the functions of the gateway (18).
It has been found that the AS5350 Universal Gateway available from
Cisco Systems, Inc. of San Jose, Calif. may, for example, be
suitable as the gateway (18).
[0193] Referring back to FIG. 1, and also still to FIG. 13, when a
call is received on one of the channels 20, 22, or 24, the
microprocessor 302 causes the I/O port 306 to use the internet
interface 309 to send a Session Initiation Protocol (SIP) Invite
message to a pre-determined node with which the gateway 18 is
associated, which in the illustrated embodiment is the first node
11. Generally, the gateway 18 will be associated with a node that
is geographically closest to the gateway, in order to minimize
transmission times over the IP network 26. In response to the SIP
Invite message, the call controller 13 sends an RC request message
to the routing controller 30 which makes various enquiries of the
database 23 to produce a routing message that is sent back to the
call controller 13. The call controller 13 then communicates with
the media relay 28 to cause a communications link including an
audio path (and a videopath if a videophone call) to be established
through the media relay to the same node, a different node, or to a
communications supplier gateway as shown generally at 34 to carry
audio, and where applicable, video traffic to the call recipient or
callee.
[0194] Referring to FIG. 14, an exemplary SIP Invite message is
shown generally at 310 and includes a caller identifier field 312,
a callee identifier field 314, a digest parameter field 315, a call
identifier field 316, an IP address field 317, and a gateway UDP
port field 318. Examples of values for the fields in the SIP Invite
message 310 are shown for illustration purposes only in FIG. 14.
The caller identifier in the caller identifier field 312 is
preferably in the form of the telephone number of the caller
followed by the "@" symbol, which in turn is followed by the IP
address of the gateway (18) in the IP network (26). The caller
identifier may be determined by retrieving calling line
identification (CLID) information from the signal provided by the
PSTN network (29) to the gateway (18) for example. Where the caller
identification information is not available to the gateway (18),
the caller identifier in the caller identifier field 312 preferably
includes a pre-assigned number (such as 11111, for example)
indicating that the caller identification information was not
available, followed by the "@" symbol and then by the IP address of
the gateway (18).
[0195] The callee identifier in the callee identifier field 314 is
the access code identifying the channel (20, 22, or 24 in the
example of FIG. 1) on which the call was placed, and which was
received from the access server (14). In the illustrated example,
the access code is the PSTN telephone number 1-604-345-1212
corresponding to the channel 20 illustrated in FIG. 1, and to the
access code stored in the access code field 173 of the record 172
in the exemplary access code association table 170 illustrated in
FIG. 10.
[0196] The digest parameter in the digest parameter field 315 is
generated by the gateway (18) and may uniquely identify the SIP
session that is initiated with the SIP Invite message 310.
[0197] The call identifier in the call identifier field 316 is, in
the illustrated embodiment, a four-digit hexadecimal number
generated by the gateway (18) to identify the call, followed by the
"@" symbol, which in turn is followed by the IP address of the
gateway.
[0198] The IP address in the IP address field 317 is the IP address
of the gateway (18) in the IP network (26), and the gateway UDP
port number in the gateway UDP port field 318 includes a UDP port
identifier identifying a UDP port at which the audio/video path
will be terminated at the gateway (18).
[0199] It should be noted that throughout the description of the
embodiments of this invention, the IP/UDP addresses of all elements
such as the gateway (18) 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
gateway (18) will have an IP/UDP address directly accessible by the
call controllers and the media relays on their respective nodes,
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.
[0200] 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, the gateway (18) may be
assigned an IP address such as 192.168.0.5. This address is located
in so called "non-routable" (IP) address space and cannot be
accessed directly from the Internet. In order for this device to
communicate with other computers located on the Internet, the IP
address has to be converted into a "public" IP address, for example
24.14.102.5 assigned by the Internet Service Provider, by a device
performing NAT, typically a router. In addition to translating the
IP address, NAT typically also translates UDP port numbers, for
example an audio path originating at the gateway (18) 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 gateway
(18) arrives at an Internet-based node, the source IP/UDP address
contained in the IP packet header will be 24.14.102.5:23465,
whereas the source IP/UDP address information contained in the SIP
message inside this IP packet will be 192.168.0.5:12378. The
mismatch in the IP/UDP addresses may cause a problem for SIP-based
VoIP systems because, for example, a node will attempt to send
messages to a private address but the messages will never get
there.
Call Controller
[0201] Referring to FIG. 15, the call controller (13) includes a
processor circuit shown generally at 320. The processor circuit 320
includes a microprocessor 322, program memory 324, and an I/O port
326. The program memory 324 and the I/O port 326 are in
communication with the microprocessor 322. The processor circuit
320 may include a plurality of microprocessors, a plurality of
program memories, and a plurality of I/O ports to be able to handle
a large volume of calls. However, for simplicity, the processor
circuit 320 will be described as having only one microprocessor
322, program memory 324, and I/O port 326, it being understood that
there may be more.
[0202] Generally, the I/O port 326 includes an input 328 for
receiving messages such as the SIP Invite message from the gateway
(18) or from a VoIP telephone (36 in FIG. 1, for example). The I/O
port 326 also has an RC request message output 330 for transmitting
an RC request message to the routing controller 30 of FIG. 1, an RC
message input 332 for receiving routing messages from the routing
controller 30, a gateway output 334 for transmitting messages to
the gateway 18 and/or 34 shown in FIG. 1 to advise the gateway 18
and/or 34 to establish an audio path, for example, and a gateway
input 336 for receiving messages from the gateway 18 and/or 34. The
I/O port 326 further includes a SIP output 338 for transmitting
messages to the gateway (18 and/or 34) or VoIP telephone (36, for
example) to advise the gateway 18 and/or 34 or IP telephone of the
IP addresses of the gateways which will establish the audio/video
path. The I/O port 326 further includes a voicemail server input
and output 340 and 342 respectively for communicating with the
voicemail server 19 shown in FIG. 1.
[0203] 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 routing
controller (30) and received from the routing controller (30) may
be transmitted and received on the same single IP port.
[0204] The program memory 324 includes blocks of code for directing
the microprocessor 322 to carry out various functions of the call
controller (13). For example, these blocks of code include a first
block 344 for causing the processor circuit 320 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 346 which causes the
processor circuit 320 of the call controller to produce a gateway
query message in response to a received routing message from the
routing controller (30).
[0205] Referring to FIGS. 15 and 16, the SIP Invite to RC Request
process is shown in more detail at 344. On receipt of a SIP Invite
message of the type shown in FIG. 14, block 350 directs the
processor circuit 320 to produce an RC Request Message. Block 352
then directs the processor circuit 320 to cause the RC Request
Message to be sent to the routing controller 30 illustrated in FIG.
1.
[0206] Referring to FIG. 17, an exemplary RC request message is
shown generally at 360 and includes a caller identifier field 362,
a callee identifier field 364, a digest parameters field 366, and a
call identifier field 368. These fields may be populated with the
contents of the caller identifier field 312, callee identifier
field 314, digest parameter field 315, and call identifier field
316 respectively of the SIP Invite message 310 illustrated in FIG.
14. In other embodiments, the RC request message may further
include a type field (not shown) containing a type code to indicate
whether the call is from a third party or from a system subscriber.
Other variations of an RC request message are explained in PCT
Publication No. WO 2008/052340. A type field (not shown) in the RC
request message 360 may be advantageous in embodiments where SIP
Invite messages may also be received from an IP telephone that is
using VoIP software to make a voice call. However, in the
embodiments that are illustrated herein, SIP Invite messages
originate from the gateway (18), and therefore a type designation
is not necessary and may be omitted from the RC request message
360. In embodiments where a SIP Invite message may be received from
an IP telephone, the SIP invite to RC request process shown in FIG.
16 may require additional steps, as illustrated in FIG. 5 of PCT
Publication No. WO 2008/052340.
RC Request Message Handler
[0207] As illustrated in FIG. 8, the program memory 234 includes an
RC request message handler 380 which directs the routing controller
(30) to produce a routing message in response to a received RC
request message (360). Referring to FIG. 18A, the RC request
message handler 380 begins with a first block 382 that directs the
RC processor circuit (230) to separately store the contents of the
callee identifier field 364 and caller identifier field 362 of the
RC request message (360) in the callee identifier store 246 and the
caller identifier store 248 respectively of FIG. 8.
[0208] Block 384 then directs the RC processor circuit (230) to use
the contents of the caller username store 249 to locate and
retrieve from the database (23) a dialing profile 200 associated
with the caller, as described above and illustrated in FIG. 9, for
example. The retrieved dialing profile may then be stored in the
temporary memory 240, for example.
[0209] The RC request message handler 380 continues at block 386,
which directs the processor circuit (230) of the routing controller
to determine whether the contents of the current number of
concurrent calls field 222 of the dialing profile 200 shown in FIG.
9 are less than the contents of the maximum number of concurrent
calls field 220 of the dialing profile for the caller and, if so,
block 388 directs the processor circuit to increment the contents
of the current number of concurrent calls field 222 and the
processor circuit (230) is directed to point A in FIG. 18B. If the
contents of the current number of concurrent calls field 222 are
equal to or greater than the contents of the maximum number of
concurrent calls field 220, then block 390 directs the processor
circuit (230) to send an error message back to the call controller
(13) to cause the call controller to notify the caller that the
maximum number of concurrent calls has been reached and no further
calls can exist concurrently, including the presently requested
call.
[0210] Assuming that block 386 allows the call to proceed, the RC
processor circuit (230) is directed to perform certain checks on
the callee identifier in the callee identifier field 246 in FIG. 8.
These checks are shown in greater detail in FIG. 18B.
[0211] Referring to FIG. 18B, the RC processor circuit (230) is
directed to a first block 392 that causes it to determine whether a
digit pattern of the callee identifier includes a pattern that
matches the contents of the international dialing digits (IDD)
field 208 in the dialing profile 200 (shown in FIG. 9) associated
with the caller. If so, then block 394 directs the RC processor
circuit (230) to set a call type code identifier variable
maintained by the processor to indicate that the call is an
international call, and block 396 directs the processor to produce
a reformatted callee identifier by reformatting the callee
identifier into a predefined digit format. In this embodiment, this
is done by removing the pattern of digits matching the IDD field
contents (208) of the caller dialing profile 200 to effectively
shorten the callee identifier. Then, block 398 directs the RC
processor circuit (230) to determine whether or not the callee
identifier has a length which meets criteria establishing it as a
number compliant with the E.164 Standard set by the ITU. If the
length does not meet these criteria, then block 400 directs RC
processor circuit (230) to send back to the call controller (13) a
message indicating the length is not correct. The process 380 is
then ended. At the call controller 13, routines (not shown) stored
in the program memory 324 may direct the processor circuit (320 of
FIG. 15) to respond to the incorrect length message by transmitting
a message back to the mobile telephone (12 shown in FIG. 1) to
indicate that an invalid number has been dialed.
[0212] If the length of the amended callee identifier meets the
criteria set forth at block 398, then block 402 directs the RC
processor circuit (230) to make a database request to the database
(23) to determine whether or not the amended callee identifier is
found in the DID field (373) of a record such as shown in FIG. 11
in the DID bank table. If at block 402 the RC processor circuit
(230) receives a response from the database (23) indicating that
the reformatted callee identifier produced at block 396 is found in
the DID field (373) of a record in the DID bank table, then the
callee is a subscriber to the system and the call is classified as
a private network call by directing the processor to block 404,
which directs the RC processor circuit (230) to copy the contents
of the corresponding username field (371 in FIG. 11) from the
callee DID bank table record (370 in FIG. 11) into the callee
identifier store (246 in FIG. 8). Thus, the RC processor circuit
(230) locates a subscriber username associated with the reformatted
callee identifier. The processor (232) is then directed to point B
in FIG. 18A.
Calls to Subscribers in Different Nodes
[0213] Referring back to FIG. 1, as noted above, the gateway 18 is
preferably associated with a pre-determined node, which in the
illustrated embodiment is the first node 11. Referring back to FIG.
18A, block 406 directs the processor (232 of FIG. 8) to execute a
process to determine whether or not the node associated with the
reformatted callee identifier in the callee identifier store (246
in FIG. 8, which, at block 404, was set to be a username of the
callee) is the same node that is associated with the gateway 18
illustrated in FIG. 1.
[0214] To do this, the processor (232) may, for example, identify a
node associated with the gateway (18) by using an IP address
associated with the gateway to determine a node identifier of the
gateway. An IP address associated with the gateway (18) may, for
example, be obtained from either the caller identifier field 362 or
the call identifier field 368 of the RC request message 360
illustrated in FIG. 17, as each of these fields includes a portion
following an "@" symbol that indicates an IP address of the
gateway. In order to determine a node identifier associated with
the gateway (18) using the IP address associated with gateway (18),
the processor 232 (illustrated in FIG. 8) may access a gateway node
association table stored in the database 23 (illustrated in FIG.
1).
[0215] Referring to FIG. 19, an exemplary gateway node association
table is shown generally at 480. The exemplary gateway node
association table 480 includes first and second records 482 and
484, each having a respective gateway IP address field 486 and a
respective node identifier field 488. It will be appreciated that
the exemplary gateway node association table 480 is an example for
illustration purposes only. The values in the gateway IP address
fields 486 are preferably initialized when a gateway (such as the
gateway 18 illustrated in FIG. 1) is installed as part of the
system (10), and are preferably updated as the IP addresses of the
respective gateways may change from time to time. The values in the
node identifier fields 488 are also preferably initialized when a
gateway (such as the gateway 18 illustrated in FIG. 1) is installed
as part of the system (10).
[0216] As indicated above, the reformatted callee identifier in the
callee identifier store (246 in FIG. 8) was set at block 404 in
FIG. 18B to be a username of the callee from the username field 371
(illustrated in FIG. 11), and in this embodiment, a prefix of the
username of the callee preferably indicates a node associated with
the callee. In the illustrated embodiment, the left-most digit in
the username of the callee is a continent code, which is a
sufficient prefix to identify a node associated with the callee.
However, it will be appreciated that in other embodiments, other
prefixes or other information may identify the associated node.
Preferably, the values in the node identifier fields 488 correspond
to the prefixes of the usernames in the username fields 371
(illustrated in FIG. 11), so that the node associated with the
callee is the same node that is associated with the gateway 18
illustrated in FIG. 1 if the prefix of the username of the callee
matches the node identifier associated with the gateway (18).
Therefore, in the illustrated embodiment, if the reformatted callee
identifier in the callee identifier store (246 in FIG. 8) is 2001
1050 8667, for example, then in the example of FIG. 19, the node
associated with the callee is the same node as the node identified
by the continent code "2" that is associated with the gateway
associated with the IP address 20.14.102.5 in the record 482, but
is not the same node as the node identified by the continent code
"5" that is associated with the gateway associated with the IP
address 104.12.131.12 in the record 484.
[0217] Referring back to FIG. 18A, if at block 406 the prefix of
the username of the callee does not match the node identifier
associated with the gateway (18), then the call is a "cross-domain"
call, and block 408 in FIG. 18A directs the processor (232 in FIG.
8) to set a call type flag in the temporary memory (240 in FIG. 8)
to indicate the call is a cross-domain call. Then, block 410 of
FIG. 18A directs the processor (232 of FIG. 8) to produce a routing
message identifying an address on the private network with which
the callee identified by the contents of the callee ID buffer is
associated and to set a time to live for the call at a maximum
value of 99999, for example. Routing messages and time to live
values, and also a method of determining the node in the system
with which the callee is associated, are further described in PCT
Publication No. WO 2008/052340. Once a routing message is produced
at block 410, block 412 directs the processor (232 in FIG. 8) to
cause the routing message to be sent to the call controller 13
shown in FIG. 1, and the process ends.
[0218] Referring back to FIG. 18B, if at block 392, the callee
identifier stored in the callee identifier store (246 in FIG. 8)
does not begin with an international dialing digit, then block 414
directs the processor (232) to determine whether or not the callee
identifier begins with the same national dial digit code as
assigned to the caller. To do this, the processor (232) is directed
to refer to the retrieved caller dialing profile as shown in FIG.
9. In FIG. 9, the national dialing digit code 206 is the number 1.
Thus, if the callee identifier begins with the number 1, then the
processor (232) is directed to block 416 in FIG. 18B.
[0219] Block 416 directs the processor (232 of FIG. 8) to examine
the callee identifier to determine whether or not the digits
following the NDD digit identify an area code that is the same as
any of the area codes identified in the local area codes field 212
of the caller dialing profile 200 shown in FIG. 9. If not, block
418 of FIG. 18B directs the processor (232) to set the call type
flag to indicate that the call is a national call. If the digits
following the NDD digit identify an area code that is the same as a
local area code associated with the caller as indicated by the
caller dialing profile, block 420 directs the processor (232) to
set the call type flag to indicate a local call, national style.
After executing block 418 or 420, block 422 directs the processor
(232) to format the callee identifier into a pre-defined digit
format to produce a re-formatted callee identifier by removing the
national dialed digit and prepending a caller country code
identified by the country code field 210 of the caller dialing
profile shown in FIG. 9. The processor (232) is then directed to
block 398 of FIG. 18B to perform other processing as already
described above.
[0220] If at block 414, the callee identifier does not begin with a
national dialed digit, block 424 directs the processor (232) 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 FIG. 9. The
processor (232) determines whether or not the first few digits of
the callee identifier identify an area code corresponding to the
contents of any area code identifier stored in the local area code
field 212 of the retrieved caller dialing profile 200 (illustrated
in FIG. 9). If so, then block 426 directs the processor (232) to
set the call type flag to indicate that the call is a local call.
It should be noted that the call will not necessarily be a local
call in every case where the first few digits of the callee
identifier identify an area code corresponding to the contents of
an area code identifier stored in the local area code field 212
(illustrated in FIG. 9), and other determinations of when a call is
to be considered local may be appropriate. However, it has been
found that the determination described above for block 424 is
satisfactory for some purposes. Next, block 428 directs the
processor (232) to format the callee identifier into a pre-defined
digit format to produce a reformatted callee identifier by
prepending the caller country code to the callee identifier, the
caller country code being determined from the country code field
210 of the retrieved caller dialing profile 200 shown in FIG. 9.
The processor (232) is then directed to block 398 for further
processing as described above.
[0221] If at block 424, the callee identifier does not start with
the same area code as the caller, block 430 directs the processor
(232 of FIG. 8) to determine whether the number of digits in the
callee identifier, i.e. the length of the callee identifier, is
within the range of digits indicated by the caller minimum local
number length field 214 and the caller maximum local number length
field 216 of the retrieved caller dialing profile 200 shown in FIG.
9, and whether there is more than one area code identifier stored
in the local area code field 212 of the retrieved caller dialing
profile. If the number of digits in the callee identifier is within
the aforementioned range and there is only one area code identifier
stored in the local area code field (212), then block 432 directs
the processor (232) to set the call type flag to indicate a local
call and block 434 directs the processor (232) to format the callee
identifier into a pre-defined digit format to produce a reformatted
callee identifier by prepending to the callee identifier the caller
country code (as indicated by the country code field 210 of the
retrieved caller dialing profile 200 shown in FIG. 9) followed by
the caller area code as indicated by the local area code stored in
the local area code field 212 of the caller dialing profile 200
shown in FIG. 9. The processor (232) is then directed to block 398
of FIG. 18B for further processing as described above.
[0222] If at block 430, the callee identifier has a length that
does not fall within the range specified by the caller minimum
local number length field (214 in FIG. 9) and the caller maximum
local number length field (216 in FIG. 9), or if there is more than
one area code identifier stored in the local area code field 212 of
the retrieved caller dialing profile 200 illustrated in FIG. 9,
then block 436 directs the processor (232) to send an error message
back to the call controller (13), and the process ends.
[0223] In alternative embodiments, such as those illustrated in PCT
Publication No. WO 2008/052340, an additional block (402 in FIG. 8B
of PCT Publication No. WO 2008/052340) may determine whether the
callee identifier is a valid username. However, in the embodiment
disclosed herein, the callee identifier is assumed to be a
telephone number of the callee, and not a username.
[0224] From FIG. 18B, it will be appreciated that there are certain
groups of blocks of codes that direct the processor 232 in FIG. 8
to determine whether the callee identifier has certain features
such as an international dialing digit, a national dialing digit,
an area code and a length that meet certain criteria, and cause the
processor 232 to reformat the callee identifier stored in the
callee identifier store 246 in FIG. 8, as necessary into a
predetermined target format including only a country code, area
code, and a normal telephone number, for example, to cause the
callee identifier to be compatible with the E.164 number plan
standard in this embodiment. This enables block 402 in FIG. 18B to
have a consistent format of callee identifiers for use in searching
through the DID bank table records 370 of the type shown in FIG. 11
to determine how to route calls to subscribers on the same system.
Effectively, therefore blocks 392, 414, 424, and 430 establish call
classification criteria for classifying the call as a public
network call or a private network call. Block 402 classifies the
call, depending on whether or not the formatted callee identifier
has a DID bank table record, and this depends on how the call
classification criteria are met.
Calls to Non-Subscribers
[0225] Not all calls will be to subscribers, and this will be
detected by the processor 232 of FIG. 8 when it executes block 402
in FIG. 18B, and does not find a DID bank table record (370
illustrated in FIG. 11) that is associated with the callee, in the
DID bank table. When this occurs, the call is classified as a
public network call, by directing the processor (232) to point C in
FIG. 18C.
[0226] Referring to FIG. 18C, block 438 directs the processor (232)
to determine whether the formatted callee identifier in the callee
identifier store 246 in FIG. 8 corresponds to an access code in the
access code field 173 of a record in the access code association
table 170 illustrated in FIG. 10 that is associated with a callee
identifier. Because the callee identifier in the callee identifier
store 246 in FIG. 8 has been formatted as described above with
reference to FIG. 18B, block 438 may involve determining whether an
access code in the access code field 173 of a record of the access
code association table 170 (illustrated in FIG. 10) matches the
formatted callee identifier in the callee identifier store 246 in
FIG. 8, and also whether a callee identifier (as opposed to the
"null" value assigned on initialization) is stored in the callee
identifier field 177 in association with the access code. As noted
above, for simplicity, this description is directed to embodiments
wherein an access code association table 170 associates access
codes with respective callee identifiers, caller identifiers,
timeout values, and timestamp values, although it will be
appreciated that the processes described herein for records in the
access code association table 170 may additionally or alternatively
be applied to DID bank table records 370 in an analogous
manner.
[0227] If at block 438 the formatted callee identifier in the
callee identifier store 246 in FIG. 8 is the same as an access code
in the access code field (173) of a record of the access code
association table 170 illustrated in FIG. 10 that is associated
with a callee identifier, then block 440 directs the processor
(232) to determine whether the caller identifier in the caller
identifier store 248 (illustrated in FIG. 8) is the same as the
caller identifier in the caller identifier field (179) of the
record of the access code association table (170), and thus whether
the caller identifier in the caller identifier field (179) of the
record of the access code association table (170) identifies the
mobile telephone identified by the caller identifier in the caller
identifier store 248. If not, then block 442 directs the processor
(232) to send an error message to the call controller (13), and the
process ends.
[0228] But if at block 440 the caller identifier in the caller
identifier store 248 (illustrated in FIG. 8) corresponds to the
caller identifier in the caller identifier field (179) of the
record of the access code association table (170), then the routing
controller (30) will produce a routing message that will cause the
call controller to establish communication through the IP network
(26) to the callee in response to a call received at a channel (20,
22, or 24). Preferably, block 444 includes codes that direct the
processor (232) to determine whether the association of the access
code with the callee identifier has expired, and thus whether the
usability of the access code to initiate a call to the callee has
expired, in the manner described above for block 278 in FIG. 12. If
at block 444 the association of the access code with the callee
identifier has expired, then block 442 directs the processor (232)
to send an error message to the call controller (13), and the
process ends. Thus the routing controller produces a routing
message that causes the call controller to establish the call only
when the association of the access code with the callee identifier
has not expired.
[0229] It will be appreciated that in alternative embodiments, one
or more of the caller identifier, timeout, and timestamp fields
179, 181, and 182 may be omitted from the access code association
table 170 illustrated in FIG. 10, and in these embodiments, one or
more of the blocks 440, 442, and 444 may also be omitted.
[0230] If at block 444 the association of the access code with the
callee identifier has not expired, or if one or both of blocks 440
and 444 is omitted, then block 446 directs the processor (232) to
store the callee identifier from the callee identifier field 177 of
the record of the access code association table (170) in the callee
identifier store 246 illustrated in FIG. 8. The processor (232) is
then directed to point A in FIG. 18B to repeat the steps
illustrated in FIG. 18B using the callee identifier retrieved from
the callee identifier field (177) in the record of the access code
association table (170).
[0231] However, if at block 438 the formatted callee identifier in
the callee identifier store 246 in FIG. 8 does not correspond to an
access code in a record of the access code association table 170
illustrated in FIG. 10 that is associated with a callee identifier,
then block 448 of FIG. 18B causes the processor (232) to set the
contents of the callee identifier store 246 of FIG. 8 to be the
newly formatted callee identifier, i.e., a number compatible with
the E.164 standard. Then, block 450 of FIG. 18B directs the
processor (232) to generate a routing message identifying a gateway
to the public network usable by the call controller (13) to
establish a "public system" call. In one embodiment, block 450
includes codes that, for example, direct the processor (232) to
search a database of route or master list records and to search a
database of supplier records to identify at least one supplier
operable to supply a communications link for the call, and to load
a routing message buffer with supplier information, time to live
values, and timeout values. An example of an implementation of
these steps is described with reference to blocks 410, 412, 560,
562, 563, 564, 566, and 571 in FIGS. 8B and 8D in PCT Publication
No. WO 2008/052340. Next, block 452 directs the processor 232 of
FIG. 10 to send the routing message to the call controller 13 in
FIG. 1, and the process ends.
Calls to Subscribers within the Same Node
[0232] Referring back to FIG. 18A, if at block 406, the prefix of
the username of the callee matches the node identifier associated
with the gateway (18), then the call is on one domain, and block
454 directs the processor (232) to use the callee identifier in the
callee identifier store 246 illustrated in FIG. 8 (which, at block
404, was set to be a username of the callee) to locate and retrieve
a dialing profile for the callee. The dialing profile may be of the
type shown in FIG. 9, for example. Block 456 of FIG. 18A then
directs the processor 232 of FIG. 8 to get call block, call
forward, and voicemail records from the database 23 of FIG. 1,
based on the username identified in the callee dialing profile
retrieved by the processor at block 454. Exemplary call block, call
forward, and voicemail records are described in PCT Publication No.
WO 2008/052340.
[0233] Then block 458 directs the processor 232 of FIG. 8 to
determine whether or not the caller identifier received in the RC
request message matches a block pattern stored in the call block
record associated with the callee and retrieved at block 454. If
the caller identifier matches a block pattern, then block 460
directs the processor to send a drop call or non-completion message
to the call controller (13) and the process is ended. If the caller
identifier does not match a block pattern associated with the
callee, then block 462 directs the processor (232) to determine
whether or not call forwarding is required, as described in PCT
Publication No. WO 2008/052340.
[0234] If at block 462, the call forwarding record for the callee
indicates that no call forwarding is required, then the processor
(232) is directed to block 464, which directs the processor (232)
to generate a routing message identifying an address on the private
network, associated with the callee for a "private system" call. In
one embodiment, block 464 includes codes that, for example, direct
the processor (232) to store, in a routing message buffer, a
username and domain of the callee, time to live values, and an IP
address of the current node, to determine whether or not the user
identified by the callee identifier has paid for voicemail service
and if so, to store voicemail information in the routing message
buffer. An example of an implementation of these steps is described
with reference to blocks 609, 620, 640, 642, and 644 in FIGS. 8A
and 8C in PCT Publication No. WO 2008/052340, which is incorporated
herein by reference. Next, block 466 directs the processor 232 of
FIG. 8 to cause the routing message to be sent to the call
controller 13 in FIG. 1, and the process ends.
[0235] But if at block 462, the call forwarding record for the
callee indicates that call forwarding is required, then block 468
directs the processor (232) to search a dialing profile table to
find a dialing profile record as shown in FIG. 9, for the user
identified by the destination number field of the call forward
record, as illustrated in PCT Publication No. WO 2008/052340. The
processor (232) is further directed to store the username and
domain for that user and a time to live value in a routing message
buffer, an example of which is described in PCT Publication No. WO
2008/052340. This process is repeated for each call forwarding
record associated with the callee identified by the callee
identifier store 246 in FIG. 8 to add to the routing message buffer
all call forwarding usernames and domains associated with the
callee.
[0236] Referring to FIGS. 1, 18A, and 18C, the routing message sent
at one of blocks 412, 452, and 466 is received at the call
controller 13 and the call controller interprets the receipt of the
routing message as a request to establish a call. Referring to FIG.
15, the program memory 324 of the call controller 13 includes a
routing to gateway routine depicted generally at 346.
[0237] Where a routing message received at the call controller 13
is of the type produced at block 464 shown in FIG. 18A, indicating
that the callee is a system subscriber on the same node as the
gateway (18) (such as a user of the VoIP telephone 36 illustrated
in FIG. 1), the routing to gateway routine 346 may direct the
microprocessor 322 to cause a message to be sent back through the
IP network 26 shown in FIG. 1 to the VoIP telephone (36), using the
IP address of the VoIP telephone (36) that is available from the
callee username.
[0238] Alternatively, if the routing message received at the call
controller 13 is of the type produced at block 410 shown in FIG.
18A, identifying a domain associated with another node in the
system, the call controller 13 may send a SIP invite message along
the high speed/high data throughput link 17 in communication with
the other node. The other node may function as explained above and
in PCT Publication No. WO 2008/052340, in response to receipt of a
SIP invite message.
[0239] If the routing message received at the call controller 13 is
of the type produced at block 450 shown in FIG. 18C, indicating
that the callee is not a subscriber to the system (such as a user
of the PSTN telephone 32 that is in communication with the IP
network 26 through the gateway 34 as illustrated in FIG. 1), the
call controller sends one or more SIP invite messages to the
suppliers identified in the routing message to identify the IP
address of a supplier that is able to carry the call, such as the
IP address of the gateway 34 illustrated in the example of FIG. 1.
A process for identifying the IP address of a supplier that is able
to carry the call is given in PCT Publication No. WO 2008/052340,
which is incorporated herein by reference. In some cases, the
gateway of the supplier that is able to carry the call will be the
gateway 18 illustrated in FIG. 1, that is, the same gateway through
which the caller telephone (12) initiated the call. For simplicity,
the following description assumes that the gateways 18 and 34 are
distinct gateways. It will be understood that in some cases, they
may be the same gateway, but in these cases, the following steps
may still be applied.
[0240] Referring to FIG. 1, the IP address of the gateway 34 is
sent in a message from the call controller 13 to the media relay
28, which responds with a message indicating an IP address to which
the gateway 18 should send its audio/video traffic, and an IP
address to which the gateway 34 should send its audio/video for the
call. The call controller conveys the IP address at which the media
relay 28 expects to receive audio/video from the gateways 18 and
34, to the gateways 18 and 34 in one or more messages. The gateway
18 replies to the call controller 13 with an IP address at which it
would like to receive audio/video, and the call controller conveys
that IP address to the media relay 28. The call may then be
conducted between the caller and callee through the media relay 28
and the gateways 18 and 34.
[0241] If the call controller 13 receives a routing message of the
type produced at block 464 shown in FIG. 18A, indicating that the
callee is a system subscriber on the same node as the gateway (18)
(such as a user of the VoIP telephone 36 illustrated in FIG. 1),
and which has at least one call forwarding number and/or a
voicemail number, the call controller attempts to establish a call
to the callee VoIP telephone 36 by seeking from the callee
telephone a message indicating an IP address to which the media
relay 28 should send audio/video. If no such message is received
from the callee telephone, no call is established. If no call is
established within a pre-determined time, the call controller 13
attempts to establish a call with the next user identified in the
call routing message in the same manner. This process is repeated
until all call forwarding possibilities have been exhausted, in
which case the call controller communicates with the voicemail
server 19 identified in the routing message to obtain an IP address
to which the media relay 28 should send audio/video and the
remainder of the process mentioned above for establishing IP
addresses at the media relay and the caller telephone is carried
out to establish audio/video paths to allowing the caller to leave
a voicemail message with the voicemail server.
[0242] When an audio/video path through the media relay 28 is
established, a call timer maintained by the call controller 13
preferably 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.
Terminating the Call
[0243] Referring back to FIG. 1, in the event that the caller
terminates a call, the gateway 18 sends a SIP bye message to the
call controller 13. Similarly, in the event that the callee
terminates the call, the gateway 34 or the VoIP telephone 36 of the
callee sends a SIP bye message to the call controller 13. Exemplary
SIP bye messages are described in PCT Publication No. WO
2008/052340. The SIP bye message is received at the call controller
13, and the call controller executes a process that involves
decrementing the contents of the current number of concurrent calls
field 222 dialing profile 200 of the caller as illustrated in FIG.
9, generating an RC call stop message (not shown), sending the RC
call stop message to the routing controller 30, and sending a "bye"
message to the party that did not terminate the call. An exemplary
RC call stop message, and an example of how these steps may be
implemented, are described in PCT Publication No. WO 2008/052340,
which is incorporated herein by reference.
[0244] When the routing controller 30 receives the RC call stop
message from the call controller 13, the routing controller
executes an RC call stop message process that involves making
various updates to subscriber, reseller, and supplier account
records (not shown) following the call. Examples of subscriber,
reseller, and supplier account records, and of updates to
subscriber, reseller, and supplier account records, are described
in PCT Publication No. WO 2008/052340, which is incorporated herein
by reference.
[0245] 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.
* * * * *
References