VoiceXML 2.1 Development Guide Home  |  Frameset Home


<record>  element


The record element is an input item which records audio from the caller, and stores the resultant audio file in it’s namespace variable. Recorded audio files are stored on the Voxeo servers until the application ends, at which point the file is deleted. This being the case, a developer who wants to save his recorded audio file must submit the file and store it on his webserver using a server-side language. Recorded audio must be submitted by using the POST method only in order to successfully transfer the file.

In addition, the record element has a number of shadow variables available which contain specific information about the recordings duration, filesize, maximum time, and termcharacters pressed during the recording. See the documentation for shadow variables for further information.

Important Note: The Voxeo Voicecenter 5.5 VoiceXML platform has a known limitation in regards to the maximum allowable recording length. This is limited to 10 minutes maximum, (600s), due to an inherent limitation in the Nuance 8.5 ASR. While Voxeo has no control over this limitation, it should be noted that the Prophecy/Voicecenter 7.0 platform is not subject to this limitation.



usage

<record beep="(true|false)" cond="CDATA" dtmfterm="(true|false)" expr="CDATA" finalsilence="CDATA" maxtime="CDATA" modal="(true|false)" name="NMTOKEN" type="CDATA">


attributes

beep Data Type: (true|false) Default: Optional (false)
The beep attribute, when set to true, allows the developer to insert a ‘beep tone’ to indicate to the caller that the application has begun recording. If set to 'false', (default), the caller will not hear the beep indicating that the recording has started.
cond Data Type: CDATA Default: Optional (true)
The cond attribute specifies a Boolean expression, which must equate to ‘true’ in order for the content to be visited and executed. (Additionally, the expr attribute must also be set to ‘undefined’, see below).
dtmfterm Data Type: (true|false) Default: Optional (true)
The dtmfterm attribute specifies whether the caller will be allowed to terminate the recording in progress with the press of a dtmf key. When set to 'true', (default), any dtmf keypress can end the recording session. If set to 'false', then the recording continues until a maxtime or finalsilence event is reached.
expr Data Type: CDATA Default: Optional
The expr attribute specifies the initial value of  the element; if this value is ‘undefined’, (default), then the element will be visited by the FIA and executed. If  this attribute has a  value other than ‘undefined’, then the element will not be visited until explicitly set to 'undefined', by use of the clear element.
finalsilence Data Type: CDATA Default: 5s
The finalsilence attribute defines the amount of time that a caller can remain silent while the recording is being executed before the interpreter decides that the caller has finished recording the intended message. The value of this attribute is subject to the strict time formatting where ‘s’ or ‘ms’ must be appended to the actual time value, i.e.: In addition the value for this must not exceed '10s', else an error.semantic will be thrown.

<record name=”R1” finalsilence=”3s”>
maxtime Data Type: CDATA Default: Optional
The maxtime attribute specifies the maximum length of a recording in seconds, (s) or milliseconds, (ms). When a message exceeds the maxtime value, the caller will be prompted to re-record the message, (this behavior changes in VXML 2.0). Note that the maximum length of a recording on Voxeo's Staging network is limited to two minutes, (120s). However, this can be enabled for a production application; contact the support team for details.
modal Data Type: (true|false) Default: False
This attribute is currently ignored in the voice browser. A modal setting of ‘true’ will disable all non-local speech grammars while executing the record element. When set to 'false', this would activate local grammars while in the record element.
name Data Type: NMTOKEN Default: Optional
The name attribute specifies the field item variable name used when referencing the recorded audio.
type Data Type: CDATA Default: Optional
The type attribute is an parameter which designates the MIME type of the recorded file. Allowable values are as follows:
  • audio/basic
  • audio/x-alaw-basic
  • audio/x-wav or audio/wav
  • * audio/x-nist-sphere

  • * = this value is supported in Voice Center 5.5, only, and is not supported on the Prophecy platform



shadow variables

RecordName$.duration This shadow variable will tell us just how long the recorded message is, in milliseconds:

<record name="R_1"..>
..
<filled>
<prompt> the message was exactly <value expr="R_1$.duration"/> milliseconds long
</prompt>
..
RecordName$.size This will return to us the actual filesize of the recorded message, in bytes. This can be useful for determining whether or not to submit our message, thus conserving server resources:

<if cond="R_1$.size < 0">
<!--dont do anything-->
<else/>
<submit next="Myserver.com"/>
RecordName$.termchar If we need to find out if the caller used a termdigit to end the recording, this variable will return a value which specifies what dtmf key was pressed by the user, if any.
RecordName$.maxtime If we need to find out if the caller reached the maxtime while within a <record> field, the developer can use this shadow variable. If maxtime was reached, then this shadow variable will return a value of 'true'; otherwise, it will return 'false'.



parents

<form>


children

<audio>   <catch>   <enumerate>   <error>   <filled>   <grammar>   <help>   <noinput>   <nomatch>   <prompt>   <property>   <value>


code samples

<Record beep-dtmftem> sample
<?xml version="1.0" encoding="UTF-8"?>

<vxml version = "2.1">

<meta name="author" content="Matthew Henry"/>
<meta name="copyright" content="2005 voxeo corporation"/>
<meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/>

<form id="F1">

  <record name="R_1" beep="true" dtmfterm="true">
    <prompt>
      here you will hear a beep indicating
      that you should start your recording.
    </prompt>

    <prompt>
      after you are finished, you may press any DTMF key to indicate that you are done recording.
    </prompt>

    <filled>
      <log expr="R_1$.duration"/>
      <log expr="R_1$.termchar"/>
      <log expr="R_1$.size"/>


      <prompt> your recording was <value expr="R_1"/> </prompt>
    </filled>

  </record>

</form>

</vxml>


<record cond-expr> sample
<?xml version="1.0" encoding="UTF-8"?>

<vxml version = "2.1">

<meta name="author" content="Matthew Henry"/>
<meta name="copyright" content="2005 voxeo corporation"/>
<meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/>

<form id="F1">

  <record name="R_1" cond="false" expr="'SomeValue'">
    <prompt>
      this record element will be skipped, as the condition
      is set to false, and the expression is not set to undefined.
    </prompt>

    <filled>
      <prompt> never happen, buddy. </prompt>
    </filled>

  </record>

  <record name="R_2" cond="true" expr="">
    <prompt>
      this record element will get executed, as
      the condition is set to true and the
      expression is set to undefined.
    </prompt>

    <filled>
      <log expr="R_2$.duration"/>
      <log expr="R_2$.termchar"/>
      <log expr="R_2$.size"/>


      <prompt> your recording was <value expr="R_2"/> </prompt>

    </filled>

  </record>

</form>

</vxml>


<Record maxtime-finalsilence> sample
<?xml version="1.0" encoding="UTF-8"?>

<vxml version = "2.1">

<meta name="author" content="Matthew Henry"/>
<meta name="copyright" content="2005 voxeo corporation"/>
<meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/>

<form id="F1">

  <record name="R_1" maxtime="20s" finalsilence="5s">
    <prompt>
      the maximum length of his message is 20 seconds.
      In addition, the longest a caller can remain silent is
      no more than 5 seconds, else the recording will be submitted.
    </prompt>

    <filled>
      <log expr="R_1$.duration"/>
      <log expr="R_1$.termchar"/>
      <log expr="R_1$.size"/>


      <prompt> your recording was <value expr="R_1"/> </prompt>
  </filled>

  </record>

</form>

</vxml>



additional links

W3C 2.0 Specification


  ANNOTATIONS: EXISTING POSTS
Deke
8/22/2005 3:05 PM (EDT)
This is kind of nitpicky, but the description of maxtime is inconsistent with the example.

You say:

The maxtime attribute specifies the maximum length of a recording in milliseconds, (ms), only. When a message exceeds the maxtime value...

And then in the example:

<record name="R_1" maxtime="20s" finalsilence="5s">

You specify seconds.
MattHenry
8/22/2005 5:05 PM (EDT)
Hiya Deke,

You are 100% correct; I think tat this 'ms only' line was due to limitations on our older voice browser, (VWS1.3/2.0), that made its way into the Motorola docs. I have this corrected, and it should be live sometime in the next week or two.

Thanks again!

~Matt
awirtz
1/3/2006 7:47 PM (EST)
Although the VXML platform is supposed to automatically use multipart encoding for submission of a form containing recorded audio, I have run into a few cases where it defaulted to x-www-form-urlencoded even with audio data.  Therefore it is a good idea to set the enctype of the submit explicitly to avoid any suprises. (not that urlencoded couldn't work, but it is much slower to decode than multipart and bloats the data significantly as well)

(I think what triggered this may have been submitting the recording not from inside the record tag, but from a subsequent field's filled block)

-Aaron
DaveMorris
3/27/2006 12:45 PM (EST)
It might be of some importance to note that if a person records a message and terminates it by simply hanging up, instead of pressing a digit, you will lose that recording unless you catch the disconnect error and do the transfer to your permanent storage.

Dave Morris
mikethompson
3/27/2006 1:42 PM (EST)
Hi Dave,

That sounds like something worth adding to our documentation.  I'll be sure to let the keepers know about this and see that they add this note to the next build of our docs.

Thanks,
Mike Thompson
Voxeo Extreme Support
moshe
3/27/2006 6:50 PM (EST)
The option "destexpr" references the option "dest," but "dest" is not defined.
MattHenry
3/27/2006 7:10 PM (EST)


Hiya Moshe,


'destexpr' should have been taken out upon my last edit to this element, as both 'dest' and 'destexpr' are Nuance-proprietary, and are not supported with our VXML browsers. I'll have this fixed in a jiffy in our docs.

~Matt

SSA_MarkPMiller
9/11/2006 5:11 PM (EDT)
Matt,

In your <record cond-expr> sample, each of the 'record' elements must have a unique name.

  <record name="R_2" cond="false" expr="'SomeValue'">
  ...
  </record>

  <record name="R_2" cond="true" expr="">
  ...
  </record>

An over sight, I'm sure, since you just caught me on that one in another post :-)

Mark
mikethompson
9/11/2006 6:25 PM (EDT)
Mark,

Good catch!  This certainly looks like a typo to me!  I will run this by Matt and make sure he sees his mistake.

Best,
Mike Thompson
Voxeo Corporation
movoco
10/20/2006 12:05 PM (EDT)
What is the best method for capturing and stopping a caller once they exceed the maxtime? I have tried this but it didn't get caught.

<if cond="msg$.maxtime == 'true'">
Sorry, you reached the max recording time of 15 seconds.
<goto next="#frm_record_by_area_record_message"/>
</if>
VoxeoTony
10/20/2006 7:21 PM (EDT)
Hello John,

Thanks for adding to this thread with that question.  In looking at your sample we assume you have a record tag that looks like this?

<record name="msg" beep="true" maxtime="15s">
<prompt> You have fifteen seconds to record after the beep </prompt>

  <filled>
<log expr="-------=====| msg filled |======------"/>
  <if cond="msg$.maxtime==true">
    Sorry, you reached the max recording time of 15 seconds.
    <goto next="#frm_record_by_area_record_message"/>
  </if>
</filled>
</record>

Please give this a test and let us know if this is what you are looking for.

Regards,

Tony
vinayagan
12/28/2006 5:59 AM (EST)
Hi,

  while recording when we press dtmf key(dtmfterm attribute is true) before speaking anything what will happen..

will it terminate recording and assign empty in record variable?
or
it will terminate and revisit the record again
Thanks
Nayagan
MattHenry
12/28/2006 12:34 PM (EST)


Hello Nayagan,

I believe that in this case, it would be treated as an immediate <reprompt>, which would then revisit the <record> field.

~Matt
yana
1/22/2007 11:01 AM (EST)
Hi,
I didn't understand what name of record file should be stored. I have to submit. If this is correct:
<form>
  <record name="http://one/1.wav" 
                type="audio/wav">
      <filled>
        <if cond = "http://one/1.wav">
          <submit next="http://www.test.com"
              method="post"
              namelist = "http://one/1.wav"/>
        </if>
        <clear/>
      </filled>
    </record>
  </form>
What way to get the "no input" information by GET or POST methodes?
MattHenry
1/22/2007 3:07 PM (EST)


Hi there,

I'd be happy to help explain as best I can:

1 - The naming of the recorded audio file is done on the server side when using VXML: The dialog itself just captures the multipart data, and submits it via POST to a JSP/PHP/whatever script, which then performs the post-processing, which includes the naming of the file, and the uploading it to your application servers. You may want to take a look at the below link, which illustrates this in greater detail:

http://docs.voxeo.com/voicexml/2.0/recording.htm

2 - Regarding your second question, it is not clear to me exactly what it is that you are asking:

"What way to get the no input information by GET or POST methods"

Are you asking whether or not you can trap, and store to a backend database whether or not someone received a noinput event for a given record field?

Standing by,

~Matthew Henry
yana
1/23/2007 4:33 AM (EST)
Matthew Henry,

Thank you for help. The first question is clear. And you right, I'd like to ask, whether or not I can trap noinput event for a given record field. In my application I do not catch events. If I may to use something like to indicate this case:
<record name="rec_prompt" type="audio/wav">
  <noinput>
    <submit next=" http://www.test.com"
          method="post" namelist = "rec_prompt"
          fetchaudio = "empty.wav"/>
  </noinput>
....

Thanks.
mikethompson
1/23/2007 4:55 PM (EST)
Hi Yana,

Yes, you can easily capture a <noinput> within a <record> field and submit whatever you want to a backend database.  In fact, I have a handy script here which will take the <noinput> and ask the user if they really want to record anything for this prompt.  The user will say "yes" or "no" and the application will either revisit the recording field or go on to the next form item.  Take a look, I think you will find it very useful! :)

Best,
Mike Thompson
Voxeo Corporation


<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">


<form id="F1">

<var name="firstTime" expr="true"/>

<block name="b1">

<if cond="firstTime">
<assign name="firstTime" expr="false"/>
<else/>
<goto next="#norecord"/>
</if>

<clear namelist="b1"/>
<goto nextitem="R_1"/>
</block>

<record name="R_1" beep="true" maxtime="120s" finalsilence="2500" dtmfterm="true" type="audio/wav">

<prompt timeout="5s" bargein="false">
  here you will hear a beep indicating that you should start your recording. 
</prompt>

<nomatch>
<log expr="'-------------- NOMATCH'"/>
nomatch
<goto nextitem="R_1"/>

</nomatch>

<noinput>
<log expr="'-------------- NOINPUT'"/>
<goto next="#wantrecord"/>
</noinput>

<filled>
<log expr="'-------------- FILLED'"/>
<!--
<log expr="'duration==' + R_1$.duration"/>
<log expr="'size==' + R_1$.size"/>
<log expr="'termchar==' + R_1$.termchar"/>
<log expr="'maxtime==' + R_1$.maxtime"/>
-->
you said:
<value expr="R_1" />
<goto next="#done"/>
</filled>
</record>
</form>

<form id="norecord">
<block>
<log expr="'-------------- norecord'"/>
you did not want to record anything.
</block>
</form>

<form id="wantrecord">
<block>
<log expr="'-------------- wantrecord'"/>
</block>
<field name="b" type="boolean">
<prompt> Did you want to record </prompt>
<filled>
<if cond="b">
<goto next="#F1"/>
<else/>
<goto next="#norecord"/>
</if>
</filled>
</field>
</form>

<form id="done">
<block>
<log expr="'-------------- done'"/>
you left a recording and filled the vxml field
</block>
</form>

</vxml>
kettle
1/24/2007 12:31 AM (EST)
With regard to the dtmfterm attribute, the definition states the following:

"The dtmfterm attribute specifies whether the caller will be allowed to terminate the recording in progress with the press of a dtmf key. When set to 'true', (default), any dtmf keypress can end the recording session. If set to 'false', then the recording continues until a maxtime or finalsilence event is reached."

Not to be too picky, but this definition is ambiguous with regard to what happens when dtmf is set to 'true' and the user does not press a key.  Seeing as 'true' is the default setting, and I've never pressed a key to end a recording, I am assuming that in the event that no key is pressed within the maxtime, the 'fals' behavior takes over.  However, it would be nice if this ambiguity were cleared up with a few words in the definition.

joe
mikethompson
1/24/2007 1:27 PM (EST)
Hi Joe,

I agree with you, one who is not familiar with the specific behavior of the <record> element could easily get confused by the ambiguity of that statement.  I will get with the keepers of the documentation on this  and see if we can clear this up for you. :)

Best,
Mike Thompson
Voxeo Corporation
vinodhjain
6/12/2007 7:31 AM (EDT)
Hi,

While recording when we press any dtmf key(dtmfterm attribute is true) before speaking anything,

it would be treated as an immediate <reprompt>, which would then revisit the <record> field.

However how do we trap if we want to limit the same to 3 DTMF entries and catch it without endlessly reprompting the caller.

Your response is highly appreciated.

Thanks,
Vinodh Jain
jbassett
6/12/2007 8:13 AM (EDT)
Hello,

While I am not 100% sure of what you are asking, let me address.

If you set the dtmfterm to false, you will still be able to terminate the recording with the # key.  Now, you would not be able to capture the DTMF presses of other numbers in the application, but they would be heard on the recording and would not terminate it.

Thanks
Jesse Bassett
Voxeo Support
vinodhjain
6/13/2007 2:10 AM (EDT)
Hi Jesse Bassett,

Thanks for your response,

let me provide some more details:

Issue:
If instead of recording a message, when we press a DTMF key, it replays the record prompt, but it never maxes out;

currently I have set dtmfterm=true [as per our Requirement any key should terminate the recording].

Iam able to capture <noinput>, but, when caller does not speak and just press any DTMF key after beep. the <record> tag loops endless'ly .

Requirement:
dtmfterm needs to set as true (and not false)
iam not able to capture and limit the caller after 3 tries [when DTMF is pressed without speech input after the beep], the <record> is reprompted endlessly.

I tried to capture the shadow variable(s), but still the same is filled only after the recording at <filled> tag and not in above case discussed in Issue.

can we capture such DTMF event within <record> tag or is there any alternative way to catch/handle and limit caller to 3 DTMF entries
and proceed with the call flow palying "maximum tries reached".

Thanks,
VinodhJain

mikethompson
6/13/2007 11:47 AM (EDT)
Hi VinodhJain,

I am quite familiar with your troubles concerning the <record> element.  As I understand it, you are wishing to escape the <record> element by pressing a DTMF key when the caller gives no input.  This behavior can actually be achieved with some clever manipulation of the VoiceXML FIA (Form Interpretation Algorithm).  By including some conditional logic above the <record> element, we can figure out when the user attempts to escape the recording with no input by pressing a DTMF.

I happen to have some handy sample code for you which illustrates this perfectly.  I have attached it to the ticket for you.  You can tweak the conditional logic as you see fit for your application.

Hope this helps,
Mike Thompson
Voxeo Corporation
vinodhjain
6/14/2007 2:20 AM (EDT)
Mike Thompson,

I had not registered as a ticket yesterday,
However the same is registered as Voxeo Account Ticket #350877 now,

May be thats the reason iam not able to view the sample code you said is attached with the ticket.

also you can email it to my ID --> dvinodh@servion.com

Thanks,
Vinodh Jain
VoxeoDante
6/14/2007 10:09 AM (EDT)
Hello,

I have attached the sample code to an email and sent it to the address you provided. 
Please let us know the results of your testing.

All the Best,
Dante Vitulano
vinodhjain
6/15/2007 5:13 AM (EDT)
Thanks,

The sample you provided worked fine,

Thanks to support team.
Vinodh Jain
MyMercial
9/24/2007 6:44 PM (EDT)
Is there a way to concatinate audio recordings?  After the user has made a recording, I'd like to give him the choice of listening to it and then continue recording.  Can your service concatinate the audio recordings, or do I have to do it manually on my end?
voxeojeremy
9/24/2007 8:20 PM (EDT)
Hi there,


This is not something that the VoiceXML browser is capable of; you will need to do it server-side.  If you have any other questions, feel free to ask! :)


Regards,

Jeremy McCall
Voxeo Extreme Support
hhamid
12/23/2007 6:37 AM (EST)
Hello,

I am trying to write a simple vxml program to record voice and submit it to a web server using cisco-destexpr field in the <record> tag of the vxml (I know this can be simply done by a submit tag but I am trying to do it using cisco-destexpr). The vxml code is as follows:

<?xml version="1.0" encoding="iso-8859-1"?>
<vxml version="2.0">

<form id="main">
    <record cisco-destexpr=" http://192.168.0.134/streamrec.php?file=stream.au" maxtime="10s" dtmfterm="true">
        <prompt>
            <audio src="audio/record.au"/>
        </prompt>
        <prompt><audio src="audio/beep.au"/></prompt>
    </record>
</form>

</vxml> 

I am running the code using a cisco 2811 voice gateway with ios version 12.4(15)T (also tested with 12.4(7)) and I am testing the application using apache web server. After the request is submitted to the web server using a POST request, it responds with an http error code 411 (length required). I am wondering what is wrong? Is this a bug in the cisco ios? As it doesn't send the content-length field in the http header request which it sends by POST?

Anyone has any idea? or is there anyone who has done this using cisco-destexpr field?

Thanks
VoxeoTony
12/23/2007 11:41 AM (EST)
Hello,

We see that you have also posted this same question in an account ticket; as such we will update you on that ticket and post back to this one with relevant information for the forum.


Cheers,

Tony
shawnaslam1
2/4/2008 1:01 PM (EST)
I am getting this ,which might be strange,behaviour that in record tag if i dont speak call terminated.I have the requirement that if customer dont have the information then he/she shouldn't speak.Below is the sample of code
<record name="rec_1" beep="true" maxtime="20s" finalsilence="2000ms" type="audio/wav">
<prompt bargein="false">
<audio expr="mesg('1000')">

</audio>
</prompt>
<noinput count="1">
<assign name="rec_1" expr="'empty'"/>
<assign name="AM1" expr="'I'"/>

<reprompt/>
</noinput>

If you try this and dont speak after the tone call will be terminated ut not be captured by noinput tag.
Any idea or suggesion will be great.
mikethompson
2/4/2008 1:23 PM (EST)
Hello,

Setting the rec_1 variable to the string 'empty' will not clear the variable.  In fact, it will give the rec_1 recording variable the value of empty.  Hence, the VXML FIA considers this input item complete and moves on with the application.  If you have no additional code to be visited, VXML consider the entire application complete and will just exit.

Fortunately, I happen to have a neat noinput and record script I whipped up a while back.  Look at my annotation posted on 1/23/2007 4:55 PM (EST), I think you may find it useful... :)

Best,
Mike Thompson
Voxeo Corporation
wishful_st
2/20/2008 2:15 AM (EST)
Hi there,

I wish to terminate the recording when *any* of these conditions are met:

- max recording time has been met (let's say, 30 seconds)
- 4 seconds of silence is encountered
- DTMF '1' is pressed

The first 2 points are obvious to me.  However, how can I implement the 3rd point?

Thanks!
mikethompson
2/20/2008 11:25 AM (EST)
Hello,

You can always set the dtmfterm attribute to "true."  However, this will kill the recording when *any* key is pressed.  If you're only looking to terminate the recording on DTMF-1, and no other key presses, there is a solution.

As you might notice by looking at the documentation for the <record> element, you will see <grammar> is a valid child of <record>.  As such, you can write a simple inline GSL grammar to allow a dtmf-1 key press to be accepted to finish the recording.

It would look something like this:

<record name="R_1" beep="true" dtmfterm="true">

  <grammar type="text/gsl">
      [dtmf-1]
  </grammar>
   
    <prompt>
      here you will hear a beep indicating
      that you should start your recording.
    </prompt>

    <filled>
      <log expr="R_1$.duration"/>
      <log expr="R_1$.termchar"/>
      <log expr="R_1$.size"/>

      <prompt> your recording was <value expr="R_1"/> </prompt>
    </filled>

  </record>

Hope this helps,
Mike Thompson
Voxeo Corporation
wishful_st
2/20/2008 2:18 PM (EST)
Hi Mike,

Thanks for your quick reply.  I've actually tried similar code previously, and the other DTMF tones are still triggering to end recording.  I've also tried exactly your code by cutting and pasting and the result is the same.

Any ideas?

Simon
mikethompson
2/20/2008 2:54 PM (EST)
Simon,

It sounds like you might have come across a bug.  Are you trying this on our hosted environment?  If so, what specific platform are you using?  If you're testing this on a local installation, what build are you using?

Please advise,
Mike Thompson
Voxeo Corporation
wishful_st
2/20/2008 4:47 PM (EST)
Hi Mike,

I am using Voxeo's development site.  The application entry point is through Prophecy 7.0 - CCXML W3C 1.0.  Is this information what you are looking for?  Should I open a ticket using my dev account?

Also note that I am using <vxml version = "2.1">
mikethompson
2/20/2008 6:22 PM (EST)
Hello,

I did some testing and was able to re-create the problem.  Per the spec, here is how <record> is supposed to work:
------------
The <record> element contains a 'dtmfterm' attribute as a developer convenience. A 'dtmfterm' attribute with the value 'true' is equivalent to the definition of a local DTMF grammar which matches any DTMF input. The dtmfterm attribute has priority over specified local DTMF grammars.
------------

This being said, if you only want specific DTMF keys to match, you'll want to use dtmfterm set to false and specify your own grammar.  Unfortunately, I cannot get it to work.  As such, I need to follow up with Engineering on this and see if we have a bug on our hands.

Stay tuned,
Mike Thompson
Voxeo Corporation
mikethompson
2/22/2008 2:24 PM (EST)
Hello,

After doing some more testing, this does appear to be a bug with Prophecy 7 in staging.  Fortunately, this has been corrected in Prophecy 8, which you should be able to map to within your Voxeo Application Manager when creating a new application.  One thing to note, make sure you specify the mode to dtmf.  Here's a small working example on Prophecy 8:

<record name="R_1" beep="true" dtmfterm="false">

  <noinput>
      <log expr="'************************ NO INPUT ***********************'"/>
  </noinput>

  <nomatch>
      <log expr="'*************************NOMATCH***************************'"/>
  </nomatch>
 
  <grammar mode="dtmf">
      [dtmf-1]
  </grammar>
 
    <prompt>
      here you will hear a beep indicating
      that you should start your recording.
    </prompt>

    <filled>
      <log expr="R_1$.duration"/>
      <log expr="R_1$.termchar"/>
      <log expr="R_1$.size"/>

      <prompt> your recording was <value expr="R_1"/> </prompt>
    </filled>

  </record>

Hope this helps,
Mike Thompson
Voxeo Corporation
wishful_st
2/25/2008 4:37 PM (EST)
That did the trick.  Thanks Mike!
georgelai
3/13/2008 12:21 PM (EDT)
I have a question.  Is there a way to save the audio file into something with better fidelity than wav at 8 bit, 11kHz?  Can I store it as 16 bit, 11 kHz (or higher)?

Thanks.

George
voxeojeff
3/13/2008 12:36 PM (EDT)
Hi George,

Unfortunately, the recordings will always be saved as 8bit, 8khz audio files.  You can convert them afterwards, if you wish, using your own audio converter.  For more information on "all things audio," please see our VoiceXML documentation specific to telephony audio:

http://docs.voxeo.com/voicexml/2.0/audioformats.htm

Hope this helps,

Jeff
fahdbaig
7/15/2008 7:26 AM (EDT)
Hi,

I am trying to record small bits (say 2 secs) of callers speech. I want to know if the caller has spoken or not in a particular bit.
I have tried to use <noinput> with record but it doesn't seem to work!
<noinput> works fine with <filled> tags etc
Is there an example around that I can follow?

The following doesn't seem to work nor does it even if I have noinput placed elsewhere in the form or document it still doesnt work!
<form>
  <record>
      <noinput>
          nothing recorded
      </noinput>
  </record>
</form>

please help? thank you
VoxeoDustin
7/15/2008 9:23 AM (EDT)
Hey,

The noinput handler will work with the record element, as you have it, but it will only be thrown if there is no audio detected for the length of the timeout property - the default is 5s. In most cases, especially with SIP/VoIP phones or cell phones, there will always be some background noise caught during a record and a noinput is very unlikely.

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3.org/2001/vxml
  http://www.w3.org/TR/voicexml20/vxml.xsd">
<form>
  <record  name="msg" beep="true" maxtime="10s"
      finalsilence="4000ms" dtmfterm="true" type="audio/x-wav">
      <prompt timeout="5s">
        Record a message after the beep.
      </prompt>
      <noinput>
        I didn't hear anything, please try again.
      </noinput>
      <catch event="connection.disconnect.hangup">
          <submit next="./voicemail_server.asp"/>
      </catch>
  </record>
</form>
</vxml>

Let us know if we can be of further assistance.

Cheers,
Dustin
Ramani
12/11/2008 10:32 AM (EST)
Hi ,

I got a question, I have a need to record the custom generated prompt played to the customer and thier response togather as one unit.

is this something feasible to do ?


Thank you for your help,
Ramani
VoxeoDustin
12/11/2008 10:52 AM (EST)
Hey Ramani,

While the <record> element does not allow for recording of the prompt itself, the <voxeo:recordcall> attribute will allow recording of all aspects of the call.

If you want to record a prompt and the users response, you can do something like this:

<form>
  <block>
    <voxeo:recordcall value="100" info="MyInfo"/>
    <!-- start recording call -->
  </block>

  <field>
    <prompt> How are you doing? </prompt>
    <grammar type="application/grammar+xml" root="MAIN" xml:lang="en-us">
      <rule id="MAIN">
          <item> good </item>
          <item> bad </item>
      </rule>
    </grammar>
  </field>

  <block>
    <voxeo:recordcall value="0" info="MyInfo"/>
    <!-- stop recording call -->
  </block>
</form>

This will enable call recording for the duration of the field here, and save a recording of both the prompt and the caller to your Evolution account.

http://docs.voxeo.com/voicexml/2.0/voxeo-recordcall.htm

Cheers,
Dustin
chriscaldwell2008
12/19/2008 4:30 PM (EST)
When the dtmfterm is set to 'true' in the record tag, the dtmf tone is also captured on the recording. Is this the expected behavior?

Here's the code:

<record name="R_1" beep="true" dtmfterm="true">
  <prompt>record your message</prompt>
  <filled>
  <prompt>your recording was <value expr="R_1"/></prompt>
  </filled>
</record>

Thanks.
MattHenry
12/19/2008 4:53 PM (EST)

Hi Chris,

I am not able to reproduce this when testing on the hosted site. Maybe you can provide specifics as to your own testing environment (hosted vs a local install), and also provide any relevant software versions?

Thanks,

~Matthew Henry
chriscaldwell2008
12/20/2008 11:41 AM (EST)
Matthew,

Thanks. Here's the specifics and the xml:

1. Initiate a token-based, outbound call from my application to http://api.voxeo.net/SessionControl/VoiceXML.start with all the necessary parameters.

2. Voxeo invokes my "start" url: http://www.caldwellweb.com/public/start.aspx.

3. The following xml gets processed:
<?xml version="1.0" encoding="UTF-8" ?>
<vxml version="2.1">
<form id="main">
<record name="recordMessage" dtmfterm="true" beep="true" maxtime="60s" finalsilence="5s" type="audio/wav">
  <prompt>please record your message after the beep.</prompt>
  <filled>
    <prompt>
      <value expr="recordMessage" />
    </prompt>
  </filled>
</record>
<field name="confirmMessage" type="boolean">
  <prompt>to save this message, press 1 or say yes. to discard it and record again, press 2 or say no.</prompt>
  <filled>
    <if cond="confirmMessage">
      <submit next="http://www.caldwellweb.com/public/recordmessage.aspx?tempkey=" method="post" namelist="recordMessage" enctype="multipart/form-data" />
    <else />
      <goto next="#main" />
    </if>
  </filled>
</field>
</form>
</vxml>

4. If I press any key to terminate the recording early (instead of waiting for the "finalslience"), that dtmf tone is captured on the audio as well. The issue is within the "record" tag, all else runs fine.

If I wait the time specified with the "finalsilence" argument, then all is good.

Here's the resulting audio: http://www.caldwellweb.com/testaudio.wav
(notice the dtmf tone at the end, indicating that I ended the recording early by pressing any key).

Any help would be great. Thanks.
voxeojeremyr
12/20/2008 1:58 PM (EST)
Hi Chris,

I have tried many ways to duplicate this issue but I have not been able to.  I have created a test application the same as yours, including submitting the file to a PHP script on a server, and still I did not hear the beep of the touch tone when I pressed it.

I also tried using your application, but it seems to have changed as it just hangs up without playing any prompt.  When you do your test do you hear the beep when the recording plays back before you confirm or do you only hear it when it has been uploaded as a file?

Thanks,
Jeremy Richmond
Voxeo Support
chriscaldwell2008
12/20/2008 9:25 PM (EST)
Jeremy,

Thanks for the reply.

I hear the beep during the playpack. The flow goes as follows:

**The following is based on the xml from my previous post**

1. I hear the prompt to record my message.

2. I speak and record the message. When I am done, I press 1 (or any key) to end the recording early without waiting for the "finalsilence" to fire.

3. Then I immediately hear the message played back. It is here that I hear the dtmf tone from step 2. It is as if the recorder is capturing both what I speak into the phone and the dtmf tone generated when I press any key to end the recording.

4. Then it asks me if I want to save or discard. If save, then it posts the file to my web server for storage (which all works great). If I choose the discard, then it repeats from step 1 (which also works fine).

5. Call terminates.

I can send you the actual files if you wish. The audio file from above is the actual .wav that was created. You can hear the key I pressed at the end. Very strange.

Thanks!

Chris
voxeoblehn
12/21/2008 9:10 AM (EST)
Hi Chris,

I have gone ahead and moved this thread into a private ticket under your account as we may need to request some application specific information. You should have received an email update stating a new thread has been opened under your account. Lets go ahead and move forward with this issue in that arena and if our findings are relevant to the doc community we will post our conclusions back here to share with everyone.

Regards,

Brian L.
Voxeo Support
jefo12
12/23/2008 5:28 AM (EST)
<form id="Record">

<var name="beepsound" expr="'true'"/>
<var name="dtmfterm" expr="'false'"/>
<var name="maxtime" expr="'30s'"/>

<record name="msg" beep="true" dtmfterm="true" maxtime="20s"      finalsilence="5s">
<promp>please leave your msg</prompt>

<noinput>
<prompt>Sorry,Please try again</prompt><reprompt/>
</noinput>

<filled>
<prompt> <audio expr="msg"/> </prompt>
</filled>
</record>
</form>

I would like to replace the attributes values beep,dtmftrue,maxtime dynamically using some variables.Is this possible if so pls give me the solution...
voxeoJeffK
12/23/2008 7:04 AM (EST)
Hi,

Unfortunately the VoiceXML spec requires them to be quantified statically as:

beep: Data Type: (true|false)
dtmfterm: Data Type: (true|false)
maxtime: Data Type: CDATA

The way around this would be to have the entire VoiceXML document dynamically generated using a server-side application.

regards,
Jeff K.

yogeshp
1/7/2009 4:42 AM (EST)
hi ,
  i am doing  registration application,in that i also record user voice
following query i have
  1.on the dtmf-1 ,i want to start recording & on dtmf-# i want to stop recording
  2.how i can save recorded voice with submitting other input data
  3. is it to using subdialog to submit all data & to save recorded voice

please help me
waiting for your reply

Thanks & Regards
Yash
MattHenry
1/7/2009 10:06 AM (EST)

Hi there,

I'm not totally sure that I understand your questions, but I'll do my best:

Q 1.on the dtmf-1 ,i want to start recording & on dtmf-# i want to stop recording

A: It sounds like you want your user to press 1 to start a recording session, and press # to end it. For the first part, simply create a VXML dialog (with the <field> element), that contains the initial prompt, and a dtmf-1 grammar. Upon a keypress, specify a <goto nextitem> that points to your <record> field item. Note that recordings terminate by dtmf keypress by default, so you wont have to do anything special here.


Q 2.how i can save recorded voice with submitting other input data

A: As all we are doing is sending namelist data to a post-processing page via POST, you may include any number of variable names in the request. See the below links for details:

http://docs.voxeo.com/voicexml/2.0/recording.htm
http://docs.voxeo.com/voicexml/2.0/submit.htm


Q 3. is it to using subdialog to submit all data & to save recorded voice

A: A subdialog would not be needed in any capacity in this case, as per above.

~Matt

soonthor
1/22/2009 11:57 AM (EST)
Hi,

I have questions about bargein and <record> tag.

I just signed up for a free Voxeo Evolution account with VoiceXML platform.

With the following VoiceXML.
...
..
<property name="bargein" value="true"/>
<record beep="true" name="audio" maxtime="600s"
        dtmfterm="true">
<prompt>Please record something. Press anykey or hangup to stop.</prompt>
...
..

When I try to bargein, it seems to reprompt. Is it a correct behavior? Is there any system grammar activated that may cause a reprompt?

Thank you for your help.
VoxeoDustin
1/22/2009 12:09 PM (EST)
Hey,

This is correct behavior. If you'd like callers to be able to barge-in to the prompt prior to the recording, I recommend placing the prompt in a block prior to the record tag:

<block>
  <prompt> Record your message at the beep </prompt>
</block>

<record beep="true" name="audio" maxtime="600s" dtmfterm="true">

Let me know if this does the trick for you.

Thanks,
Dustin
soonthor
1/22/2009 7:34 PM (EST)
Hi Dustin,

Yes, using <block> tag solved my problem. Thank you.
voxeoJohn
1/22/2009 8:15 PM (EST)
Hi,

Glad to hear Dustin was able to help!  Please let us know if there are any other questions!

Regards,

John D.
Customer Engineer
Voxeo Support
shawnaslam1
3/3/2009 6:39 AM (EST)
Above I am seeing one thread of vinodhjain.I am facing the same issue.
Voxeo team has sent him a sample code to resolve his issue.Can I also have that same code please.
My email Address is shawn.aslam@trgworld.com
If you reply me little early it will be apreciated.
Thanks
voxeoJeffK
3/3/2009 7:26 AM (EST)
Hello,

As per your request I have attached to XML file referenced above. Please let us know if we can help with any other questions.

Regards,
Jeff Kustermann
Voxeo Support
shawnaslam1
3/3/2009 7:43 AM (EST)
Jeff,
I am not able to find the reference which you mention can you please email to me at shawn.aslam@trgworld.com

Thanks for your quick response
voxeoJeffK
3/3/2009 7:55 AM (EST)
Hello,

I have emailed the start.xml file to you directly.

Regards,
Jeff Kustermann
Voxeo Support
beruhy
3/9/2009 4:27 PM (EDT)
Is there any way I can assign the recorded message to a variable so that it can be accessed by other forms?
I tried this:

<vxml version="2.1">
  <var name="rec_result "/>
  <form id="rec">
    <record name="rec_rec" maxtime="10s" beep="true">
      <prompt bargin="false">
        <audio src="">Please record your message</audio>
      </prompt>
      <filled>
        <assign name="rec_result" expr="rec_rec"/>
        <goto next="#playback"/>
      </filled>
    </record>
  </form>
  <form id="playback">
    <field name="playback">
      <prompt bargein="false" timeout="1s">
        do you want to keep this message <value expr="rec_result"/>
      </prompt>
      .....
    </field>
  </form>
</vxml>

This is giving me a garbled up message during playback. Is there any other way to access a recording from outside the form?

Thanks
voxeoblehn
3/9/2009 6:34 PM (EDT)
Hello,

You will need to specify a null expression for the variable you are declaring in order for the recording to be played outside of the form holding the <record> element. If not specified, the variable will be read as a string, which is why you are hearing a URL being read back as the current value of "rec_result." Your new code would look like so with the changes in bold:

changes:
[code]<var name="rec_result" [b]expr=""[/b]/>[/code]

final:[code]
<vxml version="2.1">
  <var name="rec_result" [b]expr=""[/b]/>
  <form id="rec">
    <record name="rec_rec" maxtime="10s" beep="true">
      <prompt bargin="false">
        <audio src="">Please record your message</audio>
      </prompt>
      <filled>
        <assign name="rec_result" expr="rec_rec"/>
        <goto next="#playback"/>
      </filled>
    </record>
  </form>
  <form id="playback">
    <field name="playback">
      <prompt bargein="false" timeout="1s">
        do you want to keep this message <value expr="rec_result"/>
      </prompt>
      .....
    </field>
  </form>
</vxml>
[/code]
Please let us know if you have any further questions or concerns.

Best Regards,

Brian Lehnen
Voxeo Support
beruhy
3/11/2009 6:22 AM (EDT)
Thank you. That did the trick.
offhegoes
5/6/2009 9:50 PM (EDT)
Hi All,

Can anybody help me to write a VXML code to record a message and save that message in the server. If possible, without using any scripting (JSP, PHP, ASP .. etc). If it is not possible, please be minimum usage of the script.

Thanks and appreciate your feedback.
voxeo_chris
5/6/2009 10:18 PM (EDT)
Hello,

First off, if you would like to place audio on your server, you will need to include some server side script, however this is not very difficult to do.  To get you started, I would recommend you check out the [url=http://www.vxml.org/record.htm]record[/url] element as this will record a message in VXML and save it to the namespace.  Then you can send it off to your script via [url=http://www.vxml.org/data.htm]data[/url].  For the scripting languages, I would recommend you check out [url=http://www.w3schools.com/]W3Schools[/url] or [url=http://php.net/]PHP.net[/url] as that would be a great place to look on posting audio files to a server.  If you have any problems or require any clarification, please let us know and we would be happy to help.

Regards,

Chris Bruckart
Customer Engineer
Voxeo Support
offhegoes
5/8/2009 3:08 AM (EDT)
Hi Chris,

This is the code that I am trying right now. I manage to get the BEEP sound, only where was the .wav file was recorded, I am lost here.

This VXML file hosted on this IP:10.210.210.21. However, the PHP script located on the public hosting package using Linux package. Is it possible this way?


Search_2_Record_tryup.vxml
--------------------------

<form id="collectPostCode">
<var name="param0" expr="'ann68_'+langID"/>
<subdialog name="collectPostCode" srcexpr="applicationUrl + 'ocmp_string_pass.jsp'" namelist="param0"/>
<record beep="true" name="recmessage" type="audio/x-wav" maxtime="10s" finalsilence="5s" dtmfterm="true">   

<filled>
<submit next="http://www.klgate.com/tetamu/COCMPSFC/upload.php" method="post" namelist="file" enctype="multipart/form-data" />
</filled>
</record> 

</form>

upload.php
----------
<?
header('Cache-Control: no-cache');

include 'util.php';

$MAX_FILE_SIZE = 15000000;

$folder = "/tmp/";
$logfile = "log.txt";

// Post variables
$fname = $HTTP_POST_FILES['file']['name'];
$ftype = $HTTP_POST_FILES['file']['type'];
$fsize = $HTTP_POST_FILES['file']['size'];
$ftmp = $HTTP_POST_FILES['file']['tmp_name'];

//save log
$handler=fopen($folder.$logfile,"w");
fwrite($handler,the_file_name($fname));
fclose($handler);

if($fize > $MAX_FILE_SIZE){$error = 2;}

if(file_exists($folder."m_".$fname)){$error = 3;}

if(copy(the_file_name($fname),$ftmp."wav")) {$error = 0;}

switch($error)
{
case'0':
$mensaje="File saved Ok.";
break;
case'1':
$mensaje="Incorrect Format.";
break;
case'2':
$mensaje="File so Big.";
break;
case'3':
$mensaje="File already exists.";
break;
}
?>

util.php
--------
<?php

function the_file_name($file)
{
    $j=0;
    $l=strlen($file);
    for ($k=0;$k<=$l;$k++)
{
if (substr($file,$k,1)=='/')
{
$j++;
if ($j==3)
{
return substr($file,$k);
}
}
    }
 
    return "";

?>

This sample I get it from this http://docs.voxeo.com/voicexml/2.0/recording.htm

Thanks.
M Sopian H
voxeoJeffK
5/8/2009 4:46 AM (EDT)
Hello,

The one thing that stands out that may be a problem if you're using public hosting is this line in the PHP script:

$folder = "/tmp/";

You may not have permission to that directory. I think it may be useful to review the logs for both Prophecy and the webserver to find out what/where something is going wrong. It sounds as though the Prophecy script is working well, but the problem is on the webhosting side.

Regards,
Jeff Kustermann
Voxeo Support
mtatum111
7/29/2009 9:16 PM (EDT)
I have a question about the bargein and the <record> element.  In a previous post we have the following (see below).  I was wondering if you could tell me where in the W3c spec that it talks about this (allowing bargein for the record element..  Or, did you build this feature into the voxeo platform as a special feature that isn't in the spec.  Thanks for any info.
Melisa

**************Previous Post**************

Hey,

This is correct behavior. If you'd like callers to be able to barge-in to the prompt prior to the recording, I recommend placing the prompt in a block prior to the record tag:

<block>
  <prompt> Record your message at the beep </prompt>
</block>

<record beep="true" name="audio" maxtime="600s" dtmfterm="true">

Let me know if this does the trick for you.
voxeoJohn
7/29/2009 9:57 PM (EDT)
Hello Melisa,

  I'm not entirely clear on your question in this posting.  That being said, It was clear that a portion of your request was for a link to the recording section of the VoiceXML spec, which I have linked here:( http://www.w3.org/TR/voicexml20/#dml2.3.6 ).  If you would perhaps elaborate on your question here we would certainly be more then happy to offer any clarification, or assistance, you may require!

Regards,

John Dyer
Customer Engineer
Voxeo Support
mtatum111
7/29/2009 10:12 PM (EDT)
Thanks, John.  My question had to do with being able to get bargein to work on the <record> element.  Someone had said that to get it to work you would need to do the following

<block>
  <prompt> Record your message at the beep </prompt>
</block>

<record beep="true" name="audio" maxtime="600s" dtmfterm="true">


I am wondering if this is in line with the w3c spec as I haven't been able to find a section on where this is explained.

Or, if this behavior (by putting the <block>) is something specific to the voxeo platform.

Thanks for any info.
voxeoTonyT
7/30/2009 1:44 AM (EDT)
Hello,

I want to make sure we are all on the same page as far as when the bargein is supposed to work.  Placing a prompt within blocks before the record element will allow a user to bargein before the record element is executed.  This is not the same as allowing a user to bargein while the recording has started.  So just to be clear, in the example you posted the bargein will not work while the recording has been initiated it will only work prior to the recording.

I hope this clears up this matter, but if it doesn't please let us know and we will continue to work thru this to get to a mutual understanding.

Regards,

Tony Taveras
Customer Engineer
Voxeo Support
mtatum111
7/30/2009 10:13 AM (EDT)
Tony, thanks for the explanation.  I was really wanted to know if this follows the w3c spec or if this was an enhancement added to the voxeo platform?  I know that some vendors are adding extra features and just wanted to know if this was the case.  Sorry for all the questions.
VoxeoDante
7/30/2009 11:40 AM (EDT)
Hello,

This is inline with the spec.  The above will allow you to bargein on the prompt before the recording.  You could place the <prompt> inside of the <record> as well if you wanted but the behavior would be slightly different.

Per the spec;

"A recording begins at the earliest after the playback of any prompts (including the 'beep' tone if defined). As an optimization, a platform may begin recording when the user starts speaking."

Putting the <prompt> in the <block> before the recording allows the user to bargein on the prompt prior to the recording starting.

I hope this helps.

Cheers,
Dante Vitulano
Voxeo Corporation
mtatum111
7/30/2009 2:47 PM (EDT)
Dante, thanks for the explanation.  That explains my question.  With Voxeo, the optimization is used to support this.

Thanks again for verifying.
mtatum111
9/29/2009 8:26 AM (EDT)
I understand that with the record form, you can save the msg to a webserver via the following

"This being the case, a developer who wants to save his recorded audio file must submit the file and store it on his webserver using a server-side language. Recorded audio must be submitted by using the POST method only in order to successfully transfer the file."

My question is on the server side (webserver side).  Do you know how this is programmed to be able to store the variable.  Is it simply setting a variable up on the webserver to store this. 

Thanks for any info.
voxeojeremyr
9/29/2009 8:47 AM (EDT)
Hello,

Sure, we actually have an example of how to do this in PHP. 

Here is the PHP code:
[code]
<?php


  // get our caller id to help identify the recording
  $callerid = $_REQUEST['callerid'];


  if ($_FILES["file"]["error"] > 0)
    {
    // oops, something went wrong. let's let our app know
    header("HTTP/1.1 500 Internal Server Error");
    $response = "There was an error. Please try again";
    }
  else
    {
// copy our temp file to our real file name and save it on the server.
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $callerid . "-" . date("His") . ".wav");
      $response = "Recording was uploaded";
 
    }

?><?xml version="1.0"?>
<vxml version="2.1">

<form>
  <block>
      <prompt><?php echo $response?></prompt>
  </block>
</form>
</vxml>
[/code]



This will upload these files to a folder called upload.

Here is the VoiceXML that is used to capture the recording.

[code]
<?xml version="1.0"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xmlns:voxeo="http://community.voxeo.com/xmlns/vxml">


<var name="callerid" expr="session.connection.remote.uri"/>

<form>
    <record name="file" beep="true" dtmfterm="true">
        <log expr="'***** START RECORDING *****'"/>
      <prompt> Record your message at the beep, please.</prompt>
     
     
      <filled>
            <log expr="'***** RECORDING COMPLETE *****'"/>
            <prompt>Your recording was <value expr="file"/></prompt>
            <submit method="POST" namelist="callerid file" next="upload_file.php" enctype="multipart/form-data"/>
      </filled>
</record>
</form>

</vxml>
[/code]

Let me know if this helps.

Regards,
Jeremy Richmond
Voxeo Support

login



© 2010 Voxeo Corporation  |  Voxeo IVR  |  VoiceXML & CCXML IVR Developer Site