The invention is described in connection with the embodiments illustrated in the following diagrams.
In the following description of various exemplary embodiments, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration various embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized, as structural and operational changes may be made without departing from the scope of the present invention.
Generally, the present invention provides mechanisms and approaches for providing at least the identity of communication device users who initiate communications from a fixed network such as the Internet. For example, the present invention provides a manner for identifying an initiating communication device/user that is not associated with an identifiable telephone number that may otherwise facilitate identification of the initiating user by way of, for example, Caller Line Identification (CLI). More particularly, fixed network devices such as terminals, computers and other devices capable of communicating via networks such as the Internet generally do not have an identifiable telephone number associated therewith, and technologies that operate using telephone numbers such as CLI are unable to identify the originator of an Internet or other similar network-initiated call. In a particular example, a Voice over Internet Protocol (VoIP) call or other computer telephony call may be associated with an Internet address, e-mail address or other computer-related address. VoIP generally refers to services for managing the delivery of voice information using the Internet Protocol (IP), such that the voice data is sent via packets in the packet-switched (PS) domain rather than the traditional CS domain. These VoIP or other PS domain calls are not typically associated with a telephone number to which services such as CLI are associated. In such cases, the recipient of a traditional circuit-switched (CS) call cannot be notified of the calling party, and/or of rich content associated with the caller such as an image(s), audio, and/or other multimedia. The present invention solves these and other problems, and can be used with technologies that involve different identifying information (e.g., telephone numbers versus network-related addresses), and/or to apply to legacy technologies where these different identifiers are inherently present.
In the embodiment of
Further, the calling terminals 104 may not have traditional telephone numbers associated with them. For example, a terminal making a VoIP call via the Internet may have an Internet address, e-mail address, or other network-related identifier, but may not have any identifier corresponding to a traditional telephone number. As a more particular example, a user making a VoIP call from his/her computer via the Internet may not have an associated E.164 number. E.164, originally developed by the International Telecommunication Union (ITU), is an international numbering plan for public telephone systems in which each assigned number contains a country code (CC), a national destination code (NDC), and a subscriber number (SN). There can be up to 15 digits in an E.164 number, where each number is unique worldwide. In the fixed Internet or other similar networks, the users may not have a traditional E.164 reserved for them, and when there is an incoming voice call from the Internet user to a mobile phone user, it is not possible to show or otherwise establish the identity of the calling user. The present invention solves this problem and other problems, and also allows for rich content to be provided in connection with the calling party identification.
Referring again to
In the illustrated embodiment, a second identifier is associated 202 with the calling party identifier. This “association” may be performed (among other ways) in advance, or in connection with each voice call to a targeted terminal. For example, the second identifier may be a CS domain identifier, such as a dedicated E.164 number, which is associated in advance with the particular calling party. In another example, the second identifier may be a temporary CS domain identifier, such as an E.164 number that is temporarily associated with the calling party identifier. These and other embodiments are described in greater detail below.
When the targeted terminal has received this information, and in some embodiments locally stored this association of identifiers, the targeted terminal can use this information upon receipt of a voice call to identify the calling party. More particularly, the server or other network element can direct 206 a voice call from the calling party to the targeted terminal. The server also provides the second identifier that is associated with the received calling party identifier. In this manner, the receiving terminal can determine the second identifier (e.g., CS domain identifier, such as an E.164 number) using a calling line identity scheme, such as, for example, Calling Line Identity (CLI). The receiving terminal can use this second identifier to locate the previously associated identifier that is known to the receiving device to identify the calling party. For example, an E.164 number may be associated with an e-mail address (e.g., Jdoe@ABCXYZcompany.com) of the calling party, which is associated with John Doe in the receiving terminal's phonebook or other contact list/database. The name “John Doe” can then be presented via the receiving terminal, which may involve any one or more of displaying the name in text, providing audio of the name, providing an image and/or video of the person associated with the name, providing graphics, tactile feedback, and/or any other user interface mechanism to identify the calling party specifically or as part of a particular group.
When a voice call is received 304 at the receiving terminal, the CS calling party identifier is also received. Using at least the CS calling party identifier based on the association with the PS calling party identifier, the associated contact name is located 306. The contact name can then be presented 308 via the targeted terminal. It should be recognized that the contact name may be any identifiable name, nickname, company, or other stored characteristic that identifies the calling party. It should also be recognized that the contact name may be “presented” using any user interface mechanism, including but not limited to visually and/or audibly presenting the name or other identifying information, and/or using tactile feedback or other identifying means.
The present invention may be implemented in various manners. One representative embodiment is shown in
As will be described in greater detail in connection with
In the illustrated embodiment, the association client 400 is implemented as a JAVA MIDP client as part of a rich call client. The rich call client is registered and connected to a network server(s), such as the rich call server 404. The rich call server 404 serves as the control and connection point between the fixed network/internet 406 users (e.g., the user associated with the computing/communication device 408) and mobile users such as the terminal 402. The device 408 may be any computing/communication device capable of communicating via a fixed network 406 such as the Internet. When there is an incoming voice call from the fixed internet user 408, the voice call setup information 410 includes an identification of the user 408, shown in
In one embodiment, the rich call server 404 may reserve a temporary number capable of being ascertained via a calling line identity scheme operable in the CS domain. One such calling line identity scheme is CLI. In such a case, the temporary number being reserved is an E.164 number. In one embodiment, if the name/number association already exists for the calling party identifier, then no temporary number needs to again be reserved at the server 404. On the other hand, if the name/number association does not already exist for that calling party identifier, then rich call server 404 may reserve a temporary E.164 number that will be used in a circuit-switched voice call setup towards the user of the mobile terminal 402. This is illustrated in the name/number association database (DATABASE) 414. One or more name/number associations may be stored for each of one or more users. For example, the “Name-B” may be associated with the “Number-B” 416, which is a temporarily reserved E.164 number in the present example, which may then be pushed or otherwise provided to the terminal 402.
Before initiating a circuit-switched (CS) voice call setup, the rich call server 404 sends a request 418 via the mobile network 420 to the mobile terminal's 402 client 400 to add a new entry to the phonebook, contact list, or other stored contacts 422 of the terminal 402. In another embodiment, the request may be to modify an existing contact versus creating a new entry. In one embodiment, the modified or new entry is a temporary modification/addition to the contacts 422, while in another embodiment the modified or new entry may be permanently added to the contacts 422.
The request 418 in the embodiment of
The client 400 in the terminal accesses the contacts/phonebook 422, and in one embodiment stores the name and number (e.g., Name-B 412 and Number-B 416). In one embodiment, the client 400 is implemented as a JAVA client that uses JAVA Personal Information Manager (PIM) API to access the phonebook 422, although any suitable manner of accessing this information may be utilized. When the client 400 has stored the name/number, one embodiment involves the client 400 sending an acknowledgement 424 to the rich call server 404.
The server 404 may then initiate a CS voice call setup, such as through an Internet Protocol-Private Branch eXchange (IP PBX) or similar data network system. An IP PBX is a customer premises phone system that manages telephones in the system and serves as a gateway to voice and data networks. It allows calls to be placed via a network rather than via the standard circuit-switched telephone infrastructure. Thus, an IP PBX is telephone switching component that can reside at or be otherwise available to the server 404, and calls can be transmitted via the network 420 rather than via a traditional Public Switched Telephone Network (PSTN).
When the server 404 initiates the CS voice call setup as described above, the calling line identity number is set as the previously assigned number (e.g., Number-B 416). For example, where an E.164 number has been associated with the calling party name and sent to and stored at the contacts/phonebook 422, the subsequent initiation of the voice call includes the E.164 number 416 which is then provided to the terminal 402 as shown by voice call setup 426. When the call setup 426 information arrives at the terminal 402, it is then possible to show or otherwise present the real calling line identity, as the E.164 or other similar number can be used with a calling line identity scheme operable in the CS domain, such as CLI, to identify the caller. This occurs where the terminal 402 obtains the E.164 or other similar number via the voice call setup information 426, and compares this to the stored associations in the contacts/phonebook 422 (or otherwise stored remote to the terminal 402 but accessible by the terminal 402). The “name” that is associated with the number provided via the voice call setup information 426 can then be presented via the appropriate user interface (UI) mechanism(s), such as the UI 428 which presents the “Name-B.”
In this manner, the name/number association is provided to the terminal 402 prior to initiation of the actual voice call. The Number-B 416 that was associated at the server 404 with the Name-B 412 of the calling party is also provided to the terminal and can be stored in a memory or database 422. When the actual voice call occurs, the Name-B 412 is used to identify the E.164 (or other) number at the server 404, which is then provided to the terminal 402 and used to refer back to the associated Name-B 412 stored at or otherwise accessible to the terminal 402.
When the voice call is completed, the rich call server 404 can, and in one embodiment does, request the deletion of the name/number association from the phonebook 422 associated with the JAVA (or other) client 400. This client 400 functionality can be performed transparent to the end user, and the user experience is very flexible.
In accordance with one embodiment, calls may also utilize the associations of the present invention when calls are initiated from the circuit-switched (CS) domain and directed towards the packet-switched (PS) domain. Thus, an analogous “association” may be used in the direction from the CS-based caller to the PS-based targeted recipient—i.e., the opposite call direction as previously described.
The mobile user can select, using the user input 450, the desired name-B (and number-B) from the phonebook, contact database, or other mobile client memory 422. An example of such a name and number is “name@service.com” and “555-555-1212” respectively. The caller, i.e., user of terminal 402 in the illustrated embodiment, initiates a call to the network. This is depicted by the setup request 452, which can include information such as the called party number (e.g., 555-555-1212) and the calling party number (e.g., 555-555-0000). In other words, the calling party number corresponds to the phone number of the terminal 402 that is making the call, and the called party number corresponds to the phone number of the terminal 408 that is being called.
The call is routed through the CS network to the server 404, referred to as the Rich Call Server 404 in the illustrated embodiment. The server 404 uses the CLI of the calling party (i.e., the calling party number in the illustrated embodiment) to find the appropriate area 413 of the database 414 relating to the calling party's associations. In one embodiment, the calling party number is used as a pointer to the particular record in the database 414. From the record 413 the match with number-B, which is the called party number 416, is found. This called party number 416 is associated with other information, which includes the called party name 412, also shown as Name-B 412 in the phonebook 422 of the terminal 402. Other information which may be associated with the called party number 416 in the database 414 is the calling party name 454, and possibly a domain name 456. Table 1 below shows an example of a record in the name/number association 413 for the calling party:
Thus, from the record 413 the match with the called party number 416 is found with the called party name 412, possibly the calling party name 454, and possibly an Internet domain 456. The Rich Call Server 404 selects the destination domain based on the Internet domain information due to the fact that e-mail addresses can be used for various places, and the domain name part in the email address cannot guarantee that the service provider domain is the same as the domain name. The Rich Call Server 404 sends the voice call request 460 to the fixed internet user 408, and identifies the called party with the called party name 412 (also shown as Name-B 412), and the calling party with information such as the original CS calling party identifier (CLI) and/or with name-A 454.
When the client 508 and phonebook 512 have successfully made note of the association of the number X and name A, the server 504 forwards 518 the voice call invitation from number X via the CS network to the voice application(s) on the mobile device 520. This voice application(s) can identify the stored number X in the phonebook 512 and provide 522 the previously associated name A to the voice application(s). Using this information, the mobile device 520 can display 524 or otherwise present the calling party A to the user of the mobile phone 520.
When the voice call ends 526, the server may request 528 that the client 508 delete the number X from the phonebook 512, and the client 508 may acknowledge 530 that this has been completed. Alternatively, the rich call client 508 may detect the release of the voice call and delete the number X from the phonebook 512. In this manner, an E.164 or other analogous identifier perceivable in the CS domain can be temporarily used to allow the target device to identify the calling party.
In the illustrated embodiment, the association of the various names and numbers is unique to the particular terminal, and the E.164 numbers are reusable for other rich call users. Thus, for an incoming voice call from known and associated Internet users, the rich call server is able to pick a correct E.164 number for the CS voice call setup that can ultimately be identified by the target terminal.
More particularly, the incoming voice call invitation 550 is received at the client 508, which can then store 552 and associate this number 5555551212 with the associated name, depicted as “name@service”. In this embodiment, the number is associated with the name at both the terminal and the rich call server, and thus this initial receipt 550 and storing 552 to the phonebook 512 could occur just once (although could be performed at each voice call). In other embodiments, the association can be sent one or more times prior to the terminal receiving the voice call. In such an embodiment, no association would need to be sent in connection with each voice call, but rather the terminal can display the information when the voice call arrives based on the information previously received. In one embodiment, the terminal can “synchronize” the associations with the server at certain intervals, in connection with certain events, etc. In one embodiment, such associations can have a lifetime after which they automatically expire. For example, when an association in the client at the terminal has expired, the server can know to send the association before the next call comes in for that terminal. In any event, it should be recognized that the targeted terminal can be notified, in advance of receiving the voice call, of what the association(s) is, whereby the terminal need not receive the association(s) for each received voice call.
The phonebook 512 may acknowledge 554 the storing of the name/number, and the client 508 can acknowledge 556 this to the server. Thereafter, when a voice call invitation is received 558 via the CS network from a device having a name associated at the server with the number 5555551212, the appropriate name is selected 560 from the phonebook 512, and the mobile phone can present the caller identity of the incoming call. In one embodiment, the caller identity 562 is visually displayed on a display 564 of the target/recipient mobile terminal, although audio, tactile and/or other presentation means may be utilized.
Hardware, firmware, software or a combination thereof may be used to perform the functions and operations in accordance with the invention. A call receiving (e.g., targeted) terminal(s) in accordance with the invention may include any communication device capable of communicating over-the-air (OTA) with wireless networks and/or capable of communicating via wired networks. Such terminals include, for example, mobile phones, Personal Digital Assistants (PDAs), computing devices, and other networked terminals. A representative system in which the present invention may be implemented or otherwise utilized is illustrated in
The system includes one or more terminals 600A such as, for example, a mobile phone 602, PDA 604, computing device 606, or other communication device 608 capable of networked communication. The terminal 600A utilizes computing systems to control and manage the conventional device activity as well as the functionality provided by the present invention. For example, the representative wireless terminal 600B includes a processing/control unit 610, such as a microprocessor, controller, reduced instruction set computer (RISC), or other central processing module. The processing unit 610 need not be a single device, and may include one or more processors. For example, the processing unit may include a master processor and one or more associated slave processors coupled to communicate with the master processor.
The processing unit 610 controls the basic functions of the terminal 600B as dictated by programs available in the program storage/memory 612. The storage/memory 612 may include an operating system and various program and data modules associated with the present invention. In one embodiment of the invention, the programs are stored in non-volatile electrically-erasable, programmable read-only memory (EEPROM), flash ROM, etc., so that the programs are not lost upon power down of the terminal. The storage 612 may also include one or more of other types of read-only memory (ROM) and programmable and/or erasable ROM, random access memory (RAM), subscriber interface module (SIM), wireless interface module (WIM), smart card, or other fixed or removable memory device/media. The programs may also be provided via other media 613, such as disks, CD-ROM, DVD, or the like, which are read by the appropriate interfaces and/or media drive(s) 614. The relevant software for carrying out terminal operations in accordance with the present invention may also be transmitted to the terminal 600B via data signals, such as being downloaded electronically via one or more networks, such as the data network 615 or other data networks, and an intermediate wireless network(s) 616 in the case where the terminal 600A/600B is a wireless device such as a mobile phone.
For performing other standard terminal functions, the processor 610 is also coupled to user input interface 618 associated with the terminal 600B. The user input interface 618 may include, for example, a keypad, function buttons, microphone, joystick, scrolling mechanism (e.g., mouse, trackball), touch pad/screen, or other user entry mechanisms (not shown). These and other user input components are coupled to the processor 610 as is known in the art.
A user interface (UI) 620 is provided, which allows the user of the terminal 600A/B to perceive information visually, audibly, through touch, etc. For example, one or more display devices 620A may be associated with the terminal 600B. The display 620A can display the calling party identification information as previously described. A speaker(s) 620B may be provided to audibly present this and/or other information. For example, an audio recording, computer-generated voice, sound/tone(s), ringtone, song, and/or other audio presentation may be used to notify the targeted device user of the name or other identification of the calling party. Other user interface (UI) mechanisms can also be provided, such as tactile 620C or other feedback. The calling party information may be provided by any type of presentation perceivable by the user.
The illustrated terminal 600B also includes conventional circuitry for performing wireless transmissions over the wireless network(s) 616. The DSP 622 may be employed to perform a variety of functions, including analog-to-digital (A/D) conversion, digital-to-analog (D/A) conversion, speech coding/decoding, encryption/decryption, error detection and correction, bit stream translation, filtering, etc. The transceiver 624 includes at least a transmitter and receiver, thereby transmitting outgoing radio signals and receiving incoming radio signals, generally by way of an antenna 626.
In one embodiment, the storage/memory 612 stores the various client programs and data used in connection with the present invention. For example, the storage/memory 612 includes storage to store the association client programs/applications 630, such as a JAVA MIDP client which can be executed via the processing/control unit 610 to carry out functions in accordance with the present invention. For example, the client 630 may include instructions to perform operations including storing a received name/number association (e.g., network-related name and designated or temporary E.164 number) in the contacts/phonebook 632 or other related storage or database. In one embodiment, a JAVA client 630 uses JAVA PIM API to access the phonebook 632, and stores the name and number. The client 630 is also capable of providing an acknowledgement message to the server providing the name/number association that the terminal has received the information. When the voice call is then received at the terminal 600B, a voice application(s) 634 can recognize the E.164 number or other analogous identifier, and retrieve the associated name from the phonebook 632 to present via the UI interface 620. The voice application(s) and/or the client 630 may utilize a compare module 636 to perform the comparison with the received E.164 number or other analogous identifier to locate the associated name for presentation.
It should be recognized that the modules 630, 632, 634, 636 may be separate modules operable in connection with the processor 610, may be single module performing each of these functions, or may include a plurality of such modules performing the various functions. In other words, while the modules are shown as multiple software/firmware modules, these modules may or may not reside in the same software/firmware program. It should also be recognized that one or more of these functions may be performed using hardware. For example, a compare function may be performed by comparing the contents of hardware registers or other memory locations using hardware compare functions. These client and data modules are representative of the types of functional and data modules that may be associated with a terminal in accordance with the invention, and are not intended to represent an exhaustive list.
Thus, in one embodiment, the computing system 650 represents the rich call server system previously described. The server system 650 may be a single unit, or a distributed system. The illustrated computing system/server 650 includes a processing arrangement 652, which may be coupled to the storage/memory 654. The processor 652 carries out a variety of standard computing functions as is known in the art, as dictated by software and/or firmware instructions. The storage/memory 654 may represent firmware, media storage, and/or memory. The processor 652 may communicate with other internal and external components through input/output (I/O) circuitry 656. The computing system 650 may also include media drives 658, such as hard and floppy disk drives, CD-ROM drives, DVD drives, and other media 660 capable of reading and/or storing information. In one embodiment, software for carrying out the operations at the computing system 650 in accordance with the present invention may be stored and distributed on CD-ROM, diskette, removable memory, or other form of media capable of portably storing information, as represented by media devices 660. Such software may also be transmitted to the system 650 via data signals, such as being downloaded electronically via a network such as the data network 615, Local Area Network (LAN) (not shown), wireless network 616, and/or any combination thereof.
In accordance with one embodiment of the invention, the storage/memory 654 and/or media devices 660 store the various programs and data used in connection with the present invention. For example, the single or distributed server 650 includes the name/number associations 680 provided to the recipient/targeted terminal, and an association module 682 to associate an E.164 number or other identifier with a name or other network-based identifier that identifies the calling party. The server 650 may also include an identifier reservation module 684 to reserve an E.164 number or other similar identifier, where this number/identifier may be reserved on a permanent or temporary basis. The module 684 includes software/firmware executable via the processor 652 to reserve the appropriate number/identifier. For example, in the context of an E.164 number, the module 684 may first request or otherwise check for availability of an E.164 number, and associates a unique E.164 with the name to provide the name/number association. As described above, some E.164 numbers (or other identifiers) may be re-used for different recipient terminals, thereby requiring fewer E.164 (or other) identifiers in total. For example, in the embodiment described in connection with
The association module 682 can send the request to the targeted terminal's client 630 to add a new entry (or modify an existing entry) in a phonebook 632. The real calling line identity (name) is sent via the transceiver 668 together with the E.164 number or other identifier at the direction of the association module 682. The association module 682 can recognize and optionally respond to any acknowledgement messages provided by the targeted terminal. A voice call module 686 then initiates a CS voice call setup (e.g., through an IP PBX), where the calling line identity number is set as the previously assigned E.164 number. In one embodiment, the association module 682 of the server 650 includes software/firmware to request the deletion of the name/number association from the terminal's 600B phonebook 632.
The illustrated computing system 650 also includes DSP circuitry 666, and at least one transceiver 668 (which is intended to also refer to discrete transmitter/receiver components). While the server 650 may communicate with the data network 615 via wired connections, the server may also/instead be equipped with transceivers 668 to communicate with wireless networks 616 whereby an antenna 670 may be used.
Using the foregoing specification, some embodiments of the invention may be implemented as a machine, process, or article of manufacture by using standard programming and/or engineering techniques to produce programming software, firmware, hardware or any combination thereof. Any resulting program(s), having computer-readable program code, may be embodied within one or more computer-usable media such as memory devices or transmitting devices, thereby making a computer program product, computer-readable medium, or other article of manufacture according to the invention. As such, the terms “computer-readable medium,” “computer program product,” or other analogous language are intended to encompass a computer program existing permanently, temporarily, or transitorily on any computer-usable medium such as on any memory device or in any transmitting device.
For example, one embodiment of the invention includes a computer-readable medium having instructions stored thereon that are executable by a computing system for identifying calling parties. The instructions facilitate receiving a calling party identifier from a calling terminal initiating a voice call. The instructions effect the associating of a CS domain identifier with the calling party identifier, and provide the association of CS domain identifier and calling party identifier to a targeted terminal. The instructions further direct the voice call and the CS domain identifier associated with the calling party identifier from the calling terminal to the targeted terminal, whereby the targeted terminal can identify the calling party using the CS domain identifier to identify the associated calling party identifier. In another embodiment, the computer-readable medium includes instructions executable by a computing system for a receiving terminal to identify a calling terminal. The instructions enable receiving a first calling party identifier used in a packet-switched (PS) domain and a second calling party identifier used in a circuit-switched (CS) domain, and storing an association of the first and second calling party identifiers. The instructions also enable a voice call and the second calling party identifier originating from the calling terminal to be received, and using the received second calling party identifier to locate the associated first calling party identifier. The instructions further allow presenting an identification of the calling party using the first calling party identifier.
From the description provided herein, those skilled in the art are readily able to combine software created as described with appropriate general purpose or special purpose computer hardware to create a computing system and/or computing subcomponents embodying the invention, and to create a computing system and/or computing subcomponents for carrying out the method of the invention.
The foregoing description of the exemplary embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not with this detailed description, but rather determined by the claims appended hereto.