Page 1 of 1

Saving a recording via ASP

Posted: Sat Apr 28, 2007 1:53 pm
by metroscript
Good afternoon to all,

I realize that you are not in the business of answering ASP questions, but I am wondering if you have any code examples that you could provide that illustrate other ways of saving a recording via ASP. Attached below is the current code I am using to record and save. The problem is that the system will throw an error if I try to record more than 25 seconds, even if I push out the maxtime to 120 seconds. All I want to do is take the recording and save it to a .vox file on my server with as little latency as possible.

Thanks so much,

Mike C.

Current files and what they do:
1. process_record_start.xml - records the user input
2. process_record_savevox.xml - gets the user input and saves it to a file
3. saverecording.asp - contains BuildUploadRequest which is used by process_record_savevox.xml


process_record_start.xml
<?xml version="1.0"?>
<vxml version="2.1">
<meta name="speak_exceptions" content="true"/>

<!--#include file="clsXMLConstants.asp"-->
<!--#include file="clsXMLDatabase.asp"-->
<!--#include file="clsXMLSessionManager.asp"-->
<!--#include file="clsXMLUtilities.asp"-->
<!--#include file="clsXMLVariables.asp"-->

<%
GetSessionValues

strFileCount = cint(strFileCount) + 1

SaveSessionValues
%>

<form id="record">
<grammar>1|2|3|4|5|6|7|8|9|0|"*"|"#"</grammar>
<record name="recording" beep="true" dtmfterm="true" maxtime="120s" finalsilence="5s" type="audio/basic">
<prompt bargein="false">
<% if ( cint(strFileCount) <= 1 ) then
'Log the dictation
'stored procedure: sp_insert_phone_in_log_record
'tables: phone_log
set conDatabase = Server.CreateObject("ADODB.Connection")
conDatabase.Open strConnection
objXMLUtilities.SetDictationStarted2 "L", strUserID, strFolderNumber, strCallID, 0
conDatabase.Close

%>
<voice>Record at the beep.</voice>
<% else %>
<voice>Continue at the beep.</voice>
<% end if %>
</prompt>
<filled>
<assign name="nextkey" expr="recording$.termchar"/>
<if cond="nextkey=='4'">
<submit next="process_record_savevox.xml?next=reviewrewind" method="post" namelist="recording" enctype="multipart/form-data"/>
<elseif cond="nextkey=='5'"/>
<submit next="process_record_savevox.xml?next=pause" method="post" namelist="recording" enctype="multipart/form-data"/>
<elseif cond="nextkey=='6'"/>
<submit next="process_record_savevox.xml?next=reviewforward" method="post" namelist="recording" enctype="multipart/form-data"/>
<elseif cond="nextkey=='7'"/>
<submit next="process_record_savevox.xml?next=reviewbeginning" method="post" namelist="recording" enctype="multipart/form-data"/>
<elseif cond="nextkey=='8'"/>
<% if (cstr(strCancelFlag) = "1") then %>
<submit next="process_record_savevox.xml?next=cancel" method="post" namelist="recording" enctype="multipart/form-data"/>
<% else %>
<submit next="process_record_savevox.xml?next=badcancel" method="post" namelist="recording" enctype="multipart/form-data"/>
<% end if %>
<elseif cond="nextkey=='*'"/>
<submit next="process_record_savevox.xml?next=hangup" method="post" namelist="recording" enctype="multipart/form-data"/>
<elseif cond="nextkey=='#'"/>
<submit next="process_record_savevox.xml?next=saveandreprompt" method="post" namelist="recording" enctype="multipart/form-data"/>
<elseif cond="nextkey=='0'"/>
<submit next="process_record_savevox.xml?next=help" method="post" namelist="recording" enctype="multipart/form-data"/>
<elseif cond="nextkey=='9'"/>
<submit next="process_record_savevox.xml?next=help" method="post" namelist="recording" enctype="multipart/form-data"/>
<else/>
<submit next="process_record_savevox.xml?next=saveandreprompt" method="post" namelist="recording" enctype="multipart/form-data"/>
</if>
</filled>
<catch event="nomatch noinput">
<prompt>Saving dictation. Expected another key press.</prompt>
<submit next="process_record_savevox.xml?next=saveandreprompt" method="post" namelist="recording" enctype="multipart/form-data"/>
</catch>
<catch event="connection.disconnect">
<submit next="process_record_savevox.xml?next=hangup" method="post" namelist="recording" enctype="multipart/form-data"/>
</catch>
</record>
<catch event="nomatch noinput">
<prompt>Saving dictation. Expected another key press.</prompt>
<submit next="process_record_savevox.xml?next=saveandreprompt" method="post" namelist="recording" enctype="multipart/form-data"/>
</catch>

<catch event="connection.disconnect">
<submit next="process_record_savevox.xml?next=hangup" method="post" namelist="recording" enctype="multipart/form-data"/>
</catch>

</form>

</vxml>

process_record_savevox.xml
<?xml version="1.0"?>
<vxml version="2.1">
<meta name="speak_exceptions" content="true"/>

<!--#include file="clsXMLConstants.asp"-->
<!--#include file="clsXMLDatabase.asp"-->
<!--#include file="clsXMLSaveRecording.asp"-->
<!--#include file="clsXMLSessionManager.asp"-->
<!--#include file="clsXMLUtilities.asp"-->
<!--#include file="clsXMLVariables.asp"-->

<%
dim strNext
strNext = Request("next")

GetSessionValues

strFileCount = trim(strFileCount)

if strFileCount = "" then
strFileCount = "1"
end if

dim strTempSaveFolder
strTempSaveFolder = "m:\WebSites\metroscript_stage\tempupload\tempvoicefiles\" & session("foldernumber") & "\"

byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)

Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")

BuildUploadRequest RequestBin

picture = UploadRequest.Item("recording").Item("Value")

Filename = "phone_file"

Set FileSystem = CreateObject ("Scripting.FileSystemObject" )
Set WaveFile = FileSystem.CreateTextFile ( strTempSaveFolder & filename & "_" & strFileCount & ".vox")

WaveFile.Write getString(picture)
WaveFile.Close

Set FileSystem = Nothing
Set WaveFile = Nothing

SaveSessionValues
%>

<% if ( strNext = "pause" ) then %>
<menu id="pausemenu">
<property name="inputmodes" value="dtmf"/>
<prompt>
<voice>
Enter
<enumerate><value expr="_dtmf"/> <value expr="_prompt"/>, <break size="small"/></enumerate>
</voice>
</prompt>
<choice dtmf="5" next="process_record_start.xml">to continue</choice>
</menu>
<% elseif ( strNext = "cancel" ) then %>
<menu id="pausemenu">
<property name="inputmodes" value="dtmf"/>
<prompt>
<voice>
Enter
<enumerate><value expr="_dtmf"/> <value expr="_prompt"/>, <break size="small"/></enumerate>
</voice>
</prompt>
<choice dtmf="8" next="process_record_cancel.xml">to verify the cancellation</choice>
<choice dtmf="1" next="process_record_start.xml">to continue recording</choice>
<choice dtmf="2" next="process_record_start.xml">to continue recording</choice>
<choice dtmf="4" next="process_combine_voxs.xml?next=reviewrewind">to rewind ten seconds and review dictation</choice>
<choice dtmf="7" next="process_combine_voxs.xml?next=reviewbeginning">to rewind to the beginning and review dictation</choice>
<choice dtmf="*" next="process_combine_voxs.xml?next=hangup">to save and hangup</choice>
<choice dtmf="0" next="process_combine_voxs.xml?next=saveandreprompt">to save and record another dictation</choice>
</menu>
<% elseif ( strNext = "badcancel" ) then %>
<menu id="badcancelmenu">
<property name="inputmodes" value="dtmf"/>
<prompt>
<voice>The cancel feature is not activated for your account. Please contact your system administrator</voice>
<voice>
Enter
<enumerate><value expr="_dtmf"/> <value expr="_prompt"/>, <break size="small"/></enumerate>
</voice>
</prompt>
<choice dtmf="1" next="process_record_start.xml">to continue recording</choice>
<choice dtmf="2" next="process_record_start.xml">to continue recording</choice>
<choice dtmf="4" next="process_combine_voxs.xml?next=reviewrewind">to rewind ten seconds and review dictation</choice>
<choice dtmf="7" next="process_combine_voxs.xml?next=reviewbeginning">to rewind to the beginning and review dictation</choice>
<choice dtmf="*" next="process_combine_voxs.xml?next=hangup">to save and hangup</choice>
<choice dtmf="0" next="process_combine_voxs.xml?next=saveandreprompt">to save and record another dictation</choice>
</menu>
<% elseif ( strNext = "reviewrewind" ) then %>
<form id="rewind">
<block>
<submit next="process_combine_voxs.xml?next=reviewrewind" method="post"/>
</block>
</form>
<% elseif ( strNext = "reviewforward" ) then %>
<form id="forward">
<block>
<submit next="process_combine_voxs.xml?next=reviewforward" method="post"/>
</block>
</form>
<% elseif ( strNext = "reviewbeginning" ) then %>
<form id="beginning">
<block>
<submit next="process_combine_voxs.xml?next=reviewbeginning" method="post"/>
</block>
</form>
<% elseif ( strNext = "saveandreprompt" ) then %>
<form id="save">
<block>
<submit next="process_combine_voxs.xml?next=saveandreprompt" method="post"/>
</block>
</form>
<% elseif ( strNext = "hangup" ) then %>
<form id="finish">
<block>
<submit next="process_combine_voxs.xml?next=hangup" method="post"/>
</block>
</form>
<% elseif ( strNext = "help" ) then %>
<form id="finish">
<block>
<submit next="process_combine_voxs.xml?next=help" method="post"/>
</block>
</form>
<% end if %>

<form id="debug">
<block>
<prompt>
Next <% = strNext %>.
</prompt>
<exit/>
</block>
</form>

<form id="debug2">
<block>
<prompt>
User ID <% = strUserID %>.
User Name <% = strUserName %>.
Confirm <% = strConfirmNum %>.
Call ID <% = strCallID %>.
Cancel Flag <% = strCancelFlag %>.
Stat Level <% = strStatLevel %>.
Start <% = strPositionStart %>.
End <% = strPositionEnd %>.
Folder <% = strFolderNumber %>.
File Count <% = strFileCount %>.
Folder List <% = strFolderList %>.
Recording Flag <% = strRecordingFlag %>.
</prompt>
<exit/>
</block>
</form>

</vxml>

saverecording.asp
<%
Dim Filename
Dim FileSystem
Dim WaveFile
Dim binRead
Dim byteCount

'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function

'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function

Sub BuildUploadRequest(RequestBin)

'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)


'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))

'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")


'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,_
getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile=InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If

'Add content to dictionary object
UploadControl.Add "Value" , Value
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
%>

Here is the error I was getting after 25 seconds

Posted: Sat Apr 28, 2007 1:58 pm
by metroscript
Sat 28 Apr 2007 01:02:02 PM EDT:
Call Start Event: ANII 6105849795 DNIS 3975 VURL http://hosting.plumgroup.com/plumvp/director.vxml
DocumentParser::FetchDocument()
DocumentParser::FetchDocument(http://hosting.plumgroup.com/plumvp/director.vxml)
Cache Hit: http://hosting.plumgroup.com/plumvp/director.vxml
VXI::var_element(name="dnis" expr = "session.telephone.dnis")
DocumentParser::FetchDocument(director.php)
Posted form data is URL encoded
Attempting to fetch http://hosting.plumgroup.com/plumvp/director.php
Click here to view saved VoiceXML script
DocumentParser::FetchDocument(http://stage.metroscript.com/voicexml/default_1.xml)
Cache Miss: http://stage.metroscript.com/voicexml/default_1.xml
Attempting to fetch http://stage.metroscript.com/voicexml/default_1.xml
Click here to view saved VoiceXML script
Loading Builtin grammar: builtin:dtmf/digits?length=6
VXI::queue_prompts()
bargein set to true
INPUTMODES set to "DTMF"
Audio segment added to prompt queue from TTS application/synthesis+ssml for:
---------
<?xml version='1.0'?><speak><voice><speak> Welcome to the Metro Script Staging Environment. Please enter your i d.</speak></voice></speak>
---------
VXI::field_element - activating grammars for form = 'getuserid' formitem = 'username'
VXI::do_recognition()
PromptManager::Play()
Newly queued prompts are now being played

Sat 28 Apr 2007 01:02:08 PM EDT:
dtmf input: 693764
Found grammar match
hypothesis #0: 693764 (0.9990)
DocumentParser::FetchDocument(check_user_id.xml)
Posted form data is URL encoded
Attempting to fetch http://stage.metroscript.com/voicexml/check_user_id.xml
Click here to view saved VoiceXML script
Loading Builtin grammar: builtin:dtmf/digits?length=4
VXI::var_element(name="userid" expr = "617")
VXI::var_element(name="username" expr = "693764")
VXI::var_element(name="password" expr = "6935")
VXI::var_element(name="fullname" expr = "'Doctor Doe'")
VXI::var_element(name="userlevel" expr = "'6'")
VXI::queue_prompts()
bargein set to true
INPUTMODES set to "DTMF"
Audio segment added to prompt queue from TTS application/synthesis+ssml for:
---------
<?xml version='1.0'?><speak><voice><speak> Please enter your password.</speak></voice></speak>
---------
VXI::field_element - activating grammars for form = 'getpassword' formitem = 'newpassword'
VXI::do_recognition()
PromptManager::Play()
Newly queued prompts are now being played

Sat 28 Apr 2007 01:02:13 PM EDT:
dtmf input: 6935
Found grammar match
hypothesis #0: 6935 (0.9990)
DocumentParser::FetchDocument(check_password.xml)
Posted form data is URL encoded
Attempting to fetch http://stage.metroscript.com/voicexml/c ... ssword.xml
Click here to view saved VoiceXML script
VXI::var_element(name="userid" expr = "617")
VXI::var_element(name="password" expr = "6935")
VXI::var_element(name="username" expr = "693764")
VXI::var_element(name="userlevel" expr = "6")
VXI::var_element(name="confirmnum" expr = "1130")
VXI::var_element(name="callid" expr = "918")
VXI::var_element(name="cancelflag" expr = "1")
VXI::var_element(name="folderlist" expr = "'0'")
bargein set to true
INPUTMODES set to "DTMF VOICE"
Audio segment added to prompt queue from TTS application/synthesis+ssml for:
---------
<?xml version='1.0'?><speak><voice><speak> Welcome back Doctor Doe. Confirmation number <say-as interpret-as="number" format="digits"> 1130</say-as> .</speak></voice></speak>
---------
Newly queued prompts are now being played

Sat 28 Apr 2007 01:02:15 PM EDT:
DocumentParser::FetchDocument(main_menu_setup.xml)
Posted form data is URL encoded
Attempting to fetch http://stage.metroscript.com/voicexml/m ... _setup.xml
Click here to view saved VoiceXML script
DocumentParser::FetchDocument(main_menu.xml)
Cache Miss: http://stage.metroscript.com/voicexml/main_menu.xml
Attempting to fetch http://stage.metroscript.com/voicexml/main_menu.xml
Click here to view saved VoiceXML script
GrammarManager::CreateGrammarFromString(application/x-jsgf):
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
(to begin normal recording)
</grammar>

---------

GrammarManager::CreateGrammarFromString(application/x-jsgf):
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
(1)
</grammar>

---------

GrammarManager::CreateGrammarFromString(application/x-jsgf):
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
(to begin stat recording)
</grammar>

---------

GrammarManager::CreateGrammarFromString(application/x-jsgf):
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
(2)
</grammar>

---------

GrammarManager::CreateGrammarFromString(application/x-jsgf):
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
(to end the call)
</grammar>

---------

GrammarManager::CreateGrammarFromString(application/x-jsgf):
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
("*")
</grammar>

---------

GrammarManager::CreateGrammarFromString(application/x-jsgf):
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
(for help)
</grammar>

---------

GrammarManager::CreateGrammarFromString(application/x-jsgf):
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
(0)
</grammar>

---------

VXI::queue_prompts()
bargein set to true
INPUTMODES set to "DTMF"
Audio segment added to prompt queue from TTS application/synthesis+ssml for:
---------
<?xml version='1.0'?><speak><voice><speak>
Enter
1 to begin normal recording , <break size="small"/> 2 to begin stat recording , <break size="small"/> * to end the call , <break size="small"/> 0 for help , <break size="small"/></speak></voice></speak>
---------
VXI::do_recognition()
PromptManager::Play()
Newly queued prompts are now being played

Sat 28 Apr 2007 01:02:18 PM EDT:
dtmf input: 1
Found grammar match
hypothesis #0: 1 (0.9990)
VXI::var_element(name="statlevel" expr = "0")
DocumentParser::FetchDocument(process_record_new.xml)
Posted form data is URL encoded
Attempting to fetch http://stage.metroscript.com/voicexml/p ... rd_new.xml

Sat 28 Apr 2007 01:02:19 PM EDT:
Click here to view saved VoiceXML script
DocumentParser::FetchDocument(process_record_start.xml)
Cache Miss: http://stage.metroscript.com/voicexml/p ... _start.xml
Attempting to fetch http://stage.metroscript.com/voicexml/p ... _start.xml
Click here to view saved VoiceXML script
GrammarManager::CreateGrammarFromString():
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="voice">
1|2|3|4|5|6|7|8|9|0|"*"|"#"
</grammar>

---------

GrammarManager::CreateGrammarFromString():
---------

<?xml version='1.0'?>
<grammar xml:lang="en-us" mode="dtmf">
1|2|3|4|5|6|7|8|9|0|"*"|"#"
</grammar>

---------

VXI::queue_prompts()
bargein set to false
INPUTMODES set to "DTMF VOICE"
Audio segment added to prompt queue from TTS application/synthesis+ssml for:
---------
<?xml version='1.0'?><speak><voice><speak> Record at the beep.</speak></voice></speak>
---------
Newly queued prompts are now being played
bargein set to true
Cache Miss: file:///usr/local/plumvp/resources/beep.ulaw
Attempting to fetch file:///usr/local/plumvp/resources/beep.ulaw
Audio segment from the URL resources/beep.ulaw added to prompt queue
PromptManager::Play()

Sat 28 Apr 2007 01:02:20 PM EDT:
Newly queued prompts are now being played

Sat 28 Apr 2007 01:02:53 PM EDT:
VXI::assign_element(name="nextkey" expr = "recording$.termchar"
DocumentParser::FetchDocument(process_record_savevox.xml?next=hangup)
Posting binary content "recording" of size 237824 and type "audio/basic"
Posted form data is multipart encoded
Attempting to fetch http://stage.metroscript.com/voicexml/p ... ext=hangup
Click here to view saved VoiceXML script
DocumentParser::FetchDocument - Parse error in file "process_record_savevox.xml?next=hangup", line 5, column 7 - Unknown element 'font'
errno: 205 uri process_record_savevox.xml?next=hangup
received event: error.badfetch
bargein set to true
INPUTMODES set to "DTMF VOICE"
Audio segment added to prompt queue from TTS text/plain;charset=wchar_t for:
---------

A serious error of type
---------
bargein set to true
INPUTMODES set to "DTMF VOICE"
Audio segment added to prompt queue from TTS text/plain;charset=wchar_t for:
---------
error.badfetch
---------
bargein set to true
INPUTMODES set to "DTMF VOICE"
Audio segment added to prompt queue from TTS text/plain;charset=wchar_t for:
---------
has occurred. Exiting.
---------
VXI::exit_element()
Newly queued prompts are now being played

Sat 28 Apr 2007 01:02:59 PM EDT:
Call End Event
Ending session
Ending Session On Channel 2

Posted: Sat Apr 28, 2007 2:29 pm
by metroscript
One last piece of information, this is a demo account if that makes a difference.

IVR developer provides link for ASP issue

Posted: Mon Apr 30, 2007 4:31 pm
by support
Hi,

It's possible your non IVR question might have been answered here.

Let us know if this does not address your question.

Regards,
Plum Support

Posted: Tue May 01, 2007 1:44 pm
by metroscript
Unfortunately, that link was not helpful for my situation. My main issue is that my application works perfectly fine if the recording is less than 25 seconds long. If I record for more than 25 seconds, I get the error. What could possibly cause an error after x amount of seconds?

Thanks,

Mike C.

Nothing specific to IVR platform that would cause ASP issue

Posted: Tue May 01, 2007 2:30 pm
by support
Hello,

Unfortunately we do not have any ASP.NET expertise in-house. Perhaps this is an IVR issue with the maximum file upload sizes that your web server is configured to support? Beyond that suggestion we recommend searching the internet. This is a standard "multipart/form-data" file upload, so any example IVR code or configuration changes you find will work. There is nothing specific to the IVR platform that would be causing this.

Regards,
Plum Support

Posted: Wed May 02, 2007 11:48 am
by metroscript
Thanks for the feedback. Just for the record, I am using classic ASP, and not ASP.net. I googled this for a good two days and everything I attempted did not help.

Are there any time or file size settings with a development acct that would hinder me from recording something longer than 25 seconds?

Thanks,

Mike C.

Demo accounts are fully functioning IVR hosting accounts

Posted: Wed May 02, 2007 11:55 am
by support
Hello,

No, there are no restrictions related to recording size or uploads with the IVR demo accounts. Demo accounts are fully functioning IVR hosting accounts with limited minutes and life. They allow you to fully exercise all of the supported VoiceXML features of our IVR production hosting accounts without restrictions.

Regards,
Plum Support

An Update

Posted: Thu May 10, 2007 4:00 pm
by metroscript
Good afternoon,

Just to give you a little update. I was able to implement a 3rd party software(Persits) for the uploading functionality. This alleviated the latency issue with our home-grown upload component. Also, we are now able to upload for longer than 25 seconds. The problem is that we now can only create an upload file less than 2 minutes (~1 meg). We tried several different settings on both sides(IIS and Voicexml) to increase the amount of time, but nothing was successful. On the IIS side, we tried modifying several metabase settings such as ASPScriptTimeout, ASPBufferingLimit, and ASPMaxRequestEntityAllowed, and nothing increased our file length past 2 minutes. On the IIS side, we also increase the script timeout to 8 minutes via the ScriptTimeout property. On the Voicexml side within the record tag, we increased our maxtime to 4000s. Within the submit tag, we increased the fetchtimeout to 400s. Also in the submit tag, we provided the full paths for all xml files, instead of relative paths. Still, none of these changes allowed us to save a voice file greater than 2 minutes. Is there something we haven't tried that you can suggest? Also, you said there are no restrictions related to recording size for a demo account, but then said they have limited minutes and life. What is the limit for minutes for a demo account; is it 2 minutes?

Any help would be greatly appreciated. The faster we can get this resolved, the faster we'll be joining Plum:)

Thanks!

Mike C.

time limit on IVR demo accounts

Posted: Fri May 11, 2007 11:06 am
by support
The time limit on IVR demo accounts relates to the aggregate number of minutes available per month. This number is far larger than 2 minutes.

Setting the maxtime attribute of the record tag to 4000s and fetchtimeout to 400s should be the only changes you have to make on the VoiceXML side.

Posted: Sat May 12, 2007 9:44 am
by metroscript
Thanks. I guess I'll keep hunting for the answer.