Tropo is part of CiscoLearn More

Tutorial: Voicemail System with Transcription

Voicemail with transcription sounds like a potentially lengthy, complicated application - you'll need to answer a call, prompt the user for their message, give them a tone to indicate when to start speaking, send the call somewhere for transcription...lots of steps that often have lots of sub-steps. Tropo aims to take all of that, wrap it up behind the scenes and give you working code with just a few easy methods.

The following example handles everything mentioned earlier, plus defines time constraints - 10 seconds without any talking and the app will end, 7 seconds after someone stops talking the app will end, and the caller gets cut off at 60 seconds no matter what. It also adds a terminator for the user to end the recording; if the caller uses it, Tropo will play their recording back to them before disconnecting. The recording is then sent off to the URL defined with transcription right behind it:

record("Please leave your message at the beep.  Press pound when finished when finished to listen to your recording.", {
    beep:true,
    timeout:10,
    silenceTimeout:7,
    maxTime:60,
    terminator:'#',
    recordURI:"http://example.com/recording.js",
    transcriptionOutURI: "mailto:you@example.com",
    onRecord: function(event) {
           say("You said " + event.recordURI);
    }
});
record "Please leave your message at the beep.  Press pound when finished to listen to your recording.", {
    :beep => true,
    :timeout => 10,
    :silenceTimeout => 7,
    :maxTime => 60,
    :terminator => "#",
    :recordURI => "http://example.com/recording.rb",
    :transcriptionOutURI => "mailto:you@example.com"
    :onRecord => lambda { |event|
               say "You said " + event.recordURI}
    }
<?php
       record("Please leave your message at the beep. Press pound when finished to listen to your recording.", array(
       "beep"=>true,
       "timeout"=>10,
       "silenceTimeout"=>7,
       "maxTime"=>60,
       "terminator" => "#",
       "recordURI" => "http://www.example.com/recording.php",
       "transcriptionOutURI" => "mailto:you@example.com",
              "onRecord"=>"recordFCN"
          )
        );
       function recordFCN($event) {
           say("You said" . $event->recordURI);
       }
?>
record("Please leave your message at the beep.  Press pound when finished to listen to your recording.", {
    "beep":true,
    "timeout":10,
    "silenceTimeout":7,
    "maxTime":60,
    "terminator":"#",
    "recordURI":"http://www.example.com/recording.py",
    "transcriptionOutURI":"mailto:you@example.com",
    "onRecord": lambda event : say("You said " + event.recordURI)
})
record("Please leave your message at the beep. Press pound when finished to listen to your recording.", [
    beep: true,
    timeout: 10,
    silenceTimeout: 7,
    maxTime: 60,
    terminator: "#",
    recordURI: "http://www.example.com/recording.groovy",
    transcriptionOutURI: "mailto:you@example.com",
    onRecord: { event->
               say("You said " + event.recordURI)}
   ])

Honestly, it really is just that simple.

Additional Reading

For more information on recording, check out Recording Caller Input - more info specifically on transcription can be found in the Transcribing Caller Input section.