@Override
	public void service(AgiRequest request, AgiChannel channel) throws AgiException {
		try {
			// Answer the channel...
			this.answer();

			// retrieve a non-existent filename
			String fileName;
			int name;
			do {
				name = Math.abs(this.random.nextInt());
				fileName = EPursuit.properties.getProperty("recordPath") + name;
			} while (new File(fileName).exists());

			// Call all listeners
			for (AgiCallListener listener : this.listeners) {
				listener.callStarted(String.valueOf(name));
			}

			// ...play the introduction...
			this.streamFile(EPursuit.properties.getProperty("mrxIntro"));

			// ..record the file.
			this.recordFile(fileName, "gsm", "brauchkeinschwein", new Integer(EPursuit.properties.getProperty("maxTalkTime")), 0, new Boolean(EPursuit.properties.getProperty("beep")),
					new Integer(EPursuit.properties.getProperty("maxWaitTime")));
			
			this.recordMap.put(channel.getName(), String.valueOf(name));
			// Call all listeners
			for (AgiCallListener listener : this.listeners) {
				listener.callFinished(channel.getName());
			}
		} catch (AgiHangupException e) {
			for (AgiCallListener listener : this.listeners) {
				listener.callNotSuccessful(channel.getName());
			}
		}

	}