cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
708
Views
2
Helpful
10
Replies

Subdialog Invoke Errors

robk006
Level 1
Level 1

Running Cisco CVP 12.6(1), I am trying to call a different existing callflow, from a running callflow.  I know both callflows in their current state work, but I want to modify one callflow to call the other callflow, then return to the original running callflow.  From what I can see, the only "good" way to do this is using the Subdialog Invoke element.  Possibly, I could use Application Transfer for this, but then it isn't readily apparent how control returns to the calling callflow.  I am newer developer to CVP, recently moving from Genesys environment, so excuse the lack of knowledge.

On my lab CVP Server, I can browse to http://localhost:7000/CVP/Server?application=HelloWorld

Working with Subdialog Invoke, if I set Subdialog URI to http://localhost:7000/CVP/Server?application=HelloWorld and Local Application to false, I receive an error in the applications log: Subdialog Invoke_DLC_CCSB_GetMtrStatus,element,error,error.badfetch.http.404: vxml fetch error=java.net.SocketException: Unexpected end of file from server

robk006_0-1699536210141.png

I have also tried setting Local Application to true and multiple variations on the URI.  When I do this I get an error in the VXMLServer > logs > GlobalErrorLogger: SERVER ERROR: bad_url. URI: /CVP/Server.

If there is another way to jump into an existing callflow from a running callflow application, or how to get this URI issue resolved, I am open to suggestions.  Thank you in advance for your help.

10 Replies 10

janinegraves
Spotlight
Spotlight
The URI in the Subdialog invoke is being executed by the VVB, so localhost won't work.
I'd recommend setting URI: /CVP/Server?application=appname
and LocalApplication: True




robk006
Level 1
Level 1

I tried this format earlier and it didn't seem to work but I wasn't using HelloWorld application.  I tried it with HelloWorld and it seems to work.  I will need to look at my application I guess.  Is there somewhere I can pull the HelloWorld source code to stare and compare?  I'm guessing the StartSubdialog blocks (vs. CVP_StartSubdialog) are needing added/adjustment

There's no source code for HelloWorld, it's just a CVP_Subdialog_Start, Audio, CVP_Subdialog_Return element.

If you're trying to invoke an app and you're not passing any Parameters, and not expecting any ReturnValues then it should work very easily if the invoked app is available to be called into on VXMLServer.

If you're trying to pass data or get data back, then there's some configuration that needs to be matched between the main app (app1) and the invoked app (app2) otherwise you'll get a run time error.



robk006
Level 1
Level 1

yeah, I got it working without passing any data.  I will start modifying it to pass data shortly.  Thank you for your help.  It's weird because I was sure I tried the URI: /CVP/Server?application=appname configuration earlier.  Maybe I didn't have set to LocalApplication: True.

1.Right, local app = true is required for a partial URL.

2. If you pass data in the URL string: /CVP/Server?application=app2〈=english&lob=sales

Then it'll be available in the invoked app (app2) as Session Data automatically (just like when ICM passes data to app1). It won't show up in the Substitution tag builder, but you can access it as {Data.Session.varname} for example {Data.Session.lang} and {Data.Session.lob}

3. If you need to pass data that you don't want to display in the app2 Activity Log, then pass it in the setting named Parameter as key=value
App1: Parameter: acct=1234

In app2, you must start with a Subdialog_Start element and include the parameter name:
Parameter: acct
Store As: Session Data

it still won't appear in the Substitution tag builder, but you can access it as {Data.Session.varname} for example {Data.Session.acct}


4. To return data from App2 back to app1, you use the Subdialog_Return (not CVP_Subd_Return) and return name=value pairs.
Example: App2 Subdialog_Return:
Return Value: status=ok

In App1 configure the Subdialog Invoke Return Value setting with the name returned:
ReturnValue: status

This will be saved as Element Data of the Subdialog Invoke element.
it still won't appear in the Substitution tag builder, but you can access it as {Data.Element.Subdialog_Invoke01.status}

HTH

robk006
Level 1
Level 1

thanks for all the help Janine.  You were the trainer for myself and my coworker Jay, we think you are the best   One more quick question... what is the historical and technical difference between CVP_Subd_Rt, and Subd_Rt?  I'm currently calling App2 from ICM script directly but need to move it into CVP callflow App1, to call App2.  If I change from CVP_Subd_Rt to Subd_Rt, I'm hoping I won't break the current ICM script calling into app2.

Hi!

If you want to use the CVP_Subd_Return element to return to app1, then
that's fine, it's just a mtater of what the App1 Subdialog_Invoke
element expects back as a Return Value.

With CVP_Subd_Return in App2, it's returning the following behind the
scenes: caller_input=something, FromExtVXML0=something,
FromExtVXML1=something, FromExtVXML2=something, FromExtVXML3=something

So,  you must configure App1's Subd_Invoke element to expect back 1 or
more of the following Return Values:

ReturnValue: caller_input
ReturnValue: FromExtVXML0
ReturnValue: FromExtVXML1
ReturnValue: FromExtVXML2
ReturnValue: FromExtVXML3

Then it'll work just fine.


robk006
Level 1
Level 1

Thanks Janine.  When I try to access FromExtVXML0 as the return value in the calling app, I'm using {Data.Session.FromExtVXML0} and then try and parse the data.  It fails with a warning "warning,A substitution representing Session data named "FromExtVXML0" referred to non-existent information. An empty string was substituted instead."  So it doesn't find the session data.  Would {Data.Element.FromExtVXML0} work instead?

In App1, it'll be available as element data for the Subdialog_Invoke
element {Data.Element.SubdInvoke.FromExtVXML0}

robk006
Level 1
Level 1

I was able to figure it out.  {Data.Element.Subdialog Invoke_NAME.FromExtVXML0}