local count = 0; local tddstring = {}; function my_cb(s, type, obj, arg) if (arg) then freeswitch.console_log("info", "\ntype: " .. type .. "\n" .. "arg: " .. arg .. "\n"); else freeswitch.console_log("info", "\ntype: " .. type .. "\n"); end tdddata = obj:getHeader("TDD-Data"); count = 0; table.insert(tddstring, tdddata); freeswitch.console_log("info", obj:serialize("xml")); end function all_done(s, how) freeswitch.console_log("info", "done: " .. how .. "\n"); end function tablelength(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end blah = "args"; session:setHangupHook("all_done"); session:setInputCallback("my_cb", "blah"); session:answer(); session:execute("playback", "silence_stream://2000"); session:execute("spandsp_detect_tdd"); session:execute("spandsp_send_tdd", "Welcome to FreeSWITCH"); while session:ready() do session:streamFile("silence_stream://10000"); if (count > 0) then count = 0; if (tablelength(tddstring) > 0) then session:execute("spandsp_send_tdd", "You said: " .. table.concat(tddstring)); tddstring = {}; end end count = count + 1; end