I recently posted a number of examples (Yahoo! Maps collaboration using Flex and BlazeDS and Collaborative data entry with Flex and BlazeDS) showing how to use the BlazeDS/LiveCycle Data Services Message Service to build collaborative applications. In this example, I'm extending the Collaborative data entry with Flex and BlazeDS application to provide an example of a more complete and real-life "Live Help/Call Center" application.
The use case goes like this: a customer tries to complete a task (in this case: apply for a mortgage) on a website, gets in trouble, and starts a "live help" session with a support representative. Among other things, the support representative can remotely drive the customer's application, enter data collaboratively with the customer, chat with the customer using a text-based and/or a video-chat session, close the support ticket, etc.

Figure 1. The mortgage application
To make it easier for you to experience the application, I'm hosting it on my server. You can test it using the instructions below.
Installation instructions
Add the following destination in WEB-INF/flex/remoting-config.xml.
<destination id="ticket-service">
<properties>
<source>flex.samples.livehelp.TicketService</source>
<scope>application</scope>
</properties>
<channels>
<channel ref="my-rtmp"/>
<channel ref="my-amf"/>
</channels>
</destination>
Note: If you are using BlazeDS, remove the line that defines the "my-rtmp" channel.
<destination id="callcenter">
<properties>
<server>
<allow-subtopics>true</allow-subtopics>
<subtopic-separator>.</subtopic-separator>
</server>
</properties>
<channels>
<channel ref="my-rtmp"/>
<channel ref="my-longpolling-amf"/>
</channels>
</destination>
Note: If you are using BlazeDS, remove the line that defines the "my-rtmp" channel in the above destination, and add the following channel definition in WEB-INF/flex/services-config.xml:
<channel-definition id="my-longpolling-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amflongpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<polling-enabled>true</polling-enabled>
<polling-interval-seconds>3</polling-interval-seconds>
<wait-interval-millis>60000</wait-interval-millis>
<client-wait-interval-millis>1</client-wait-interval-millis>
<max-waiting-poll-requests>200</max-waiting-poll-requests>
</properties>
</channel-definition>
Note: Make sure you use the same e-mail address you used in the customer application.
Note: Live video streaming is powered by Flash Media Server. Since I don't have access to a hosted instance of Flash Media Server, live video streaming is not enabled in this hosted version.
Christophe Coenraets is a Technical Evangelist for Adobe where he focuses on rich Internet applications and enterprise integration. He has been working on Flex since the early days of the product in 2003. In his previous role at Macromedia, Christophe worked on JRun, the company's J2EE application server. Before joining Macromedia, Christophe was managing Java and Internet applications evangelism at Sybase. Christophe has been a regular speaker at conferences worldwide for the last 15 years. He blogs at http://coenraets.org.