public void rcdAGreeting() { PromptList prePl = null; File tempWav = null; CpDialog vmd = new CpDialog(m_vm, "record_which_greeting"); String digit = vmd.collectDigit("12*"); String path; if (digit.equals("*")) { return; } boolean primary = digit.equals("1"); Greeting greeting = new Greeting(m_vm); if (primary) { path = greeting.getGreetingPath(GreetingType.STANDARD); } else { path = greeting.getGreetingPath(GreetingType.OUT_OF_OFFICE); } if (path != null) { prePl = new PromptList(m_vm.getLoc()); prePl.addPrompts(path); } vmd = new CpDialog(m_vm, "record_new_greeting"); vmd.setPrePromptList(prePl); digit = vmd.collectDigit("1*"); if (digit.equals("*")) { m_vm.getLoc().play("cmd_canceled", ""); return; } try { tempWav = makeTempWavFile(); File recordingFile = recordDialog(prePl, tempWav, "greeting_record", "confirm_name"); if (recordingFile == null) { FileUtils.deleteQuietly(tempWav); tempWav = null; return; } greeting.saveGreetingFile( primary ? GreetingType.STANDARD : GreetingType.OUT_OF_OFFICE, recordingFile); tempWav = null; } finally { if (tempWav != null) { FileUtils.deleteQuietly(tempWav); } } }
public void rcdSpnName() { File tempWav = null; try { PromptList prePl = null; File nameFile = m_mailbox.getRecordedNameFile(); if (nameFile.exists()) { prePl = new PromptList(m_vm.getLoc()); prePl.addPrompts(nameFile.getPath()); } tempWav = makeTempWavFile(); File recordingFile = recordDialog(prePl, tempWav, "record_name", "confirm_name"); if (recordingFile == null) { FileUtils.deleteQuietly(tempWav); tempWav = null; return; } // Save the recording as the name if (nameFile.exists()) { nameFile.delete(); } recordingFile.renameTo(nameFile); tempWav = null; ExtMailStore.SaveSpokenNameInFolder(m_mailbox, nameFile); } finally { if (tempWav != null) { FileUtils.deleteQuietly(tempWav); } } return; }
/** * Record a wav file with confirmation dialog. * * @param recordFragment To play before the recording * @param confirmMenuFragment To play after the recording * @return the temporary wav file. null if recording is to be tossed */ private File recordDialog( PromptList prePl, File wavFile, String recordFragment, String confirmMenuFragment) { String wavPath = wavFile.getPath(); Localization loc = m_vm.getLoc(); String ident = m_mailbox.getUser().getUserName(); boolean recordWav = true; boolean playWav = false; if (prePl != null) { loc.play(prePl, "*#"); } for (; ; ) { if (recordWav) { // Record your {thingy} then press # loc.play(recordFragment, "*#"); m_vm.recordMessage(wavPath); String digit = loc.getFreeSwitchEventSocketInterface().getDtmfDigit(); if (digit == null) { digit = ""; } m_log.debug("Retrieve::recordDialog record terminated collected (" + digit + ")"); if (digit.equals("*")) { // "Canceled." loc.play("cmd_canceled", ""); return null; } recordWav = false; } CpDialog vmd = new CpDialog(m_vm, confirmMenuFragment); if (playWav) { PromptList messagePl = new PromptList(m_vm.getLoc()); messagePl.addPrompts(wavPath); vmd.setPrePromptList(messagePl); } String digit = vmd.collectDigit("0123456789#*"); // bad entry, timeout, canceled if (digit == null) { return null; } m_log.info("Retrieve::recordDialog " + ident + " options (" + digit + ")"); // "1" means play the recording if (digit.equals("1")) { m_log.info( String.format( "Retrieve::recordDialog " + ident + " Playing back recording (%s)", wavPath)); playWav = true; continue; } // "2" means "erase" and re-record if (digit.equals("2")) { recordWav = true; continue; } // "#" means accept the recording if (digit.equals("#")) { m_log.info( String.format("Retrieve::recordDialog " + ident + " accepted recording (%s)", wavPath)); return wavFile; } // must be an invalid entry m_vm.playError("bad_cmd"); } }