[Freeswitch-users] session:recordFile(-) always creates empty wav file during outbound IVR call

king2kin xing2kin at yahoo.com
Thu Sep 1 10:38:25 MSD 2011


Anthony,

Thank you again for helping me!

> Does the empty file contain silence
> that corresponds to the duration
> of the time it's recording?

No! It's always an empty wav file with its file size 68 bytes, even don't contain any silence samples; 

When I open the wav file with audio tool (e.g. wavesurfer.exe or windows media player), I don't see or hear it contains any single sample of audio data. Probably it contains only the wave header structure of ms wav file format because its size is always 68 bytes by checking its file properties on windows system. By the way, I tried two versions of FreeSwitch (1.0-head-2011-05-23 and 1.0-head-2011-08-31) on windows server 2003. 

> Are you producing the audio yourself into the recording and

Yes, I produced audio myself each time by talking to microphone via X-Lite.
Again, there is never a problem in session:recordFile(-) during any inbound IVR call which may even run the same Lua script as the outbound IVR call.

> can you
> verify with a pcap that there is actually any audio to
> record?
> 
sorry, I have no idea on 'pcap' and don't know to how to make use of it for this debug.

I basically think there is probably a BUG in session:recordFile(-) for outbound IVR call.

Could you please do me a favour trying the following simple outbound IVR call on your site to see if session:recordFile(-) really has a BUG for outbound IVR call?

originate /sofia/gateway/mygateway/xxxx &lua('test.lua')
or
originate user/1005  &lua('test.lua')

where "test.lua" is defined as follows:

{
-- test.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)")

filename = session:getVariable('sounds_dir') .. pathsep .. "123.wav"
session:recordFile(filename,300,100,10)
session:streamFile(filename)

goodbye = "voicemail" .. pathsep .. "vm-goodbye.wav"
session:sleep(250)
session:streamFile(goodbye)

session:hangup()
}


--- On Wed, 8/31/11, Anthony Minessale <anthony.minessale at gmail.com> wrote:

> From: Anthony Minessale <anthony.minessale at gmail.com>
> Subject: Re: [Freeswitch-users] session:recordFile(-) always creates empty wav file during outbound IVR call
> To: "FreeSWITCH Users Help" <freeswitch-users at lists.freeswitch.org>
> Date: Wednesday, August 31, 2011, 7:46 PM

> Does the empty file contain silence
> that corresponds to the duration
> of the time it's recording?
> Are you producing the audio yourself into the recording and
> can you
> verify with a pcap that there is actually any audio to
> record?
> 
> 
> On Wed, Aug 31, 2011 at 9:21 PM, king2kin <xing2kin at yahoo.com>
> wrote:
> > Anthony,
> >
> > Thank you for help. I tried outbound IVR call in
> multiple ways again based on your advice,
>  session:recordFile(-) still doesn't work normally, still
> created empty wav file .
> >
> > Could anyone please give me a hand on FreeSwitch
> Record? It always fails to record audio file during any
> outbound IVR call (auto dialer) although it works well
> during any inbound ivr call.
> >
> > Session:streamFile(-) works well to play back prompt
> files, dtmf keypress also works, ... during outbound ivr
> call.
> >
> > x.k.
> >
> > --- On Wed, 8/31/11, Anthony Minessale <anthony.minessale at gmail.com>
> wrote:
> >
> >> From: Anthony Minessale <anthony.minessale at gmail.com>
> >> Subject: Re: [Freeswitch-users]
> session:recordFile(-) always creates empty wav file during
> outbound IVR call
> >> To: "FreeSWITCH Users Help" <freeswitch-users at lists.freeswitch.org>
> >> Date: Wednesday, August 31, 2011, 12:17 PM
> >> try this dial string instead
> >>
> >>
> {ignore_early_media=true}sofia/gateway/sip.tpad.com/1726011
> >>
> >> On Wed, Aug 31, 2011 at 12:52 PM, king2kin <xing2kin at yahoo.com>
> >> wrote:
> >> > 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.
> >> >
> >> >
> >> > FreeSWITCH-users mailing list
> >> > FreeSWITCH-users at lists.freeswitch.org
> >> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> >> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> >> > http://www.freeswitch.org
> >> >
> >>
> >>
> >>
> >> --
> >> Anthony Minessale II
> >>
> >> FreeSWITCH http://www.freeswitch.org/
> >> ClueCon http://www.cluecon.com/
> >> Twitter: http://twitter.com/FreeSWITCH_wire
> >>
> >> AIM: anthm
> >> MSN:anthony_minessale at hotmail.com
> >> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
> >> IRC: irc.freenode.net #freeswitch
> >>
> >> FreeSWITCH Developer Conference
> >> sip:888 at conference.freeswitch.org
> >> googletalk:conf+888 at conference.freeswitch.org
> >> pstn:+19193869900
> >>
> >>
> >> FreeSWITCH-users mailing list
> >> FreeSWITCH-users at lists.freeswitch.org
> >> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> >> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> >> http://www.freeswitch.org
> >>
> >
> >
> > FreeSWITCH-users mailing list
> > FreeSWITCH-users at lists.freeswitch.org
> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> > http://www.freeswitch.org
> >
> 
> 
> 
> -- 
> Anthony Minessale II
> 
> FreeSWITCH http://www.freeswitch.org/
> ClueCon http://www.cluecon.com/
> Twitter: http://twitter.com/FreeSWITCH_wire
> 
> AIM: anthm
> MSN:anthony_minessale at hotmail.com
> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
> IRC: irc.freenode.net #freeswitch
> 
> FreeSWITCH Developer Conference
> sip:888 at conference.freeswitch.org
> googletalk:conf+888 at conference.freeswitch.org
> pstn:+19193869900
> 
> 
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
> 



Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users mailing list