function all_done(s, how)
   io.write("done: " .. how .. "\n");
end

function my_cb(s, type, obj, arg)
   if (arg) then
      io.write("type: " .. type .. "\n" .. "arg: " .. arg .. "\n");
   else
      io.write("type: " .. type .. "\n");
   end

   if (type == "dtmf") then
      io.write("digit: [" .. obj['digit'] .. "]\nduration: [" .. obj['duration'] .. "]\n"); 

      if (obj['digit'] == "1") then
         return "pause";
      end

      if (obj['digit'] == "2") then
         return "seek:+3000";
      end

      if (obj['digit'] == "3") then
         return "seek:-3000";
      end

      if (obj['digit'] == "4") then
         return "seek:+3000";
      end

      if (obj['digit'] == "5") then
         return "speed:+1";
      end
      if (obj['digit'] == "6") then
         return "speed:0";
      end
      if (obj['digit'] == "7") then
         return "speed:-1";
      end

      if (obj['digit'] == "8") then
         return "stop";
      end

      if (obj['digit'] == "9") then
         return "break";
      end
   else
      io.write(obj:serialize("xml"));

   end
end

blah = "args";
session:setHangupHook("all_done");
session:setInputCallback("my_cb", "blah");
session:streamFile("/tmp/swimp.raw");