The powerful tool for creating voice applications for 3CX Phone System, the 3CX Voice Application Designer (VAD) allows you to record the audio of a call and store it as a file to disk. Sometimes, however, the default 3CX web server configuration can cause the recording of the file to disk to fail. This article explains why this happens and how to fix it.
The Application Generated by the VAD
When the 3CX Voice Application Designer compiles an application, it transforms the designed application diagrams into VoiceXML scripts. These scripts are web pages that run on the 3CX web server, and as the call progresses it transitions between pages. Each component of the diagram can be transformed into one or two web pages.
The Record Component
In order to record the audio of a call from an application created with the 3CX Voice Application Designer we need to use a Record component. When you configure this component to save the recording to disk, the VAD generates two web pages for this component. The first page is responsible for telling the 3CX IVR to record the audio in memory. Then 3CX IVR sends an HTTP POST request to the second page generated by sending the recorded audio file as data within that request.
The 3CX Web Server
Whether you use IIS or Abyss as your web server, the default configuration limits the size of the information that can be sent in an HTTP request. This limitation is intended to prevent denial of service attacks that are caused, for example, by users sending large files to the server to keep it busy and being unable to respond to real requests.
The default value of this limit is 4MB, and this becomes an issue when trying to record audio with a duration of about 5 minutes or longer.
How To Fix It
The solution is simple. We just need to modify a configuration file to increase this limit to a point where it no longer interferes. To do this:
1. Open the following configuration file with a text editor:
2. Add the maxRequestLength parameter assigning the desired value. For example, to set it to 16Mb and allow recordings of up to approximately 20 minutes:
NOTE: The configuration file will have many other values, here we only show the parameter to be added and the elements that contain (configuration / system.web) in order to provide a reference of where to locate it.