To ensure that each telephone call is returned to the system when your voice application has finished with it, and the line is freed, use the Call.returnCall() method on the relevant Call object.
The following example makes use of the try–catch–finally structure to handle the calls. Successful calls pass through the try block to the finally block. Calls that receive a WVRHungUpException, indicating that the caller has hungup, are passed straight to the finally block. Calls that encounter some other kind of exception print out some debugging information and are also passed to the finally block. In the finally block the call is returned by invoking the Call.returnCall() method. This frees the resources used by the call.
public class MyVoiceApp extends WVRApplication {
public void voiceMain() throws WVRException {
// Define a reference variable for a Call object, so we avoid
// creating multiple instances later on in the loop
Call call = null;
// Create the application properties object
ApplicationProperties appProperties = new ApplicationProperties();
appProperties.setApplicationName("app1");
applicationProperties.setLocale(Locale.US);
// Create the WVR object
WVR wvr = new WVR(this, appProperties);
// Create a boolean to control the call-handling loop
private boolean keepTakingCalls = true;
// Create the loop
while (keepTakingCalls) {
try{
// Wait for a call
call = wvr.waitForCall();
// Handle successful calls
.
.
.
}
catch (WVRHungUpException e) {
// Caller has hung up - ignore exception, application will go to
// finally block
}
catch (WVRException e) {
// Print debugging information
e.printStackTrace();
}
finally {
// Return the call
call.returnCall();
}
}
}
}