package tut;
import com.ibm.telephony.beans.media.*;
import com.ibm.telephony.wvr.*;
/**
* Subcomponent that allows the caller to order an item from a catalog
*/
class Catalog {
//Define the category for all the voice segments in this class. private static final String CATEGORY = "Tutorials";
// Define the menu items
private static final String ITEM1_YES = "Yes";
private static final String ITEM2_NO = "No";
// Create an array to store the menu items
private static final String[] MENU_ITEMS = { ITEM1_YES, ITEM2_NO };
// Define the keys used to make the menu selections, and store them in an array
private static final String[] MENU_KEYS = { "1", "2" };
// Create a number of Voice Segment objects
// Create the segment objects for the menu items, and store them in an array
private static final MediaType[] MENU_PROMPTS = {
new VoiceSegment(CATEGORY, "ForYesPress1"),
new VoiceSegment(CATEGORY, "ForNoPress2")
};
// Create the segment objects for taking the order private static final VoiceSegment VS_PRODUCT_NUMBER = new VoiceSegment(CATEGORY, "ProductNumber"); private static final VoiceSegment VS_QUANTITY = new VoiceSegment(CATEGORY, "Quantity"); private static final VoiceSegment VS_YOU_ORDERED = new VoiceSegment(CATEGORY, "YouOrdered"); private static final VoiceSegment VS_ITEMS = new VoiceSegment(CATEGORY, "Items"); // Create the segment object for the verifying the order menu private static final VoiceSegment VS_IS_THIS_OK = new VoiceSegment(CATEGORY, "IsThisOK"); // Create the segment object for the result private static final VoiceSegment VS_MAIL_ORDER = new VoiceSegment(CATEGORY, "MailOrder");
// Create AudioNumber objects to play the caller's order back to them private AudioNumber prodNumValue = new AudioNumber(); private AudioNumber quantityValue = new AudioNumber();
// Create a media sequence of the caller's order
private MediaType[] order = { VS_YOU_ORDERED, quantityValue, VS_ITEMS, prodNumValue };
// Create some attribute objects for getting the product number from the caller private PlayAttributes prodNumPlayAtts = new PlayAttributes(); private InputAttributes prodNumInputAtts = new InputAttributes(); private DTMFAttributes prodNumDTMFAtts = new DTMFAttributes(); private RecoAttributes prodNumRecoAtts = null; // Create some attribute objects for getting the quantity from the caller private PlayAttributes quantityPlayAtts = new PlayAttributes(); private InputAttributes quantityInputAtts = new InputAttributes(); private DTMFAttributes quantityDTMFAtts = new DTMFAttributes(); private RecoAttributes quantityRecoAtts = null; // Create some attribute objects for the verify order menu private PlayAttributes menuPlayAtts = new PlayAttributes(); private MenuAttributes menuAtts = new MenuAttributes(MENU_PROMPTS, MENU_ITEMS, MENU_KEYS, null); private DTMFAttributes menuDTMFAtts = new DTMFAttributes(); private RecoAttributes menuRecoAtts = null;
// Create a constructor method to set up various attributes
public Catalog() {
// Set the style of the product number AudioNumber object to digits
prodNumValue.setStyle("Digits");
// Set the attributes for getting the product number
prodNumInputAtts.setMessage(VS_PRODUCT_NUMBER);
prodNumInputAtts.setTimeout(10);
prodNumDTMFAtts.setMaximumKeys(4);
prodNumDTMFAtts.setDelimiterKeys("");
// Set the attributes for getting the quantity
quantityInputAtts.setMessage(VS_QUANTITY);
quantityInputAtts.setTimeout(10);
// Set the attributes for the verify order menu
menuAtts.setHeaderMessage(VS_IS_THIS_OK);
menuAtts.setTimeout(10);
menuDTMFAtts.setMaximumKeys(1);
menuDTMFAtts.setDelimiterKeys("");
}//Catalog()
public void takeOrder(Call call) throws WVRException {
// Create variables to store the product number and quantity of the order. double prodNum = 0; double quantity = 0;
while (true) {
// Get the product number from the caller
InputResult prodNumResult = call.playAndGetInput(prodNumPlayAtts, prodNumInputAtts,
prodNumDTMFAtts, prodNumRecoAtts);
prodNum = Double.parseDouble(prodNumResult.getValue());
prodNumValue.setValue(prodNum);
// Get the quantity from the caller
InputResult quantityResult = call.playAndGetInput(quantityPlayAtts, quantityInputAtts,
quantityDTMFAtts, quantityRecoAtts);
quantity = Double.parseDouble(quantityResult.getValue());
quantityValue.setValue(quantity);
// Play the order back to the caller call.play(order);
// Verifies with the caller that the choice is correct, if yes, breaks out of loop InputResult input = call.playAndGetInput(menuPlayAtts, menuAtts, menuDTMFAtts, menuRecoAtts);
String answer = input.getValue(); if (answer.equals(ITEM1_YES)) break; }//while
// Confirm to the caller that their order has gone through call.play(VS_MAIL_ORDER); }//takeOrder() }