The current description relates to establishing a dialog between devices, and in particular to resolving device specific identifiers to locate devices associated with a user.
A dialog for exchanging data, including audio and audio video communications, can be established between two users, or more particularly between user devices. In order to establish the dialog, a calling party sends an initiation request to a user identifier. If Session Initiation Protocol (SIP) is used to establish the dialog, the initiation request may include a SIP address of the callee and can be sent to a SIP server that provides functionality for establishing a session between devices. The callee may have multiple devices at which he/she may be reached, for example an office phone, a mobile phone, and a softphone provided on a laptop computer. The user may register the different devices with the SIP server, so that when a dialog is to be established with the callee, the SIP server can fork the initiation request to each of the registered devices of the user.
While the SIP infrastructure functions well for contacting a user at multiple devices, it requires that the calling party know the public user identifier of the callee associated with the multiple devices. A calling party may not have access to the user identifier of the callee party, but have a device identifier of one of the user's devices. However, the device identifier can only be used for establishing a dialog with the identified device; that is any additional devices of the user associated with the public user identifier will not be included in the attempt of establishing the dialog.
Therefore there is a need for an improved system and method of establishing a dialog between parties.
Further features and advantages of the present disclosure will become apparent from the following detailed description, taken in combination with the appended drawings, in which:
In accordance with the present disclosure there is provided a method of initiating a dialog establishment with a plurality of devices comprising: receiving from an initiating device a destination device identifier in a request to establish the dialog; retrieving a destination user identifier linked with the destination device identifier; modifying the request by replacing the destination device identifier with the destination user identifier; and routing the modified request to one or more destination devices registered with the destination user identifier.
In accordance with the present disclosure there is further provided a computing system for initiating a dialog establishment with a plurality of devices comprising: a memory for storing instructions; and a processor for executing the instructions. The instructions when executed configuring the computing system to: receive from an initiating device a destination device identifier in a request to establish the dialog; retrieve a destination user identifier linked with the received destination device identifier; modify the request by replacing the destination device identifier with the destination user identifier; and route the modified request to one or more destination devices registered with the destination user identifier.
In accordance with the present disclosure there is further provided a non-transitory computer readable memory containing instructions for execution by a computer device for providing a method of initiating a dialog establishment with a plurality of devices comprising: receiving from an initiating device a destination device identifier in a request to establish the dialog; retrieving a destination user identifier linked with the received destination device identifier; modifying the request by replacing the destination device identifier with the destination user identifier; and routing the modified request to one or more destination devices registered with the destination user identifier.
Electronic devices can be used to establish a communication session with another electronic device. The electronic devices may comprise a desktop computer, a laptop computer, a portable electronic device, a mobile phone or smartphone, or a tablet computer which provides audio and/or video communications functions. The dialog between the two devices may be used for transmitting audio, video, audio/video communications, messages, and/or data. An intermediary server may mediate the establishment of the dialog or session between two devices. Once the dialog or session is established, it can be used to exchange data such as audio/video data directly between the two devices. A session initiation protocol (SIP) may be used in establishing the dialog between the two electronic devices. SIP utilizes a user identifier of the party being called, also referred to as the destination or target, in order to locate one or more devices of the user that may be contacted to attempt to establish the dialog with. The use of the user identifier in establishing the dialog allows a user to associate multiple devices with the single user identifier. As a result, when a calling party attempts to contact the destination user associated with the user identifier, each of the devices registered with the user identifier can be contacted. The user identifier may be a public user identifier so that other parties can discover the user identifier.
As depicted, communication may be established between two devices using an intermediary server. Two different intermediary servers are depicted. It is noted that the two different servers are displayed as separate servers for the clarity of the description; however, it is contemplated that the functionality of both servers could be combined in a single server. A messaging gateway 116 may provide functionality for establishing communication between two devices using a device identifier. As depicted an initiating device 104 may send an initiation request 118 to the messaging server 116. The initiation request 118 includes the destination device identifier, namely ‘2’, of the device to be contacted. The initiation request 118 may also include additional information for communicating with the identified device. The messaging gateway 116 receives the initiation request 118 and determines the contact address of the destination device having the device identifier of the initiation request 118. The messaging gateway 116 may then forward the initiation request 118 to the device, which in the example depicted in
The second intermediary server is a SIP server 120 that provides SIP functionality for establishing a communication between two devices. User 108 may have an associated user identifier, for instance, a SIP address, or an e-mail address, which can be used by calling parties to contact the user 108. The user identifier may be a public user identifier, allowing the contact information of the user to be determined by calling parties. In contrast to the device identifier that is used to identify a particular device, the user identifier is associated with the user 108. The user 108 may register zero or more devices with the SIP server 120. When the user 108 registers a device with the SIP server 120, the SIP server binds the contact address of the device with the user identifier.
The user 102 may attempt to establish a dialog with user 108 by sending an initiation request 122 to the SIP server 120. The initiation request 122 includes the user identifier of the user 108 being contacted. The SIP server 120 receives the initiation request and determines one or more contact addresses of devices registered at the SIP server by the user 108. As depicted, the SIP server may maintain a table 124, or other data structure that stores the user's ID and the contact addresses of any devices that have been registered by the user. The SIP server 120 uses the table 124 and determines contact addresses of the user identifier, and forks the initiation request to each of the destination devices 110a, 110b, 110c, 110d at the respective contact addresses 112a, 112b, 112c, 112d. When the destination devices 110 receive the respective forked initiation request, they may indicate that a dialog is attempting to be established, for example by playing a ring tune or other notification. The destination user 108 may accept the dialog establishment on one of the devices, causing the dialog to be established between the two devices, and causing the attempted dialog establishment to be terminated on the other devices.
Although the environment 100 described above allows a user to establish a dialog with a specific device using a device identifier as well as allowing the user to establish a dialog with one of a plurality of devices registered with a user identifier by using the user identifier. However, it is not possible to establish a dialog with one of a plurality of the registered devices using a device identifier. That is, in environment 100, if a dialog is established using a device identifier, only the particular device will be contacted, and not all of the devices registered by the user. A user may have access to only the device identifier of a user; and not to the user's user identifier. However, it may be desirable to attempt to establish a dialog with all of the registered devices of the user having the device with the particular device identifier. As described further, the device identifiers may be used to establish a dialog with all devices registered by a user if the user identifier is publicly available, or if the user has registered their user identifier with an appropriate resolution server.
The SIP server 220 receives the initiation request 218 from the initiating device 104 and retrieves the destination device identifier from the initiation request. The SIP server communicates with an identifier resolution server 230 in order to resolve the destination device identifier to a destination user identifier. As depicted, the ID resolution server 230 includes a table 234, or other similar structure, for linking a device identifier with a user identifier. It is noted that a user identifier, which may for example be a user name or e-mail address, may be associated with a plurality of device identifiers; however, a device identifier is only linked to a single user identifier. Further it is noted that if the user identifier is not publicly available, it may be desirable, from a privacy perspective, to require the user to register the user identifier with the resolution server to allow a device identifier to be resolved to the user identifier.
The SIP server 220 communicates the destination device identifier to the ID resolution server 230 that determines the destination user identifier linked to the destination device identifier. The determined destination user identifier is returned from the ID resolution server 230 to the SIP server 220, which then determines the contact addresses of destination devices that have been registered with the received destination user identifier. The SIP server 220 may then fork the initiation request message to each of the determined contact addresses. The destination user may accept the dialog establishment on one of the destination devices 114, causing a dialog to be established between the two devices. Once the dialog is established between the two devices, a media exchange session may be established directly between the two devices and audio, video or audio/video data can be transferred directly between the two devices, for example using a Real-time Transport Protocol (RTP).
The SIP server 220 allows multiple destination devices to be contacted when attempting to establish a dialog. A calling party may specify either a destination user identifier or a destination device identifier in an initial dialog establishment message. The destination device identifier may be resolved to the destination user identifier, which can then be used to contact one or more destination devices the user has registered with the destination user identifier. It may be desirable to allow a calling party to indicate whether or not the SIP server 220 should attempt to resolve the destination device identifier to the destination user identifier or not. A flag indicating whether or not to resolve a device identifier may be included in the initial dialog establishment message 218. If the flag indicates that the device identifier should be resolved the dialog may be established by first resolving the user identifier. If the flag indicates that the device identifier should not be resolved, the dialog may be established by contacting only the device associated with the device identifier.
The above environment 200 has described the SIP server and the ID resolution server as being separate servers. It is contemplated that the functionality of the ID resolution server could also be provided by the SIP server itself. Further, it will be appreciated that the communication between devices has been simplified. For example, the communication may include communicating with additional intermediary network devices, including one or more additional or alternative SIP servers.
A user of the initiating device, Device A 302, initiates a dialog establishment process with a destination user. The destination user may be selected from a list of available contacts on the initiating device that includes the destination device identifier linked to the destination user.
Alternatively, the user of the initiating device A 302 could input the destination device identifier of the destination user using a keyboard or other input means. The initiating device 302 sends a dialog establishment request to an origination proxy server 304. The origination proxy server 304 may be a SIP proxy server that can receive and process dialog establishment requests. The dialog establishment may be a SIP INVITE message that includes a uniform resource identifier (URI) used in specifying the intended destination of the dialog. The INVITE message contains the destination device identifier of the destination user as well as an indication that the URI is a device identifier, as opposed to a user identifier. The originating proxy 304 receives the INVITE message and responds with a 100 Trying message indicating that it is attempting to establish the dialog. The originating proxy 304 receives and processes the INVITE request. The originating proxy uses the URI type indicator to determine that the URI is a device identifier, and so should be resolved to a user identifier. It is contemplated that the URI type indicator, or other information in the INVITE message, could indicate that although the URI is a device ID it should not be resolved to a user identifier so that only the device with the device identifier will be contacted for the dialog establishment. When the origination proxy 304 determines that the URI is a device identifier that should be resolved it looks up the user identifier that is linked with the device identifier. The lookup may be done by the origination proxy 304 if it has access to a table or database of device identifiers and linked user identifiers. Alternatively, the origination proxy 304 may pass the destination device identifier to another component, such as the ID resolution server 230 described above to perform the lookup and return the destination user identifier linked to the destination device identifier. Once the origination proxy has the destination user identifier linked to the destination device identifier, it modifies the INVITE message in order to replace the destination device identifier URI with the destination user identifier URI 312. The INVITE message is also modified to replace the URI type indicator in order to indicate that the URI is a user identifier. The modified INVITE message is routed to the termination proxy 308 of the destination user through one or more routing proxies 306. Once the modified INVITE message is received at the termination proxy 308, the INVITE message may be further modified to replace routing information in the INVITE message with a contact address of a destination device registered with the destination user identifier 314. If the destination user has registered multiple destination devices or contact addresses with the destination user identifier, the modified INVITE message is forked to each of the contact addresses 318. It is noted that when a device receives a new INVITE message it may return a 100 Trying message to indicate that a dialog is attempting to be established.
The modified INVITE messages are received at each of the destination user's registered devices. It is noted that only a single destination device, Device B 310 is depicted. When the modified INVITE is received, the destination device 310 may provide a notification, such as playing a ring tune. As depicted in
Whether or not the resolved user identifier can be returned to the device may be a configurable option to provide users with the ability to control who has access to their user identifier.
As will be appreciated, the exchange of the SIP messages allows a dialog to be established between the two devices, Device A 302 and Device B 310. Once the dialog is established, it can be used to establish an exchange of media directly between the two devices. The media may be audio and video, providing a video chat; just audio, providing a voice call; just video, or other types of data including text messages and files.
The message flow of
In addition to linking the user identifier to the device identifier, Bob also registers the contact addresses of his devices, 414, 412 with the SIP server 408 (2). The registration may be accomplished using a SIP REGISTER messages. A user can register and un-register devices with the SIP server 408. As depicted Bob sends REGISTER messages that associate his user identifier with the contact addresses of his two devices, Adr. 1, Adr. 2. The contact addresses may comprise internet protocol (IP) addresses of the devices or persistent connection to the device, or may comprise other contact address information depending on the type of protocol used to communicate with the respective device.
Once Bob 402 has registered one or more of his devices 414, 412, Alice 404 can attempt to establish a communication session with Bob via her device 410. The communication session could be used to provide a video chat between two devices 414, 412. Alice may only have access to Bob's device identifier and so uses it when attempting to establish the dialog. Alice's device sends a SIP INVITE message (3) to the SIP server 408. The SIP INVITE message includes a URI for use in establishing the dialog. The URI may include information for use in routing the message to a SIP server 408, such as sip.example.com, as well as the destination device identifier of Bob's device 414. The SIP INVITE message may also include an indication that the URI includes a device identifier that should be resolved to a user identifier. The SIP server receives the SIP INVITE message and determines that the URI should be resolved and communicates with the registration server 406. The SIP server 408 sends a resolution request to the registration server (4a), which determines the destination user identifier that was previously linked to the destination device identifier, for example during the setup of device. Once the registration server 406 determines the destination user identifier linked to the destination device identifier, it can provide the resolved destination user identifier back to the SIP server (4b). The SIP server modifies the received SIP INVITE message by replacing the destination device identifier with the resolved destination user identifier. If the destination user identifier contains one or more special characters, such as the ‘@’ sign, they may need to be escaped, for example by replacing with % 40. The SIP server 408 may then determine which devices, or more particularly what contact addresses the INVITE message should be sent to. The SIP server 408 determines the contact addresses that are registered with the destination user identifier of the modified INVITE message and sends the INVITE message to the appropriate location. If multiple contact addresses have been registered to the destination user identifier, the SIP server forks the request to each of the registered contact addresses (5). It is noted that Bob's device having the destination device identifier, namely tablet 414 does not need to be registered with the SIP server. The dialog establishment may still succeed since other devices would be determined from Bob's user identifier that is resolved from the device identifier. Once the devices receive the INVITE message, they may begin notifying Bob 402 that Alice 404 is attempting to contact him. Both destination devices 402, 412 may ring or provide other notifications. Bob answer's the call on device 412, and a real-time transport protocol session may be established between Alice's device 410 and Bob's device 412 (6). The session may be used to transfer audio and video of a video chat directly between the two devices. As will be appreciated, the registration of a device that links the device identifier to the user identifier may be a separate process from the registration of devices with the SIP server for a user. As such, a user does not need to register the device having the device identifier linked to the user identifier with the SIP server. A SIP call initiated with the device identifier can be sent to a plurality of different devices, which do not need to include the device having the device identifier the call was initiated to.
The method 500 begins with receiving a destination device identifier (502) from an initiating device. The destination device identifier can be received as a request to establish a dialog with the destination device identifier. The request may further include an indication that the destination device identifier should be resolved to a destination user identifier if possible. Once the destination device identifier is received at a server, the destination user identifier linked with the destination device identifier is retrieved (504), and the request is modified by replacing the destination device identifier with the linked destination user identifier (506). The modified request may then be routed to one or more devices registered with the destination user identifier (508). The routing may include sending the modified INVITE message to the contact addresses that have been registered with the user identifier. Once the destination devices receive the invite requests, the destination user can answer or accept the request on one of the devices. A session can be established for transferring data, including audio and video data, directly between the two devices.
Although the functionality may be provided by a plurality of servers 602, collectively they may be viewed as providing a central processing unit (CPU) 612 for executing instructions 616 stored in memory 614. The instructions, when executed by the CPU 612 configure the servers 602 to provide the device identifier based dialog establishment with multiple devices described above. The servers may further include non-volatile storage 622 for storing information, for example the information linking a device identifier to a user identifier, as well as information of contact addresses registered with a user identifier.
In some embodiments, any suitable computer readable media can be used for storing instructions for performing the processes described herein. For example, in some embodiments, computer readable media can be transitory or non-transitory. For example, non-transitory computer readable media can include media such as magnetic media (such as hard disks, floppy disks, etc.), optical media (such as compact discs, digital video discs, Blu-ray discs, etc.), semiconductor media (such as flash memory, electrically programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), etc.), any suitable media that is not fleeting or devoid of any semblance of permanence during transmission, and/or any suitable tangible media. As another example, transitory computer readable media can include signals on networks, in wires, conductors, optical fibers, circuits, any suitable media that is fleeting and devoid of any semblance of permanence during transmission, and/or any suitable intangible media.
Although the description discloses example methods, system and apparatus including, among other components, software executed on hardware, it should be noted that such methods and apparatus are merely illustrative and should not be considered as limiting. For example, it is contemplated that any or all of these hardware and software components could be embodied exclusively in hardware, exclusively in software, exclusively in firmware, or in any combination of hardware, software, and/or firmware. Accordingly, while the following describes example methods and apparatus, persons having ordinary skill in the art will readily appreciate that the examples provided are not the only way to implement such methods and apparatus.