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

UCCE - return CVP VXML script results to ICM using FromExtVXML

Peter Fiers
Level 1
Level 1

Hello

I'm completely new to UCCE scripting, and that's why I'm struggling very hard with an apparently often discussed issue.

In a VXML script, I put some database query results into FromExtVXML variables using CVP Subdialog Return like this:

External VXML 1 = {Data.Element.Check_HolidayDB.flowId}

External VXML 2 = {Data.Element.Check_ServicetimeDB.flowId}

External VXML 3 = {Data.Element.Check_FwdDB.target}

 

When the script has run, I see following answer from the VRU to ICM in the PG logs:

06:00:50.579:  VRU->PG: Service Control Message (= Message Type 47); Message Length 112 byte
 Run Script Result (= Subtype 8); DialogueID: (2574) 00000a0e;
   SendSeqNo: (2)00000002
   Invoke ID: (1) 00000001
   Result Code: TRUE
   CED: 0
   NewTransaction flag: FALSE
   ECCVar:13[2]: "14"
   ECCVar:13[3]: "+4917643405178"
   ECCVar:2: "0"
   ECCVar:9: "N|000|01|00|00|000610|GS,Server,V"
   ECCVar:11: "0"

 

There's no ECCVar:13[1] there, which is fine because, today, that query hasn't returned anything. The real issue is that I'm trying to match on ECCVar:13[2] and ECCVar:13[3] in If nodes of the ICM script like this:

Call.user.microapp.FromExtVXML[2]=="14"

valid(Call.user.microapp.FromExtVXML[3])

or use the phone number in FromExtVXML[3] by simply putting the variable into a Label node, but none of these is working.

It may be worth mentioning that passing information to the VXML script happens by appending it to the URI UseVXMLParams being set to "N". But this one has no influence on the way how the VXML script passes data back to ICM, does it?

 

What am I missing?

 

Can somebody help me please!

Thanks

1 Accepted Solution

Accepted Solutions

Hi Chintan,

 

sorry for the late response which is, of course, due to a resource shortage...

 

Thanks for the explanation. I'll have a look at the mapping the FromExtVXML[] variables to Peripheral Variables and at the TCD later. Meanwhile, instead of experimenting with those variables, I've implemented a workaround using Caller Input only where I concatenate the values to be returned to the ICM script. In the ICM script, I split them accordingly and put them into Peripheral Variables using the after() and before() functions as described multiple times in this community.

BTW, Caller Input worked all the time, even when FromExtVXML[] wasn't working, and that's why I got the idea to use it for all of the data to be sent back to ICM.

 

Thanks again

Peter

View solution in original post

10 Replies 10

Chintan Gajjar
Level 8
Level 8

Whats is that you are expecting from the script?

i see no problem in using

Call.user.microapp.FromExtVXML[2] =="14"

or

valid(Call.user.microapp.FromExtVXML[3])

in if node.

Whats the issue you are facing exactly?

Hi Chintan,

 

sorry for not having been clear.

The issue is that the If statements simply don't match. I would expect success in both cases because (1) it's 14 that should be the content of FromExtVXML[2] in my opinion as shown in the VRU trace, and (2), since FromExtVXML[3] contains a string (that's, at least, what the VRU trace tells us), this one, too, should be true, shouldn't it?

 

Thanks

Peter

I am still not able to understand:

are you looking for something like this

1) one of both condition should match for IF node to succeed:

(Call.user.microapp.FromExtVXML[2]=="14")

|| valid(Call.user.microapp.FromExtVXML[3])

|| Call.user.microapp.FromExtVXML[3] !=""

 

2) both condition must match for if node to succeed:

(Call.user.microapp.FromExtVXML[2]=="14")

&& valid(Call.user.microapp.FromExtVXML[3])

&& Call.user.microapp.FromExtVXML[3] !=""

 

if not above, please explain what the output should look like on what conditions.

Hi Chintan,

 

it's simpler than that.

There are three nodes:

1. If node saying: If Call.user.microapp.FromExtVXML[2]=="14", do that, else do sthing else. But the node never matches even if I send 14 into this variable.

2. If node saying: If valid(Call.user.microapp.FromExtVXML[3]) (to my understanding: check if there is something in that variable), do that, else do sthing else. But the node never matches even if there must be a phone number in this variable since I'm putting it there (hopefully).

3. The same for the Label node where I try to place the phone number to be called using the variable Call.user.microapp.FromExtVXML[3] where the call is failing supposedly due to the variable being empty.

 

So, the values I'm trying to put in this variables simply aren't there. My question is: why?

 

To fill these variables, I'm using in a CVP Subdialog Return External VXML 2 and 3 in the VXML script. I've tried to fill them directly from the DB query results with Data.Element..., and using the intermediate step over local variables, but nothing seems to be working.

 

Thanks

Peter

I get it now, is this new setup or existing?

are the FromExtVXML variables newly created?

 

Try to assign them to Peripheral Variables like below after execution of external VXML script:

Call.PeripheralVariable1 = user.microapp.caller_input

Call.PeripheralVariable2 = user.microapp.FromExtVXML[0]

Call.PeripheralVariable3 = user.microapp.FromExtVXML[1]

Call.PeripheralVariable4 = user.microapp.FromExtVXML[2]

Call.PeripheralVariable5 = user.microapp.FromExtVXML[3]

 

and Run the query against TCD to see what the value you see there in Call Peripheral Variables.

 

 

 

Pardon me, what is TCD? Is it termination call detail? So, I have to query the DB on the AW for the call?

 

Thanks

Peter

You have to run a Query against TCD or RCD (Termination_Call_Detail or Route_Call_Detail table).

i would prefer RCD over TCD because of the Call Leg behavior TCD posses.

 

The query would be as simple as:

Select * from Route_Call_Detail where DialedNumberString = 'Your DNIS' and DateTime > '2017-11-05'

 

and the query can be run against one of the Logger Data Base <Instance>_SideA or <Instance>_sideB using Microsoft SQL management studio.

or database where you have DDS(detail data server mostly on AW/HDS) Installed <instance> using Microsoft SQL management studio.

 

 

Hi Chintan,

 

sorry for the late response which is, of course, due to a resource shortage...

 

Thanks for the explanation. I'll have a look at the mapping the FromExtVXML[] variables to Peripheral Variables and at the TCD later. Meanwhile, instead of experimenting with those variables, I've implemented a workaround using Caller Input only where I concatenate the values to be returned to the ICM script. In the ICM script, I split them accordingly and put them into Peripheral Variables using the after() and before() functions as described multiple times in this community.

BTW, Caller Input worked all the time, even when FromExtVXML[] wasn't working, and that's why I got the idea to use it for all of the data to be sent back to ICM.

 

Thanks again

Peter

glad that you figured out the workaround by using caller_input, but user.microapp.FromExtVXML array should also work as by design and are important because you can only pass till certain length in caller_input and as need grows you will need these variables.

 

 

Keep in mind that Cisco appears to have recently changed the length of data that you can have in caller_input. It used to be that you could specify that length to say 60 or 100, but now it is limited to 40, unlike the other FromExtVXML fields. Not sure how much data you're trying to put in there, but if it is long you may run into issues. Here's the bug:

https://bst.cloudapps.cisco.com/bugsearch/bug/CSCvf89491