Voicent Gateway SDK Reference Table of Content    

How to use RECORD with Voicent Gateway

Voicent Gateway follows the VoiceXML standard implementation for RECORD tag. The example here illustrates the standard vxml file with <RECORD> tag, and a post processing JSP file for handling the recorded file.

The vxml file with <RECORD>

<?xml version="1.0"?>
<vxml version="1.0">

<form id="userecord">
<record name="msg">
  <prompt>
    <audio src="audio/please_record_msg.wav"/>
  </prompt>
  <filled>
    <var name="forwardpage" expr="'/next.jsp'"/>
    <submit next="processwave.jsp"
            method="post"
            namelist="forwardpage msg"/>
  </filled>
</record>

</form>
</vxml>

Once the recording is done, the current VoiceXML interpreter is forwarded to a post processing page "processwave.jsp".

Post processing JSP file

The following code utilizes HTTPClient package.

...
// process the form submission from the vxml page
ByteArrayOutputStream bout = new ByteArrayOutputStream();
InputStream ins = request.getInputStream();
byte[] chunk = new byte [256];
int len;
while ((len = ins.read(chunk)) != -1)
bout.write(chunk, 0, len);

byte[] body = bout.toByteArray();
String dir = application.getRealPath("./audio");
NVPair[] opts = Codecs.mpFormDataDecode(bout.toByteArray(),
                         request.getContentType(),
                         dir);

String forwardpage = null;
String filename = null;
for (int i = 0; i < opts.length; i++) {
  if (opts[i].getName().equals("forwardpage"))
    forwardpage = opts[i].getValue();
  else
    filename = opts[i].getValue();
}
 
// recordFile is the temporary file used by the gateway
File recordFile = new File(dir, filename);

// save to the real recording file
String saveFilename = "myrecording.wav";

// copy file
FileInputStream inf = new FileInputStream(recordFile);
FileOutputStream outf = new FileOutputStream(saveFilename);
byte[] buf = new byte[256];
int ll;
while ((ll = inf.read(buf)) != -1)
outf.write(buf, 0, ll);

inf.close();
outf.close();

if (forwardpage != null) {
  response.sendRedirect(forwardpage);
  return;
}
...
 
Developer Network Table of Content