When developers access the URL for the download of MRCP IVR Proxy, we ask you to specify the "external" IP address of the proxy. Most of the issues our customers have with the MRCP setup are due to an incorrect value of that IP. Below we explain the various scenarios and what that IP should be.
BTW, if you need to change this IP after you download the proxy, you do not need to download the proxy again. You can just edit the value of
in file unimrcpserver.xml.
See also this helpdesk article.
- MRCP Server - is launched by the docker-compose command after un-taring the downloaded MRCP IVR Proxy configuration bundle.
- MRCP Client - the MRCP client is usually a VXML platform (E.g. AVAYA Experience Portal, Genesys Voice Platform or Cisco Voice Portal).
- IVR Proxy - second component that is launched by the docker-compose - facilitates communication between the MRCP Server and the Voicegain ASR in the Cloud.
How not to obtain the "external" IP?
The "external" IP is NOT the IP address for the outbound traffic to access the Internet. We are NOT interested in the IP that will be used to communicate with the Voicegain Cloud.
So you cannot assume that you will find the ext-ip just by running the query in image below. In some configurations it might work, but generally you are actually looking for a different ip.
Rather, we need the (external) IP address of the MRCP Server from the point of view of your MRCP Client. Net-net, we need to know the IP address that your MRCP client uses to reach the MRCP Server.
Generally, there are 3 typical scenarios for how the IVR Proxy + MRCP Server is deployed from a networking perspective with respect to your MRCP Client.
Everything on one machine
This is a scenario that we do not recommend. We had issues with some customers where we could not get this scenario to run correctly even after extensive troubleshooting. Because we do not recommend this, we also do not provide a guide as to what the external IP should be.
MRCP Client and MRCP Server on different machines, same network
This is a simple case and it is easy to set this up correctly. The external IP is the IP of the machine on which the Docker Compose is installed. Note that the traffic here does not leave the internal network (does not exit to Internet).
MRCP Client and MRCP Server on different networks
This starts getting complicated because a router gets involved and we need to look at how the router configuration maps an external address (and ports) to an internal address (and ports) . Because the MRCP Server needs to handle a range of ports (for UDP) the least complicated setup would be with a dedicated external IP and a 1:1 NAT, but the required mapping can also be achieved with Port Forwarding.
This is also where the SIP with UDP transport may be difficult to get working ok (if 1:1 NAT is not being used), that is why we recommend to use SIP with TCP Transport.
Note. in the case where both routers are on edge of Internet, the correct ip might be the one obtained by running "what is my ip" type of http query, but that would be the case only in some specific router setups (e.g. router with just a single internet-facing inbound/outboud IP or a router with 1:1 NAT dedicated to the machine hosting the MRCP Server).
In other cases, however, the IP that is generically used to exit to internet may be different from the inbound IP mapped to the machine hosting the MRCP server.
Complex network setups (multiple routers on WAN or VPN)
Apart from the above scenarios there are many other configurations possible, e.g.:
- several internal networks behind a single router with static routing between the subnets
- several internal networks behind a multiple routers - may have static routing and NAT
- routers connected via VPN tunnel
The key question to ask is: if the MRCP Server is to be reached from the MRCP Client, what IP would the Client need to use.