cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
923
Views
0
Helpful
0
Comments
cdnadmin
Level 11
Level 11
This document was generated from CDN thread

Created by: Pedro Rego on 11-04-2012 03:33:16 PM
Hello Everybody,

I need to know, how can i catch the hangup event during a call and make a record event on ordinary database or direct on CVP Reporting server.
 
For Example one  Application VXMl answer the customer call, and during your navigation on second menu called "Second Menu Billing" the customer hang up your own call.
 
We need indentify this Hang up during navigation and store a varible where this happens and write it on database.
 
Thanks
Pedro Rego
 

Subject: RE: Indentify HANGUP and write on Report where happens.
Replied by: Janine Graves on 11-04-2012 03:50:03 PM
The only valid way to do catch the hangup in Studio/VxmlServer is using an End Of Call java class that checks how the call ended, and if it was a hangup, simulates what the CVP_Subdialog_Return does. The Java code below does this. It looks for session variables return0, return1, return2, return3 and returns them to ICM. In ICM, they'll show up in the Termination Variable table in the FromExtVXML array entries if you've configured these variable as Persistent.

You will have to compile this java and then configure the Studio app (Project / Properties / Call Studio / End Point Settings / End of Call - Class: EndClassSubRet
And you'll have to have the info in Session variables return0,1,2,3 (or modify the java to grab the session variables that you care about).


//These classes are used by on call end classes

import com.audium.core.vfc.VException;
import com.audium.core.vfc.VPreference;
import com.audium.core.vfc.form.VBlock;
import com.audium.core.vfc.form.VForm;
import com.audium.core.vfc.util.VAction;
import com.audium.core.vfc.util.VMain;
import com.audium.server.AudiumException;
import com.audium.server.proxy.EndCallInterface;
import com.audium.server.session.CallEndAPI;

/**
* If caller hung up, send data
* from the Session variables return0, return1, return2, return3
* to ICM into ECC variables FromExtVxml[0], [1], [2], [3]
*/

public class EndClassSubRet implements EndCallInterface
{
/**
  * All On End Call classes must implement this method. Use the passed
  * CallEndAPI class to get useful information. Making changes here will
  * do nothing as the call has already ended.
  */

public void onEndCall(CallEndAPI data) throws AudiumException
{
  if (data.getHowCallEnded().equals("hangup"))
  {
   try {

    //get data to return to ICM from these Session variables:
    //and return 'hangup' in the caller_input ECC variable of ICM
    //return0, return1, return2, return3
    String return0 = (String) data.getSessionData("return0");
    String return1 = (String) data.getSessionData("return1");
    String return2 = (String) data.getSessionData("return2");
    String return3 = (String) data.getSessionData("return3");

    VPreference pref = data.getPreference();
    VMain vxml = VMain.getNew(pref);
    VForm form = VForm.getNew(pref);
    VBlock block = VBlock.getNew(pref);

    VAction var = VAction.getNew(pref, VAction.VARIABLE, "caller_input", "hangup", VForm.WITH_QUOTES);              
    block.add(var);
    VAction returnTag = null;
    if(return0 != null){
     VAction var0=VAction.getNew(pref, VAction.VARIABLE, "FromExtVXML0", return0, VForm.WITH_QUOTES);               
     block.add(var0);
     if(return1 != null){
      VAction var1=VAction.getNew(pref, VAction.VARIABLE, "FromExtVXML1", return1, VForm.WITH_QUOTES);
      block.add(var1);
      if(return2 != null){
       VAction var2=VAction.getNew(pref, VAction.VARIABLE, "FromExtVXML2", return2, VForm.WITH_QUOTES);
       block.add(var2);
       if(return3 != null){
        VAction var3=VAction.getNew(pref, VAction.VARIABLE, "FromExtVXML3", return3, VForm.WITH_QUOTES);
        block.add(var3);     
        returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input FromExtVXML0 FromExtVXML1 FromExtVXML2 FromExtVXML3");
       } else{
        returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input FromExtVXML0 FromExtVXML1 FromExtVXML2");
       }
      }else {
       returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input FromExtVXML0 FromExtVXML1");
      }
     }else {
      returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input FromExtVXML0");
     }
    }else {
     returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input");
    }

    block.add(returnTag);

    form.add(block);
    vxml.add(form);

    data.setCustomVxmlResponse(vxml);

   } catch (VException ex) {                   
    ex.printStackTrace();
   }
  }
}
}

Subject: RE: Indentify HANGUP and write on Report where happens.
Replied by: karthikmerc (simulated) on 11-04-2012 04:00:38 PM
Hi Janine,

Do you have any update on VoiceXML invoke why its causing gateway to reload. While trying to pass parameters.

Phani.

Subject: RE: Indentify HANGUP and write on Report where happens.
Replied by: karthikmerc (simulated) on 11-04-2012 04:07:54 PM
The above post useful me too

Thanks Janine and Geoff.

Subject: RE: Indentify HANGUP and write on Report where happens.
Replied by: karthikmerc (simulated) on 11-04-2012 04:12:34 PM
What version of IOS Gateway supports VoiceXML 2.0 and 2.1



Please let me know



Karthik.

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: karthikmerc (simulated) on 11-04-2012 04:28:16 PM
I got some a problem with may previous account and need to update permissions, I am not sure about that. So created a new account.

If you guys have a time please review my post and get back to me.

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Janine Graves on 11-04-2012 06:45:10 PM
Hi Ryan,

I didn't write that end class java from scratch, I got it from the post you mention. Can't remember who posted it, maybe Paul?

The End of Call java class executes no matter how the call ends. But, the java I posted checks if the ended with 'hangup', and only continues in that case. If the caller hangs up, the call flow does not execute the CVP Subdialog Return, so no worries about overwriting it. And conversely, if the call goes thru the CVP Subdialog Return, then the caller didn't hang up. So, no need to worry.

I know of no way to populate the PVs directly. When returning data from VxmlServer one can only populate caller_input, FromExtVXML[0],...[3]. It must be written into the IVR Service or ICM Service code on the Call Server. And, if the caller hangs up, the ICM script ends immediately, so the best you can do is return data that populates the CallTermination Variable table. One might be able to create a session variable in the End of Call java class, assign it the data, and have it show up in the Reporting Server. I haven't tested to see if variables created in End of Call java would make it to the reporting server, but I don't see why not.  But, this doesn't address the PV problem.

Maybe Paul Tindall could file that as an enhancement request.

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: GEOFFREY THOMPSON on 11-04-2012 04:01:26 PM
The easiest thing to do is attach an EndClass to your application. This custom class will ALWAYS be called, even if the caller hangs up. Create a session variable in the start of the Application (use an App Modifier node) and initialize it. If your caller finishes the app correctly, you can set the variable to something else.

So the end class knows if the caller hung up – because the session var has the initial value. Write something suitable in the app log, something that the CVP Reporting server can find. I don’t know that server – never used it, don’t need it, not paying $20k for it.

Regards,
Geoff

Subject: RE: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: GEOFFREY THOMPSON on 11-04-2012 04:03:26 PM
That was interesting, Janine.

Regards,
Geoff

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Ryan Hilfers on 11-04-2012 04:22:12 PM
Phani (Karthik),  have you changed your forum name?  This is Pedro's thread, please respect that and stay on the topic specific to this thread.


Janine,

I've seen a similar code sample before, I'm assuming that code overwrites whatever you have in the SubDialogeReturn element in Studio correct? (also assuming this app does not end in an app transfer or something other than a SubDialogReturn).   Is there a way to populate directly to the PVs?  I am just curious as to where the constraint lives that allows us to only use Caller_Input and FromExtVXML array.

Otherwise Pedro, you'll have to use the AddToLog method against the session API in the custom java that Janine posted to populate to the CVP reporting logs.. you'll find whatever you place in the AddToLog method in the VXML_Custom table in CVP Reporting. Or do as Geoff does and use come custom Java to write anywhere else.

-Ryan

Subject: RE: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Hemal Mehta on 11-04-2012 04:28:26 PM
Just to add.  If you need more details, the CallEnd Action is very well described in Chapter 5.
http://www.cisco.com/en/US/docs/voice_ip_comm/cust_contact/contact_center/customer_voice_portal/cvp8_0/programming/guide/cvp_801_prog.pdf

Hemal



From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: Wednesday, April 11, 2012 2:50 PM
To: cdicuser@developer.cisco.com
Subject: New Message from Janine Graves in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: Indentify HANGUP and write on Report where happens.

Janine Graves has created a new message in the forum "General Discussion - All Versions":

--------------------------------------------------------------
The only valid way to do catch the hangup in Studio/VxmlServer is using an End Of Call java class that checks how the call ended, and if it was a hangup, simulates what the CVP_Subdialog_Return does. The Java code below does this. It looks for session variables return0, return1, return2, return3 and returns them to ICM. In ICM, they'll show up in the Termination Variable table in the FromExtVXML array entries if you've configured these variable as Persistent.

You will have to compile this java and then configure the Studio app (Project / Properties / Call Studio / End Point Settings / End of Call - Class: EndClassSubRet
And you'll have to have the info in Session variables return0,1,2,3 (or modify the java to grab the session variables that you care about).


//These classes are used by on call end classes

import com.audium.core.vfc.VException;
import com.audium.core.vfc.VPreference;
import com.audium.core.vfc.form.VBlock;
import com.audium.core.vfc.form.VForm;
import com.audium.core.vfc.util.VAction;
import com.audium.core.vfc.util.VMain;
import com.audium.server.AudiumException;
import com.audium.server.proxy.EndCallInterface;
import com.audium.server.session.CallEndAPI;

/**
* If caller hung up, send data
* from the Session variables return0, return1, return2, return3
* to ICM into ECC variables FromExtVxml[0], [1], [2], [3]
*/

public class EndClassSubRet implements EndCallInterface
{
/**
* All On End Call classes must implement this method. Use the passed
* CallEndAPI class to get useful information. Making changes here will
* do nothing as the call has already ended.
*/

public void onEndCall(CallEndAPI data) throws AudiumException
{
if (data.getHowCallEnded().equals("hangup"))
{
try {

//get data to return to ICM from these Session variables:
//and return 'hangup' in the caller_input ECC variable of ICM
//return0, return1, return2, return3
String return0 = (String) data.getSessionData("return0");
String return1 = (String) data.getSessionData("return1");
String return2 = (String) data.getSessionData("return2");
String return3 = (String) data.getSessionData("return3");

VPreference pref = data.getPreference();
VMain vxml = VMain.getNew(pref);
VForm form = VForm.getNew(pref);
VBlock block = VBlock.getNew(pref);

VAction var = VAction.getNew(pref, VAction.VARIABLE, "caller_input", "hangup", VForm.WITH_QUOTES);
block.add(var);
VAction returnTag = null;
if(return0 != null){
VAction var0=VAction.getNew(pref, VAction.VARIABLE, "FromExtVXML0", return0, VForm.WITH_QUOTES);
block.add(var0);
if(return1 != null){
VAction var1=VAction.getNew(pref, VAction.VARIABLE, "FromExtVXML1", return1, VForm.WITH_QUOTES);
block.add(var1);
if(return2 != null){
VAction var2=VAction.getNew(pref, VAction.VARIABLE, "FromExtVXML2", return2, VForm.WITH_QUOTES);
block.add(var2);
if(return3 != null){
VAction var3=VAction.getNew(pref, VAction.VARIABLE, "FromExtVXML3", return3, VForm.WITH_QUOTES);
block.add(var3);
returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input FromExtVXML0 FromExtVXML1 FromExtVXML2 FromExtVXML3");
} else{
returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input FromExtVXML0 FromExtVXML1 FromExtVXML2");
}
}else {
returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input FromExtVXML0 FromExtVXML1");
}
}else {
returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input FromExtVXML0");
}
}else {
returnTag = VAction.getNew(pref, VAction.RETURN, "caller_input");
}

block.add(returnTag);

form.add(block);
vxml.add(form);

data.setCustomVxmlResponse(vxml);

} catch (VException ex) {
ex.printStackTrace();
}
}
}
}
--
To respond to this post, please click the following link:

<http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/5437194>

or simply reply to this email.

Subject: RE: New Message from karthikmerc (simulated) in Customer Voice Portal (CVP)
Replied by: Hemal Mehta on 11-04-2012 05:05:26 PM
Not sure what you are up to man.  However you are messing this forum up and you are persistent about it.  You are mixing threads, coming with different id’s, asking same questions again and again  to different people.
From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: Wednesday, April 11, 2012 3:28 PM
To: cdicuser@developer.cisco.com
Subject: New Message from karthikmerc (simulated) in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di

karthikmerc (simulated) has created a new message in the forum "General Discussion - All Versions":

--------------------------------------------------------------
I got some a problem with may previous account and need to update permissions, I am not sure about that. So created a new account.

If you guys have a time please review my post and get back to me.
--
To respond to this post, please click the following link:

<http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/5437354>

or simply reply to this email.

Subject: RE: New Message from Janine Graves in Customer Voice Portal (CVP) - General
Replied by: Ryan Hilfers on 11-04-2012 06:51:26 PM
Great info. Thanks Janine!
________________________________
From: Cisco Developer Community Forums [cdicuser@developer.cisco.com]
Sent: Wednesday, April 11, 2012 3:45 PM
To: cdicuser@developer.cisco.com
Subject: New Message from Janine Graves in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di

Janine Graves has created a new message in the forum "General Discussion - All Versions":

--------------------------------------------------------------
Hi Ryan,

I didn't write that end class java from scratch, I got it from the post you mention. Can't remember who posted it, maybe Paul?

The End of Call java class executes no matter how the call ends. But, the java I posted checks if the ended with 'hangup', and only continues in that case. If the caller hangs up, the call flow does not execute the CVP Subdialog Return, so no worries about overwriting it. And conversely, if the call goes thru the CVP Subdialog Return, then the caller didn't hang up. So, no need to worry.

I know of no way to populate the PVs directly. When returning data from VxmlServer one can only populate caller_input, FromExtVXML[0],...[3]. It must be written into the IVR Service or ICM Service code on the Call Server. And, if the caller hangs up, the ICM script ends immediately, so the best you can do is return data that populates the CallTermination Variable table. One might be able to create a session variable in the End of Call java class, assign it the data, and have it show up in the Reporting Server. I haven't tested to see if variables created in End of Call java would make it to the reporting server, but I don't see why not. But, this doesn't address the PV problem.

Maybe Paul Tindall could file that as an enhancement request.
--
To respond to this post, please click the following link:

<http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/5437562>

or simply reply to this email.

Subject: RE: New Message from Ryan Hilfers in Customer Voice Portal (CVP) - General
Replied by: Hemal Mehta on 11-04-2012 06:53:26 PM
Ryan,
    The code will not overwrite the subdialog return at all. These are two separate things.  I have used this class to log certain things to database etc.  This is more on the CVP side.  While subdialog return typically returns your vals to ICM.
Also you can create end class that could write something to reporting server.
Hemal
________________________________
From: Cisco Developer Community Forums [cdicuser@developer.cisco.com]
Sent: Wednesday, April 11, 2012 3:22 PM
To: cdicuser@developer.cisco.com
Subject: New Message from Ryan Hilfers in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di

Ryan Hilfers has created a new message in the forum "General Discussion - All Versions":

--------------------------------------------------------------
Phani (Karthik), have you changed your forum name? This is Pedro's thread, please respect that and stay on the topic specific to this thread.


Janine,

I've seen a similar code sample before, I'm assuming that code overwrites whatever you have in the SubDialogeReturn element in Studio correct? (also assuming this app does not end in an app transfer or something other than a SubDialogReturn). Is there a way to populate directly to the PVs? I am just curious as to where the constraint lives that allows us to only use Caller_Input and FromExtVXML array.

Otherwise Pedro, you'll have to use the AddToLog method against the session API in the custom java that Janine posted to populate to the CVP reporting logs.. you'll find whatever you place in the AddToLog method in the VXML_Custom table in CVP Reporting. Or do as Geoff does and use come custom Java to write anywhere else.

-Ryan
--
To respond to this post, please click the following link:

<http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/5438880>

or simply reply to this email.

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Ryan Hilfers on 11-04-2012 06:54:17 PM
Hi Ryan,

I didn't write that end class java from scratch, I got it from the post you mention. Can't remember who posted it, maybe Paul?

The End of Call java class executes no matter how the call ends. But, the java I posted checks if the ended with 'hangup', and only continues in that case. If the caller hangs up, the call flow does not execute the CVP Subdialog Return, so no worries about overwriting it. And conversely, if the call goes thru the CVP Subdialog Return, then the caller didn't hang up. So, no need to worry.

I know of no way to populate the PVs directly. When returning data from VxmlServer one can only populate caller_input, FromExtVXML[0],...[3]. It must be written into the IVR Service or ICM Service code on the Call Server. And, if the caller hangs up, the ICM script ends immediately, so the best you can do is return data that populates the CallTermination Variable table. One might be able to create a session variable in the End of Call java class, assign it the data, and have it show up in the Reporting Server. I haven't tested to see if variables created in End of Call java would make it to the reporting server, but I don't see why not.  But, this doesn't address the PV problem.

Maybe Paul Tindall could file that as an enhancement request.

 
Great info. Thanks Janine!   I am currently writing to the reporting server on an OnEndCall class just using the AddToLog method, so that is definitely possible. The point of only being able to populate to TCD is a great one, wouldn't have found that out until I tried this. Thanks!

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Ryan Hilfers on 11-04-2012 06:54:17 PM
Hi Ryan,

I didn't write that end class java from scratch, I got it from the post you mention. Can't remember who posted it, maybe Paul?

The End of Call java class executes no matter how the call ends. But, the java I posted checks if the ended with 'hangup', and only continues in that case. If the caller hangs up, the call flow does not execute the CVP Subdialog Return, so no worries about overwriting it. And conversely, if the call goes thru the CVP Subdialog Return, then the caller didn't hang up. So, no need to worry.

I know of no way to populate the PVs directly. When returning data from VxmlServer one can only populate caller_input, FromExtVXML[0],...[3]. It must be written into the IVR Service or ICM Service code on the Call Server. And, if the caller hangs up, the ICM script ends immediately, so the best you can do is return data that populates the CallTermination Variable table. One might be able to create a session variable in the End of Call java class, assign it the data, and have it show up in the Reporting Server. I haven't tested to see if variables created in End of Call java would make it to the reporting server, but I don't see why not.  But, this doesn't address the PV problem.

Maybe Paul Tindall could file that as an enhancement request.

 
Great info. Thanks Janine!   I am currently writing to the reporting server on an OnEndCall class just using the AddToLog method, so that is definitely possible. The point of only being able to populate to TCD is a great one, wouldn't have found that out until I tried this. Thanks!

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Ryan Hilfers on 11-04-2012 07:00:05 PM
Sry about the crazy posts.. not sure what happened.  We've had enough of those in these forums lately....      And Hemal, you're exactly right...  I completely blipped the IF statement (if (data.getHowCallEnded().equals("hangup"))...   however IF for some crazy reason you wanted to use this code to return values in those variables it would be possible to use that code to do so if you always executed the vxml portion, not only on hangup.  Anyway, not the purpose of this thread, thank you both for answering my questions.

-Ryan

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Paul Tindall on 11-04-2012 08:14:08 PM
 
Janine,
 
Yes, the original was an example I posted specifically in response to getting hangup indication and data back to ICM.  Unfortunately, further script processing doesn't happen once the final response from CVP gets back to ICM so it's not possible to move data from the ECCs to PVs; that would definitely require a code change.
 
Paul

Subject: Re: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Rakesh Ameta on 13-04-2012 04:12:05 AM
Below code can be used:


public void onEndCall(CallEndAPI data) throws AudiumException
{
if (data.getHowCallEnded().equals("hangup"))
{
try {


String strTraversedElementPath= data.getElementHistory();// the element
detail where the call was hanged up

// insert the content of strTraversedElementPath to database table directly
from this class.

}




Regards,
Rakesh
Eat drink and find satisfaction in work, Enjoy the life with the one you
love,be happy and do good as long as you live.



From: Cisco Developer Community Forums <cdicuser@developer.cisco.com>
To: "cdicuser@developer.cisco.com" <cdicuser@developer.cisco.com>
Date: 12/04/2012 01:03
Subject: New Message from Pedro Rego in Customer Voice Portal (CVP) -
            General Discussion - All Versions: Indentify HANGUP and write
            on Report where happens.



Pedro Rego has created a new message in the forum "General Discussion - All
Versions":

--------------------------------------------------------------
Hello Everybody,

I need to know, how can i catch the hangup event during a call and make a
record event on ordinary database or direct on CVP Reporting server.

For Example one  Application VXMl answer the customer call, and during your
navigation on second menu called "Second Menu Billing" the customer hang up
your own call.

We need indentify this Hang up during navigation and store a varible where
this happens and write it on database.

Thanks
Pedro Rego

--
To respond to this post, please click the following link:

<
http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/5437146
>

or simply reply to this email.

Subject: RE: Re: New Message from Pedro Rego in Customer Voice Portal (CVP) - Genera
Replied by: Pedro Rego on 04-06-2012 11:08:56 AM
Rakesh Ameta and other guys
 
Thanks for all samples
 
1 - The big question is after created this class inside my properties project we load on my endppoint Settings?
Properties-->CallStudio-->EndPointSettings-->On Application End
After that we use the (ADD...) button
 
2 - If the system Identify Hang-up i need record the 3 Session Variables (Created on my CISCO CVP application) on this database "SicrediCiscoReports" using this quey showed below.
 
I not so good im Java could you send a new sample with more details using this Database and this Query?
 
JNDI NAME : SicrediCiscoReports
 
QUERY:
INSERT INTO IVRDATA VALUES(
'{Data.Session.s_DataIVR1}'
'{Data.Session.s_DataIVR2}'
'{Data.Session.s_DataIVR3}'
 )
 
3 - Rakesh I do not need to know where and which element in the occors Hangup, the more it can be very helpful too for me.
Today I need to know the piece of the application that he own.(it belongs) Because this my intuite is use only variables
Could you explain your example?
Imagine I have a Menu Element called 'Car Menu', how could I use it on your exemplo below?
 
String strTraversedElementPath= data.getElementHistory();// the element
detail where the call was hanged up
Sorry about a lot of questions Thanks for all.

Subject: Otomatik Yanıt: New Message from Pedro Rego in Customer Voice Portal (CVP)
Replied by: Mert Guray on 04-06-2012 11:10:26 AM
07.06.2012'e kadar şirket dışında olacağımdan, maillerime sınırlı erişebileceğim. Önemli konuları GT-Cagri Merkezi Uyg. (gtcagrimerkeziuyg@garanti.com.tr) 'a bildirmenizi rica ederim.

I will be out of office until 07.06.2012. For urgent issues please send an email to GT-Cagri Merkezi Uyg. (gtcagrimerkeziuyg@garanti.com.tr).

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: santosh sunkaranam on 31-01-2013 07:35:27 AM
Hi Jannie,
We are also facing the same  issue. We have implemented java code and made all necessary settings which you mentioned in the previous posts.
But when we hangup the call in middle of the application, call is not returned back to icm. And  have also checked in Termination_Call_Variable table
and didn't find the hangup value populated in ECC field. Here are my activity and debug logs. I have set some dummy values for  FromExtVXML0 to 3.
Activity logs:
10.20.89.108.1359638331899.134.Starwood_China,01/31/2013 07:19:06.852,Starwood_China_Form_SPGNumznhk,interaction,audio_group,initial_audio_group
10.20.89.108.1359638331899.134.Starwood_China,01/31/2013 07:19:14.539,Starwood_China_Form_SPGNumznhk,exit,
10.20.89.108.1359638331899.134.Starwood_China,01/31/2013 07:19:14.539,,custom,How Call Ended: ,hangup

Debug Logs:
<form>
    <block>
      <var name="caller_input" expr="'hangup'" />
      <var name="FromExtVXML0" expr="'1234'" />
      <var name="FromExtVXML1" expr="'1234'" />
      <var name="FromExtVXML2" expr="'1234'" />
      <var name="FromExtVXML3" expr="'1234'" />
      <return namelist="caller_input FromExtVXML0 FromExtVXML1 FromExtVXML2 FromExtVXML3" />
    </block>
  </form>
</vxml>
Could you please help me how can we populate the value in that particular table?
 
 
 
 
 
Janine Graves:
Hi Ryan,

I didn't write that end class java from scratch, I got it from the post you mention. Can't remember who posted it, maybe Paul?

The End of Call java class executes no matter how the call ends. But, the java I posted checks if the ended with 'hangup', and only continues in that case. If the caller hangs up, the call flow does not execute the CVP Subdialog Return, so no worries about overwriting it. And conversely, if the call goes thru the CVP Subdialog Return, then the caller didn't hang up. So, no need to worry.

I know of no way to populate the PVs directly. When returning data from VxmlServer one can only populate caller_input, FromExtVXML[0],...[3]. It must be written into the IVR Service or ICM Service code on the Call Server. And, if the caller hangs up, the ICM script ends immediately, so the best you can do is return data that populates the CallTermination Variable table. One might be able to create a session variable in the End of Call java class, assign it the data, and have it show up in the Reporting Server. I haven't tested to see if variables created in End of Call java would make it to the reporting server, but I don't see why not. But, this doesn't address the PV problem.

Maybe Paul Tindall could file that as an enhancement request.


Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Janine Graves on 31-01-2013 02:21:13 PM
Santosh, I assume you included the java class in your Studio application as EndOfCall java (Project/Properties/Studio/EndPointSettings)?
If so, my java class (by default) looks for the Session variables named return0, return1, return2, return3 and returns their values into the user.microapp.FromExtVXML[0],[1],[2],[3] (respectively); My java class also returns 'hangup' in the user.microapp.caller_input variable. For these values to appear in the Term Call Variable table, they must be configured as 'PERSISTENT' through ICM Configuration Manager / List Tools / Expanded Call Variables.
You can easily modify my java code to return different variable values.
If you're using the Java class that Cisco posted on the forum, then you'll have to look at which Studio variables they are looking for.
 

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: santosh sunkaranam on 01-02-2013 08:00:16 AM
Janine Graves:
Santosh, I assume you included the java class in your Studio application as EndOfCall java (Project/Properties/Studio/EndPointSettings)? If so, my java class (by default) looks for the Session variables named return0, return1, return2, return3 and returns their values into the user.microapp.FromExtVXML[0],[1],[2],[3] (respectively); My java class also returns 'hangup' in the user.microapp.caller_input variable. For these values to appear in the Term Call Variable table, they must be configured as 'PERSISTENT' through ICM Configuration Manager / List Tools / Expanded Call Variables. You can easily modify my java code to return different variable values. If you're using the Java class that Cisco posted on the forum, then you'll have to look at which Studio variables they are looking for.  
  Hi Janine Thanks for your response. I have included the EndOfCallJava class in my EndPointSettings and also configured the caller_input and FromExtVXml ECC varibales. But i didn't find any of these values populated in ICM real time Call_Termination_Variable. I have atteched the real time Call_Termination_Variable query and also ICM persistent configuaration of ECC variables. Here is my new debug logs: Response Returned on:  02/01/2013 07:34:41.984
<!--?xml version="1.0" encoding="UTF-8"?-->
 
<form>          <var></var>       <var></var>       <var></var>       <var></var>       <var></var>            </form>
Could you please suggest am i missed anything or looking into wrong table ? and assuming that Termination_Call_Details. But there also i didn't find any of these values.  

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: santosh sunkaranam on 01-02-2013 08:02:55 AM
santosh sunkaranam:

Janine Graves:

Santosh, I assume you included the java class in your Studio application as EndOfCall java (Project/Properties/Studio/EndPointSettings)? If so, my java class (by default) looks for the Session variables named return0, return1, return2, return3 and returns their values into the user.microapp.FromExtVXML[0],[1],[2],[3] (respectively); My java class also returns 'hangup' in the user.microapp.caller_input variable. For these values to appear in the Term Call Variable table, they must be configured as 'PERSISTENT' through ICM Configuration Manager / List Tools / Expanded Call Variables. You can easily modify my java code to return different variable values. If you're using the Java class that Cisco posted on the forum, then you'll have to look at which Studio variables they are looking for.  

  Hi Janine Thanks for your response. I have included the EndOfCallJava class in my EndPointSettings and also configured the caller_input and FromExtVXml ECC varibales. But i didn't find any of these values populated in ICM real time Call_Termination_Variable. I have atteched the real time Call_Termination_Variable query and also ICM persistent configuaration of ECC variables. Here is my new debug logs: Response Returned on:  02/01/2013 07:34:41.984

Could you please suggest am i missed anything or looking into wrong table ? and assuming that Termination_Call_Details. But there also i didn't find any of these values.  

 
Previoulsy debug logs are not properly pasted
Response Returned on:  02/01/2013 07:34:41.984
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml" version="2.1">
  <form>
    <block>
      <var name="caller_input" expr="'hangup'" />
      <var name="FromExtVXML0" expr="'return0'" />
      <var name="FromExtVXML1" expr="'return1'" />
      <var name="FromExtVXML2" expr="'return2'" />
      <var name="FromExtVXML3" expr="'return3'" />
      <return namelist="caller_input FromExtVXML0 FromExtVXML1 FromExtVXML2 FromExtVXML3" />
    </block>
  </form>
</vxml>
 
 
 

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Paul Tindall on 04-02-2013 04:10:32 AM
Suggest you start by turning on tracing in the ICM VRU PIM and check what variable contents are being passed back to ICM.   If your custom call end class is working then it should be apparent from the data showing up there.

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: santosh sunkaranam on 04-02-2013 11:11:19 AM
Paul Tindall:
Suggest you start by turning on tracing in the ICM VRU PIM and check what variable contents are being passed back to ICM.   If your custom call end class is working then it should be apparent from the data showing up there.

 
Hi Paul,
Thanks a lot for your responce. And coming to the issue i just called my application and then hangup the call in middle of the prompt and then
checked the callserver logs  i.e c:\cisco\cvp\logs as per your suggestion . Here is the callserver logs showing
CALLGUID = DF1E98C36E0B11E2802530F70DF20D00, DLGID = 1609 [IVR_LEG] - Publishing ,, [ICM_RUN_SCRIPT_RESULT],   dialogueId=1609,   sendSeqNo=2,   invokedId=1,   resultCode=true,   ced=,   newTransaction=false,   CallContext:,     user.microapp.caller_input: hangup,     user.microapp.error_code: 0,     user.microapp.metadata: N|000|01|00|00|029687|GS,Server,V,     user.microapp.FromExtVXML[0]: return0,     user.microapp.FromExtVXML[1]: return1,     user.microapp.FromExtVXML[2]: return2,     user.microapp.FromExtVXML[3]: return3,, LEGID = , DNIS = 66666666622239, ANI = blocked .
The logs indicating that am sending values to icm properly but i didn't see them in both of tables i.e Termination_Call_Detail and Termination_Call_Variable tables. I also configured these ECC variables as persistent in ICM.

Could you please help me out how can i figure it out?

 
 
 
 
 

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: Paul Tindall on 04-02-2013 12:35:41 PM
Ok, so the CVP end of things looks OK but I'd still check the VRU PIM to make sure the data is getting into ICM.  Also, have you restarted the CVP Call Server since any changes were last made to the ECC's?   I did just retest this end class approach on a 9.0 system and it does still work OK.

Subject: RE: New Message from Pedro Rego in Customer Voice Portal (CVP) - General Di
Replied by: santosh sunkaranam on 10-02-2013 02:36:25 AM
Paul Tindall:
Ok, so the CVP end of things looks OK but I'd still check the VRU PIM to make sure the data is getting into ICM.  Also, have you restarted the CVP Call Server since any changes were last made to the ECC's?   I did just retest this end class approach on a 9.0 system and it does still work OK.

 
Hi Paul,
My issue sorted out. Once i restarted the callserver ,am able to see the all ECC variable values in ICM awdb and hds database when i hangup the call in middle of the vxml application.
Thanks a lot paul and janine
 
 
 
Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community:

Quick Links