cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
2833
Views
25
Helpful
12
Replies

Redundant media server cvp

iptuser55
Level 6
Level 6

I have cvp and ucce 10.5 

In script editor I assign the ip address of the media server however I have two media servers.  Is there a redundant microapp in ICM for this or do I need to implement a load balancer such as F5 as an example 

Thanks 

2 Accepted Solutions

Accepted Solutions

I think i already answered that in above thread, but let me re phrase again.

in ICM you set media-server as "http://media", at the time of Run Ext Script invocation this information will be sent to CVP along with other information.

CVP based on data received from ICM (mediafile name, locale, media server, VRU script instruction etc), will create a VXML document and send it to VXML gateway for execution.

This VXML document will have information about any media file VXML gateway has to play, and from where it has to play.

so based on our setting, the CVP will instruct VXML gateway to play media from "http://media" on the first try. now "media" is mapped as ip host entry on VXML gateway for primary media server so VXML gateway tries to fetch it from there.(VXML gateway and CVP are smart enough to remove any prefix like "http://" and find out actual host name which is "media").

Now lets say the ip host entry for "media" is down (in your words http://media is down).

in this case CVP will suffix -backup in the media server hostname and ask VXML gateway to fetch media file again from newly formed host which is nothing but "media-backup",

VXML gateway also has ip host entry for "media-backup" which is secondary cvp media server ip address.

So its not ICM, but its CVP feature for achieving media redundancy, and if both media and media-backup are not reachable, the call will just fail from Run Ext Script node.

View solution in original post

Normal, indeed. But now we are talking about something totally different.

Now you are trying to run a Studio application so you need to tell the gateway how it can download the root document of your application using HTTP. Better not to confuse this with getting media.

Several ECC variables and a special NVRU script are involved. The goal is to produce a URL that the gateway can use. Something like

http://<IP ADDRESS>:7000/CVP/Server?application=HelloWorld

The IP address can be determined from a lookup in the ip host table. You can use the keyword "media" but you may be better served using something else for clarity - like "vxmlserver" or "vxml".

The special Get Speech NVRU script "GS,Server,V" gives the word "Server" for the URL above. The V will give you the question mark (sort of).

ToExtVXML[0] gives the string "application=HelloWorld" for the URL above. There is a special ECC variable you must set to "N" to make it use the array. I am sure you know that I am referring to user.microapp.UseVXMLParams.

user.microapp.media_server and the IP host lookup give the gateway the http://<IP ADDRESS>:7000/CVP part of the URL.

But there is one more thing.

CVP will always append user.microapp.locale. The default value, even if you don't set it, is "en-us". That would produce the wrong URL for the gateway, so you have to tell it to climb up a level before appending "Server?application=HelloWorld" and therefore you have to set user.microapp.locale = ".."

Because the Studio root document is being fetched by a microapp (the Get Speech microapp) then the "-backup" mechanism is in play. If the first VXML server is down and it cannot get the root document, the Call Server will retry with "-backup" appended. 

Regards,
Geoff

View solution in original post

12 Replies 12

Chintan Gajjar
Level 8
Level 8

if you read CVP Design guide, then you will have idea about how CVP media server redundancy works for microapp(not to be confused with vxml application).

take below as an example,

Set media server = "http://media/"

in IOS VXML gateway define below entries:

ip host media <ip of primary media server>

ip host media-backup <ip of secondary media server>

so now, when you execute microapp with media server as "http://media", CVP will instruct VXML gateway  to fetch the media from media server with host name "media". (in our case its primary media server with ip host entry)

if primary media server is down, CVP will suffix -backup to whatever is defined in mediaserver, in our case its "media" so after suffix the hostname will become "media-backup", now CVP will ask VXML gateway to fetch media from "media-backup".(in our case its secondary media server with ip host entry)

so in that case you are redundant with respect to media server.

Thanks for the reply sorry perhaps I should have been clearer  what happens if the 'http://media ' target is down?  How does the ICM script deal with that? 

I think i already answered that in above thread, but let me re phrase again.

in ICM you set media-server as "http://media", at the time of Run Ext Script invocation this information will be sent to CVP along with other information.

CVP based on data received from ICM (mediafile name, locale, media server, VRU script instruction etc), will create a VXML document and send it to VXML gateway for execution.

This VXML document will have information about any media file VXML gateway has to play, and from where it has to play.

so based on our setting, the CVP will instruct VXML gateway to play media from "http://media" on the first try. now "media" is mapped as ip host entry on VXML gateway for primary media server so VXML gateway tries to fetch it from there.(VXML gateway and CVP are smart enough to remove any prefix like "http://" and find out actual host name which is "media").

Now lets say the ip host entry for "media" is down (in your words http://media is down).

in this case CVP will suffix -backup in the media server hostname and ask VXML gateway to fetch media file again from newly formed host which is nothing but "media-backup",

VXML gateway also has ip host entry for "media-backup" which is secondary cvp media server ip address.

So its not ICM, but its CVP feature for achieving media redundancy, and if both media and media-backup are not reachable, the call will just fail from Run Ext Script node.

Great explanation as always. Thank you. 

Please rate all useful posts

Hi Chintan

 

Good day, how would we set ip host 'media' in case of Virtual Voice Browser ?

 

Thanks

Mahesh 

It is in the VVB operations guide, utils vvb add host-to-ip mediaserver xxx.xxx.xxx.xxx

Hi Bill

 

Thank you, it works with keyword "media"or any keyword that matches with the one mentioned in ICM script as well.

 

Thanks

Mahesh

Chintan,

I observer that I had to add VXML server port and CVP folder to the "http://media/ for this to work

"http://media:7000/CVP"

I guess this is normal?

Please rate all useful posts

Normal, indeed. But now we are talking about something totally different.

Now you are trying to run a Studio application so you need to tell the gateway how it can download the root document of your application using HTTP. Better not to confuse this with getting media.

Several ECC variables and a special NVRU script are involved. The goal is to produce a URL that the gateway can use. Something like

http://<IP ADDRESS>:7000/CVP/Server?application=HelloWorld

The IP address can be determined from a lookup in the ip host table. You can use the keyword "media" but you may be better served using something else for clarity - like "vxmlserver" or "vxml".

The special Get Speech NVRU script "GS,Server,V" gives the word "Server" for the URL above. The V will give you the question mark (sort of).

ToExtVXML[0] gives the string "application=HelloWorld" for the URL above. There is a special ECC variable you must set to "N" to make it use the array. I am sure you know that I am referring to user.microapp.UseVXMLParams.

user.microapp.media_server and the IP host lookup give the gateway the http://<IP ADDRESS>:7000/CVP part of the URL.

But there is one more thing.

CVP will always append user.microapp.locale. The default value, even if you don't set it, is "en-us". That would produce the wrong URL for the gateway, so you have to tell it to climb up a level before appending "Server?application=HelloWorld" and therefore you have to set user.microapp.locale = ".."

Because the Studio root document is being fetched by a microapp (the Get Speech microapp) then the "-backup" mechanism is in play. If the first VXML server is down and it cannot get the root document, the Call Server will retry with "-backup" appended. 

Regards,
Geoff

Geoff,

Great explanation!. It took me almost 24hrs and almost a never ending head in the sand moment! listening to that horrible "we are sorry prompt!" to figure out that the media-server ECC variable when using Call studio application doesnt refer to the media server. I totally agree that using something like "vxmlserver" is much better.

One other qustion I have is this. How do you configure redundancy for your actual media server. Since we have to set the default audio settings on the project with the url of the media server. How have you deployed this in the past?

Please rate all useful posts

You have spotted a weakness - Studio apps don't have the automatic retry that the cute little microapps have.

Really, the only way to solve that problem - and the method that I have used at my customers  who have extensive (and quite complex) Studio apps - is to employ a load balancer like a NetScaler or F5. There are possible strategies with HotEvents to catch the resource error, but it's very hard to push the call back to where it was in the script, as they are not meant to work that way.

I only know how to work with the NetScaler - and that was a learning curve! Fun though - it's a neat device.

Regards,
Geoff

Ritesh Desai
Spotlight
Spotlight

Good explanation @Chintan 

regards,

Ritesh Desai

*** Please rate helpful post. Please mark as answer if it solves your problem/query.
regards, Ritesh Desai
Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: