Hi guys, i continue my friend's UCCE project, and i'm stuck at CVP audio issue. If i make a call to ICM with toVXML configured (SendtoCallStudio.jpg), audio from those call studio script cached to VXML Gateway successfully. But when i ring ICM script (ICM Script.jpg), i received "Media fetch error" from CVP logs and 404 from VXML Gateway.
Verification Done:
media_server in ICM Script configured with "http:/<cvp server IP>:7000/CVP"
locale = en-us; media_lib pointed to app/test
IIS server pointed to default location which is %ServerDisk%\inetpub\wwwroot
Tried access media url (http:/x.x.x.x:7000/CVP/en-us/test/Welcome.wav) from browser received tomcat 404 file not found.
Restart CVP Server, VXML Gateway, PG, still got "media fetch error" (IIS & CVP error logs attached)
Then i tried to remove port 7000 along with "CVP" in media_server (http:/x.x.x.x), and after that everythings working, Welcome.wav cached to VXML gateway.
What actually happen here?
What did i miss and how to configure http:/x.x.x.x:7000/CVP pointed to inetpub\wwwroot?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Use IIS (port 80) for Wav files.
Don't use Tomcat (VXML Server) for hosting WAV files.
So I believe you have this correct, you just need to make sure you reference the wav files correctly from within the CVP Studio App.
Port 7000 is Tomcat and where the VXML is dynamicaly created.
(Port 8000 is the CVP CallServer),
both CVP VXML Server (7000) and CallServers (8000) create VXML which the VXML Gateway (Router) download and interpret.
But any WAV files configured within your VXML app (CVP Studio or micro app) should use reference the IIS Server.
http://mediaserver/en-us/sys/holdmusic.wav etc.
And NOT
http://mediaserver:7000/en-us/sys/holdmusic.wav etc.
Gerry
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cisco uses the same variable to mean different things based upon whether
you're using GS,Server,V (VXML Server) or PM (icm microapps).
1. For Microapps you set these variables:
user.microapp.media_server = "media_server" (or whatever you have
configured on your gateway with IP host media_server x.x.x.x)
user.microapp.locale = "en-us" (or whatever language directory of
inetpub\wwwroot you want)
user.microapp.app_media_lib = "app" (or wherever your application
prompts are under inetpub\wwwroot\en-us)
Then using PM,welcome,A will come from "http://media_server/en-us/app
2. For VXML Server you set these variables:
user.microapp.media_server = "http://IP:7000/CVP"
user.microapp.app_media_lib = ".."
user.microapp.useVxmlParams = "N"
user.microapp.toExtVXML[0] = "application=appname"
Then use GS,Server,V microapp to go to vxml server
Janine
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Okay i got it, so for Micro app, we don't need to add port and CVP folder. Sorry if i ask some basic question, but i still confuse, because i did some comparison with other production UCCE server, all microapp ICM script have ":7000/CVP" in their media_server variable, without VXML app within it and still works. How is it actually working?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tommy,
Correct.
For Micro Apps, the VXML is retrieved by the Gateway from the Call Server.
How does the VXML Gateway know what the Server IP addres is?
I uses the IP address that it received the SIP call from (i.e. CVP CallServer).
So it does not need to know the hostname / IP address of the media server for the micro app VXML, it already knows and always uses the "Microapp" Tomcat server (port 8000) to retrieve the VXML, which might contain simple VXML such as play your your hold music.
But the Micro App within the VXML references the location of where the wav files are located.
So this is what you configure as your mediaserver variable, and this is port 80.
As your Wav files shoudl be stored on IIS.
When you are using CVP Studio, you are not using a Microapp, and the mediaserver you have to configure is the actuall tomcat server where your VXML runs. e.g. "http://vxmlserver:7000/CVP"
The Run Extenal Script ICM node, is actually a microapp, which reroutes the HTTP to VXML Server, GS,Server,V"
And the user.microapp.ToExtVXML[] variable adds paramaters to the URL, so VXML server knows what app to play (and then it uses cookies from then on) e.g. application name "application=HelloWorld"
So the actually URL created within the micro app to point to the VXML server is:
http://<vxmlserver>:7000/CVP/Server?application=HelloWorld
Then your VXML is downloaded to the Gateway.
The CVP Studio app needs to reference wav files that are located on the IIS server and not the Tomcat server (whcih is technically possible to do, but avoid it), always use IIS for wav files.
Also Make sure to set expiary time on your IIS config and co host with your Call/VXML server.
Default Web Site -> HTTP Resonse Headers -> Expire Web Content (After 10 mins).
VXML Gateway will check for any modifed files after 10 mins (but won't download wav file unless it is changed, it caches it).
In summary.
When using Micro apps confire yoru ICM script with the actual location of wav files (IIS server).
When using a CVP Studio Application configrue the media server with your "VXML server address" which shoudl be "http://vxmlserver:7000/CVP"
note: ICM also adds on "en-us/app"
so the wav files are retrieved from "http://mediaserver/en-us/app/" or "http://mediaserver/en-us/sys" depending if yoru micro app as "S" or "A".
For VXML CVP Studio Apps, you have to configure your app media Library folder ".."
Which effectivly deletes the previous folder (en-us), so what ICM actually configured as your VXML server is:
http://<vxmlserver>:7000/CVP/en-us./../Server?application=HelloWorld
which equates to:
http://<vxmlserver>:7000/CVP/Server?application=HelloWorld
And yes I know its confusing!
But hope this helps.
Gerry
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ICM microapps use this algorithm (with the contents of the user.microapp
variables inserted) to play the audio file when using
PM,filename,A or PM, filename:
http://user.microapp.media_server/user.microapp.locale/user.microapp.app_media_lib/filename.wav
*
*
*So if your audio files are served by IIS (C:\inetput\wwwroot\en-us\app)
then you'd set:*
user.microapp.media_server = "media_server" (or whatever is on the gateway)
user.microapp.locale="en-us" (en-us is the default, so you can omit
this from the icm script)
user.microapp.app_media_lib = "app" (app is the default so you can omit
this from the icm script, unless you'd set it to something else
previously, like "..")
*
*
*However, if your audio files are served by VXMLServer's Tomcat (not
really recommended)
(C:\Cisco\CVP\VXMLServer\Tomcat\webapps\CVP\audio\en-us\app) then you'd
set:*
user.microapp.media_server = "http://vxmlserver_ip:7000/CVP/audio" (or
whatever is on the gateway)
user.microapp.locale="en-us" (en-us is the default, so you can omit
this from the icm script)
user.microapp.app_media_lib = "app" (app is the default so you can omit
this from the icm script, unless you'd set it to something else
previously, like "..")
*
*
*
*
*
*
*
*
*
*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thanks for pointing me to the right direction guys. I hope i could mark both answer as correct answer.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Comments
0 comments
Please sign in to leave a comment.