1. Field of the Invention
Embodiments of the present invention generally relate to a voice over internet protocol (VoIP) service, and more specifically, to a method and apparatus for performing call handling signaling.
2. Description of the Related Art
In the current art, a called party can dictate how to respond to a call. For example, the called party can terminate the call if it is from a particular number or if the called party is already on another call. The called party can associate media with their contacts, and have the media play on their device when a particular contact calls. In other instances, the called party can program their device to divert a call to voice mail, or to perform another action if the called party has indicated they are occupied by another task. The called party has control over how a call is handled.
However, currently the calling party has no way of controlling a call once it is placed to the called device. The calling party has no control over how a call is handled. The called party can only dial a particular telephone number, and the call is handled in accordance with the called party's direction.
Therefore, there is a need in the art for a method for enabling called party control over call handling using signaling in accordance with exemplary embodiments of the present invention.
Embodiments of the present invention relate to a method and apparatus for call handling comprising receiving, from a first device, an incoming call request directed to a second device, wherein the call request contains call handling information and transmitting an outgoing call request to the second device, wherein the outgoing call request is based at least in part upon the call handling information.
Further embodiments of the present invention relate to a method and apparatus for incoming call handling comprising receiving, at a called device, a call configuration message, determining call handling information from the call configuration message; and taking an action based upon the call handling information.
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
Embodiments of the present invention generally relate to call handling signaling within a calling network, such as a Voice over Internet Protocol (VoIP) network. According to an exemplary embodiment, a user of a telephony device (calling device) may provide a signal indicating how their calls to any called party, or a particular called party, should be handled by the device in use by the called party. The signaling information input by the user of the calling device may further indicate a set of actions that the called device should execute upon receiving the call.
A user interacts with the device 100 and indicates to the VoIP APP 101 that a call placed from device 100 should be handled in a particular way. That handling information is stored in a call configuration message 102 as call parameter information 104. In some embodiments, the call parameter information 104 may comprise, for example, at least one of ringtone URL 150, avatar URL 151 and script URL 152. The call configuration message 102 is delivered to the carrier network 106, which then forwards the message 102 to the device 108.
According to this embodiment of the invention, carrier network 106 is unaware of the additional information stored in the call configuration message 102, and the carrier network 106 processes the call configuration message 102 to perform any configuration prior to establishing the call between device 100 and device 108. The device 108 receives the call configuration message 102 comprised of, among other information, call parameter information 104. The device 108 then handles the call according to the call parameter information 104. According to another embodiment, the carrier network 106 can parse the call parameter information 104 from the call configuration message 102 and prompt the device 108 to perform particular functions as indicated by the call parameter information 104.
According to some embodiments, the call parameter information 104 may contain call handling instructions indicating how the device 108 should handle the call. The call handling instructions may indicate that the device 108 should go to voicemail if the user of device 108 is already engaged in a call, or send a text message to the device 100 that the user of device 108 is engaged in a call. The call parameter information may also contain an embedded caller ID, name of the caller, content from a social media account, instructions to enable device functionality such as a camera phone, enable remote monitoring or disabling a called device remotely using embedded call instructions, application flags, and other simple data.
Those of ordinary skill in the art will appreciate that any instructions related to call handling for the device 108 to execute can be inserted into the call parameter information 104. If the device 108 is capable of executing the particular instructions, then the device 108 will execute the instructions according to the call parameter information 104. In some instances, if the device 108 is not capable of executing call handling instructions, the carrier network 106 may return a system message to the device 100 indicating the status of device 108. In yet another embodiment, the call parameter information 104 may contain direct links to one or more media items, and the device 108 automatically parses those links and plays or displays media from those links upon receiving a call from device 108.
According to other embodiments, the call handling instructions may initiate a “call-hunt”, i.e., dialing up to a threshold number of telephone numbers if an initial number does not respond. The call configuration message 102 may be a session initiation protocol (SIP) INFO, UPDATE, NOTIFY or INVITE message, or could be embedded in other types of signaling such as H.323, JINGLE, or the like. Those of ordinary skill in the art would recognize that the call configuration message 102 may take the form of any configuration message passed through a carrier network, and the call parameter information 104 may be embedded in any data/voice packets travelling across the carrier network 106. In the SIP protocol, messages contain a content header, for example, “Content-Type: application/sdp”, however content is not limited to session description protocol (SDP) content alone and may be any form of content. According to some embodiments of the present invention, the call parameter information 104 may provide a link to a script containing call handling instructions. The user of device 100 may compose, or use another application to compose, a script 112, which comprises a set of instructions for call handling on a called device. The script 112 may, according to an exemplary embodiment, be stored on script server 110. In another embodiment, the script 112 may be accessed from storage within the carrier network 106. According to yet another embodiment, the script 112 may be embedded into the call parameter information 104 directly based on the size of the script 112. In some instances, the call parameter information 104 may be directly embedded in the SDP content of a SIP message instead of linking to an external URL.
The script 112 comprises a set of instructions to be executed by the device 108. According to an exemplary embodiment, the device 108 further comprises a call handling parser 114, which can interpret the script 112 and execute the script 112. The script 112 may contain call handling information indicating that if the device 108 is already on a call, the call from the device 100 should be directed to voicemail. The script 112 may contain call handling information indicating that if the device 108 is already on a call, the user of device 100 can have his call transcribed and texted to the device 108. According to other embodiments, the script 112 may comprise instructions to play one or more media items, such as ringtones, video clips, displaying pictures, or the like. In exemplary embodiments, the script may be composed of JavaScript, or any other well known and suitable scripting language.
According to another embodiment, the call parameter information 104 may provide a link to a web page containing a user interface. The called party is provided an interactive interface for enabling advanced call termination based on responses from the calling party. In this embodiment, user interface design tools may be provided to the calling party to customize user interfaces for their called parties. In other embodiments, the device 108 may be configured to display a user interface through means other than a web page, such as on a VoIP APP. For example, the VoIP APP may be configured to parse and execute script 112 by displaying an appropriate user interface.
In some instances, the interfaces may be customized for particular parties, or based on the status or type of the called device. For example if the called device is a mobile phone, a user interface compatible with a mobile device resolution is provided in the call parameter information 104, and if the called device is a tablet, a more robust and complete interface is provided. The calling party may also provide customizable contact buttons such as email buttons, or the like, as a part of the user interface, enabling the called party to communicate with the calling party at their convenience. In some instances, the called party may determine what times they are available to receive a call and program the called device to send a message back to the calling party automatically indicating future call back times
According to other embodiments, the call parameter information 104 may be a vehicle for delivering advertisements to the called party or called device. In one instance, the advertising information is provided directly in the call parameter information 104. In other instances, the call parameter information 104 contains a link to a web site containing the advertising, a link to audio/video advertisements, or the like. According to some embodiments, the calling party may embed advertisements into their scripts, i.e., provide callback handling as well as advertisements. The advertisements may also be used in the logic contained in the script 112, for example, displaying the advertisement if the user is unavailable. In some instances, the called party may determine what times they are available to receive a call and program the called device to send a message back to the calling party automatically indicating future call back times.
The instruction set 200 begins at step 202 and proceeds to step 204. At step 204, the instruction set 200 determines whether a called device is engaged in another call. If the called device is engaged in another call, the instruction set requests that the called device forward the calling party to voicemail allowing the calling party to leave a message at step 210.
If the instruction set 200 determines that the called device is not engaged in another call, the instruction set 200 proceeds to step 206, where it is determined whether the called device has been in motion. If it is determined the called device has been in motion or is in motion, the method proceeds to step 212, where the called device is vibrated, for example, to indicate that a call is incoming. In other instances, any alert or notification can be presented to the user in order to notify the user of an incoming call.
If the instruction set 200 determines that the called device is not in motion, the instruction set 200 proceeds to step 208. At step 208, the instruction set determines whether the user of the device is playing a game on the device, and if so, performs speech to text on the calling party's message at step 214, and messages the called device. At step 216, the instruction set 200 terminates the call.
The memory 304, or computer readable medium, stores non-transient processor-executable instructions and/or data that may be executed by and/or used by the processor 302. These processor-executable instructions may comprise firmware, software, and the like, or some combination thereof. Modules having processor-executable instructions that are stored in the memory 304 comprise a VoIP application 310, a parameter module 312, and an interpreter 314. The computer 300 may be programmed with one or more operating systems, which may include OS/2, Java Virtual Machine, Linux, SOLARIS, UNIX, HPUX, AIX, WINDOWS, IOS, and ANDROID among other known platforms.
The computer 350 includes a processor 352, various support circuits 356, and memory 354. The processor 352 may include one or more microprocessors known in the art. The support circuits 356 for the processor 352 include conventional cache, power supplies, clock circuits, data registers, I/O interface 357, and the like. The I/O interface 357 may be directly coupled to the memory 354 or coupled through the support circuits 356. The I/O interface 357 may also be configured for communication with input devices and/or output devices 378 such as network devices, various storage devices, mouse, keyboard, display, video and audio sensors, IMU and the like.
The memory 354, or computer readable medium, stores non-transient processor-executable instructions and/or data that may be executed by and/or used by the processor 352. These processor-executable instructions may comprise firmware, software, and the like, or some combination thereof. Modules having processor-executable instructions that are stored in the memory 354 comprise a VoIP application 360, a parameter module 362 and an interpreter 364. The computer 350 may be programmed with one or more operating systems, which may include OS/2, Java Virtual Machine, Linux, SOLARIS, UNIX, HPUX, AIX, WINDOWS, IOS, and ANDROID among other known platforms.
The memory 304 and the memory 354 may include one or more of the following random access memory, read only memory, magneto-resistive read/write memory, optical read/write memory, cache memory, magnetic read/write memory, and the like, as well as signal-bearing media as described below.
Both computer systems 300 and 350 (i.e., devices 100 and 108, respectively) contain a parameter module and an interpreter. The parameter module 312, for example, allows a user of the system 300 to program call back handling information and enter call back parameters, such as ringtone URL, script URL, avatar URL. Subsequently, when the user of computer system 300 uses the VoIP application 310 to place a call to the VoIP application 360, the parameter module 312 couples with the VoIP application 310 to modify an outgoing call configuration message, i.e., call configuration message 102 of
The carrier network 106 receives the call configuration message from the VoIP application 310, and, according to one embodiment, forwards the message to the VoIP application 360. The computer system 350 then invokes the interpreter 364 to parse the call configuration message to determine whether any parameters for call handling have been added. If the computer system 350 did not have the interpreter 364 installed in memory 360, the VoIP application 360 would ignore the information embedded by the parameter module 312. The interpreter 364 is also capable of fetching scripts, audio, video, images and the like from a URL hosted on a script server, such as script server 110 shown in
Once the computer system 350 accepts a call from computer system 300, the interpreter 364 interprets the call parameter information and directs the VoIP application 101 to perform the behavioral functionality contained in the call parameter information, for example, call parameter information 104 shown in
Those of ordinary skill will recognize that call handling information can also be sent to landlines, where the calling party and the called party have specially provisioned hardware, such as computer systems 300 and 350, coupled to their landline device, to enable call handling from a called party.
The method 400 begins at step 402 and proceeds to step 404. At step 404, the parameter module 312 receives a call request for a call from a first device to a second device. The call request may comprise call handling information, comprising call parameter information from a user of a first device, i.e., computer system 300. The device may be computer software, a mobile device, a VoIP device or the like.
Once the call parameter information has been received, the parameter module 312 formats the call parameter information. For example, the parameter module 312 formats the parameter information using extensible markup language (XML), though those of ordinary skill in the art would recognize that this format is presented as merely an example, and is not limiting. Additionally, if the call parameter information includes audio or visual data, the call parameter module 312 may upload the data to a server, and allow the data to be accessed via a URL, which is embedded into the call parameter information.
At step 406, the call parameter module 312 inserts the formatted call parameter information into a call configuration message for an outgoing call to a second device, for example computer system 350 executing VoIP Application 360.
At step 408, the VoIP application 310 transmits an outgoing call request to the second device, i.e., places a call from the computer system 300 to the computer system 350 using the configuration message, in order to control call handling of the second computer system 350 according to the call parameter information. The outgoing call request is based at least in part upon the call handling information. The method terminates at step 410.
The method 500 begins at step 502 and proceeds to step 504. At step 504, the VoIP application 360 receives a call configuration message comprising call parameter information from a user of a first device, i.e., computer system 300. The device may be computer software, a mobile device, a VoIP device or the like.
Once the call configuration message is received, call parameter information is extracted from the call configuration message by the VoIP application 360 at step 506. If, at step 508, the VoIP application 360 determines that the computer system/device 350 is not capable of, or has not enabled, call handling instructions from a called party, the method terminates at step 512.
If the computer system 350 is capable of receiving and executing the call instructions in the call parameter information, the method proceeds to step 510. At step 510, the VoIP application 360 forwards the call parameter information to the interpreter 364.
The interpreter 364 parses the call parameter information, and retrieves scripts and media located by URLS embedded in the call parameter information. At step 510, the interpreter 364 then parses and executes the call handling instructions contained in the scripts when a call is received from computer system 300. The method terminates at step 512.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.