Abstract:
A system for effecting a telephone call between telephonic devices is operative to use a computer network, without manual use of the alphanumeric keypads. A third party call control (3PCC) application program interface (API) provides the capability for users to use a web browser or other Internet capable software to place a call, rather than using the telephone keypad. A third party call control application program interface includes a uniform resource locator operable over the Internet to cause a call between a first telephonic device and a second telephonic device to be completed. The uniform resource locator includes identification of the first telephonic device and identification of the second telephonic device.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
       [0001]    This application is a continuation of co-pending U.S. patent application Ser. No. 11/081,174, filed Mar. 16, 2005. The aforementioned related patent application is herein incorporated by reference. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention relates to a system for effecting a telephone call between telephonic devices. The present invention also relates to novel uses of a web browser and Internet capable software. 
         [0004]    2. Description of the Related Art 
         [0005]    Voice-over Internet Protocol (VoIP) is a category of hardware and software that enables the user to use a computer network such as the Internet as the transmission medium for telephone calls by sending voice data in packets using Internet Protocol (IP) rather than by traditional circuit transmissions of the Public Switch Telephone Network (PSTN). This eliminates circuit switching and the associated waste of bandwidth. Instead, packet switching is used, wherein IP packets with voice data are sent over the network only when data needs to be sent, i.e. when a party to the call is speaking. 
         [0006]    The advantages of VoIP over traditional telephony include, by way example, lower costs per call, especially for long-distance calls, and lower infrastructure costs. That is, once the IF infrastructure is installed, no or little additional telephony infrastructure is required. 
         [0007]    However, despite the technological flexibility of a VoIP system, callers are still limited to initiating calls manually, that is by using the keypad on a telephone. 
         [0008]    There is an art desired need to greatly reduce or eliminate the user&#39;s manual activities in initiating a telephone call, including the telephone keypad operation. 
       OBJECTS AND SUMMARY OF THE INVENTION 
       [0009]    It is therefore a principal object of the present invention to provide a system for effecting a telephone call between telephonic devices using a computer network without manual use of the telephonic device keypads. 
         [0010]    The third party call control (3PCC) application program interface (API) of the present invention provides the capability for users to use a web browser or other Internet capable software to place a call. This eliminates using the telephone keypad. The open nature of the API also provides the capability to integrate 3PCC functionality with new or existing applications, such as customer relationship management (CRM), contact management applications, and the like. 
         [0011]    In one embodiment of the present invention, a third party call control application program interface includes a first uniform resource locator operable over the Internet to cause a call or connection between a first telephonic device and a second telephonic device to be completed. The first uniform resource locator includes identification of the first telephonic device and identification of the second telephonic device. 
         [0012]    In one aspect of the present invention, the first uniform resource locator may be generated on a computer system that is communicatively connected to the Internet. The call may be completed by initiating a call to the first telephone device and transferring the call, so as to complete the call, to the second telephone device, when the call to the first telephone device is answered. The call may be initiated to the first telephone device using the Session Initiation Protocol INVITE method. The call may be transferred to the second telephone device using the Session Initiation Protocol REFER method. 
         [0013]    In one aspect of the present invention, the identification of the first telephonic device may include identification of a telephone number of the first telephone device and the identification of the second telephonic device may include a telephone number of the second telephonic device. The telephonic devices may be conventional telephones. However, the present invention contemplates any present or future telephonic device. The third party call control application program may further include identification of an account to be billed. The identification of the first telephonic device includes a telephone number of the first telephone device and the identification of the second telephonic device includes a telephone number of the second telephonic device. The identification of the account to be billed may include the telephone number of the first telephonic device, the telephone number of the second telephonic device, or the telephone number of a third telephonic device. 
         [0014]    In one further aspect of the present invention, the third party call control application program may further include a second uniform resource locator operable over the Internet to obtain information identifying an account to be billed. The information identifying an account to be billed may also include at least one telephone number. At least one of the first uniform resource locator identification of the first telephone device and the first uniform resource locator identification of the second telephone device may include at least one telephone number obtained by the second uniform resource locator. 
         [0015]    In a still further aspect of the present invention, the third party call control application program includes identification and password information; such information is authenticated and validated before the call is completed. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0016]      FIG. 1  is an exemplary block diagram of the system in which the present invention may be implemented; 
           [0017]      FIG. 2  is an exemplary diagram of an implementation of a contact list interface to functionality of the present invention; and 
           [0018]      FIG. 3  illustrates an example of a vcard implementing functionality of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0019]    The third party call control (3PCC) application program interface (API) of the present invention provides the capability for users to use a web browser or other Internet capable software to place a call. This eliminates using a keypad such as the alpha/numeric keypad on a conventional telephone. The open nature of the API also provides the capability to integrate 3PCC functionality with new or existing applications like customer relationship management (CRM), contact management applications, and the like. 
         [0020]    A system in which the present invention may be implemented is shown in  FIG. 1 . In one embodiment, a user computer system  102  is used to access the Internet and invoke the 3PCC API using a secure hyper-text transfer protocol (HTTPS) uniform resource locator (URL)  104  (secure sockets layer (SSL)). The URL  104  is used to pass authorization credentials, such as login information, along with at least two phone numbers, a “from” number and a “to” number. An example of a suitable URL is:
       https://secure.url.com/tpcc/makecall?username=aw&amp;password=secret &amp;   fromnumber=17325551111&amp;tonumber=17325552222       
 
         [0023]    This URL includes specification of the secure hyper-text transfer protocol (https:), the Internet address of web server  106  (secure.url.com), the action to be performed by web server  106  (makecall), the authorization credentials (username=aw&amp;password=secret), the telephone number of the telephone from which the call is to originate (fromnumber=17325551111) and the telephone number of the telephone to which the call is to be completed (tonumber=17325552222). 
         [0024]    The HTTP URL activates a secure web server  106 , which authenticates the user and passes the information to a CallController system  108 . Preferably, the information is passed from secure web server  106  to CallController  108  using a Remote Procedure Call (RPC)  110 . The CallController  108  is a trusted peer of Session Initiation Protocol (SIP) proxy server  114 . 
         [0025]    SIP is a signaling protocol for Internet conferencing, telephony, presence, events notification and instant messaging. SIP provides the necessary protocol mechanisms so that end systems and proxy servers can provide services such as call completion, call forwarding, callee and calling “number” delivery, personal mobility, terminal-type negotiation and selection, terminal capability negotiation, caller and callee authentication, blind and supervised call transfer, invitations to multicast conferences. 
         [0026]    A goal for SIP was to provide a superset of the call processing functions and features present in the public switched telephone network (PSTN). As such, features that permit familiar telephone-like operations are present: dialing a number, causing a phone to ring, hearing ringback tones or a busy signal. Implementation and terminology are different; for example, SIP refers to a device being in an “alerting state” rather than a “ringing.” 
         [0027]    In response to receiving the RPC  110  from secure web server  106 , CallController  108  invokes a number of SIP methods  112  involving SIP proxy server  114 . In response, SIP proxy server  114  invokes those SIP methods  116  to the appropriate target. In addition, SIP proxy server  114  monitors any calls that are initiated and completed, in order to handle the necessary billing functions. 
         [0028]    In particular, CallController  108  initiates a call from CallController  108  to the “from” number, using the SIP INVITE method. SIP proxy server  114  in turn invokes the SIP INVITE method  116  targeting the “from” telephone  118 . The technique used to invoke the SIP INVITE method depends upon the type of “from” telephone  118  involved. For example, if the “from” telephone  118  is an Internet Protocol (IP) telephone, the SIP MVITE method  120 B may be invoked directly on the “from” telephone  118 , since the IP telephone is capable of performing the necessary functions in response to the invocation of the SIP INVITE method. Alternatively, if the “from” telephone  1   18  is a standard Public Switched Telephone Network (PSTN) telephone, then the SIP INVITE method is invoked using a PSTN gateway server  120 A to initiate the call. In either case, a call to the “from 7’ telephone  118  is initiated. 
         [0029]    When the “from” telephone  118  answers, CallController  108  initiates a call transfer to transfer the call to the “from” telephone  11   8  from the origin of the call, CallController  108 , to the “to” telephone  122  number, using the SIP REFER method. This terminates the initial call between the CallController and the “from” telephone  118 , and triggers the “from” telephone  118  to initiate a new call to the “to” telephone  122 . This call is billed to the appropriate account. 
         [0030]    There are three possible numbers to which the call may be billed—the “from” number, the “to” number, or a third “billto” number. The number to which the call is billed must belong to a subscriber of the telephone service provider. Thus, if the “from” number belongs to the subscriber, the call is billed to the “from” number, if the “to” number belongs to the subscriber, the call is billed to the “to” number, if neither the “from” number nor the “to” number belong to the subscriber, a third number must be billed. This third number may be supplied in the URL  104  or it may be associated with the user name that was used to login. An example of a suitable URL including a “billto” number is:
       https://secure.url.com/tpcc/makecall?username=aw&amp;password secret &amp; fromnumber=17325551111 &amp;tonumber=17325552222&amp; billtonumber=17325553333       
 
         [0032]    Preferably, an additional HTTPS URL is exposed which allows an application to retrieve a list of phone numbers in a user&#39;s account. This URL passes authorization credentials (login information) and returns the phone numbers associated with the account corresponding to that login information. This list can be presented to the user to select which number is to initiate the call (the “from” number), and/or to select which number is to be billed for the call (the “billto” number). 
         [0033]    Although, typically, user computer system  102  is used to initiate the telephone calls, calls may also be initiated from a third party telephone  124 . Third party telephone  124  would dial into an interactive voice response (IVR) system  126  and would be used to enter the information needed to initiate the telephone call. IVR  126  would pass the information to CallController  108  using RPC  128 . The system would then initiate the call in a manner similar to that for a call initiated from user computer system  102 . 
         [0034]    The third party telephone configuration slightly changes the role of “from” telephone  118 , as compared to the configuration involving only the “to” and “from” telephones. Both “to” telephone  122  and “from” telephone  118  become the “to” telephones. If the third party places a call to “from” telephone  118 , SIP proxy server  114  invokes sip invite methods  116 , as discussed above. However, if third party telephone  124  is trying to reach “to” telephone  122 , the inventive system may have an alternative and additional communication link  500  adaptively operable in response to invoking methods similar to sip invite methods  116  by Proxy Server  114 . 
         [0035]    As a further possibility, CALL CONTROLLER SERVER  108  can always directly call “to” telephone  122  using the link similar to communication link  500 . One of possible scenarios involving such a direct connection may involve a situation when the caller operating the “from” telephone does not want experience any delays due to the busy line. Instructing the controller server to initiate contact with the “to” telephone and, once the operator of the “to” telephone answers the call from the controller server, actually connecting the “from” and “to” telephones may save the operator of the “from” telephone time. 
         [0036]    The configuration of the inventive system involving third party telephone  124  may have numerous practical ramifications and be used in a variety of ways. For instance, one potential use of this is similar to a “calling card”. The subscriber could initiate a call from any telephone, such as their hotel room telephone or a pay telephone, to any other phone, while billing the call to their own account. 
         [0037]    Examples of users of the services provided by the present invention include business users who have a large phone book of users they need to call (e.g. sales calls), or by telemarketing operations. In this situation, the subscriber uses the “from” telephone and the calls are billed to the “from” number. 
         [0038]    For example, this could be implemented in phone or address book software, such as using a plug-in to an email program such as MICROSOFT OUTLOOK®, or in contact manager software. An example of such an implementation is shown in  FIG. 2 . In this example, a contacts window  202  includes a plurality of contacts entries  204 A-C. Each contact entry  204 A-C includes a contact address  208 A-C and a contact telephone number  210 A-C. Associated with each contact telephone number  210 A-C is a software control, which, when activated, causes the telephone number  210 A-C to be dialed using the third party call control system shown in  FIG. 1 . The software control may take any form. For example, the software control may be a button or an active area associated with the telephone number  210 A-C. Alternatively, the software control may be a hotkey, which may operate, for example, by a user selecting a telephone number and then pressing the hotkey. These are merely examples of suitable software controls; any software control with adequate functionality may be used. 
         [0039]    In order to dial the telephone number  210 A-C using the third party call control system shown in  FIG. 1 , a URL, such as those shown above, is used. The telephone number  210 A-C is included in the URL, typically as the “to” number. The “from” number would typically be the phone number of a phone available to the person initiating the call. The “billto” number may be omitted from the URL, in which case the “from” number would typically be billed, or a third “biilto” number may be included in the URL. 
         [0040]    Additional enhancement to this functionality include the capability to scan pages and documents for character strings that appear to be telephone numbers. These telephone numbers may be highlighted for the user. The user may then dial any such telephone number by selecting the number and pressing the hotkey or other software control. 
         [0041]    Preferably, the implementation includes sufficient intelligence to understand the formats of telephone numbers, including international telephone numbers, as well as the ability to filter the characters in the telephone number to strip characters such as parentheses, hyphens, etc. 
         [0000]    In another embodiment, subscribers are able to distribute software objects that provide the capability for the recipient of the object to call the subscriber. Typically, the software object is distributed using email, but it may be distributed by download or any form of electronic communications. An example of such a software object is shown in  FIG. 3 . In the example shown in  FIG. 3 , the software object is a virtual contact card or “vcard”  302 . In this example, vcard  302  includes information such as a company name  304 , the subscriber&#39;s name  306 , the address  308 , and instructions for initiating a call  310 . In addition vcard  302  includes a field in which the recipient of the vcard is to enter their telephone number  312  and a software control  314 , such as a button, that initiates the telephone call. The information provided, the company name  304 , the subscriber&#39;s name  306 , the address  308 , and instructions for initiating a call  310 , are merely examples and any desired information may be included in the vcard. Likewise, field  312  and software control  314  are merely examples of a software mechanism that may be used for operation of the vcard. 
         [0042]    Included in or associated with vcard  302  and/or software control  314  is software that initiates a telephone call between the subscriber and the recipient of the vcard. When the recipient enters a telephone number in field  312  and activates software control  314 , vcard  302  generates a URL and uses the URL to transmit information  316  to a vcard server  318 . While the transmitted information  316  may include the identification and password information of the subscriber, preferably, transmitted information  316  does not include this information in an insecure form. For example, transmitted information  316  may include the identification and password information of the subscriber in an encrypted form, or transmitted information  316  may be a token that is used by vcard server  318  to obtain the identification and password information of the subscriber, such as by a database lookup. 
         [0043]    Vcard server  318  receives the transmitted information  316  and generates a URL that is used to transmit information  320  to secure web server  106 . This URL is similar to that generated by user computer system  102 , shown in  FIG. 1 , which is used to communicate with secure web server  106 . If the transmitted information  316  is encrypted identification and password information of the subscriber, vcard server  318  decrypts the information and uses it to generate the URL. If the transmitted information  316  is a token, vcard server  318  validates the token, then uses the token to obtain the identification and password information of the subscriber, such as by using the token to access a database that contains the identification and password information of the subscriber. In any case, the URL is used to transmit information  320  to secure web server  106 , which initiated the telephone call in a manner similar to that shown in  FIG. 1 . 
         [0044]    Typically, vcard  302  includes information such as the network address of vcard server  318 , token and/or encryption information, and information identifying the sender of the vcard. Alternatively, vcard  302  could include a unique token that identifies the particular call setup to be initiated, but which does not itself include information that identifies the subscriber account involved. Of course, various modifications are possible, such as including the identification information, but not the password, etc. 
         [0045]    In the example shown in  FIG. 3 , vcard  302  included field  312  in which the recipient of the vcard entered the telephone number to which the telephone call was to be completed. Alternatively, the sender of the vcard or other software object could specify a particular number to which the telephone call is to be completed. This would allow a subscriber to control the particular calls that can be made. For example, the subscriber could generate one software object that initiated a call from their grandmother&#39;s phone to the subscriber&#39;s phone, another software object that initiated a call from a friend&#39;s phone to the subscriber&#39;s phone, etc. This allows parties to initiate calls to the subscriber from their phone at any time, while billing the subscriber, the “to” number. 
         [0046]    In addition, the sender of software object may be allowed to specify conditions for use of the software object. For example, the sender may specify that the software object expires after a particular date, the sender may specify time of day restrictions on the calls, the sender may restrict international calls, and the like. If the transmitted information is encrypted, this information may be included in the encrypted information. If the transmitted information is a token, the database may include the appropriate conditional information. 
         [0047]    Although specific embodiments of the present invention have been described, it will be understood by those of skill in the art that there are other embodiments that are equivalent to the described embodiments. For example, the present invention may also be advantageously applied to three-way and/or multiple party conferencing. For three-way conferencing, the system shown in  FIG. 1  would be used to initiate two calls to the same telephone. Typically, the first call would be completed to the telephone, the second call would be initiated, the telephone would receive a call waiting indication, and the second call would be conferenced in to the first. For multiple party conferencing, the system shown in  FIG. 1  would be used to initiate multiple calls to a conference bridge, with all calls billed to the account of the conference organizer. 
         [0048]    In addition, it is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computes readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media such as floppy disc, a hard disk drive, RAM, and CD-ROM&#39;s, as well as transmission type media, such as digital and analog communications links. 
         [0049]    Accordingly, it is to be understood that the invention is not to be limited by the aforesaid specific illustrated embodiments, but by the scope of the appended claims.