Patent ID: 8839270

Claim:
A method comprising: establishing a communication connection, the communication connection comprising: a communication channel, a channel driver, and a communication server, wherein the communication server is configured to communicate with a plurality of communication channels of different media types, the plurality of communication channels comprises the communication channel, the communication server is configured to communicate with the plurality of communication channels, without regard to the media type of each of the plurality of communication channels, by virtue of the communication server being configured to communicate with the plurality of communication channels via a plurality of channel drivers, the plurality of channel drivers comprises the channel driver, the plurality of channel drivers are external to the communication server, the communication server and the plurality of channel drivers are configured to communicate with one another according to a communications application program interface (API), the communications API allows communications occurring between the communication server and the plurality of channel drivers to be media-independent, the communication server is configured to establish a session between the communication server and a web browser presenting a user interface, and the communication server is configured to control the user interface during the session by pushing information to the web browser; creating the user interface, wherein the user interface is configured to present work items from the plurality of communication channels to an agent; determining that the communication connection has switched from a first state to a second state in response to an event; establishing a persistent connection between the user interface and a web server, wherein the persistent connection is established in response to the communication server receiving a connection request from the agent, and the web server is coupled to the communication server; causing the communication server to asynchronously push information to the user interface via the persistent connection, wherein the information indicates that the communication connection has switched from the first state to the second state; and causing the user interface to be asynchronously updated to indicate that the communication connection has switched from the first state to the second state.