cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1365
Views
0
Helpful
9
Replies

VXML Server Redundancy

Amine-K
Level 1
Level 1

Hi,

We have a Unified Contact Center Enterprise with CVP Comprehensive Model. As we are using 2 VXML Servers for failover, we need to configure the ICM script that sends the caller to VXML Service to consider the 2 VXML servers and to test the first server, if not reachable, send to the second server.

Does anyone knows how to configure this in the ICM script.

1 Accepted Solution

Accepted Solutions

geoff
Level 10
Level 10

There are three ways to do this.

The most transparent and seamless is to use a CSS. Configure the ECC variable user.microapp.media_server to point to the Virtual IP provided by the CSS. The CSS will use a cookie to fix the session to the first VXML server that responds, to ensure all subsequent calls on that session will go to the same VXML server - a necessary requirement. A CSS will not have a delay should the first VXML server be down as in the next 2 methods.

The second way is to have two Run External Scripts (GS,Server,V). Set the ECC variable above to the IP address of VXML1 and enter the Run External Script node. If this fails (and flow comes out the X port), check the ECC variable user.microapp.error_code looking for "Error Code 40 -- System Unavailable". If this happens, reset the user.microapp.media_server variable to the IP address of VXML2 and hit the second Run External Script.

The third method is to use the automatic retry mechanism of the Call Server. Set the ECC variable user.microapp.media_server to (for example) "mediaserver" and define "mediaserver" and "mediaserver-backup" in the IP host table of the gateway to the IP addresses of VXML1 and VXML2. The Call Server will try to run the GS,Server,V on the IP address corresponding to VXML1. If this fails it will append "-backup" and try to locate VXML2 through the gateway using a lookup in the IP host table.

I tested the second method and found that the third method did exactly what I needed and saw no need for it, although this method was a documented technique in CVP 4.x guides. I just looked in the CVP 7.0 guide and could not find this scripting though.

Only the CSS will be timely.

The other methods have a delay while the request to execute VXML from the External VXML server has to time out before going to the second.

You just need to play with this and see if (in the absence of a CSS) the failure modes are OK for you. They were for me.

I welcome more discussion on this point.

Regards,

Geoff

View solution in original post

9 Replies 9

geoff
Level 10
Level 10

There are three ways to do this.

The most transparent and seamless is to use a CSS. Configure the ECC variable user.microapp.media_server to point to the Virtual IP provided by the CSS. The CSS will use a cookie to fix the session to the first VXML server that responds, to ensure all subsequent calls on that session will go to the same VXML server - a necessary requirement. A CSS will not have a delay should the first VXML server be down as in the next 2 methods.

The second way is to have two Run External Scripts (GS,Server,V). Set the ECC variable above to the IP address of VXML1 and enter the Run External Script node. If this fails (and flow comes out the X port), check the ECC variable user.microapp.error_code looking for "Error Code 40 -- System Unavailable". If this happens, reset the user.microapp.media_server variable to the IP address of VXML2 and hit the second Run External Script.

The third method is to use the automatic retry mechanism of the Call Server. Set the ECC variable user.microapp.media_server to (for example) "mediaserver" and define "mediaserver" and "mediaserver-backup" in the IP host table of the gateway to the IP addresses of VXML1 and VXML2. The Call Server will try to run the GS,Server,V on the IP address corresponding to VXML1. If this fails it will append "-backup" and try to locate VXML2 through the gateway using a lookup in the IP host table.

I tested the second method and found that the third method did exactly what I needed and saw no need for it, although this method was a documented technique in CVP 4.x guides. I just looked in the CVP 7.0 guide and could not find this scripting though.

Only the CSS will be timely.

The other methods have a delay while the request to execute VXML from the External VXML server has to time out before going to the second.

You just need to play with this and see if (in the absence of a CSS) the failure modes are OK for you. They were for me.

I welcome more discussion on this point.

Regards,

Geoff

Thanks Geoff,

I'm going to test this.

Geoff,

I am using option 3, and it seems to be working alright for myself. The delay is not enough for people to really care in my case. I really want to get my hands on Option 1 though. Also note that if you just set user.microapp.media_server to the variable mediaserver, it assumes that media server is running on Port 80. mediaserver: to change ports.

Chad

I also tested the 3rd solution and it's working. The only thing is the delay of a few seconds. There is no way to decrease it keeping this scenario?

Chad is correct.

Sorry, I am so used to this I forgot to say so. Yes, to find the VXML server you need the complete expression:

http://mediaserver:7000/CVP

(7000 in CVP 4.x and greater; 8000 in CVP 3.x)

The gateway will work on "mediaserver". Any name will be fine as long as you line them up.

Regards,

Geoff

Geoff,

Just consider in hosted scenario i want to dedicate two set of servers for one customer and another two set of servers for another customer.

Just advise how to proceed with this requirement.

we are using CSS

cust1 vip address - 172.25.11.113 (vxml1, vxml2)

cust2 vip address - 172.25.11.114 (vxml3,vxml4)

in gateways we are host entries

ip host cvp-audium 172.25.11.113

ip host cvp-audium-backup 172.25.11.113

what name i can use another set of the vxml server.

with Regards,

Manivannan

I guess it depends on your gateway arrangement.

Gateways belonging to Cust1 would have entries for the cust1 vip; gateways belonging to Cust2 would have entries for the cust2 vip.

Then your ICM scripts calling Audium can all be the same and refer to cvp-audium.

If you are sharing gateways across customers then you need to set the user.microapp.app_server to cust1 VIP address in their ICM script, and set it to the cust2 VIP in their ICM script.

You would not have ip host entries.

Regards,

Geoff

Thanks, could you explain what is the logic behind the ip host entry? when we use two set of vxml server in the sharing voice gateway. because i have tried this option using ip host entry but i didnt worked..

i guess always cvp-audium entry is working fine. that means somewhere in the cvp server they might hard coded this name?

culd you explain.

with Regards,

Manivannan

>that means somewhere in the cvp server they might hard coded this name?

No. You made the name up. I use "mediaserver" because that's what was used in the old ISN documents on external VXML servers. And "media" for the Web server that holds the WAV files.

You could have called it "bubblegum" and had an entry in your IP host table for "bubblegum". If the App Server cannot connect, it will append "-backup" and look for "bubblegum-backup" in the IP hosts table and try that one.

You could have the name "cvp-audium1" for customer 1 and resolve it through the IP host table. And something similar for cust 2.

If you use the IP address in the ECC variable you will not get any retry strategy.

The thing is, when you have a CSS as you have, you don't want the app server doing a retry to the backup.

Regards,

Geoff