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

Created by: Janine Graves on 31-08-2010 02:06:51 PM
Hi,
Can someone explain the details of how to return data to ICM when the caller hangs up in the middle of a VxmlServer/Studio application? Which versions of CVP does this work with?
Thanks, Janine

Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Paul Tindall on 31-08-2010 09:47:25 PM
Janine,
 
You can do this using a Java call end class that sends a custom VoiceXML document as the final resposne after hangup.  In this case, the VoiceXML document is a modified subdialog return which simply returns the caller_input and FromExtVXML variables with your data as required.
 
Attached is a sample end class that builds the required VoiceXML to perform the custom subdialog return and invokes it using the setCustomVxmlResponse method.   This returns data that will be successfully propagated back into the ICM database.  You can see that the caller_input and two of the FromExtVXML values are set to constants for testing but clearly these can be set to whatever element or session data you wish.   

There is one small thing to be aware of.   Because this now returns from the subdialog normally with data, the error code is set to 0 rather than 1 and the RunSriptResult now returns successful status.  You can of course return some data in caller_input for example to indicate in the ICM data that a hangup happened and distinguish this from exit via the normal subdialog return element.

Remember also that the script won¿t execute any more nodes after the hangup so that does rule out populating normal call variables with the returned data in the ECCs.

Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Janine Graves on 01-09-2010 02:04:44 AM
Thanks Paul!
This looks great. I will try this out tomorrow. It looks very straightforward. Does the FromExtVxml array appear in any of the HDS tables so I can verify that it's being returned appropriately.
Thanks, Janine
 
 
Janine,
 
You can do this using a Java call end class that sends a custom VoiceXML document as the final resposne after hangup.  In this case, the VoiceXML document is a modified subdialog return which simply returns the caller_input and FromExtVXML variables with your data as required.
 
Attached is a sample end class that builds the required VoiceXML to perform the custom subdialog return and invokes it using the setCustomVxmlResponse method.   This returns data that will be successfully propagated back into the ICM database.  You can see that the caller_input and two of the FromExtVXML values are set to constants for testing but clearly these can be set to whatever element or session data you wish.   

There is one small thing to be aware of.   Because this now returns from the subdialog normally with data, the error code is set to 0 rather than 1 and the RunSriptResult now returns successful status.  You can of course return some data in caller_input for example to indicate in the ICM data that a hangup happened and distinguish this from exit via the normal subdialog return element.

Remember also that the script won¿t execute any more nodes after the hangup so that does rule out populating normal call variables with the returned data in the ECCs.


Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Paul Tindall on 01-09-2010 02:21:50 PM
Yes, the returned data should be written into Termination_Call_Variable.

Subject: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - CVP - Al
Replied by: Janine Graves on 01-09-2010 08:35:59 PM
Hi Paul,

I just tried this with CVP 7.0.2, and my Termination_Call_Variable table
is completely empty.
I see the data being returned in my VXML Server Debug Logs, but when I
monitor the ICM routing script, it's dying inside the
RunExternalScript(GS,Server,V) when the caller hangs up.

Does this only work in CVP8?

Thanks, Janine


On 9/1/2010 10:21 AM, Cisco Developer Community Forums wrote:
> Paul Tindall has created a new message in the forum "CVP - All Versions":
>
> --------------------------------------------------------------
> Yes, the returned data should be written into Termination_Call_Variable.
> --
> To respond to this post, please click the following link:
>
> <http://developer.cisco.com/web/cvp/forums/-/message_boards/message/2497859>
>
> or simply reply to this email.

--
Janine Graves
781-990-1040

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - CVP
Replied by: Voiceops SSC on 01-09-2010 09:31:28 PM
wouldn't a Hotevent element work using the "telephone.disconnect.hangup" event?
I currently use that to pupulate a table we have to track certain calls.
I imagine it could work if you make go out a different CVP Subdialog Return_01 so you can populate/pass to ICM.

Subject: Re: New Message from Voiceops SSC in Customer Voice Portal (CVP) - CVP - Al
Replied by: Janine Graves on 02-09-2010 02:56:58 PM
No, if I catch telephone.disconnect.hangup then VxmlServer never frees
up the license.


On 9/1/2010 5:31 PM, Cisco Developer Community Forums wrote:
> Voiceops SSC has created a new message in the forum "CVP - All Versions":
>
> --------------------------------------------------------------
> wouldn't a Hotevent element work using the
> "telephone.disconnect.hangup" event?
> I currently use that to pupulate a table we have to track certain calls.
> I imagine it could work if you make go out a different CVP Subdialog
> Return_01 so you can populate/pass to ICM.
> --
> To respond to this post, please click the following link:
>
> <http://developer.cisco.com/web/cvp/forums/-/message_boards/message/2500515>
>
> or simply reply to this email.

--
Janine Graves
781-990-1040

Subject: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - CVP - Al
Replied by: Janine Graves on 02-09-2010 02:58:33 PM
Doesn't seem to work in CVP7. Can you confirm whether this is only in CVP8?

On 8/31/2010 5:47 PM, Cisco Developer Community Forums wrote:
> Paul Tindall has created a new message in the forum "CVP - All Versions":
>
> --------------------------------------------------------------
> Janine,
> Â
> You can do this using a Java call end class that sends a custom
> VoiceXML document as the final resposne after hangup. In this case,
> the VoiceXML document is a modified subdialog return which simply
> returns the caller_input and FromExtVXML variables with your data as
> required.
> Â
> Attached is a sample end class that builds the required VoiceXML to
> perform the custom subdialog return and invokes it using the
> setCustomVxmlResponse method.  This returns data that will be
> successfully propagated back into the ICM database. You can see that
> the caller_input and two of the FromExtVXML values are set to
> constants for testing but clearly these can be set to whatever element
> or session data you wish.  Â
>
> There is one small thing to be aware of.  Because this now returns
> from the subdialog normally with data, the error code is set to 0
> rather than 1 and the RunSriptResult now returns successful status.Â
> You can of course return some data in caller_input for example to
> indicate in the ICM data that a hangup happened and distinguish this
> from exit via the normal subdialog return element.
>
> Remember also that the script wonâ¿¿t execute any more nodes after the
> hangup so that does rule out populating normal call variables with the
> returned data in the ECCs.
> --
> To respond to this post, please click the following link:
>
> <http://developer.cisco.com/web/cvp/forums/-/message_boards/message/2495226>
>
> or simply reply to this email.

--
Janine Graves
781-990-1040

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - CVP
Replied by: Paul Tindall on 02-09-2010 11:38:58 PM
I've never tried it in CVP 8.   I just retested it on CVP 7.0(2) and ICM 7.5(7) and it worked fine.   Do you see the data in the RunScriptResult message back to ICM?

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - CVP
Replied by: Janine Graves on 03-09-2010 02:24:30 PM
Hi Paul,
I'm attaching my CVP.log with the RunScriptResult. For the Caller_input I'm returning 'Janinehangup' to make it easy to search for 'Janine'.
 
I do see the data in the RunScriptResult, but when I monitor my ICM script, it shows an ExclamationPoint in the RunExtScript node. It's never exiting down the success or failure path. Also, I have absolutely nothing in my call termination variable table (my call termination detail table has data returned when there's no hangup).  Could it be a timing issue, where ICM ends before the data is returned?
 
I'm running ICM v7.5.1.0, CVP 7.0.2, and my IOS is 12.4.15T6
 
Any ideas why my call term variable table isn't populating?
Thanks!
Janine
 
 


I've never tried it in CVP 8.   I just retested it on CVP 7.0(2) and ICM 7.5(7) and it worked fine.   Do you see the data in the RunScriptResult message back to ICM?

Subject: RE: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - CVP
Replied by: Paul Tindall on 04-09-2010 01:48:15 AM
The log you sent is consistent with what I see when I run the test.  You're saying you have no ECCs at all written into Termination_Call_Variable?  Do you have all ECC variables configured as non-persistent?   It's correct that the script monitor will show nothing executed beyond the GS micropapp RunScript node if the call hangs-up during external VoiceXML.  Although the script deosn't process further nodes the data returned in the RunScriptResult should still be handled.

Subject: Re: New Message from Paul Tindall in Customer Voice Portal (CVP) - CVP - Al
Replied by: Janine Graves on 06-09-2010 04:57:58 PM
Hi Paul,

Success!
I changed my FromExtVxml array and caller_input ECC Variables to make
them Persistent and then restarted my ICM Sprawler. And now I am seeing
the data returned from the Studio application when I use your End of
Call class to return  when the caller disconnects in the HDS Call
Termination Variable table. I will share this information with my CVPD
students and they'll be thrilled with the new capability.

Thanks so much!
Janine

On 9/1/2010 10:21 AM, Cisco Developer Community Forums wrote:
> Paul Tindall has created a new message in the forum "CVP - All Versions":
>
> --------------------------------------------------------------
> Yes, the returned data should be written into Termination_Call_Variable.
> --
> To respond to this post, please click the following link:
>
> <http://developer.cisco.com/web/cvp/forums/-/message_boards/message/2497859>
>
> or simply reply to this email.

--
Janine Graves
781-990-1040

Subject: BRKUCT-3016 CVP Scripting Class at Cisco Networkers 2008
Replied by: GUILL MUNOZ on 27-03-2011 07:41:37 PM
Hello Paul,
 
I found the above PDF of all places in the China equivalent of Google, and although I live right here in San Jose, I was not able to determine if you ever updated this very fine summary for the latest releae of CVP software.  I downloaded the above CVP 4.0 scripting summary, but would appreciate any equivalent information you might have for 8.x.
 
My name is Guill Munoz, I am the CCE SE for NEC Unified Solutions, we currently hold UC Masters Certification, my email is guill.munoz@necam.com or gmunoz@bigfoot.com.
 
Thank you.

Subject: RE: New Message from GUILL MUNOZ in Customer Voice Portal (CVP) - CVP - All
Replied by: Paul Tindall on 30-03-2011 12:18:24 PM
Guill,



I haven¿t built an updated version of that slide deck specifically for 8.0 but you may find the Networkers 2009 CVP sequel of interest: 

¿BRKUCT-3015 Advanced Tips and Tricks for Self-Service Application Development using Cisco Unified Call Studio¿

I just did a Google search and I see it¿s out there.



Paul





From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: 28 March 2011 00:42
To: cdicuser@developer.cisco.com
Subject: New Message from GUILL MUNOZ in Customer Voice Portal (CVP) - CVP - All Versions: BRKUCT-3016 CVP Scripting Class at Cisco Networkers 2008



GUILL MUNOZ has created a new message in the forum "CVP - All Versions":

--------------------------------------------------------------
Hello Paul,

I found the above PDF of all places in the China equivalent of Google, and although I live right here in San Jose, I was not able to determine if you ever updated this very fine summary for the latest releae of CVP software.  I downloaded the above CVP 4.0 scripting summary, but would appreciate any equivalent information you might have for 8.x.

My name is Guill Munoz, I am the CCE SE for NEC Unified Solutions, we currently hold UC Masters Certification, my email is guill.munoz@necam.com or gmunoz@bigfoot.com.

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

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

or simply reply to this email.

Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Pietro Angelo Corrao on 05-11-2013 08:52:17 AM
Hi Everybody,

What about the attaches? i cant see them and they could be very usefull coz i have the same problem and i don't understand what to send to the setCustomVxmlResponse methods, and dont undestand how to distinguish between a "Normal" call end and when the caller hangs up in the middle of the call.

Thanks a lot,

Pietro

Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Paul Tindall on 05-11-2013 04:43:08 PM
Pietro,
It seems like attachments expire after a while and disappear.   I think this was what I posted previously on this thread.

Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Pietro Angelo Corrao on 06-11-2013 05:19:07 PM
Hi Paul,

thank you so much for your preciuos help! I can confirm your end class works on CVP 9.0.1 too. Furthermore I can see (persistent) variable in Termination_Call_Variable table.

But Run External Script node on ICM script still reports hanged-up calls are ABORT (monitoring view). It's very tricky because I cannot parse From External VXML variable in order to "extract" concatenated info or change call type. Maybe am I missing anything? I mean, our scenario is:
  1. Comprehensive CVP deployment
  2. Customers call DN
  3. Cisco VGW redirect calls to CVP Call Server (port 5060) that's ICM Routing Client
  4. ICM Script set all needed variables and then Run External Script node starts a GS Network VRU Script
  5. Cisco VGW acts a VXML Browser and retrieve one only VXML application deployed on CVP VXML Server
  6. Customers can interact with IVR in self service mode (i.e. retrieving account info) or ask agents
  7. Based on IVR choice (stored in From External VXML Variable) ICM routes call to several skillgroup
With this implementation, if Customers hang-up, there's no way to report or analize Customer's IVR navigation. Am I right?

Maybe I can look for some info implementing CUIC Reports that query on Termination_Call_Variable table, but it's very hard because I concatenate several info into the 5 available variables (Caller Input and FromExternalVMXL[]).

Any feedback is very appreciate!

Ciao,
Pietro

Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Paul Tindall on 06-11-2013 05:52:10 PM
Pietro,

When the caller hangs-up, the data returned from the CVP Studio application will be written to the ICM database but as the script never resumes execution you don't have the option to modify call types etc.   So, there are really only 3 options:  (i) derive the hangup status/info from the returned variables, formatting as simply as possible to aid reporting  (ii) use the CVP Reporting Server which can give you detailed information on what happened in the application (iii) write key information to an external back-end data repository.

Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Janine Graves on 06-11-2013 06:04:41 PM
Paul, Would either of these options 'work':

1) Somehow use the element used in the Courtesy Callback Apps that tells the gateway to Intercept Caller Hangup - so ICM doesn't know the caller hung up.
That would allow the VXML Server app to send back caller_input="hangup" and other data. The ICM script would then parse the returned data, set call types, and then Release the Call.
-OR-
2) Use a HotEvent element to catch 'telephone.disconnect.hangup' event and connect the HotEvent element to a ReqIcmLabel element that sends data to the ICM script based upon the _dnis sent from ICM. This way, he could have another ICM script that just parses the returned data and sets Call Types. Of course, in the Studio app, he'd have to then connect the ReqIcmLabel element to either CVP_Subd_Return or Hangup -- either way, it's not a beautiful solution, but it should work.

Subject: RE: Returning Data to ICM when Caller Hangs Up
Replied by: Paul Tindall on 07-11-2013 04:38:35 AM
Janine,

Option 2 should work although, as you say, not beauty contest material.

Option 1 to intercept and delay the disconnect is an interesting idea.  Doing that at the ingress gateway in itself is not that difficult.  The bit that I'm missing at the moment is how to communicate the caller hangup from gateway to Studio application without polling with a 'probe' message using SIP INFO.  The only asynchronous way I can think of at the moment would be to send DTMF and trigger a hotlink.
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