]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
create example of using the inputcallback to influence the playback of a file.
authorBrian West <brian@freeswitch.org>
Wed, 10 Sep 2008 14:05:48 +0000 (14:05 +0000)
committerBrian West <brian@freeswitch.org>
Wed, 10 Sep 2008 14:05:48 +0000 (14:05 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9501 d0543943-73ff-0310-b7d9-9358b9ac24b2

scripts/lua/callback.lua [new file with mode: 0644]

diff --git a/scripts/lua/callback.lua b/scripts/lua/callback.lua
new file mode 100644 (file)
index 0000000..6e46699
--- /dev/null
@@ -0,0 +1,57 @@
+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");