Java Classes on UCCE/CVP

Answered Question
Apr 19th, 2010

Dear Users,

I  am seeking assistance on integrating my IPCC Setup with the
customer's  database. Basically, what I want is the customer's name to
show up  at  the agent's desktop when alerting. IPCC should query my
customer  db and get the name (if its there).

I am meant to understand that  I will need to write java  classes and
deploy them at the CVP, then the script will call the  class to obtain
the necessary variable(s).

I have the script  (actually its working) and the java class ready. My
question how to  integrate them.

Could anyone please point me to a documentation  or steps on how to
import and deploy the java classes? I am using  ICM, CVP 7.0.

Thanks a lot!
Tim

I have this problem too.
0 votes

Checked the screen shot - er, you can't do it that way!!

The GS,Server,V microapp is special - no params are passed that way.

Make sure you put it on your customer or it won't function. Make sure the timeout exceeds the maximum time any user will be in Audium.

When you fill in your ToExtVXML[0] with "application=FooBar", you also have the opportunity to pass data to the application as name=value pairs. If you have more elements in your array you could set ToExtVXML[1] to "ANI=1234567890" and the application will automatically create a Session Variable called "ANI" and will assign the value "1234567890".

Obviously you want to use their real ANI - so you need the ICM concatenate() function, and the Call.Calling_Line_ID variable to make it work.

If you don't have any elements in the ToExtVXML[] array, make sure [0] is long enough and concatenate the name=value pairs together with semicolons to separate. The query string can be checked in Call Server as it goes towards the VXML Server. If you make a mistake, it will be obvious.

Now, you don't call the class from ICM. You call the Application and it uses the Session variable you created, holding the value of the CLID, and passes it to your class using "Substitution". You need to get that bit going.

And on your way back ... you can create ECC variables with different names if you like. Seems like icing on the cake - I would slow down a bit if I were you and get the basics working.

Regards,

Geoff

When you create a custom Action Element it is a different ball game to attaching Java code in line to an application. To be honest, I never do that.

If you are really making a Custom Action Element - you need to copy the class file into something like plugins\com.audiumcorp.studio.library.common_5.1.0\classes. Then restart Studio and look for your element in the Element Map.

Just like the Audio Element, Database Element etc. your should be there under the folder you have named. The idea is that the element is reusable, and through different settings can be configured to do different things in different apps. Even if I am using it the once, I tend to make an Action Element this way.

Add your element to your app, configure the settings and save and deploy. On the server, as I said, your custom Action Element goes in VXMLServer\common\classes. Either restart the VXMLServer or call admin\updateCommonClasses.bat.

If you are not doing it this way, just deploy the application - you will see your class get on the server with all the other files.

timotsmith wrote:


- In the ICM script, do something like call.FirstName=Call.user.microapp.FromExtVXML[0] and call.SecondName=Call.user.microapp.FromExtVXML[1] (I will have populated FromExtVXML[] using the results from the javaclass in the cvp stdio and call the class whenever a call comes in.)

So this is data for the way out. I don't know what "call.FirstName" is - but if you put data in a session variable in your Studio app, and return the value of the session arg in FromExtVXML[0] - you must do this by substitution - then ICM can see it, copy it into a peripheral variable etc.

Regards,

Geoff

  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 4.7 (3 ratings)
Loading.

Are you writing a custom Action Element to do the job, adding this to Studio and setting some parameters that it uses? I prefer that method as testing is easier and it's self-documenting. The class goes into Studio in plugins\common\classes (that's not the real name but it's close) and in the server in VXMLServer\common\classes.

Are you adding java processing to an existing action element, as documented in the Developers Guide? The Java class is deployed with your application when you do it this way, but the processing is a bit disguised and testing is a bit obscure as you have to test it in the context of a call.

Alternatively, you can configure a JNDI resource for Tomcat and use the supplied Database Element to make your query. You may find that easier. See the Element Specification.

Regards,

Geoff

timotsmith Mon, 04/19/2010 - 11:34

Thanks for the reply.

I am creating a custom Action Element. The steps I'm requesting are something like

- Create the java class using the neccessary libraries (i have done a hello world sample app.attached)
- Create a Studio project (just going to CVP studio -> New Project? )
- Import the java class (how? please help me on this). I have seen a sample java class in C:\Cisco\CallStudio\eclipse\workspace\HelloWorld\deploy\java\application\classes\HelloWorld.class. How was this created? Did they just copy and paste it there?
- Put the class  in the VXML server ( Again, How do I put in it the VXML Server? I have seen this path: C:\Cisco\CVP\VXMLServer\applications\HelloWorld\java\application\classes. Did they just copy and paste? or you run some app and it creates it?)
- In the ICM script, do something like call.FirstName=Call.user.microapp.FromExtVXML[0] and call.SecondName=Call.user.microapp.FromExtVXML[1] (I will have populated FromExtVXML[] using the results from the javaclass in the cvp stdio and call the class whenever a call comes in.)

Is there a documentation you could point me to?

Thanks alot for your assistance. I hope I am clear.

Regards,
Tim

Attachment: 
Correct Answer

When you create a custom Action Element it is a different ball game to attaching Java code in line to an application. To be honest, I never do that.

If you are really making a Custom Action Element - you need to copy the class file into something like plugins\com.audiumcorp.studio.library.common_5.1.0\classes. Then restart Studio and look for your element in the Element Map.

Just like the Audio Element, Database Element etc. your should be there under the folder you have named. The idea is that the element is reusable, and through different settings can be configured to do different things in different apps. Even if I am using it the once, I tend to make an Action Element this way.

Add your element to your app, configure the settings and save and deploy. On the server, as I said, your custom Action Element goes in VXMLServer\common\classes. Either restart the VXMLServer or call admin\updateCommonClasses.bat.

If you are not doing it this way, just deploy the application - you will see your class get on the server with all the other files.

timotsmith wrote:


- In the ICM script, do something like call.FirstName=Call.user.microapp.FromExtVXML[0] and call.SecondName=Call.user.microapp.FromExtVXML[1] (I will have populated FromExtVXML[] using the results from the javaclass in the cvp stdio and call the class whenever a call comes in.)

So this is data for the way out. I don't know what "call.FirstName" is - but if you put data in a session variable in your Studio app, and return the value of the session arg in FromExtVXML[0] - you must do this by substitution - then ICM can see it, copy it into a peripheral variable etc.

Regards,

Geoff

timotsmith Wed, 04/21/2010 - 11:22

Thank you Geoff,

With a  lot of reading, I have been able to follow the instructions you gave me, and i think am getting there. I now have one other question.

How do I call the class from the ICM script and pass an argument to it (I want to pass the subscriber number)? I have also attached some screenshot of the Network VRU script that I dont understand.  Is there a documentation that you can advise me that explains the Configuration Parameters and Script Name in the attached screenshot? (Its an example of an external script, which i think calls a java class (am not sure).). the Help of the ICM Configuration Manager and other documentation havent help me.

Also in my previous post,  by call.FirstName, i want to create the Variable FirstName. (and avoid using the existing ones like PeripheralVariable1, PeripheralVariable2 etc). Any advice on how to do that?

I appreciate your help.

Thanks alot!

Regards,

Tim

Correct Answer

Checked the screen shot - er, you can't do it that way!!

The GS,Server,V microapp is special - no params are passed that way.

Make sure you put it on your customer or it won't function. Make sure the timeout exceeds the maximum time any user will be in Audium.

When you fill in your ToExtVXML[0] with "application=FooBar", you also have the opportunity to pass data to the application as name=value pairs. If you have more elements in your array you could set ToExtVXML[1] to "ANI=1234567890" and the application will automatically create a Session Variable called "ANI" and will assign the value "1234567890".

Obviously you want to use their real ANI - so you need the ICM concatenate() function, and the Call.Calling_Line_ID variable to make it work.

If you don't have any elements in the ToExtVXML[] array, make sure [0] is long enough and concatenate the name=value pairs together with semicolons to separate. The query string can be checked in Call Server as it goes towards the VXML Server. If you make a mistake, it will be obvious.

Now, you don't call the class from ICM. You call the Application and it uses the Session variable you created, holding the value of the CLID, and passes it to your class using "Substitution". You need to get that bit going.

And on your way back ... you can create ECC variables with different names if you like. Seems like icing on the cake - I would slow down a bit if I were you and get the basics working.

Regards,

Geoff

timotsmith Sat, 04/24/2010 - 10:00

Thank you Geoff,

I was able to follow you instructions, am now glad that my first applicatioin has worked and I can display the variables in the CTI Agent Desktop (by saying call.PeripheralVariable1=Call.user.microapp.FromVXML[1].).

I really dont want be asking so many questions unless I am really stuck, I hope this is the last one.

Is it possible to rename columns in the CTI Agent Desktop (attached screenshot) to something of my choice? for example instead of var1, i put "Customer Name"etc?

more so, How can i create custom variables in the script editor, so that i can have variables like Call.user.CustomerName or call.CustomerName etc?

Thanks a lot for your assistance.

tim

timotsmith Sat, 04/24/2010 - 10:57

Hi Goeff,

I have figured out how to create the ECC variable. Call.user.CustomVariableName. My challenge is now to rename the var1, var2 etc in the CTI Agent Desktop. Any ideas?

Thanks!

That's trivial.

You change this on the CTI Object Server in the registry - server-side means that every user gets the changed header names.

This is well described in the Cisco documentation. For example, see "CTI OS System Manager’s Guide for Cisco ICM/IPCC Enterprise & Hosted Editions - Cisco CTI OS Release 7.2(1)"  page 8-20. Section called "Configuring the Call Appearance Grid".

Put your data in PV1 (for example) and simply change the header through the registry on the server. You won't need the ECC variable - although ECC variables can be displayed by configuring the registry.

Regards,

Geoff

Actions

This Discussion