[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