Thanks for the response.
In my case I would be using Tomcat connection pooling with java from CVP studio VXML application to query ICM tables.
Can you describe what you are trying to do?
You can incorporate Java code in your application to query a SQL database using Microsoft's native Java SQL driver (not JDBC-ODBC). I have done this a number of times, although I don't use any Tomcat connection pooling. That may be overly complex and it may be easier to create the SQL connection, run your query (assuming it's a short optimized query - preferably a stored procedure), and close the connection.
So you could (in principle) query say an AW DB. This does seem odd to me though.
ICM invokes your CVP application and can pass data to it. When the CVP application returns to ICM, you can pass data back to ICM if that data includes instructions on how to choose an agent.
What is your aim?
ICM database is a standard SQL database, you can use VXML Studio's Database element to access any SQL database, including query tables, insert or update recoreds etc. (Refer to "Element Specifications for Cisco Unified Customer Voice Portal" for details)
Or if you just want to query the ICM that is associated with CVP server, you can use ReqICMLabel element in CVP Studio application. The element can send user data to ICM and receive data from ICM. Of course, you need to define an ICM script that can get all needed ICM data.
When ICM launches the CVP application, simply pass over what you need to. Why would you use ReqICMLabel - that's designed for a different purpose.
If all the data you need from ICM are ready and available before calling VXML application, you can pass them over to VXML application when ICM lauches it. But if during the VXML application session, you need extra, dynamic or real time data from ICM, ReqICMLabel can do that for you. ReqICMLabel has a lot of element variables that can pass info between ICM and VXML application and can be accessed by the elements that follow ReqICMLabel element. Of course, more general mechanism is to use VXML Database element that can perform other database tasks (insert, update etc) as well. ReqICMLabel was designed for Standalone CVP VXML applications, but it could provide an option here for retrieving ICM data without database overhead (connection, JDBC/ODBC driver etc)
Thanks for the responses,
Actually I try to query other customer sql databases using java(tomcat connection pooling). So I thought I could use the same to query icm tables as well.
Rqquirement is to query icm table and get agentID based on the LoginName and queue the call to that particular agentid.
This could be easiy achieved thru icm dblookup node, but the issue is LoginName is not a primary key in the table and as you know the router always performs a search on the primary key field, if I could set LoginName as the primay key this issue would be resolved but Cisco does not support that hence the alternate way is to directly query icm tables from CVP studio application which would pass LoginName as the input to get the corresponding agentID.
Let me see if I guess correctly.
In the CVP VXML application you get customer input (they want a special agent) and perform a database lookup in an external database that has the login name of the "preferred agent" for that customer.
You want to return this to ICM so it does a Queue to Agent using the (implicit) agent ID. You need to convert the login name of the agent to an ICM peripheral ID.
What is the form of the agent in the agent-customer mapping in your external DB? How does it get set up? How does it change?
Can't you extend this so that the ICM peripheral ID is there through a join in another table? This is going to be fairly stable - only requires an update when an agent leaves or joins the call centre.
Let me explain
CVP vxml application would query external db for the agent name (linked to active directory), using this agent name it will query icm table to find out the agentID and pass this to icm so that icm can queue the call to this particular agent id.