11-03-2017 10:41 PM - edited 03-14-2019 05:41 PM
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
Solved! Go to Solution.
11-11-2017 02:20 AM
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
11-04-2017 08:43 AM
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?
11-04-2017 11:16 AM
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
11-05-2017 01:38 AM
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.
11-06-2017 12:44 AM
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
11-06-2017 01:07 AM
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.
11-06-2017 06:52 AM
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
11-06-2017 09:28 AM
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.
11-11-2017 02:20 AM
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
11-12-2017 12:48 AM
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.
11-13-2017 05:29 AM
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:
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide