Is it possible to call VXML mirco-app directly from ICM admin script rather than routing script. I have a requirement to call a VXML application to update some custom tables on specific dates / time e.g office close / open hours. So i want to automate this process rather updating DB manually all the time. the VXML application is going to update the DB. However, i want to trigger this app automatically.
So initial idea is to keep checking the date / Time and once the desired time tigers call the VXML app. ICM admin script has capability to run autonomously and can set values for PVs but don't know if we can call VXML.
any other thoughts and idea would be welcome.
It 'is' possible, here's what Paul Tindall recommended (but I haven't tired it)
Use the ICM App Gwy in the admin script to trigger a CVP app via HTTP.
You'd need to add an App Gateway host. For simple non-critical things you could use the Node.JS that was published on GitHub.
Node.JS is pretty straightforward to use, https://nodejs.org/en/ is the place to start.
Use 'npm' utility to load and manage node packages.
Use command: 'node' to run something.
Or, use node on its own to use interactive
You can find code to create the app gateway and node.js stuff on github at this link (I haven't tried it, but this info was supplied by a reliable source Paul Tindall at Cisco):
Yeah i have been looking for some document to get the idea how to use and configure app gateway to work with Node.JS. BTW, I know Paul very well :).
However, also wanna check some thing with you if i manage to call VXML app from ICM admin script then inside the app i should be able to perform all sort of supported stuff e.g. DB dip and update using JNDI or API. It should be totally independent of ICM as i won't pass any value, VXML suppose to do all the stuff.
Well you have 2 options there.
1. You could just trigger the updateApp.bat to execute for a Studio app written with AppStart java class (which runs whenever the app is loaded into memory - reboot, updateApp, etc). This is useful if all you want to do is trigger the Studio app to re-read a file or DB or execute a rest call and update Global Data variables.
2. If you are trying to get a Studio app to actually execute its call flow, then you'd have to make an HTTP call to http://IP:7000/CVP/Server?application=appname&var=value&var=value and then that app will execute, use a VXMLServer license, and could do a DB or WS call and return the data in the Return element.
I think using a Subdialog_Return instead of a CVP_Sudialog_Return might be easier, as CVP_Subdialog_Return requires two request/response steps to get the data returned and the VXMLServer license freed; Whereas the Subd_Return would probably just require one step.
So first option is not the requirement as i need to execute the call flow as well inside the VXML app.
Also let me be precise about my requirement and idea so i am sure i can get better ideas.
Requirement / Problem:
Currently we have Table where we manually set the data light savings time of different regions and for some specific countries. As this is very old setup and i want some automation in it and as first step i want to make this DB update automatic on specific dates with any human intervention.
Ideas in mind:
1. Make outbound call using IVR based campaign (UCCE Dialler) and set datetime of that campaign in admin script to run run on specific date. This outbound call will hit ICM routing script and call VXML app inside that routing script which will perform the DB update. But this require some external number to mapped with this script. Or i am not sure id ucce dialler supports dialling internal number which was indeed the case with legacy SCCP dialler.
2. Use admin script to run on daily bases once and call VXML application which will execute the complete call flow by doing DB update etc and return successful.
3. If ICM admin script can not call VXMl app (that is why i raised this question in the community), try to call VXML application by scheduling some Cron job and execute the VXML call flow. Currently i am using some of the cron jobs to monitor the VXML application statuses and number of call on each application.
So long story short, challenge is to call VXML application automatically on particular date / time and let it execute the call flow as well :).
I hope you did not get bore with this requirement
If you want to drive your update work with a call into CVP there's a couple of things here that can help you implement some of your ideas.
Outbound destination simulator providing an outbound destination on a gateway/CUBE that can handle the dialer's SIP REFER necessary to transfer the call to the handler (IVR or agent).
Makes periodic test calls into CVP so you can use that to trigger anything you wish.
Just a thought, if you want to go in a completely different direction but one that might be easier to implement and accomplish the same thing, is just add logic to call it based on activity in your routing script.
So if in a couple of your busier UCCE script, have an IF box to look at calls offered in say the past hour or whatever your rule is. If 0, then send the call to execute your VXML app and then continue on.
If offered>0, then continue on without executing your app.
This avoids the updating the database all the time like you were saying, doesn't add much overhead, no need for admin script, etc.
Again, just another way to approach it.