Abstract:
A computer-implemented method, an apparatus and a recording medium are provided for facilitating access by a subscriber over a communications network. The method comprises: acquiring a query message comprising a subscriber contact identifier associated with the subscriber; responsive to acquiring the query message: identifying a plurality of communications endpoint identifiers associated with the subscriber contact identifier, each communications endpoint identifier being associated with a communications device and reachability information, wherein the reachability information reflects a degree of subscriber accessibility via the communications device; and providing a response to the query message comprising at least one of the plurality of the communications endpoint identifiers, wherein the at least one of the plurality of the communications endpoint identifiers is selected based at least in part on the reachability information. The recording medium comprises instructions to configure the apparatus to perform the method.

Description:
FIELD 
       [0001]    The present disclosure relates generally to a translation service for enabling communications over a data network such as the Internet, and more specifically, to computer-implemented techniques for Voice over IP (“VoIP”) provider interconnection over the Internet using a shared subscriber contact identifier translation service. 
       BACKGROUND 
       [0002]    VoIP technology converts voice and video signals into network packets. The network packets are transported using various Internet Protocol (“IP”)-based protocols. The Internet Protocol, also referred to as “IP”, is the principal communications protocol in the Internet protocol suite for relaying datagrams across network boundaries. Its routing function enables internetworking, and essentially establishes what is commonly referred to as the Internet. The Internet is the global system of interconnected computer networks that use the standard Internet protocol suite. The Internet may be thought of as a network or networks that include many private, public, academic, business, and government networks, of local to global scope, that are linked by a broad array of electronic, wireless, and optical networking technologies. 
         [0003]    VoIP providers provide VoIP-based services using VoIP technology for transporting voice and video from subscribers to the VoIP provider premises. VoIP-based services can be accessed through a managed IP network such as, for example, an IP network owned by the VoIP provider. VoIP based services can also be accessed through a public IP network such as, for example, the Internet. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0004]      FIG. 1  is a block diagram of a networked computing environment in which example embodiments of the present disclosure are implemented. 
           [0005]      FIG. 2  illustrates a system for providing reachability information in conjunction with a translation service on the Internet, according to an example embodiment of the present disclosure. 
           [0006]      FIG. 3  is a flow chart illustrating steps for VoIP provider interconnection over the Internet using a shared subscriber contact identifier translation service, according to some example embodiments of the present disclosure. 
           [0007]      FIG. 4  is a flow chart illustrating steps for providing reachability information to the translation service, according to example embodiments of the present disclosure. 
           [0008]      FIG. 5  is a block diagram that illustrates a computer system in which example embodiments of the present disclosure are deployed. 
       
    
    
     DETAILED DESCRIPTION 
       [0009]    Computer-implemented techniques for VoIP provider interconnection over the Internet using a shared subscriber contact identifier translation service are disclosed. 
         [0010]    One challenge facing VoIP providers is interconnection. In the VoIP context, interconnection refers to the linking of two networks using IP. The two networks can be owned or managed by different VoIP providers. For example, interconnection may be necessary when a subscriber of one VoIP provider wishes to establish a VoIP telephone call with a subscriber of a different VoIP provider. 
         [0011]    Traditionally, interconnection has been accomplished through the public switched telephone network. The public switched telephone network, also referred to as the “PSTN”, is the aggregate of the world&#39;s circuit-switched telephone networks that are operated by national, regional, or local telephone operators, providing infrastructure and services for public telecommunication. In the context of interconnection, the PSTN is often used as the transit network between the originating network of one VoIP provider and the terminating network of another VoIP provider. Interconnection through the PSTN has a number of disadvantages. For example, a VoIP telephone call between a VoIP originating provider and a VoIP terminating provider must be signal converted twice for transport over the PSTN, once between the VoIP originating provider and the PSTN and another time between the PSTN and the VoIP terminating provider. Relatedly, capital expenditures are increased for VoIP providers. The VoIP providers are typically required to invest in conversion equipment for connecting their networks to the PSTN. Further, PSTN providers may charge fees to originating VoIP providers for using the PSTN for interconnection under a calling party pays business model. 
         [0012]    Given the drawbacks associated with using the PSTN for interconnection, VoIP providers have sought solutions that provide interconnection without using the PSTN as the transit network. For example, a VoIP provider may consult a database to resolve a dialed PSTN telephone number (i.e., an E.164 number) into a uniform resource identifier (“URI”) that can be used for example in telephone call setup over the Internet. In this way, interconnection between the originating VoIP provider and the terminating VoIP provider is accomplished using the Internet as the transit network, as opposed to the PSTN. Unfortunately, the usefulness of such resolution databases is often limited by their relatively static nature. For example, information in the database may be incorrect or out-of-date or incomplete. 
         [0013]    Accordingly, the present disclosure provides for VoIP provider interconnection over the Internet using a shared subscriber contact identifier translation service. Advantageously, techniques disclosed herein may be used by a VoIP provider to bypass the PSTN as the transit network for interconnection between VoIP providers. In addition, techniques disclosed herein allow an Internet communications service system, the translation service, or another network entity to select one of multiple communications endpoint identifiers associated with a subscriber contact identifier to use for communications. The selection can be based on reachability information associated with the communications endpoint identifiers. However, the selection can be based on more than just reachability. For example, in addition to or instead of selecting a communications endpoint identifier based on associated reachability information, a selection can be based on network routing preferences, subscriber communication mode preferences, subscriber communication responsiveness, and criteria other than just reachability. 
       INTRODUCTION 
       [0014]    Referring to the figures, example embodiments of the present disclosure will now be described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. It will be apparent, however, that the present disclosure may be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present disclosure. The example embodiments are primarily described with reference to block diagrams of flowcharts. As to the flowcharts, each block within the flowcharts represents both a method step and an apparatus element for performing the method step. Depending upon the requirements of the particular implementation at hand, the corresponding apparatus element may be configured in hardware, software, firmware, or combinations thereof. 
       Overview 
       [0015]    Embodiments of the present disclosure provide a shared subscriber contact identifier translation service for facilitating communications over the Internet between subscribers of different VoIP providers. More specifically, the translation service provides a translation database on a data network. The translation database associates subscriber contact identifiers with Internet contact information for the subscribers. In some embodiments of the present disclosure, the subscriber contact identifiers in the translation database include 1) PSTN telephone numbers (e.g., E.164 numbers), 2) private subscriber identifiers for VoIP services (e.g., Skype® identifiers), 3) e-mail addresses, or 4) session initiation protocol (SIP) addresses (e.g., a SIP URI). The session initiation protocol, or “SIP”, is a signaling communications protocol used for controlling multimedia communication sessions such as voice and video calls over IP networks. The Internet contact information associated in the translation database with a subscriber contact identifier includes a set of one or more communications endpoint identifiers of Internet communications services through which the subscriber may be reachable by communications over the Internet. In some embodiments of the present disclosure, a communications endpoint identifier is an e-mail address or a SIP address (e.g., a SIP URI). 
         [0016]    While in some embodiments a subscriber contact identifier is an E.164 number, a private VoIP subscriber identifier, an e-mail address, or a SIP URI, a subscriber contact identifier is an Internet chat service user identifier or a social network service user identifier in other embodiments. For example, a subscriber contact identifier could be an internet relay chat (IRC) user identifier, a Yahoo !® Messenger® (YMSG) user identifier, an AOL® Instant Messenger® (AIM) user identifier, or a Facebook® user identifier. Similarly, while a communications endpoint identifier is an e-mail address or a SIP URI in some embodiments, a communications endpoint identifier, more generally, can be any information identifying a resource or communications service on the Internet. In some cases a communications endpoint identifier, in addition to identifying a resource or communications service on the Internet, specifies a location (e.g., an address) on the Internet where the resource or communications service is located. In other cases a communications endpoint identifier can be resolved for example using the domain name system to a location or address on the Internet. 
         [0017]    In some embodiments of the present disclosure, the translation service provides a query interface, accessible over a network, for resolving a given subscriber contact identifier to Internet contact information for the subscriber. In response to a query to resolve a subscriber contact identifier, the translation service consults the translation database for the Internet contact information associated with the specified subscriber contact identifier. The associated Internet contact information, or a portion thereof, is then returned to the querier. The querier can then use the returned Internet contact information to establish communications with the subscriber over the Internet. In some embodiments, the querier is an “originating” VoIP provider that is attempting to establish Internet communications for an “originating” subscriber with a “terminating” subscriber as identified by the subscriber contact identifier. 
         [0018]    According to some aspects of the present disclosure, a communications endpoint identifier of an Internet communications system associated in the translation database with a subscriber contact identifier is further associated in the translation database with reachability information pertaining to the reachability of the subscriber through the Internet communications system. Where a subscriber contact identifier is associated in the translation database with multiple communications endpoint identifiers, the querier can use the reachability information to select one the multiple resource identifiers through which the subscriber is most likely to be reached. Alternatively, the translation service can use the reachability information to select the best one of the multiple resource identifiers to return to the querier. 
         [0019]    In some embodiments of the present disclosure, the reachability information for a communications endpoint identifier includes subscriber presence information, Internet communications system quality-of-service (QoS) information, Internet traffic/congestion information, and/or subscriber preference information. Subscriber presence information may indicate for example if the subscriber is currently online or logged into the Internet communications system associated with the communications endpoint identifier. Quality-of-service information and Internet traffic/congestion information may indicate for example the overall performance of the Internet communications system associated with the communications endpoint identifier from the perspective of the users of the system on the network. Subscriber preference information may indicate for example a level of preference of the subscriber to be contacted through the Internet communications system associated with the communications endpoint identifier. The level of preference may be any information that may be used to rank or order multiple communications endpoint identifiers through which the subscriber can be contacted. 
         [0020]    While in some embodiments reachability information associated with a communications endpoint identifier comprises subscriber presence information, QoS information, network traffic/congestion information, and/or subscriber preference information, reachability information associated with a communications endpoint identifier comprises responsiveness information in other embodiments. For example, a communications endpoint identifier can be associated with responsiveness information indicating, specifying, or reflecting an observed or detected pattern of communication responsiveness associated with the communications endpoint identifier. In some embodiments, the responsiveness information comprises an estimated time to acknowledge receipt of communications sent to the communications endpoint identifier for example an estimated time for the subscriber associated with the communications endpoint identifier to read, view, or listen to incoming communications. In some embodiments, the responsiveness information comprises an estimated likelihood of response from the subscriber associated with the communications endpoint identifier to communications sent to the communications endpoint identifier. In other embodiments, the responsiveness information comprises an estimated time for response from the subscriber associated with the communications endpoint identifier to communications sent to the communications endpoint identifier. Responsiveness information associated with a communications endpoint identifier may inform the communications endpoint identifier&#39;s reachability conclusion in the sense of how likely a communication sent to the communications endpoint identifier will be acknowledged and responded to in a timely manner. 
         [0021]    In some embodiments, the translation service provides a management interface, accessible over a network, for updating reachability information associated in the translation database with a communications endpoint identifier. For example, a first VoIP provider can monitor the current availability or presence of its subscribers. Then, the first VoIP provider can access the management interface of the translation service to update the presence information in the translation database associated with the subscribers. In this way, when a second VoIP provider uses the query interface of the translation service to obtain Internet contact information for a subscriber whose presence information has been recently updated in the translation database by the first VoIP provider, the second VoIP provider can receive in response to the query current presence information for determining whether the subscriber can currently be reached through the first VoIP provider. 
         [0022]    In some embodiments, an association between a subscriber contact identifier (e.g., a E.164 number) and a subscriber of a VoIP service provider can be registered automatically with the translation service upon installation of the VoIP service provider&#39;s mobile application on the subscriber&#39;s mobile device. In some embodiments, the subscriber grants the VoIP service provider&#39;s mobile application the required application permissions to access, at or from the mobile device, the information regarding the subscriber contact identifier during installation of the application or on subsequent usage of the application. Alternatively, the subscriber may be prompted during installation or subsequent usage of the mobile application to manually enter the subscriber contact identifier. The subscriber contact identifier, along with the subscriber&#39;s VoIP communication endpoint identifier, can be reported to the translation service for storage in the translation database. The reporting can be performed by the mobile application or the VoIP provider, for example, upon receiving the subscriber contact identifier from the mobile application. Once the association between the subscriber contact identifier and the communications endpoint identifier has been established in the translation database, the translation service can provide, for example, to other querying subscribers and other querying VoIP providers, the communications endpoint identifier associated with the subscriber contact identifier. Thus, in accordance with some embodiments, simply by installing the mobile application on the mobile device the subscriber is made discoverable, through the translation service, for Internet communications using the subscriber contact identifier. In some embodiments, in addition to registering with the translation service an association between a subscriber contact identifier and a communications endpoint identifier, reachability information for the communications endpoint identifier is also registered and stored in the translation database in association with the communications endpoint identifier. 
       Example Networked Computing Environment 
       [0023]    By way of example illustrated in  FIG. 1  is block diagram of a networked computing environment in which example embodiments of the present disclosure are implemented. 
         [0024]    In this example, Subscriber A  10 A at subscriber premises  12 A wishes to communicate with subscriber B  10 B according to a communication medium. The communication medium can be voice, video, e-mail, chat, teleconference, videoconference, text messaging, or any other computer-based communication medium compatible with techniques described herein. To communicate with subscriber B  10 B, subscriber A  10 A provides a known subscriber contact identifier to communications endpoint device A  11 A used by subscriber A  10 A. The subscriber contact identifier consists of any identifier suitable for contacting subscriber B  10 B according to techniques described herein. For example, the subscriber contact identifier may be a PSTN telephone number (e.g., an E.164 phone number), an e-mail address, a user identifier specific to a particular communications application (e.g., a Skype® user identifier), or any other suitable identifier compatible with techniques described herein. 
         [0025]    To receive the subscriber contact identifier from subscriber A  10 A, communications endpoint device  11 A executes or is configured with a communications application. Here, application refers to one or more sets of processor-executable instructions that implement particular functionality. In example embodiments, the communications application is a telephone application, a video application, an e-mail application, a chat application, a teleconferencing application, a videoconference application, a text messaging application, a game application, or any other communications application compatible with techniques described herein. The communications application provides or interfaces with a user interface of endpoint device  11 A for receiving the subscriber contact identifier and for otherwise facilitating communications according to the particular communication medium at hand. One or more of the sets of executable instructions may be part of an operating system of communications endpoint device A  11 A. Alternatively, all of the executable instructions may be part of an application that executes on communications endpoint device A  11 A with the aid of the operating system. 
         [0026]    Communications endpoint device A  11 A is any computing device compatible with techniques described herein. For example, communications endpoint device A  11 A can be a personal computer, a laptop computer, a mobile phone, a smart phone, a desktop computer, a workstation computer, a kiosk computer, a desk VoIP phone, a fax machine, a game console, or other mobile or stationary, wire or wireless computing device capable of coupling communicatively with the Internet  30 . 
         [0027]    Upon obtaining the subscriber contact identifier from subscriber A  10 A, communications endpoint device A  11 A provides the subscriber contact identifier over the Internet  30  to internet communications service system A  21 A, in conjunction with or as part of a network request to establish communications with subscriber B  10 B, as identified by the subscriber contact identifier. The network request may be made according to any suitable IP-based networking protocol appropriate for negotiating or establishing such communications. For example, the networking protocol may be the SIP protocol, the HyperText Transfer Protocol (HTTP) protocol, the Secure-HTTP (HTTPS) protocol, or any other IP-based networking protocol compatible with techniques described herein. 
         [0028]    Internet communications service system A  21 A is associated with (e.g., operated by) VoIP provider  22 A. In the presently described example, subscriber A  10 A holds an account with VoIP provider  22 A as part of an Internet communications service provided by VoIP provider  22 A to subscriber  10 A. In this example, only one subscriber of VoIP provider  22 A is depicted in  FIG. 1 . However, in a commercial embodiment, VoIP provider  22 A may provide Internet communications services to multiple subscribers. 
         [0029]    The Internet communications services provided by VoIP provider  22 A through Internet communications system A  21 A involves one or more communications media. For example, VoIP provider  22 A may provide one or more of voice, video, e-mail, chat, fax, teleconference, videoconference, and text messaging services through Internet communications system A  21 A. 
         [0030]    Generally, Internet communications service system A  21 A is implemented on or by one or more computing devices (e.g., server computers) hosted or co-located in one or more data centers that provide connectivity to the Internet  30 . In example embodiments, the computing devices (e.g., web servers or SIP proxy servers) interface over the Internet  30  with communications endpoint devices of subscribers, like communications endpoint device A  11 A. Other computing devices optionally provide back-end services (e.g., a data storage plane) to the computing devices that interface with communications endpoint devices. Still other computing devices include telephony and networking equipment for communicatively coupling to the PSTN  40 . While in some embodiments internet communication service system A  21 A is communicatively coupled to the PSTN  40 , internet communications service system A  21 A is not so coupled in other embodiments. 
         [0031]    Upon obtaining the subscriber contact identifier from communications endpoint device A  11 A, Internet communications service system A  21 A contacts translation service  50  over the Internet for the purpose of obtaining Internet contact information associated in translation database  51  with the subscriber contact identifier. Such contact may be made according to any suitable IP-based networking protocol. For example, Internet communications service system A  21 A may query translation service  50  according to the HTTP, HTTPS, or Domain Name System (DNS) protocols, as some possible examples. For example, Internet communications service system A  21 A may send a query specifying the subscriber contact identifier in one or more IP-based networking protocol data packets to translation service  50  and receive corresponding Internet contact information in one or more returned IP-based networking protocol data packets. 
         [0032]    Upon receiving the query from internet communications service system A  21 A, translation service  50  consults translation database  51  for the purpose of mapping the provided subscriber contact identifier to Internet contact information associated with the subscriber contact identifier in the translation database  51 . For this, translation database  51  may store a number of translation records. Each translation record corresponds to one subscriber contact identifier. In some example embodiments, the translation records is indexed or keyed in translation database  51  by the subscriber contact identifiers for fast access or lookup by translation service  50  using a given subscriber contact identifier as a key. The translation database  51  is any database suitable for storing translation records including for example a relational database, a directory store, a file, or other data storage format compatible with techniques described herein. Translation service  50  and translation database  51  are implemented on or by one or more computing devices (e.g., server computers) hosted or co-located in one or more data centers that provide connectivity to the Internet  30 . In some embodiments, translation service  50  and translation database  51  is operated and maintained by a particular VoIP provider (e.g., VoIP provider  22 A). In other embodiments, translation service  50  and translation database  51  are operated and maintained by a consortium or industry management group, which may or may not include one or more VoIP providers. More generally, translation service  50  and translation database  51  may be under the operation and management of one particular entity or a group of entities. 
         [0033]    Once translation service  50  has consulted translation database  51  and mapped the subscriber contact identifier for subscriber B  10 B provided by internet communications service system A  21 A to corresponding Internet contact information for subscriber B  10 B, translation service  50  returns the corresponding Internet contact information or a portion thereof to internet communication service system A  21 A. Generally, the Internet contact information returned to internet communications service system A  21 A can be any information suitable for establishing communications between subscriber A  10 A and subscriber B  10 B via a particular communication medium. According to some embodiments, the Internet contact information includes one or more communications endpoint identifiers for contacting subscriber B  10 B. More specifically, each communications endpoint identifier corresponds to an Internet address on the Internet  30  of an Internet communications service system of a VoIP provider through which subscriber B  10 B may be reachable via a communication medium. In some embodiments, a communications endpoint identifier is in the form of a Uniform Resource Identifier (URI) such as for example “sip:mary@somecompany.com”, which is an example of a Session Initiation Protocol (SIP) URI. A uniform resource identifier, or “URI”, is a string or characters identifying a network resource. In addition to identifying a network resource, a URI may also specify an access mechanism for accessing the network resource such as for example “sip” or “http”. However, a communications endpoint identifier can take other character string forms such as for example, an e-mail address, a uniform resource locator (URL), or any other information suitable for identifying a resource on the Internet. For example, a communications endpoint identifier can a set of serialized parameter values for example in JavaScript Object Notation (JSON) format. 
         [0034]    While in some embodiments an Internet communications service system is operated by a VoIP provider, an Internet communications service system is operated by other types of Internet service providers in other embodiments. Thus, embodiments of the present disclosure are not limited to Internet communications service systems operated by VoIP providers. 
         [0035]    In addition to communications endpoint identifiers, the corresponding Internet contact information for the given subscriber contact identifier may include reachability information for one or more the communications endpoint identifiers of the corresponding Internet contact information. For this, translation service  50  can store subscriber reachability information for communications endpoint identifiers in translation database  51 . Subscriber reachability information associated with a communications endpoint identifier in returned Internet contact information can indicate the reachability or unreachability of the corresponding communications endpoint identifier. The Internet contact information for subscriber B  10 B obtained from translation database  51  and containing reachability information can be communicated to Internet communications system A  21 A in response to the query from Internet communications system A  21 A specifying the subscriber contact identifier for subscriber B  10 B. 
         [0036]    In some embodiments, reachability information associated with a communications endpoint identifier includes preferences, as registered by the subscriber, on use of specific modes of communication for different classifications of communications. For example, a communication targeted to the subscriber may be qualified as having a certain level of confidentiality, and the subscriber may have registered a preference for a communication mode for communications of a highly confidential nature. In situations of communication qualified as confidential, the preferred mode of communication for confidential matters may be selected by the translation service  50  even if it is not deemed to provide the highest degree of reachability. Similarly, Internet service providers may qualify certain communication of a promotional nature and this qualification may be provided as additional context in the process of selecting one from multiple modes of communication to a subscriber. Given that a subscriber may register a preference for a mode of communication to be used in cases of communication of a promotional or soliciting nature. Here again, the choice of communication mode may not favor the mode with the highest reachability. 
         [0037]    As shown by example in  FIG. 1 , according to some embodiments, a subscriber identified by a subscriber contact identifier may use multiple communications endpoint devices for communications. For example, subscriber B  10 B uses communications endpoint devices B 1   11 B 1  and B 2   11 B 2  at subscriber premises  12 B. Communications endpoint devices B 1   11 B 1  and B 2   11 B 2  may be like communications endpoint device A  11 A but may be different types of communications endpoint devices. For example, communications endpoint device B 1   11 B 1  may be a mobile phone while communications endpoint device B 2   11 B 2  may be a desktop or workstation computer. 
         [0038]    In addition to using multiple communications endpoint devices, a subscriber identified by a subscriber contact identifier may hold accounts with multiple VoIP providers. For example, subscriber B  10 B may hold separate accounts with VoIP providers  22 B 1  and  22 B 2  corresponding to Internet communications service systems B 1   21 B 1  and B 2   21 B 2 , respectively. Internet communications service systems B 1   21 B 1  and B 2   21 B 2  may provide the same or different communication services to subscriber B  10 B. For example, Internet communications service system B 1   21 B 1  may provide voice, videoconferencing, and fax services to subscriber B  10 B and Internet communications service system B 2   21 B 2  may provide just voice services to subscriber B  10 B. 
       Translation Service Providing Reachability Information 
       [0039]    Continuing the example of  FIG. 1 ,  FIG. 2  illustrates a system for providing reachability information in conjunction with a translation service on the Internet  30 , according to an example embodiment of the present disclosure. Referring to  FIG. 2 , the system can include translation service server  50  in operable communication with the Internet  30 . Internet  30  can include Internet communications service system A  21 A for receiving signaling messages for establishing communication between communications endpoint device A  11 A and an another communications endpoint device on the Internet  30  through another Internet communications service system. For example, Internet communications service system A  21 A can receive message(s) from communications endpoint device A  11 A and a subscriber identified by a subscriber contact identifier. Alternatively, Internet communications service system A  21 A can receive messages from any suitable source for establishing communication with a subscriber identified by a subscriber contact identifier. 
         [0040]    Internet communications service system A  21 A determines whether a query of translation service server  50  is required based on whether the subscriber contact identifier corresponds to a subscriber that is not a subscriber of Internet communications service system A  21 A or otherwise a subscriber of an Internet communications service provided by VoIP provider  22 A. For example, Internet communications service system A  21 A determines that a query of translation service server  50  is required based on determining that the subscriber contact identifier corresponds to a subscriber of another Internet communications service system of another VoIP provider. If Internet communications service system A  21 A determines that a query is required, Internet communications service system A  21 A transmits a query to translation service server  50 . Translation service server  50  includes a query interface module  202  for receiving the query from Internet communications service system A  21 A. The query contains the subscriber contact identifier. The subscriber contact identifier may be a called party telephone number, for example. Internet communications service system A  21 A also includes a translation application  204  for performing a look up in translation database  51  for retrieving one or more communications endpoint identifiers and associated reachability information associated with the received subscriber contact identifier. 
         [0041]    While in some embodiments an Internet communications service system determines whether a query of the translation service is required based on whether the subscriber contact identifier corresponds to a subscriber that is not a subscriber of the Internet communications service, an Internet communications service system queries the translation service where the subscriber contact indenter does correspond to one its subscribers. For example, it may be beneficial to perform a query of the translation service because of reachability issues as described earlier in this disclosure, or a query to the translation service may be performed as a fallback upon a failure to connect in-network to the destination subscriber. 
         [0042]    Translation database  51  may include reachability information  206  containing reachability information for communications endpoint identifiers. In response to receiving the query from Internet communications service system A  21 A, translation service server  50  performs a look up in reachability information  206  to retrieve reachability information for each of the communications endpoint identifiers. The retrieved reachability information for each communications endpoint identifier indicates, directly or indirectly, the reachability or unreachability associated with the communications endpoint identifier. Translation service server  50  transmits to Internet communications service system A  21 A a response message containing the reachability information for one or more of the communications endpoint identifiers corresponding to the queried subscriber contact identifier. 
         [0043]    In some embodiments, translation service server  50  responds to the query with only the communications endpoint identifiers that were indicated as reachable by the reachability information  206 . Alternatively, translation service server  50  can respond to the query with the reachability information for all communications endpoint identifiers, even those that are unreachable. 
         [0044]    In some embodiments, reachability is only one of multiple considerations in selecting one of multiple communications endpoint identifiers associated with a subscriber contact identifier. For example, despite reachability status of a communications endpoint identifier, the communications endpoint identifier may still be selected based on a requirement of the originating subscriber for the communication. For example, the communication may involve transmitting an image or video to a terminating subscriber via a live video stream. More generally, in addition to reachability associated with a communications endpoint identifier, urgency, confidentially, privacy, quality, cost, communication content (audio, image, video, etc.) of communications to be sent to the communications endpoint identifier can be other factors for selecting the communications endpoint identifier for communications. 
         [0045]    In accordance with some embodiments, one of the communications endpoint identifiers identified as reachable in the response to Internet communications service system A  21 A identifies a communications endpoint device B 2   11 B 2  reachable through Internet communications service system B 1   21 B 1 . Internet communications service system A  21 A utilizes the communications endpoint identifier for establishing communication over the Internet  30  between communications endpoint device A  11 A and communications endpoint device B 2   11 B 2 . Alternatively, Internet communications service system A  21 A can communicate the communications endpoint identifier to communications endpoint device A  11 A for use by communications endpoint device A  11 A for establishing communication over the Internet  30  between communications endpoint device B 2   11 B 2 . 
         [0046]    In some embodiments, internet communications service systems B 1   21 B 1  and B 2   21 B 2  periodically or regularly communicate with translation service server  50  via network interface  202  for purpose of providing reachability information  206  for communications endpoint identifiers. The provided reachability information may include reachability data such as presence, quality-of-service, and/or priority for the communications endpoint identifiers from which a reachability conclusion (e.g., reachable or unreachable) can be calculated according for example to heuristic or other decision algorithm. Alternatively, the provided reachability information may include a reachability conclusion for each communications endpoint identifier. 
       Example Process for VoIP Provider Interconnection 
       [0047]      FIG. 3  is a flow chart  300  illustrating example steps for VoIP provider interconnection over the Internet  30  using a shared subscriber contact identifier translation service, according to some embodiments of the present disclosure. Initially, an Internet communications service system, such as Internet communications service system A  21 A, receives a subscriber contact identifier such as for example a E.164 number or an e-mail address. 
         [0048]    Next, Internet communications service A  21 A communicates (e.g. by sending) a query message to translation service  50 . The query message can specify the subscriber contact identifier. The query may be implemented using an IP-based protocol. For example, the IP-based protocol can be a signaling protocol such as for example, SIP. The query is received by the translation service at step  302 . 
         [0049]    At step  304 , translation service  50  utilizes the query message for performing a look up in translation database  51  to determine one or more communications endpoint identifiers associated with the received subscriber contact identifier. As shown in  FIG. 2 , example communications endpoint identifiers associated with subscriber contact identifier  123456789  include sip:mary@xyz.com, sip:mary.smith@yyz.com, and mailto:mary.smith@xyz.com, and mailto:mary@yyz.com. 
         [0050]    Translation database  51  can maintain data for indicating reachability of the communications endpoint identifiers associated with the subscriber contact identifier. Accordingly, at step  304 , in addition to utilizing the query message for performing a lookup to retrieve one or more communications endpoint identifiers associated with the received subscriber contact identifier, translation service  50  can utilize the query message for performing a look up in translation database  51  to retrieve reachability information for one or more of the communications endpoint identifiers associated with the received subscriber contact identifier. In the example shown in  FIG. 2 , the only communications endpoint identifiers currently reachable are the communications endpoint identifiers associated with xyz.com domain. In particular, the communications endpoint identifiers sip:mary@xyz.com and mailto:mary.smaith@xyz.com are reachable by the communications endpoint identifiers sip:mary.smoth@yyz.com and mailto:mary@yyz.com are not currently reachable. 
         [0051]    In the example of  FIG. 2 , the reachability information associated with a communications endpoint identifier is a data indicating whether the corresponding communications endpoint identifier is reachable or unreachable. In other embodiments, the reachability information associated with a communications endpoint identifier is raw reachability information. Here, raw reachability information for a communications endpoint identifier refers any reachability information from which a reachability conclusion of “reachable” or “unreachable” can be computed, inferred, or derived. In some embodiments, the raw reachability information includes network quality-of-service information, subscriber presence information, and/or subscriber preference information. Quality-of-service information can include any quantitative or qualitative measure of the network quality of service (e.g., error rates, bandwidth, throughput, transmission delay, availability, jitter, etc.) that network communications with network endpoints associated with the communications endpoint identifier may be expected to experience. Subscriber presence information can include any information indicating the availability or status (e.g., “available”, “away”, “offline”, “online”, etc.) of a subscriber associated with the communications endpoint identifier. Subscriber preference information can include information on the preference of the subscriber associated with the communications endpoint identifier to be contacted for communications through the communications endpoint identifier. 
         [0052]    At step  306 , the translation service selects one of the communications endpoint identifiers based at least on the reachability information associated with the communications endpoint identifiers. According to some example embodiments, the translation service  50  applies a heuristic algorithm to determine a reachability of status for a communications endpoint identifier of “reachable” or “unreachable” based on raw reachability information obtained for the communications endpoint identifier. In other examples, the translation service  50  learns about a pattern of reachability for a subscriber based on, for example, prior reachability status over a period of time. In some embodiments, reachability information is probabilistic or continuous in nature, based upon a past historical pattern of behavior with a given communications endpoint identifier, such that reachability values of multiple possible communications endpoint identifiers for the same subscriber may be fed into a computation that determines the best choice of communications endpoint identifier for that subscriber based upon highest computed match score for each of the possible communications endpoint identifiers for that subscriber, taking into account all the selection criteria and weights and importance assigned to each of the selection criteria. 
         [0053]    At step  308 , the translation service  50  returns a response to the query from the Internet communications service system. The response includes at least the selected communications endpoint identifier. The response can also include the one or more communications endpoint identifiers retrieved from the translation database  51  associated with the subscriber contact identifier. In addition, for one or more of the communications endpoint identifiers, the response may also include reachability information for the communications endpoint identifier. The reachability information can be a reachability conclusion for the communications endpoint identifier. In addition or alternatively, the reachability information can be raw reachability information (e.g., quality of service, presence, or preference information) from which the querying Internet communications service system can apply a heuristic algorithm to determine a reachability conclusion for the communications endpoint identifier. 
         [0054]    In some embodiments, the Internet communications service system uses the response to the query to establish VoIP call between a called party and a calling party. For example, Internet communications service system A  21 A receives a SIP invite message from communications endpoint device A  11 A in response to subscriber A  10 A (the calling party) providing a subscriber identifier (e.g., an E.164 number) for subscriber B  10 B (the called party) to communications endpoint device A  11 A. The SIP invite message specifies the subscriber contact identifier. In response to receiving the SIP invite message, Internet communications service system A  21 A queries translation service  50  for Internet contact information associated with the subscriber contact identifier. The translation service  50  returns in response to the query Internet contact information associated in the translation database  51  with the subscriber contact identifier. For example, the returned Internet contact information may specify two SUP URIs and associated reachability information. Internet communications service system A  21 A uses the reachability information associated with the two SIP URIs returned in response to the query to select one of the SIP URIs for establishing a VoIP call with subscriber B  10 B. For the example, the reachability information may indicate that subscriber B  10 B is currently reachable through one of the SIP URIs but is currently not reachable through the other of the two SIP URIs. Accordingly, the Internet communications service system A  21 A sends a SIP invite message for establishing a VoIP call between subscriber A  10 A and subscriber B  10 B to the Internet communication service system associated with the currently reachable SIP URI. In this way, the translation service  50  facilitates VoIP provider interconnection over the Internet  30  using the translation service  50 . 
         [0055]    In some embodiments, reachability information in translation database  51  is used to establish a multi-party VoIP call. For example, the translation database  51  may store reachability information for a SIP conference URI such that an Internet communications service system that is attempting to connect a calling party to a conference call at the SIP conference URI can use the reachability information associated with the SIP conference URI to connect the calling party to the conference call over the Internet. 
       Providing Reachability Status Changes 
       [0056]    According to some embodiments, an Internet communications service system provides reachability information about communications endpoint identifiers associated with its subscribers to translation service  50 . In these embodiments, the Internet communications service system may report reachability status changes of communications endpoint identifiers associated with its subscribers. 
         [0057]      FIG. 4  illustrates a flow chart  400  of example steps by which an Internet communications service system such as for example Internet communications service system B 2   21 B 2  can provide reachability information to translation service  50 , according to some embodiments of the present disclosure. Referring to  FIG. 4 , in step  402 , Internet communications service system B 2   21 B 2  sends reachability information for one or more communications endpoint identifiers to translation service  50 . In one example embodiment, Internet communications service system B 2   21 B 2  sends the reachability information to translation service  50  according to a “push” or “pull” mechanism. In the “pull” mechanism, the Internet communications service system B 2   21 B 2  waits for the translation service  50  to request reachability information and sends the reachability information to the translation server  50  in response to the request. 
         [0058]    The request, for example, may specify one or more communications endpoint identifiers that the translation service  50  is requesting reachability information for. Internet communications service system B 2   21 B 2  may respond with reachability information for just the specified communications endpoint identifiers. According to the “push” mechanism, the Internet communications service system B 2   21 B 2  periodically or regularly initiates communication with the translation service  50  for the purpose of providing reachability information. For example, Internet communications service system B 2   21 B 2  may provide reachability information for a communications endpoint identifier after service system B 2   21 B 2  has detected a change to the reachability status of the communications endpoint identifier. The reachability information provided for a communications endpoint identifier in step  402  may include a reachability conclusion for the communications endpoint identifier (e.g., “reachable” or “unreachable”) and/or may include raw reachability information for the communications endpoint identifier (e.g., quality-of-service, subscriber presence, and/or subscriber preference information for the communications endpoint identifier). 
         [0059]    At step  404 , the Internet communications service system B 2   21 B 2  monitors the reachability and/or unreachability of communications endpoint identifiers of its subscribers. Next, at step  406 , Internet communications service system B 2   21 B 2  determines (or detects) whether a change to the reachability status for one or more of its subscribers&#39; communications endpoint identifiers has occurred. If it is determined (or detected) that an update has occurred, the Internet communications service system B 2   21 B 2 , at step  408 , communicates to translation service  50  an updated reachability information associated with the communications endpoint identifiers for which reachability status changes were determined or detected. Next, at step  410 , translation service  50  can update the reachability information in translation database  51  for the changed communications endpoint identifiers. The process then returns to step  404  to continue to monitor for reachability status changes. Returning to step  406 , if there are no reachability status changes, Internet communications service system B 2   21 B 2  can continue to monitor for changes at step  404 . 
       General-Purpose Computer System 
       [0060]    In some embodiments, the present disclosure is implemented on or by one or more conventional or general-purpose computer systems. For example,  FIG. 5  is a block diagram that illustrates a computer system  500  in which example embodiments of the present disclosure may be embodied. Computer system  500  includes a bus  502  or other communication mechanism for communicating information, and a hardware processor  504  coupled with bus  502  for processing information. Hardware processor  504  may be, for example, a general purpose microprocessor or a system on a chip (SoC). 
         [0061]    Computer system  500  also includes a main memory  506 , such as a random access memory (RAM) or other dynamic storage device, coupled to bus  502  for storing information and instructions to be executed by processor  504 . Main memory  506  also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor  504 . Such instructions, when stored in non-transitory storage media accessible to processor  504 , render computer system  500  into a special-purpose machine that is customized to perform the operations specified in the instructions. 
         [0062]    Computer system  500  further includes a read only memory (ROM)  508  or other static storage device coupled to bus  502  for storing static information and instructions for processor  504 . 
         [0063]    A storage device  510 , such as a magnetic disk, optical disk, or solid-state drive is provided and coupled to bus  502  for storing information and instructions. 
         [0064]    Computer system  500  may be coupled via bus  502  to a display  512 , such as a liquid crystal display (LCD) or other electronic visual display, for displaying information to a computer user. Display  512  may also be a touch-sensitive display for communicating touch gesture (e.g., finger or stylus) input to processor  504 . 
         [0065]    An input device  514 , including alphanumeric and other keys, is coupled to bus  502  for communicating information and command selections to processor  504 . 
         [0066]    Another type of user input device is cursor control  516 , such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor  504  and for controlling cursor movement on display  512 . This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane. 
         [0067]    Computer system  500  may implement the techniques described herein using customized hard-wired logic, one or more application-specific integrated circuits (ASICs), one or more field-programmable gate arrays (FPGAs), firmware, or program logic which, in combination with the computer system, causes or programs computer system  500  to be a special-purpose machine. According to some embodiments, the techniques herein are performed by computer system  500  in response to processor  504  executing one or more sequences of one or more instructions contained in main memory  506 . Such instructions may be read into main memory  506  from another storage medium, such as storage device  510 . Execution of the sequences of instructions contained in main memory  506  causes processor  504  to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions. 
         [0068]    The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operate in a specific fashion. Such storage media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical disks, magnetic disks, or solid-state drives, such as storage device  510 . Volatile media includes dynamic memory, such as main memory  506 . Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid-state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge. 
         [0069]    Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus  502 . Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications. 
         [0070]    Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor  504  for execution. For example, the instructions may initially be carried on a magnetic disk or solid-state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system  500  can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus  502 . Bus  502  carries the data to main memory  506 , from which processor  504  retrieves and executes the instructions. The instructions received by main memory  506  may optionally be stored on storage device  510  either before or after execution by processor  504 . 
         [0071]    Computer system  500  also includes a communication interface  518  coupled to bus  502 . Communication interface  518  provides a two-way data communication coupling to a network link  520  that is connected to a local network  522 . For example, communication interface  518  may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface  518  may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface  518  sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information. 
         [0072]    Network link  520  typically provides data communication through one or more networks to other data devices. For example, network link  520  may provide a connection through local network  522  to a host computer  524  or to data equipment operated by an Internet Service Provider (ISP)  526 . ISP  526  in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet”  528 . Local network  522  and Internet  528  both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link  520  and through communication interface  518 , which carry the digital data to and from computer system  500 , are example forms of transmission media. 
         [0073]    Computer system  500  can send messages and receive data, including program code, through the network(s), network link  520  and communication interface  518 . In the Internet example, a server  530  might transmit a requested code for an application program through Internet  528 , ISP  526 , local network  522  and communication interface  518 . 
         [0074]    The received code may be executed by processor  504  as it is received, and/or stored in storage device  510 , or other non-volatile storage for later execution. 
         [0075]    A software system is typically provided for controlling the operating of computer system  500 . The software system, which is usually stored in main memory  506  and on fixed storage (e.g., hard disk)  510 , includes a kernel or operating system (OS) which manages low-level aspects of computer operation, including managing execution of processes, memory allocation, file and network input and output (I/O), and device I/O. The OS can be provided by a conventional operating system such as, for example, MICROSOFT WINDOWS, SUN SOLARIS, or LINUX. 
         [0076]    One or more application(s), such as client software or “programs” or set of processor-executable instructions, may also be provided for execution by computer  500 . The application(s) may be “loaded” into main memory  506  from storage  510  or may be downloaded from a network location (e.g., an Internet web server). A graphical user interface (GUI) is typically provided for receiving user commands and data in a graphical (e.g., “point-and-click” or “touch gesture”) fashion. These inputs, in turn, may be acted upon by the computer system in accordance with instructions from OS and/or application(s). The graphical user interface also serves to display the results of operation from the OS and application(s). 
       Extensions and Alternatives 
       [0077]    In the foregoing disclosure, example embodiments of the disclosure have been described with reference to numerous specific details that may vary from implementation to implementation. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. The sole and exclusive indicator of the scope of the disclosure, and what is intended by the applicants to be the scope of the disclosure, is the literal and equivalent scope of the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction.