[Freeswitch-users] session:recordFile(-) always creates empty wav file during outbound IVR call
king2kin
xing2kin at yahoo.com
Wed Aug 31 21:52:19 MSD 2011
Hi folks,
With Lua script and/or originate command, I have tried recording a message file during outbound IVR call over and over, session:recordFile(-) inside Lua script does create a wav file during each of my testings but the recorded audio file is always empty.
However, session:recordFile(-) works well for inbound IVR call.
I tried the session:recordFile(-) via Lua script in three ways:
1. run lua script "test_outcall_ivr.lua" at freeswitch command-line:
luarun test_outcall_ivr.lua
-- [test_outcall_ivr.lua]
{
local sessionx = freeswitch.Session("sofia/gateway/sip.tpad.com/1726011", session)
-- Set the path separator
pathsep = '/'
-- Windows users do this instead:
-- pathsep = '\'
-- Answer the call
-- sessionx:answer()
--Create a string with path and filename of a sound file
prompt = "ivr" .. pathsep .. "ivr-welcome_to_freeswitch.wav"
-- Print a log message
freeswitch.consoleLog("INFO","Prompt file is '" .. prompt .. "'\n")
--Play the prompt
sessionx:streamFile(prompt)
-- Record record file
sessionx:streamFile("phrase:voicemail_record_message")
-- Play a ""bong"" tone prior to recording
sessionx:streamFile("tone_stream://v=-7;%(100,0,941.0,1477.0);v=-7;>=2;+=.1;%(1000, 0, 640)")
-- record a message
filename = sessionx:getVariable('sounds_dir') .. pathsep .. "123.wav"
sessionx:recordFile(filename,300,100,10)
-- play back the recorded msg
sessionx:streamFile(filename)
-- Hangup
sessionx:hangup()
}
2. I also tried it differently by submitting the following commands at the FreeSwitch command-line interface:
originate user/1005 &transfer(8887 xml default)
originate user/1005 &lua('test1.lua')
originate sofia/gateway/sip.tpad.com/1726011 &lua('test1.lua')
-- [test1.lua]
{
-- Set the path separator
pathsep = '/'
-- Windows users do this instead:
-- pathsep = '\'
--Answer the call
session:answer()
--Create a string with path and filename of a sound file
prompt = "ivr" .. pathsep .. "ivr-welcome_to_freeswitch.wav"
-- Print a log message
freeswitch.consoleLog("INFO","Prompt file is '" .. prompt .. "'\n")
--Play the prompt
session:streamFile(prompt)
-- Record record file
session:streamFile("phrase:voicemail_record_message")
-- Play a ""bong"" tone prior to recording
session:streamFile("tone_stream://v=-7;%(100,0,941.0,1477.0);v=-7;>=2;+=.1;%(1000, 0, 640)")
-- record a message
filename = session:getVariable('sounds_dir') .. pathsep .. "123.wav"
session:recordFile(filename,300,100,10)
-- play back the recorded msg
session:streamFile(filename)
-- Hangup
session:hangup()
}
-- [xml dialplan for extension 8887]:
{
<extension name="Simple Lua Test">
<condition field="destination_number" expression="^(8887)$">
<action application="set" data="record_waste_resources=true"/>
<action application="lua" data="test1.lua"/>
</condition>
</extension>
}
======================================================
For all the above testing cases, session:recordFile(-) always creates an empty wav file for each of outbound IVR calls, however, if I make an inbound IVR call to run Lua script "test1.lua", session:recordFile(-) always works perfect to generate a normal wav file.
So, what's wrong with [session:recordFile(-)] during an outbound IVR call?
x.k.
Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users
mailing list