cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
16034
Views
21
Helpful
18
Replies

ICM - CVP Media Server

Aztec_
Level 1
Level 1

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?

1 Accepted Solution

Accepted Solutions

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

View solution in original post

18 Replies 18

Gerry O'Rourke
Spotlight
Spotlight

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

What if I want to use microapp i.e. PM and also VXML server for i.e. DB lookup in the same ICM script? This is pretty common scenario. Should I change user.microapp.media_server and user.microapp.app_media_lib variables before every call of Run Ext. Script to correct values? Is this best practice or how do you recommend to do it?

Thanks

Since CVP 9 or 10.0, before RunExtScript (GS,Server,V) you can set

user.microapp.media_server to "" for the VB to use the VXMLServer that's

co-resident with the Call Server... AND in this case, you may omit

assigning app_media_lib to ".." and omit setting UseVxmlParams to "N"

So instead of these 3 set variable nodes (user.microapp.media_server,

user.microapp.app_media_lib, user.microapp.UseVxmlParams) you only need

1 (user.microapp.media_server set to "")

When caller returns from (GS,Server,V) if you need to execute PM

microapp, then  assign user.microapp.media_server to whatever is on the

VB that points to your media server.

If after executing a PM microapp, you need to go back to VXMLServer

(GS,Server,V) then  set user.microapp.media_server to ""

Thanks for answer.

So in other words, I need to switch back and forth values of these variables when I am switching between VXML_server and other microapps within one ICM script. And it is bit simpler if I have VXML Server co-resident with Call Server, because in that case I only need to change value of assign user.microapp.media_server variable, right?

Martin,

I always keep my Micro App Media Files in the SYS folder.

And use the Micro App PM,-10,S (Play the audio file name in PV10).

Using this approach - you never have to worry about resetting the "app" folder parameter to "" from ".."

So set to '".." once for your Call Studio App and never have to worry about it again.

Gerry

Yes but you still need to keep changing  media_server variable to have there either "http://IP" or "http://IP:7000/CVP" or "". But ok, it is how it is. I just wanted to know if there is other approach or best practice when you need to use different types of CVP apps/scripts in one ICM scripts.

Well, there's actually a way to not have to set the media_server variable in your ICM scripts.
That is - for Microapps (like PM,M,etc) if the user.microapp.media_server variable is empty they will 'hostname' (not the IP) you've configured through OAMP as the DefaultMediaServer.

So in OAMP, create a Media Server with hostname: myMediaServer (or whatever is cofigured on your vb) with any ip  address (like 127.0.0.1 - the IP address is never used). Save the config. And in OAMP select it as the "Default Media Server" and save and deploy the config.

Now when you execute your ICM scripts, just ensure you set user.microapp.media_server to "" once at the beginning.

And you do NOT need to configure app_media_lib to ".." or useVxmlParams to "N".


When you execute (GS,Server,V)  CVP will use the co-resident VXMLServer.
When you execute microapps like  (PM,welcome)  CVP will insert  "myMediaServer" as the server name (http://myMediaServer/en-us/app/welcome.wav)

Now just ensure you configure VB with "ip host myMediaServer x.x.x.x"  (with x.x.x.x being the IP-address) and "ip host myMediaServer-backup x.x.x.x"

So, you'll no longer need to be switching the media_server or app_media_lib variables again!

This sounds good, thanks for useful info.

Martin,

Beware. This is "good" only if you have a content switch to route media traffic through.

And this is what you configure as your mediaserver address.

So http://mediaserver.mydoain.local load balances across your two CVP Call Server which host the media files.

If you set the CVP mediaserver to be the A side CVP CallServer, and this server goes down, you are in trouble.

I have been trying to get this design issue fixed for many years at this point.

I set the mediaserver address to be the Routing Client Name.

This is documented here:

https://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cust_contact/contact_center/customer_voice_portal/srnd/10_5/CCVP_BK_…

You need to update the Routing Client name on the CVP PG and CUCM PG if using PCCE.

As it sets it to an invalid DNS name with understores.

I set to Routing Client Names to: CVP1A, CVP1B and CUCM.

And even this has a problem when CUCM is the routing client - as you have to set A or B side as the CVP server.

But that usually for internal calls.

On your VVB or IOS voice browser you then set a hostname for the Routing Client Names to map to your CVP Server address.

e.g.

ip host cvp1a 123.123.123.101

ip host cvp1a-backup 123.123.123.102

ip host cvp1b 1213.123.123.102

ip host cvp1b-back 123.123.123.101

ip host cucm 123.123.123.101

ip host cucm-backup 123.123.123.102

on VVB you woudl do the same - but use this command:

show vvb host-to-ip

utils vvb add host-to-ip cvp1a 123.123.123.101

Gerry

Wow it's been awhile since i post this, already forget what happened. But thanks for answering

Question, how do I set Audio URI path in CVP Studio if I want to make it redundant. Today, I am using IIS and if I use http://x.x.x.x as my default audio path it works with .

x.x.x.x being the IP address of one of my CVP servers. But I would like to make this dynamic that way I can process call with each CVP in the event one of them is down without having to worry what IP Address I am using.

Aztec_
Level 1
Level 1

gorourke janinegraves

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