« Back to General Discussion - All Versions

Property recordutterance and recorded file

Combination View Flat View Tree View
Threads [ Previous | Next ]
Hi,
 
We have an issue with the VXML <property name="recordutterance" value="true"/>. We can activate this and the wav file can be played back, but we don't know where we can get the URL for the record file.

Is there a way to define the destination of the recording .wav file Thanks
gilles

If you have recordutterance enabled, then the gateway should be creating a variable named <field_name>$.recording (where field_name will depend upon the type of Studio element you're using to collect the input. If you're using Digits element, it's called digit_collect_fld$.recording, if it's a Form element, it's called foundation_fld$.recording) What you'd need to do is 'extend' the Studio element that's collecting the caller input and by adding to the Vxml page it creates - telling it to assign <field_name>$.recording to a variable and then returning this variable along with the other information that it returns to Vxml Server. This comes from the Cisco VoiceXML Programmer¿s Guide - Cisco IOS Release 15.0(1)M Janine On 11/25/2011 8:26 AM, Cisco Developer Community Forums wrote: Gilles Caloz has created a new message in the forum "General Discussion - All Versions": -------------------------------------------------------------- Hi,  We have an issue with the VXML <property name="recordutterance" value="true"/>. We can activate this and the wav file can be played back, but we don't know where we can get the URL for the record file. Is there a way to define the destination of the recording .wav file Thanks gilles -- To respond to this post, please click the following link: <http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/4801539> or simply reply to this email. -- Janine Graves

Hi,
We just make some other tests using the recordutterance and using the <field_name>$.recording we can get back the audio file and save it. (similar to record element)
But this is not very optimal, because the .wav file is already saved on the MRCP server and it would be much more better to get only the file URL instead of
submitted the whole audio file back to the VXML Server. This will significantly raise the size of data that has to be transferred and want to avoid it.
Using the VoiceXML <log> element we found that the URL is available on the IOS:
VOICEXML:
<log>FILLED: result$.recording is<value expr="result$.recording"/></log> 

IOS Debug:
15:07:26.145:  FILLED: result$.recording is http://172.28.2.198:90/waveforms-mrcp1/2012/01/13/14/WF_EPBADGMGAAAFEHBDAAAAAAAA_20120113145113_595875.wav

May be Cisco provide another way to get to the name of the File via some internal mechanism (special variable or property or somthing like this).
Any suggestion ?
Regards
Gilles
 

In the record element, you specify the path where you store the file. Based on the path and the name of the record element you can easily access the name of the file:
For example if path is:
/CVP/audio/TestAudio/

And the name of the record element is RecordTestPromptMessage, you can access the file name using:

/CVP/audio/TestAudio/{Data.Element.RecordPromptMessage.filename}

Hemal

From: Cisco Developer Community Forums [mailto:cdicuser@developer.cisco.com]
Sent: Monday, January 16, 2012 5:19 AM
To: cdicuser@developer.cisco.com
Subject: New Message from Gilles Caloz in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: Re: New Message from Gilles Caloz in Customer Voice Portal (CVP) - Gene

Gilles Caloz has created a new message in the forum "General Discussion - All Versions":

--------------------------------------------------------------
Hi,
We just make some other tests using the recordutterance and using the <field_name>$.recording we can get back the audio file and save it. (similar to record element)
But this is not very optimal, because the .wav file is already saved on the MRCP server and it would be much more better to get only the file URL instead of
submitted the whole audio file back to the VXML Server. This will significantly raise the size of data that has to be transferred and want to avoid it.
Using the VoiceXML <log> element we found that the URL is available on the IOS:
VOICEXML:
<log>FILLED: result$.recording is<value expr="result$.recording"/></log>

IOS Debug:
15:07:26.145: FILLED: result$.recording is http://172.28.2.198:90/waveforms-mrcp1/2012/01/13/14/WF_EPBADGMGAAAFEHBDAAAAAAAA_20120113145113_595875.wav

May be Cisco provide another way to get to the name of the File via some internal mechanism (special variable or property or somthing like this).
Any suggestion ?
Regards
Gilles

--
To respond to this post, please click the following link:

<http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/5013416>

or simply reply to this email.

Hi Hemal,

Thanks for your response. In fact what you propose is to save the recorded file locally on the and then you have access to it. (similar to what is did with the record elment provided by Call Studio).

But here we are speaking on the "recordutterance" VXML properties - When activated it, the file is automatically saved on the MRCP server, so we don't want to save it again on the VXML Server (time consuming). We just want to get the URL of the file that is available on the MRCP Server as it is displayed in the IOS:

IOS Debug:
15:07:26.145: FILLED: result$.recording is http://172.28.2.198:90/waveforms-mrcp1/2012/01/13/14/WF_EPBADGMGAAAFEHBDAAAAAAAA_20120113145113_595875.wav

Gilles

Gilles,
 
Perhaps you can modify the VoiceElement so that the gateway converts <fieldname>$.recording to a String and stores it into another variable and returns that to the VXML Server in the <submit> statement. Since, as you note, the value of result$.recording is http://172.28.2.198:90/waveforms-mrcp1/2012/01/13/14/WF_EPBADGMGAAAFEHBDAAAAAAAA_20120113145113_595875.wav contains the URL string that points to the recording, it would be great to send that value to VXML Server as a String, rather than the IOS retrieving that URL.
 
Janine
 
 
Hi Hemal,

Thanks for your response. In fact what you propose is to save the recorded file locally on the and then you have access to it. (similar to what is did with the record elment provided by Call Studio).

But here we are speaking on the "recordutterance" VXML properties - When activated it, the file is automatically saved on the MRCP server, so we don't want to save it again on the VXML Server (time consuming). We just want to get the URL of the file that is available on the MRCP Server as it is displayed in the IOS:

IOS Debug:
15:07:26.145: FILLED: result$.recording is http://172.28.2.198:90/waveforms-mrcp1/2012/01/13/14/WF_EPBADGMGAAAFEHBDAAAAAAAA_20120113145113_595875.wav

Gilles

Hi Janine,
 
I already tried to convert the <fieldname>$.recording to a String using an ECMA script, but what i get is only a value like "[object object]".
 
<script>
<![CDATA[
 
 var myvalue = application.lastresult$.recording.toString();
]]>
</script>
  <var name="element_log_value"  expr="myvalue" />
 
In fact, it is difficult to understand why with <value expr="application.lastresult$.recording"/>, we get the URL and not when the object is assigned to a variable.
 
By other platform, this is working and we get the URL. Do you think it is a limitation with Cisco IOS ?

Thanks
Gilles
 
 
Gilles,
 
Perhaps you can modify the VoiceElement so that the gateway converts <fieldname>$.recording to a String and stores it into another variable and returns that to the VXML Server in the <submit> statement. Since, as you note, the value of result$.recording is http://172.28.2.198:90/waveforms-mrcp1/2012/01/13/14/WF_EPBADGMGAAAFEHBDAAAAAAAA_20120113145113_595875.wav contains the URL string that points to the recording, it would be great to send that value to VXML Server as a String, rather than the IOS retrieving that URL.
 
Janine
 

Gilles,
Try this:
<assign name="element_log_value" expr="application.lastresult$.recording"/>

Let me know, what it shows.

Hemal
________________________________
From: Cisco Developer Community Forums [cdicuser@developer.cisco.com]
Sent: Friday, January 20, 2012 3:29 AM
To: cdicuser@developer.cisco.com
Subject: New Message from Gilles Caloz in Customer Voice Portal (CVP) - General Discussion - All Versions: RE: Property recordutterance and recorded file

Gilles Caloz has created a new message in the forum "General Discussion - All Versions":

--------------------------------------------------------------
Hi Janine,

I already tried to convert the <fieldname>$.recording to a String using an ECMA script, but what i get is only a value like "[object object]".

<script>
<![CDATA[

var myvalue = application.lastresult$.recording.toString();
]]>
</script>
<var name="element_log_value" expr="myvalue" />

In fact, it is difficult to understand why with <value expr="application.lastresult$.recording"/>, we get the URL and not when the object is assigned to a variable.

By other platform, this is working and we get the URL. Do you think it is a limitation with Cisco IOS ?

Thanks
Gilles


Gilles,

Perhaps you can modify the VoiceElement so that the gateway converts <fieldname>$.recording to a String and stores it into another variable and returns that to the VXML Server in the <submit> statement. Since, as you note, the value of result$.recording is http://172.28.2.198:90/waveforms-mrcp1/2012/01/13/14/WF_EPBADGMGAAAFEHBDAAAAAAAA_20120113145113_595875.wav contains the URL string that points to the recording, it would be great to send that value to VXML Server as a String, rather than the IOS retrieving that URL.

Janine


--
To respond to this post, please click the following link:

<http://developer.cisco.com/web/cvp/forums/-/message_boards/view_message/5033625>

or simply reply to this email.

Hi Hemal,
 
That's exactly the problem. As you propose, it is possible to submit the audio files and then you can save it on your application server. But you will not get the Link (URL) of the file that is already saved on the MRCP Server.

Gilles
 
Gilles,
Try this:
<assign name="element_log_value" expr="application.lastresult$.recording"/>

Let me know, what it shows.

Hemal
.

Hello Gilles,
I was a good thread that you had started and quite important as well. At present we are looking for the same URL - So that it can be passed on to an Agent to hear the utterance [Which was recorded on Speech Server].
 
Were you able to get any resolution or conclusion ?
 
Thank you
Harshal
 
 
Gilles Caloz:
Hi Hemal,
 
That's exactly the problem. As you propose, it is possible to submit the audio files and then you can save it on your application server. But you will not get the Link (URL) of the file that is already saved on the MRCP Server.

Gilles
 

Gilles,
Try this:
<assign name="element_log_value" expr="application.lastresult$.recording"/>

Let me know, what it shows.

Hemal
.


Hi Harshal,
 
Unfortunately we don't get from Cisco a URL with the wav files - seems that such implementation are platform specific and with Cisco / CVP  seems we don't have such solution.
 
The only workaround for that is to develop your own code in order to get the the wav file locally via Submit/HTTP POST as stated in the VoiceXML 2.1 recommendation.
http://www.w3.org/TR/voicexml21/#sec-reco_reco
 
"Like recordings created using the <record> tag, utterance recordings can be submitted to a document server via HTTP POST using the namelist attribute of the <submit>, <data>, and <subdialog> elements. The enctype attribute must be set to "multipart/form-data" [RFC2388], and the method attribute must be set to "post". To provide flexibility in the naming of the variable that is submitted to the document server, the interpreter must allow the utterance recording to be assigned to and posted via any valid ECMAScript variable. "
Hope this help
Gilles
 
Fredrick Cook:
Hello Gilles,
I was a good thread that you had started and quite important as well. At present we are looking for the same URL - So that it can be passed on to an Agent to hear the utterance [Which was recorded on Speech Server].
 
Were you able to get any resolution or conclusion ?
 
Thank you
Harshal
 
 
Gilles Caloz:

Hi Hemal,
 
That's exactly the problem. As you propose, it is possible to submit the audio files and then you can save it on your application server. But you will not get the Link (URL) of the file that is already saved on the MRCP Server.

Gilles
 

Gilles,
Try this:
<assign name="element_log_value" expr="application.lastresult$.recording"/>

Let me know, what it shows.

Hemal
.