The following code seems to always perform the session.recordFile(...) function late. And this leads to cutting off the first second of the recording. The problem goes away when you remove the session.execute("phrase","...") call. I even ran FreeSWITCH with the "-hp" mode to see if that changed things. No luck. Any ideas on what I can do other than setup a pre-recorded message to play? Cheers, Chris /* <macro name="sayit"> <input pattern="(.*)"> <match> <action function="speak-text" data="$1"/> </match> </input> </macro> */ function on_record_file(sess, type, obj, arg) { try { if (type=="dtmf") { dtmf += obj.digit; if (dtmf.indexOf("#") > -1) return false; } } catch (e) { console_log("error: " + e + "\n"); } return true; } var dtmf = ""; var FILELOC = "/var/sounds/"; var filename = session.uuid+".wav"; while (session.ready() && dtmf.indexOf("#") < 0) { session.execute("phrase", "sayit, Your life is a joke say something and press pound."); session.recordFile(FILELOC+filename,on_record_file,"",30,800,10); }