A method for mediating a communication session between a first device associated with a first user and one of a plurality of second devices associated with a second user using a device registry server (140, 200, 440), comprising: storing, in a registry of a device registry server (140, 200, 440), device information for the second user, wherein the device information for the second user includes: - a list of the plurality of second devices associated with the second user, and - for each device of the plurality of second devices associated with the second user, a list of one or more capabilities of each device; characterized in the following steps: for a first communication session type, selecting a device from the list of the plurality of second devices associated with the second user by sorting the device information for the second user and storing a link of first communication session type with the selected second device as a session type mapping; receiving a request to open a communication session with the second user, the request originating from the first device of the first user or a private branch exchange server and including a first session type identifier of the first communication session type; and in response to receiving the request, returning a response including device information associated with the selected second device to the device of the first user or the private branch exchange server. - a list of the plurality of second devices associated with the second user, and - for each device of the plurality of second devices associated with the second user, a list of one or more capabilities of each device; characterized in the following steps: for a first communication session type, selecting a device from the list of the plurality of second devices associated with the second user by sorting the device information for the second user and storing a link of first communication session type with the selected second device as a session type mapping; receiving a request to open a communication session with the second user, the request originating from the first device of the first user or a private branch exchange server and including a first session type identifier of the first communication session type; and in response to receiving the request, returning a response including device information associated with the selected second device to the device of the first user or the private branch exchange server. for a first communication session type, selecting a device from the list of the plurality of second devices associated with the second user by sorting the device information for the second user and storing a link of first communication session type with the selected second device as a session type mapping; receiving a request to open a communication session with the second user, the request originating from the first device of the first user or a private branch exchange server and including a first session type identifier of the first communication session type; and in response to receiving the request, returning a response including device information associated with the selected second device to the device of the first user or the private branch exchange server.