Patent Description:
While mobile devices enable communication in diverse scenarios, there are challenges to consistently enabling a user to communicate via a particular device when the user moves between geographic locations. <CIT> describes that a roaming telephone user in a visited network dialing a long-distance number is transferred to a substitute telephone number which is local to that network and belongs to a service center. Typically, the visited network contacts the user's home network for permission to complete the long-distance call. When that happens, the home network obtains the substitute number from a database on a telephone number server, based upon the location of the visited network, and responds to the visited network, instructing it to forward the user's call to the substitute telephone number. When the service center receives the roaming user's telephone call, it contacts the telephone number server and obtains the original long-distance number, which is stored in the database in association with the substitute telephone number. The service center is then able to route the roaming users call efficiently and cost-effectively by making use of its base of service providers.

Techniques for connectivity using a geographic phone number are described. According to various implementations, techniques described herein enable various policies pertaining to the use of telephone numbers at different locations to be enforced. For instance, some example techniques described herein enable a client device that is outside of a permitted geographic area for a geographic phone number to use a non-geographic phone number to connect a call, while the call can be routed using the geographic phone number.

Techniques for connectivity using a geographic phone number are described. Generally, a phone number refers to a set of characters that can be used to initiate communication with a particular resource. According to various implementations, techniques described herein enable various policies pertaining to the use of telephone numbers at different locations to be enforced. For instance, a particular regulatory policy may specify that particular geographically-specific phone numbers (e.g., numbers with a particular area code) are not permitted to be used outside of a defined geographical area. Thus, techniques for connectivity using a geographic phone number enable a client device that is outside of a permitted geographic area for a geographic phone number to use a non-geographic phone number to connect a call, while the call can be routed using the geographic phone number.

The use of the term "telephone number" herein is not to be construed as limiting, and it is to be appreciated that "telephone number" may refer to any string of characters, numeric and/or textual, that may be utilized to engage in the exchange of communication media across a network and between different devices. In at least some implementations, a telephone number represents a number that can be used to route a call between an Internet Protocol (IP) network, and a Public Switched Telephone Network ("PSTN").

In the following discussion, an example environment is first described that is operable to employ techniques described herein. Next, some example scenarios are described for connectivity using a geographic phone number in accordance with one or more implementations. Following this, some example procedures are described in accordance with one or more implementations. Finally, an example system and device are described that are operable to employ techniques discussed herein in accordance with one or more implementations.

Having presented an overview of example implementations in accordance with one or more implementations, consider now an example environment in which example implementations may by employed.

<FIG> is an illustration of an environment <NUM> in an example implementation that is operable to employ techniques for connectivity using a geographic phone number described herein. The environment <NUM> includes a service network <NUM> hosted and/or managed by a communication service <NUM>. Generally, the service network <NUM> is representative of wireless and/or wired connectivity that enables different forms of communication. The service network <NUM>, for instance, represents a combination of interconnected wireless and wired networks that enable communication at various geographic locations and via a variety of different communication modalities.

The communication service <NUM> is representative of a service that performs various tasks for management of communication between different endpoint devices. The communication service <NUM>, for instance, can manage initiation, moderation, and termination of communication sessions. Examples of the communication service <NUM> include a Voice over Internet Protocol (VoIP) service, an online conferencing service, a unified communications and collaboration (UC&C) service, and so forth.

The service network <NUM> is communicably connected to a Public Switched Telephone Network ("PSTN") <NUM> to enable communication between a client device <NUM> and other devices and/or services, such as a PSTN device <NUM>. The client device <NUM> is representative of an end-user device configured to communicate via the service network <NUM>. The client device <NUM> may be configured in a variety of ways, such as a wireless cellular phone (e.g., a smartphone), a tablet, a laptop, and so forth. One example implementation of the client device <NUM> is presented below as the computing device <NUM> of <FIG>.

The PSTN device <NUM> is generally representative of a telephony-enabled device that is connected, directly or indirectly, to the PSTN network <NUM>. The environment <NUM> further includes a PSTN manager <NUM>, which represents infrastructure (e.g., hardware and logic) that enables implementation and operation of the PSTN network <NUM>. The PSTN manager <NUM> includes a PSTN switch <NUM>, which is representative of functionality for processing calls that traverse the PSTN network <NUM>. Further functionality of the PSTN switch <NUM> is discussed below.

The client device <NUM> includes a communication client <NUM>, which is representative of functionality to enable different forms of communication via the client device <NUM>. Examples of the communication client <NUM> include a VoIP client, a video communication application, a messaging application, a content sharing application, and combinations thereof. The communication client <NUM>, for instance, enables different communication modalities to be combined to provide diverse communication scenarios. In at least some implementations, the communication client <NUM> represents an application that is installed on the client device <NUM>. Additionally or alternatively, the communication client <NUM> can be implemented all or in part as a remote application, such as accessed via a web browser, a web application, and so forth. According to various implementations, the communication client <NUM> is configured to enable various types of communication via interaction with the communication service <NUM>.

The communication client <NUM> is associated with a user profile <NUM>, which represents a way of authenticating a particular user with the communication client <NUM> and the communication service <NUM>, and for tracking user-specific authentication information (e.g., username, password, and so forth), user settings, contacts, and other data for the user. In at least some implementations, the user profile <NUM> is portable such that the user can authenticate with a different instance of the communication client <NUM>, and make calls via the different instance of the communication client <NUM> that are identified as being connected with the user profile <NUM>. The user profile <NUM> is associated with a user identifier (ID) <NUM>, which is representative of a way of identifying a user of the client device <NUM> to the communication service <NUM>. In at least some implementations, the service ID <NUM> is used to initiate communication from the client device <NUM> via the communication service <NUM> and over the service network <NUM>.

The client device <NUM> further includes a communication module <NUM> and a location module <NUM>. The communication module <NUM> is representative of functionality for enabling the client device <NUM> to communicate data via wired and/or wireless connectivity to the service network <NUM>. The location module <NUM> is representative of functionality receiving, transmitting, and/or processing location information. The location module <NUM>, for instance, supports transmission, reception, and processing of position information according to a variety of different technologies, such as Global Positioning System (GPS), cellular communication, WiFi™, satellite communication, radio frequency (RF) communication, subnet information, Ethernet switch and/or port data, Internet Protocol (IP) address information, and so forth.

According to various implementations, the location module <NUM> can communicate with a position information system <NUM> to obtain position information for the client device <NUM>. The position information system <NUM> is representative of various types of position information systems that can transmit and/or receive position information. Examples of the position information system <NUM> include GPS satellites, cellular telephone networks, wireless data (e.g., WiFi™) networks, location information services (LIS), radio frequency identifier (RFID) functionality, subnets of wired networks, Ethernet switches and/or ports, and so forth.

According to various implementations, position information can be communicated between the location module <NUM> and the position information system <NUM> to enable a location of the client device <NUM> to be determined. Examples of position information include GPS coordinates, street addresses, network location, location with reference to cell towers and/or cellular base stations, and so forth. Generally, techniques described herein can determine how to process calls to and from the client device <NUM> based on a particular location of the client device <NUM>.

The environment <NUM> further includes a telephone number manager ("number manager") <NUM>, which is representative of functionality for performing various aspects of techniques for connectivity using a geographic phone number discussed herein. For instance, the number manager <NUM> can determine a particular telephone number that is to be used for making and/or receiving phone calls for the client device <NUM> at a particular location.

Generally, the number manager <NUM> represents a remote service that is remote from the client device <NUM> and that can provide services pertaining to connectivity using a geographic phone number. The number manager <NUM> includes call policies <NUM> and a telephone number database ("number DB") <NUM>. The call policies <NUM> represent different policies that can be applied to determine which telephone number is to be used for a particular device at a particular location, such as for making an outgoing call and/or receiving an incoming call.

The number DB <NUM> represents a database that stores different telephone numbers allocated to different devices, such as the client device <NUM>. For instance, the number DB <NUM> stores telephone numbers that are to be used at different geographic locations. The number DB <NUM> includes a number profile <NUM> for the client device <NUM>. The number profile <NUM> generally includes different telephone numbers that are specific to the client device <NUM> and that can be used for making outgoing calls and/or receiving incoming calls for the client device <NUM>. In this particular example, the number profile <NUM> includes a geographic phone number ("geographic number") <NUM> and a non-geographic phone number ("non-geographic number") <NUM>. Generally, the geographic number <NUM> represents a telephone number that is associated with a particular geographic usage constraint. The geographic number <NUM>, for instance, is only permitted to be used in a particular geographic region. The non-geographic number <NUM>, however, represents a telephone number that does not have a geographic usage constraint. For example, the non-geographic number <NUM> may be utilized across a variety of different geographic regions.

According to various implementations, based on a current location of the client device <NUM>, the number manager <NUM> can apply a call policy <NUM> based on the location to identify which of the geographic number <NUM> or the non-geographic number <NUM> from the number profile <NUM> to be used by the client device <NUM> for making a call. As used herein, "making a call" can refer to dialing out from the client device <NUM> and/or receiving a call at the client device <NUM> dialed from a different device.

In addition or alternative to the number DB <NUM> maintained by the number manager <NUM>, the PSTN manager <NUM> may maintain a local PSTN database (DB) <NUM>, which is representative of a local DB that the number manager <NUM> may utilize to perform various aspects of connectivity using a geographic phone number described herein. Generally, the PSTN DB <NUM> may be populated with information from the number DB <NUM>. For instance, the number manager <NUM> can push information from the number DB <NUM> out to various entities, including the PSTN manager <NUM>.

In at least some implementations, the number manager <NUM> can be implemented and/or managed by an entity such as by the communication service <NUM>, the PSTN manager <NUM>, a data network (e.g., wired and/or wireless), and so forth. Alternatively or additionally, the number manager <NUM> can be implemented as a standalone service for generating, managing, and/or communicating telephone number policies, telephone numbers, and so forth.

According to one or more implementations, instances of the call policies <NUM> can be configured based on information provided by and/or interaction with regulatory services <NUM>. The regulatory services <NUM>, for instance, represent government agencies that generate and apply regulatory policies <NUM>. In at least some implementations, the regulatory services <NUM> include government agencies that regulate various aspects of communication in different geographical locations. Example functions of the regulatory services <NUM> include management of telephone numbering plans (including allocation and management of area codes, dialing codes, and so forth), management of wired and/or wireless communication resources, allocation of wireless bandwidth, and so on. As used herein, the term "area code" generally refers to a fixed-length or variable-length set of digits that are used to route calls to communications systems in specific geographic and/or political locations. Examples of an area code include a fixed-length <NUM> digit code such as used in the United States, Canada, a variable length code such as used in Germany and Japan, and so forth. Generally, an area code is not specific to a particular subscriber, but is used to route a call to a general region and may be associated with various geographical use restrictions, such as based on the regulatory policies <NUM>.

The regulatory policies <NUM> are representative of policies that allocate communication resources for different purposes, and that specify various allowed and disallowed communication-related behaviors. In at least some implementations, the regulatory policies <NUM> define different geographic regions for different telephone numbers, such as area codes that are to be used for specific geographic locations. Further, the regulatory policies <NUM> may specify that telephone numbers with certain area codes may not be used outside of respective defined locations, such as defined by political boundaries, geographic coordinates, and so forth.

As mentioned above, instances of the call policies <NUM> can be configured based on interaction with the regulatory services <NUM>. For instance, a particular regulatory policy <NUM> may specify that a certain area code is not permitted to be used outside of a geographical region defined for the area code. Thus, the number manager <NUM> can configure a particular call policy <NUM> to reflect that a telephone number with the area code is not to be used outside of the geographical region. The particular regulatory policy <NUM>, for example, may specify that the geographic number <NUM> may not be utilized for making a call outside of a designated geographic region, such as defined by discrete geographic boundaries. Thus, as further described below, different phone numbers identified in the number profile <NUM> can be selected from completing calls for the client device <NUM> and based on the call policies <NUM>.

Having described an example environment in which the techniques described herein may operate, consider now some example implementation scenarios for connectivity using a geographic phone number in accordance with one or more implementations.

<FIG> depicts an example implementation scenario <NUM> for connecting a call between a client device and a PSTN device in accordance with one or more implementations.

In the scenario <NUM>, a call event <NUM> occurs which causes the client device <NUM> to initiate a call to the PSTN device <NUM>. A user of the client device <NUM>, for instance, dials a telephone number of the PSTN device <NUM>. Based on the call event <NUM>, the communication client <NUM> transmits a call request <NUM> to the communication service <NUM>. Generally, the call request <NUM> indicates a request to connect a call between the client device <NUM> and the PSTN device <NUM>, and includes various information such as the service ID <NUM>, a telephone number for the PSTN device <NUM>, and location information for the client device <NUM>. The client device <NUM>, for instance, determines its location via interaction with the position information system <NUM>, and includes its location with the call request <NUM>. In at least one implementation, the call request is an IP-based request that includes data packets with the various information pertaining to the call request <NUM>.

The communication service <NUM> receives the call request <NUM> and determines based on the location information that the client device <NUM> is outside of a permitted geographical region for the geographic number <NUM>. The communication service <NUM>, for example, communicates a query <NUM> to the number manager <NUM>, and the query <NUM> includes information such as the service ID <NUM> and the location of the client device <NUM>. The number manager <NUM> performs a lookup in the number DB <NUM> and locates the number profile <NUM> for the client device <NUM>. By comparing the location of the client device <NUM> and the geographic number <NUM> to a particular call policy <NUM>, the number manager <NUM> determines that the client device <NUM> is currently located outside of a geographic region in which the geographic number <NUM> is permitted to be used. Accordingly, the number manager <NUM> returns a query response <NUM> to the communication service <NUM> that indicates that the client device <NUM> is outside of the permitted geographical region for the geographic number <NUM>.

Accordingly, the communication service <NUM> initiates a connect request <NUM> to the PSTN manager <NUM> using the non-geographic number <NUM>. As referenced above, the non-geographic number <NUM> is not associated with a geographic usage constraint, and thus may be used to make calls in a variety of different locations. In at least one implementation, the connect request <NUM> includes the non-geographic number <NUM> and the geographic number <NUM>, and may optionally include the service ID <NUM>. Alternatively or additionally, the PSTN manager <NUM> can perform a lookup in the PSTN DB <NUM> and/or a query to the number manager <NUM> to match the non-geographic number <NUM> to the geographic number <NUM>. For instance, the PSTN manager <NUM> can query the number manager <NUM> and/or the PSTN DB <NUM> with the non-geographic number <NUM> to ascertain that the client device <NUM> has the number profile <NUM> associated with the communication service <NUM>, and that the number profile <NUM> has the geographic number <NUM> to be used for connecting calls for the client device <NUM>.

In at least one implementation, the PSTN switch <NUM> is in a geographic location in which the geographic number <NUM> is permitted to be used. Thus, the PSTN switch <NUM> communicates a call request <NUM> to the PSTN device <NUM> using the geographic number <NUM>. The PSTN device <NUM> accepts the call request <NUM>, and a communication session <NUM> is established between the client device <NUM> and the PSTN device <NUM>. Generally, and as detailed below, a portion of the communication session <NUM> between the client device <NUM> and the communication service <NUM> is routed using IP communication, a portion of the communication session <NUM> between the communication service <NUM> and the PSTN switch <NUM> is routed using the non-geographic number <NUM>, and a portion of the communication session <NUM> between the PSTN switch <NUM> and the PSTN device is routed using the geographic number <NUM>. Accordingly, the PSTN device <NUM> identifies the communication session <NUM> as originating from the geographic number <NUM>.

Generally, a call originating from the PSTN device <NUM> to the client device <NUM> would be handled in a similar way. For instance, the PSTN device <NUM> would dial the geographic number <NUM>. The PSTN switch <NUM> would determine that the geographic number <NUM> is mapped to the user profile <NUM> and that the client device <NUM> is currently outside of the geographic area for the geographic number <NUM>. The PSTN manager <NUM>, for instance, can query the PSTN DB <NUM> and/or the number manager <NUM> with the geographic number <NUM>. A response to the query can indicate that the client device <NUM> is currently outside the permitted geographic area for the geographic number <NUM>, and that the client device <NUM> has the non-geographic number <NUM> which can be used for completing the call. Thus, the PSTN switch <NUM> could then route a call request to the non-geographic number <NUM> such that a communication session could be established between the PSTN device <NUM> and the client device <NUM>.

In at least one implementation, the PSTN switch <NUM> can receive the call request from the PSTN device <NUM>, can determine that the geographic number <NUM> is associated with a profile for the communication service <NUM> (e.g., via a query of the PSTN DB <NUM>), and can notify the communication service <NUM> of the call request. The communication service <NUM> can then determine that the client device <NUM> is currently located outside of the permitted geographic area for the geographic number <NUM> (e.g., via a query to the client device <NUM>), and can instruct the PSTN manager <NUM> to complete the call to the communication service <NUM> via the non-geographic number <NUM>. The PSTN switch <NUM> then dials the non-geographic number <NUM> which connects the call to the communication service <NUM>, which then completes the call via an IP-based call request to the communication client <NUM> of the client device <NUM>.

Accordingly, techniques described herein enable a call to be connected for the client device <NUM> at least partially using the geographic number <NUM>, even when the client device <NUM> is outside of a geographic area to which use of the geographic number <NUM> is constrained. Thus, the PSTN device <NUM> receives the communication session <NUM> as occurring with the geographic number <NUM>. A called identifier (CID) received at the PSTN device <NUM>, for instance, identifies incoming call media of the communication session <NUM> as originating from the geographic number <NUM>, and not the non-geographic number <NUM>.

In a different example scenario, consider that the client device <NUM> is located in a geographic region in which the geographic number <NUM> is permitted to be used. A particular call policy <NUM>, for example, indicates that the geographic number <NUM> is permitted to be used by the client device <NUM> for placing a call at a current location of the client device <NUM>. For instance, the communication service <NUM> determines that a current location of the client device <NUM> is a permitted location for using the geographic number <NUM>, such as via the query <NUM> to the number manager <NUM>. Accordingly, the communication service <NUM> can dial a call to the PSTN manager <NUM> using the geographic number <NUM>, and the PSTN switch <NUM> can complete the call to the PSTN device <NUM> using the geographic number <NUM> to connect the communication session <NUM> between the PSTN device <NUM> and the client device <NUM>.

<FIG> depicts an example implementation scenario <NUM> for connecting a call between a client device and a PSTN device in accordance with one or more implementations. The scenario <NUM>, for instance, represents a data flow for the communication session <NUM> discussed above.

The scenario <NUM> includes session portion 302a, a session portion 302b, and a session portion 302c. Generally, the session portions 302a-302c represent different data flows that combine to communicate media of the communication session <NUM> described above. For instance, the session portions 302a-302c represent bi-directional communication of call media between the client device <NUM> and the PSTN device <NUM>.

The session portion 302a represents a connection between the client device <NUM> and the communication service <NUM>. In at least one implementation, the session portion 302a represents an IP-based communication that includes data packets populated with call media and may include other types of data, such as call control information. In an incoming direction, for instance, the communication service <NUM> forwards call media received from the PSTN device to the client device via an IP communication.

Further, the session portion 302b represents an IP-based communication (e.g., a VoIP communication) between the communication service <NUM> and the PSTN switch <NUM>. Finally, the session portion 302c represents a PSTN communication between the PSTN switch <NUM> and the PSTN device <NUM>.

In an implementation where the client device <NUM> is located outside of a geographic region in which the geographic number <NUM> is permitted to be used, the session portion 302b is addressed using the non-geographic number <NUM> while the session portion 302c is addressed (e.g., dialed) using the geographic number <NUM>. However, in an implementation where the client device <NUM> is located in a geographic location where the geographic number <NUM> is permitted to be used, both of the session portions 302b, 302c are addressed using the geographic number <NUM>.

Accordingly, techniques described herein enable location information for a communication endpoint (e.g., the client device <NUM>) to be used to determine whether a geographic number or a non-geographic number is to be used to connect a call to the communication endpoint. Further, when a portion of a call is connected from an endpoint device using a non-geographic number, the call can be completed to a called device using a geographic number such that the call appears to originate from the geographic number.

Having discussed some example implementation scenarios, consider now a discussion of some example procedures in accordance with one or more implementations.

The following discussion describes some example procedures for connectivity using a geographic phone number in accordance with one or more implementations. The example procedures may be employed in the environment <NUM> of <FIG>, the system <NUM> of <FIG>, and/or any other suitable environment. The procedures, for instance, represent example ways of performing various aspects of the scenarios described above. In at least some implementations, the steps described for the various procedures can be implemented automatically and independent of user interaction. Further, various steps of the procedures may be performed at the client device <NUM>, at the communication service <NUM>, at the number manager <NUM>, at the PSTN manager <NUM>, and/or via interaction between these entities.

<FIG> is a flow diagram that describes steps in a method in accordance with one or more implementations. The method, for instance, describes an example way of connecting at least a portion of a call using a geographic number.

Step <NUM> receives a request to connect a call from a client device to a PSTN device. For instance, the communication service <NUM> receives a call request from the client device <NUM> to call the PSTN device <NUM>. In at least one implementation, the request is received as an IP-based communication from the client device <NUM>.

Step <NUM> determines whether a current location of the client device is a permitted location for using a geographic number assigned to the client device. The communication service <NUM>, for example, ascertains whether the client device <NUM> is located at a geographic location in which the geographic number <NUM> is permitted to be used. In at least one implementation, the communication service <NUM> can query the number manager <NUM> for this information. The number manager <NUM>, for example, ascertains that the client device <NUM> is associated with the number profile <NUM>, and thus the geographic number <NUM>. The number manager <NUM> can then determine whether the geographic number <NUM> is permitted to be used at the current location of the client device <NUM>, such as based on a call policy <NUM> that applies to the geographic number <NUM>.

If the current location of the client device <NUM> is a permitted location for using the geographic number <NUM> ("Yes"), step <NUM> causes the call to be connected between the PSTN device and the client device using the geographic number. The communication service <NUM>, for example, dials a telephone number of the PSTN device <NUM> using geographic number <NUM>, which connects the client device <NUM> to the PSTN switch <NUM>. The PSTN switch <NUM> then completes the call to the PSTN device <NUM> using the geographic number <NUM> as a calling device number for the call.

If the current location of the client device <NUM> is not a permitted location for using the geographic number <NUM> ("No"), step <NUM> causes the call to be connected between the PSTN device and the client device using an alternate number and the geographic number. In at least one implementation, the alternate number is a non-geographic number. The communication service <NUM>, for example, dials the telephone number of the PSTN device <NUM> using the non-geographic number <NUM>. This connects the call to the PSTN switch <NUM>, which then completes the call to the PSTN device using the geographic number <NUM>. Thus, call media of the call can be routed using both the non-geographic number <NUM> for a connection between the client device <NUM> and the PSTN switch <NUM>, and the geographic number <NUM> for a connection between the PSTN switch <NUM> and the PSTN device <NUM>. Generally, this causes the PSTN device <NUM> to receive incoming call media as originating from the geographic number <NUM>.

<FIG> is a flow diagram that describes steps in a method in accordance with one or more implementations. The method, for instance, describes an example way of connecting a call using non-geographic number and a geographic number.

Step <NUM> receives a call request from a non-geographic number to connect a client device to a PSTN device. The PSTN manager <NUM>, for example, receives a call request from the communication service <NUM> dialed using the non-geographic number <NUM>. Generally, the call request includes a telephone number for the PSTN device <NUM>.

Step <NUM> maps the non-geographic number to a geographic number associated with the client device. For instance, the PSTN manager <NUM> queries the PSTN DB <NUM> and/or the number manager <NUM> with the non-geographic number <NUM>. A response to the query indicates that the non-geographic number <NUM> is associated with a subscriber to the communication service <NUM> who has the geographic number <NUM>.

Step <NUM> connects the call to the PSTN device as originating from the geographic number. The PSTN switch <NUM>, for example, dials a telephone number of the PSTN device using the geographic number <NUM> as the calling phone number. Thus, the call is connected using the geographic number <NUM> between the PSTN switch <NUM> and the PSTN device <NUM>, and the non-geographic number <NUM> between the PSTN switch and the client device <NUM>.

<FIG> is a flow diagram that describes steps in a method in accordance with one or more implementations. The method, for instance, describes an example way of connecting a call from a PSTN device using a geographic number and a non-geographic number.

Step <NUM> receives a call request from a PSTN device to connect a call to a device with a geographic phone number. The PSTN manager <NUM>, for instance, receives a call request from the PSTN device <NUM> requesting to be connected to the geographic number <NUM>.

Step <NUM> maps the geographic phone number to a user account that includes the geographic phone number and a non-geographic phone number. For example, the PSTN manager <NUM> queries the PSTN DB <NUM> and/or the number manager <NUM> to ascertain whether the geographic number <NUM> is associated with a user profile for the communication service <NUM>. The PSTN manager <NUM> receives a query response indicating that the geographic number is associated with the user profile <NUM> for the communication service <NUM>.

Step <NUM> ascertains that a client device for the user account is located in a geographic location in which the geographic phone number is not permitted to be used. For example, the query response mentioned above indicates that the client device <NUM> is currently located in a geographic location in which the geographic number <NUM> is not permitted to be used for call routing.

Step <NUM> connects the call to the client device using the non-geographic number and to the PSTN device using the geographic number. The PSTN switch <NUM>, for instance, connects the call to the communication service <NUM> using the non-geographic number <NUM>, while the call is connected to the PSTN device using the geographic number <NUM> as a routing number for call media from the client device <NUM>. Thus, the call appears to the PSTN device <NUM> to be routed from the geographic number <NUM>.

<FIG> is a flow diagram that describes steps in a method in accordance with one or more implementations. The method, for instance, describes an example way for obtaining information pertaining to a connecting a call.

Step <NUM> communicates a query for information pertaining to connecting a call between a client device and a PSTN device. The communication service <NUM> and/or the PSTN manager <NUM>, for instance, queries the number manager <NUM> for information pertaining to connecting a call. The query may request various information, such as a location of the client device <NUM>, whether the client device <NUM> is located in a geographic region in which the geographic number <NUM> is permitted to be used, a geographic phone number and/or a non-geographic phone number for the client device <NUM>, and so forth.

Step <NUM> receives a response that includes the information. For example, the communication service <NUM> and/or the PSTN manager <NUM> receive a response from the number manager <NUM> that includes the requested information. Thus, a call connection process can proceed based on the requested information, such as described above.

Thus, techniques for connectivity using a geographic phone number described herein enable devices to roam between different locations and engage in telephonic communication at the locations, which maintaining compliance with various policies that govern telephony at the different locations. Further, when a device that owns a geographic phone number is outside of a geographic location in which the geographic phone number is permitted to be used, techniques described herein enable both a non-geographic phone number and the geographic phone number to be used for call routing such that compliance with call policy for the geographic phone number is maintained, while another device involved in the call receives call media routed using the geographic phone number.

Having discussed some example procedures, consider now a discussion of an example system and device in accordance with one or more implementations.

<FIG> illustrates an example system generally at <NUM> that includes an example computing device <NUM> that is representative of one or more computing systems and/or devices that may implement various techniques described herein. For example, the client device <NUM>, the communication service <NUM>, and/or the PSTN manager <NUM> discussed above with reference to <FIG> can be embodied as the computing device <NUM>. The computing device <NUM> may be, for example, a server of a service provider, a device associated with the client (e.g., a client device), an on-chip system, and/or any other suitable computing device or computing system.

The example computing device <NUM> as illustrated includes a processing system <NUM>, one or more computer-readable media <NUM>, and one or more Input/Output (I/O) Interfaces <NUM> that are communicatively coupled, one to another. Although not shown, the computing device <NUM> may further include a system bus or other data and command transfer system that couples the various components, one to another. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures. A variety of other examples are also contemplated, such as control and data lines.

The processing system <NUM> is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system <NUM> is illustrated as including hardware element <NUM> that may be configured as processors, functional blocks, and so forth. This may include implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors. The hardware elements <NUM> are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions may be electronically-executable instructions.

The computer-readable media <NUM> is illustrated as including memory/storage <NUM>. The memory/storage <NUM> represents memory/storage capacity associated with one or more computer-readable media. The memory/storage <NUM> may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). The memory/storage <NUM> may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth). The computer-readable media <NUM> may be configured in a variety of other ways as further described below.

Input/output interface(s) <NUM> are representative of functionality to allow a user to enter commands and information to computing device <NUM>, and also allow information to be presented to the user and/or other components or devices using various input/output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone (e.g., for voice recognition and/or spoken input), a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., which may employ visible or non-visible wavelengths such as infrared frequencies to detect movement that does not involve touch as gestures), and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth. Thus, the computing device <NUM> may be configured in a variety of ways as further described below to support user interaction.

Various techniques may be described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The terms "module," "functionality," and "component" as used herein generally represent software, firmware, hardware, or a combination thereof. The features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.

"Computer-readable storage media" may refer to media and/or devices that enable persistent storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Computer-readable storage media do not include signals per se. The computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data. Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and which may be accessed by a computer.

"Computer-readable signal media" may refer to a signal-bearing medium that is configured to transmit instructions to the hardware of the computing device <NUM>, such as via a network. Signal media typically may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. Signal media also include any information delivery media. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared, and other wireless media.

As previously described, hardware elements <NUM> and computer-readable media <NUM> are representative of instructions, modules, programmable device logic and/or fixed device logic implemented in a hardware form that may be employed in some implementations to implement at least some aspects of the techniques described herein. Hardware elements may include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware devices. In this context, a hardware element may operate as a processing device that performs program tasks defined by instructions, modules, and/or logic embodied by the hardware element as well as a hardware device utilized to store instructions for execution, e.g., the computer-readable storage media described previously.

Combinations of the foregoing may also be employed to implement various techniques and modules described herein. Accordingly, software, hardware, or program modules and other program modules may be implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements <NUM>. The computing device <NUM> may be configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of modules that are executable by the computing device <NUM> as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements <NUM> of the processing system. The instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one or more computing devices <NUM> and/or processing systems <NUM>) to implement techniques, modules, and examples described herein.

As further illustrated in <FIG>, the example system <NUM> enables ubiquitous environments for a seamless user experience when running applications on a personal computer (PC), a television device, and/or a mobile device. Services and applications run substantially similar in all three environments for a common user experience when transitioning from one device to the next while utilizing an application, playing a video game, watching a video, and so on.

In the example system <NUM>, multiple devices are interconnected through a central computing device. The central computing device may be local to the multiple devices or may be located remotely from the multiple devices. In one implementation, the central computing device may be a cloud of one or more server computers that are connected to the multiple devices through a network, the Internet, or other data communication link.

In one implementation, this interconnection architecture enables functionality to be delivered across multiple devices to provide a common and seamless experience to a user of the multiple devices. Each of the multiple devices may have different physical requirements and capabilities, and the central computing device uses a platform to enable the delivery of an experience to the device that is both tailored to the device and yet common to all devices. In one implementation, a class of target devices is created and experiences are tailored to the generic class of devices. A class of devices may be defined by physical features, types of usage, or other common characteristics of the devices.

In various implementations, the computing device <NUM> may assume a variety of different configurations, such as for computer <NUM>, mobile <NUM>, and television <NUM> uses. Each of these configurations includes devices that may have generally different constructs and capabilities, and thus the computing device <NUM> may be configured according to one or more of the different device classes. For instance, the computing device <NUM> may be implemented as the computer <NUM> class of a device that includes a personal computer, desktop computer, a multi-screen computer, laptop computer, netbook, and so on.

The computing device <NUM> may also be implemented as the mobile <NUM> class of device that includes mobile devices, such as a mobile phone, portable music player, portable gaming device, a tablet computer, a multi-screen computer, and so on. The computing device <NUM> may also be implemented as the television <NUM> class of device that includes devices having or connected to generally larger screens in casual viewing environments. These devices include televisions, set-top boxes, gaming consoles, and so on.

The techniques described herein may be supported by these various configurations of the computing device <NUM> and are not limited to the specific examples of the techniques described herein. For example, functionalities discussed with reference to the number manager <NUM> and/or the number manager <NUM> may be implemented all or in part through use of a distributed system, such as over a "cloud" <NUM> via a platform <NUM> as described below.

The platform <NUM> may abstract resources and functions to connect the computing device <NUM> with other computing devices. The platform <NUM> may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources <NUM> that are implemented via the platform <NUM>. Accordingly, in an interconnected device implementation, implementation of functionality described herein may be distributed throughout the system <NUM>. For example, the functionality may be implemented in part on the computing device <NUM> as well as via the platform <NUM> that abstracts the functionality of the cloud <NUM>.

Discussed herein are a number of methods that may be implemented to perform techniques discussed herein. Aspects of the methods may be implemented in hardware, firmware, or software, or a combination thereof. The methods are shown as a set of steps that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. Further, an operation shown with respect to a particular method may be combined and/or interchanged with an operation of a different method in accordance with one or more implementations. Aspects of the methods can be implemented via interaction between various entities discussed above with reference to the environment <NUM>.

Claim 1:
A method comprising:
establishing a first session portion (302a) using Internet Protocol IP communication between a calling device (<NUM>) and a communications service (<NUM>); characterised in that the method comprises:
establishing a second session portion (302b) using IP communication between the communications service (<NUM>) and a PSTN switch (<NUM>), the second session portion (302b) addressed via a non-geographic number of the calling device (<NUM>);
establishing a third session portion (302c) using PSTN communication and a geographic number of the calling device (<NUM>) between a PSTN switch (<NUM>) and a callee device (<NUM>); and
establishing a call between the calling device (<NUM>) and the callee device (<NUM>) via the first session portion (302a), second session portion (302b), and third session portion (302c).