cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Announcements

CTI-OS integration with browser based thin application

1440
Views
0
Helpful
0
Comments
This document was generated from CDN thread

Created by: syedzulfi (simulated) on 06-02-2009 02:08:50 PM
Hello there,

I am new to CTI-OS and highly appreciate if you could help.

I am trying to integrate a browser based customer services application which is running on an application server(i.e. WebLogic) using Java/JEE with CTI-OS. It's not a desktop application as the process runs on the remote server and not on the call adviser desktop who uses the application. The questions are,

The question is how does the customer services application can be notified when the adviser receives the call? In short, how do you make the application (which is pure server side Java) aware of the telephony calls using CTI-OS. I know that the Java desktop application (e.g. Java swing) runs locally on the agents desktop can be made aware of the incoming calls but Is it possible for the server side applications?

Regards
Syed

Subject: Re: CTI-OS integration with browser based thin application
Replied by: Adnan Ashraf on 06-02-2009 06:45:58 PM
I am not clear on your questions. What is a call advisor? is this a software? is this a person?

To clarify some concepts, agent desktop application is location independent; meaning it does not matter where it is installed and running as long as it can reach CTIOS and connect to it. It connects via TCP Sockets. This is the reason why CTIOS is able to send asynchronous messages (call events) to the agent desktop application. So if you have a Server side Java application, you can connect to CTIOS exactly in the same manner agent desktop application connects to it (opening TCP sockets using JavaCIL libraries). There are sample Java agent desktop applications that you can look at the code and replicate it in your server side Java application.

Looks like you have a web based customer service (CRM) application that connects to CTIOS? how is it connecting to it?
Do you already have CTIOS integration built in to server?

Sounds like you are looking for a way to build a web based CTI application (like agent desktop) .Can you explain your use case in more detail?


Adnan

Subject: Re: CTI-OS integration with browser based thin application
Replied by: Adnan Ashraf on 06-02-2009 10:31:18 PM
Just to add to my previous posting. Custom Engineering group in Advanced Services, Cisco, has built a completely thin client AJAX CTI web softphone development framework. Its a Java framework and uses the latest Dojo Ajax toolkit. It provides very robust drag/drop CTI UI development functionality that you can integrate with many web apps. It is not ready for prime time yet but almost there.
It will be available as a custom engagement from Advanced Services group.

I will posting more information on this as it becomes available.

Sounds like this is very close to what you were asking?

Let me know if you have any questions in this regard.

Subject: RE: Re: CTI-OS integration with browser based thin application
Replied by: Syed Zulfiqar on 09-02-2009 01:22:10 PM
Hello Adnan,
 
Many thanks for the reply. In my post "Call Adivser" means the person who is handling the phone call. The main question during server side integration is how would you push the notification (e.g. when the call arrives) back to the applcation (i.e. browser page). We are planning to replace the desktop based softphone capability with a server side based solution which can be notified when the call arrives and the application would retrieve the required data from the call context (or session) to transfer to the relevant screens of the application.
 
We are precisely looking for a AJAX based application as that may be the only way to use it. Can you provide more information in detail on how this can be achieved or details on the thin client AJAX CTI which you were developing? Are there any general guidelines on how this can be developed and any pitfalls. Any comments/info are welcome. Thanks.
 
 

Subject: RE: Re: CTI-OS integration with browser based thin application
Replied by: Adnan Ashraf on 09-02-2009 07:21:46 PM
(All this is under development and may change by the time it is ready for prime time)
 
The AJAX solution we are building is not merely a sample web softphone application but a SDK that developer can use in their development environment. At this time Eclipse and NetBeans are IDEs we are focusing on. Out of these two, NetBeans is the main focus.
 
NetBeans IDE will provide the framework as an add-on to any web project. It automatically wires the objects together, provides real-time server push technology, Javascript to Java (CTIOS objects) and vice-versa object marshalling and communication vehicle without doing form posts, submits and servlets. The framework provides CTI buttons (ready, not ready, make call, end call etc) in the components palette that allows visual drag & drop capability. Just drag/drop the component to your web page and the framework wires them and makes them live CTI buttons fully functional of receiving and sending CTI events on the drop event. No coding required. Of course, for custom development and enhancements, there are server side and client side hooks that you can plug into and extend to meet your needs.
 
I have worked in CTI and CRM industry for quite a while now. I have not seen any other framework providing the functionalities mentioned above. We are focusing on making lot of noise in the industry with this.
 
Developing an AJAX softphone application requires a lot of effort, design and testing. Instead of building your own, I would recommend you contact Custom engineering in Advanced services to engage us to provide you further information and help.
 
To answer your question on server push: there are couple of ways you can do this on your own: First choose an Ajax toolkit to work with
 
1) polling: can you design your web application to poll the backend server for new events it needs to process on server side. Not very efficient as it would inject time delays and would not be real time.
2) long lived keep-alive sessions: Many web applications use this way. Not very scalable as it wastes thread resources during time of inactivity...not very scalable!
3) checkout other server push technologies
 
then of course, you would have to device an architecture where you can pass information back and forth between server side and client side sessions in a lightweight scalable way. Inject AJAX technology in the mix to prevent browser paging and refresh only part of the screeen that needs to be refreshed. What if the user clicked refresh button or closed and opened a new browser? how would it reconnect, re-establish the session and refresh user interface button settings, what about agent sessions on the server side, how would it react to this?...many more questions you have to consider (I am just scratching the surface here).
 
All this requires a lot of detailed oriented analysis and design. We have already done the hard work for you. Engage us to see if we can help you.

Subject: RE: Re: CTI-OS integration with browser based thin application
Replied by: Toby Baker on 18-02-2009 01:46:51 PM
Hi Adnan
We at Corizon have just started a project in the UK to provide a re-usable UI Service that delivers CTI OS functions through a web interface to our Enterprise Mashup platform. Your development will give our project a boost - how do we engage directly? I will introduce you to the Cisco people on my end.
Toby

Subject: RE: CTI-OS integration with browser based thin application
Replied by: Jay Vijayaraghavan on 13-03-2009 12:38:12 PM
 Hi,
 
I am also new to CTI OS. Trying to develop a web based CTI application.
I'm using the CTI OS SDK. I have replaced the applet contents with the servlets and jsp's. I'm making use of the API methods for all functionalities like Connecto to server, Agent login/logout, make a call.
I have few questions
1. How the user will be notified when he receives a call?
2. Is it possible to have more than one active agent in a session?
3. How to identify the number of sessions and number of agents connected to the CTIOS server?
 
Please help!!!!
 
Thanks,
Jay

Subject: RE: New Message from Jay Vijayaraghavan in Computer Telephony Integration O
Replied by: David Lender on 13-03-2009 03:22:57 PM
1. What applet are you talking about?  You have to subscriber to events
See the EventSink.java code.
2. Agent mode sessions are allowed only one active agent.  You can
create a filter mode session but then you can only receive events and
not issue call or agent state control.  Only 2 fileter mode sessions are
allowed per CTIOS Server.  Instead provide a multithreaded application
that handles multipler sessions, one for each agent.
3. There is no API method for this.  You can use procmon to monitor cti
server but not ctios sessions.  See the ICM Troubleshooting Guide for
use of procmon.

Subject: RE: Computer Telephony Integration
Replied by: Jay Vijayaraghavan on 16-03-2009 11:50:56 AM
@David
Thanks for the reply!!!
 
1. I am using JavaPhoneFrame given in the samples, i have removed the things related to AWT and using jsp, servlets.
I want to build an application where multiple users(CSR's) should be allowed to login.
When an inbound call comes, i have to check for the available CSR and route the call to him.
Please suggest, how to implement this using the CTI server and the samples.
 
Thanks,
Jay

Subject: RE: Re: CTI-OS integration with browser based thin application
Replied by: Michael Babbs on 27-03-2009 02:34:35 PM

The main question during server side integration is how would you push the notification (e.g. when the call arrives) back to the applcation (i.e. browser page). We are planning to replace the desktop based softphone capability with a server side based solution which can be notified when the call arrives and the application would retrieve the required data from the call context (or session) to transfer to the relevant screens of the application.
 
We are precisely looking for a AJAX based application as that may be the only way to use it. Can you provide more information in detail on how this can be achieved or details on the thin client AJAX CTI which you were developing? Are there any general guidelines on how this can be developed and any pitfalls. Any comments/info are welcome. Thanks.  
 

 
I have found that the best solution for a server side integration is to push events to a client via a socket (i.e. TCP\IP instead of HTTP). I have found http polling\pushing solutions either resource intensive or unpredictable regarding performance.
 
Also you have to ask yourself whether or not the server side solution is the best option as often it isn't. In my experience client side is usually far cheaper and quicker to implement but obviously this decision rests on a number of factors, primarily the locations of the hardware and middleware involved.

Subject: RE: CTI-OS integration with browser based thin application
Replied by: Michael Babbs on 27-03-2009 02:44:36 PM
 Hi,
 
I am also new to CTI OS. Trying to develop a web based CTI application.
I'm using the CTI OS SDK. I have replaced the applet contents with the servlets and jsp's. I'm making use of the API methods for all functionalities like Connecto to server, Agent login/logout, make a call.
I have few questions
1. How the user will be notified when he receives a call?
 
Please help!!!!
 
Thanks,
Jay


If you are using servlets and jsps then I am assuming that the Integration you are developing is server side. In that case you face the issue of forwarding any asynchronous event received from CTIOS to the client. There are two basic ways to do this - 1: use http technologies (see AJAX) to basically poll the server to see if there is any event. 2: Push the event directly over TCP\IP to a socket on the client.

Subject: RE: Re: CTI-OS integration with browser based thin application
Replied by: Michael Babbs on 27-03-2009 03:01:38 PM
(All this is under development and may change by the time it is ready for prime time)
 
The AJAX solution we are building is not merely a sample web softphone application but a SDK that developer can use in their development environment. At this time Eclipse and NetBeans are IDEs we are focusing on. Out of these two, NetBeans is the main focus.
 
NetBeans IDE will provide the framework as an add-on to any web project. It automatically wires the objects together, provides real-time server push technology, Javascript to Java (CTIOS objects) and vice-versa object marshalling and communication vehicle without doing form posts, submits and servlets. The framework provides CTI buttons (ready, not ready, make call, end call etc) in the components palette that allows visual drag & drop capability. Just drag/drop the component to your web page and the framework wires them and makes them live CTI buttons fully functional of receiving and sending CTI events on the drop event. No coding required. Of course, for custom development and enhancements, there are server side and client side hooks that you can plug into and extend to meet your needs.
 
I have worked in CTI and CRM industry for quite a while now. I have not seen any other framework providing the functionalities mentioned above. We are focusing on making lot of noise in the industry with this.
 
Developing an AJAX softphone application requires a lot of effort, design and testing. Instead of building your own, I would recommend you contact Custom engineering in Advanced services to engage us to provide you further information and help.
 
To answer your question on server push: there are couple of ways you can do this on your own: First choose an Ajax toolkit to work with
 
1) polling: can you design your web application to poll the backend server for new events it needs to process on server side. Not very efficient as it would inject time delays and would not be real time.
2) long lived keep-alive sessions: Many web applications use this way. Not very scalable as it wastes thread resources during time of inactivity...not very scalable!
3) checkout other server push technologies
 
then of course, you would have to device an architecture where you can pass information back and forth between server side and client side sessions in a lightweight scalable way. Inject AJAX technology in the mix to prevent browser paging and refresh only part of the screeen that needs to be refreshed. What if the user clicked refresh button or closed and opened a new browser? how would it reconnect, re-establish the session and refresh user interface button settings, what about agent sessions on the server side, how would it react to this?...many more questions you have to consider (I am just scratching the surface here).
 
All this requires a lot of detailed oriented analysis and design. We have already done the hard work for you. Engage us to see if we can help you.

 
That is interesting. Is the framework for Client Side or Server Side integration or both ? I currently work with a very effective Client Side framework, but have not found a Server Side one to meet my needs but this sounds like it avoids HTTP.  

Subject: RE: Re: CTI-OS integration with browser based thin application
Replied by: Venkatesh Vijayashankar on 07-04-2009 10:21:04 AM
Hi,
I have built the a COM based softphone OCX and deployed it in the ASPX page.
ActiveX gets downloaded in the machine when the page gets loaded. I have raised
custom events from OCX from CTI OS events. On these custom raised events, call
parameters are passed to a web service and customer information gets loaded
accordingly. This is how I have done CTIOS integration with thin application.

Subject: RE: Re: CTI-OS integration with browser based thin application
Replied by: Adnan Ashraf on 22-04-2009 03:35:19 PM
Sorry for the delayed response. This is Java based server/client development platform. You can download the NetBeans plugin, install it, add the CTIOS framework to any web project and create a complete working agent desktop application in minutes just by dragging components on the form (Zero coding required and zero knowledge of CTIOS APIs required)!!!!
 
We have it almost ready. The first introductory white paper is almost ready for public viewing. I will be posting it on this forum shortly.
 
To answer your question: It uses HTTP as the messaging vehicle. It does not use sockets. It is able to push asynchronous real time events to the browser.
 
You mentioned you have created a client side framework. Could you elaborate on this?

Subject: RE: Computer Telephony Integration
Replied by: Adnan Ashraf on 22-04-2009 03:43:06 PM
What you are asking requires ICM scripting which handle call routing based intelligent data rules, time of day, skills etc. The CTIOS samples have nothing to do with call routing to an agent. When a call comes in, the ICM decides which agent the call should go to. When the call is routed to agent "x", his agen desktop gets the call (and phone rings)

Subject: RE: New Message from Adnan Ashraf in Computer Telephony Integration Object
Replied by: Komalkumar Tagdiwala on 22-04-2009 03:50:42 PM
I am not asking about ICM scripting. All that is already in place. It is
only after ICM scripting and all other stars are aligned that I am able
to receive the call on my desktop client.

The problem is that in production, when the agent logs in (even before a
call is sent to the route point), the client (on .NET platform and not
JAVA) starts throwing an "Attempted to divide by zero" error but the
agent is still able to login. The error keeps getting thrown
repetitively and endlessly.

The same problem does not occur if I were to point my config file to a
dev environment.

Again, the sample project I am talking about is NOT java based but is
.NET based. The problem is occuring even before a call is placed in the
system. It happens right upon an agent logging into the system.

Hope that clears any confusion.
________________________________

From: Cisco Developer Community Forums
[mailto:cdicuser@developer.cisco.com]
Sent: Wednesday, April 22, 2009 8:43 AM
To: cdicuser@developer.cisco.com
Subject: New Message from Adnan Ashraf in Computer Telephony Integration
Object Server (CTIOS) Toolkit - CTIOS Toolkit Questions: RE: Computer
Telephony Integration


Adnan Ashraf has created a new message in the forum "CTIOS Toolkit
Questions":
--------------------------------------------------------------
What you are asking requires ICM scripting which handle call routing
based intelligent data rules, time of day, skills etc. The CTIOS samples
have nothing to do with call routing to an agent. When a call comes in,
the ICM decides which agent the call should go to. When the call is
routed to agent "x", his agen desktop gets the call (and phone rings)
--
To respond to this post, please click the following link:
<http://developer.cisco.com/web/ctios/forums/-/message_boards/message/13
07762>
or simply reply to this email.
Create
Recognize Your Peers
Content for Community-Ad