tSIP softphone: Lua script examples
Random Lua scripts. See "script" button reference for general description and list of available functions.
Quick introduction to Lua: http://tylerneylon.com/a/learn-lua/.
on_call_disconnected_play.lua ("on call state" script)
-- "on call state": beep when call ends if (only if) call was established
call_state = GetCallState()
call_incoming = IsCallIncoming()
if call_state == 6 then -- CALL_STATE_ESTABLISHED
SetVariable("CallEstablished", "does-not-matter-what-i-enter-here")
elseif call_state == 0 then -- CALL_STATE_CLOSED
local dummy, isset = GetVariable("CallEstablished")
ClearVariable("CallEstablished")
if (isset ~= 0) then
-- Beep only if call was established previously
Beep(392, 350)
Sleep(50)
Beep(392, 350)
Sleep(50)
Beep(392, 350)
Sleep(50)
Beep(311.1, 250)
Sleep(50)
Beep(466.2, 250)
Sleep(50)
Beep(392, 350)
Sleep(50)
Beep(311.1, 250)
Sleep(50)
Beep(466, 250)
Sleep(50)
Beep(392, 700)
end
end
Count number of times script was executed ("button" script)
-- This script counts number of times it was executed
local count, var_isset = GetVariable("runcount")
if (var_isset == 0) then
count = 0
else
count = tonumber(count)
end
count = count + 1
SetVariable("runcount", count)
print(string.format("Script executed %d time(s)\n", count))
Send DTMFs automatically to e.g. enter conference room ("button" script)
-- user config
number = "sip:192.168.1.85:5065" -- or regular phone number
dtmf = "1234"
-- end of user config
Call(number)
for i=1, 20, 1
do
if (i == 20) then
print("Timed out waiting for confirmed state\n")
break;
end
Sleep(300)
call_state = GetCallState()
if call_state == 6 then
-- CALL_STATE_ESTABLISHED
Sleep(2000)
SendDtmf("1234")
break
elseif call_state == 0 then
-- CALL_STATE_CLOSED
print("End of call\n")
break;
end
end
print("End of script\n")
Change tray icon depending on call state ("on call state")
callState = GetCallState()
if callState == 0 then
SetTrayIcon("icon_closed.bmp")
elseif callState == 1 then
SetTrayIcon("icon_incoming.bmp")
elseif callState == 2 then
SetTrayIcon("icon_outgoing.bmp")
elseif callState == 3 then
SetTrayIcon("icon_trying.bmp")
elseif callState == 4 then
SetTrayIcon("icon_ringing.bmp")
elseif callState == 5 then
SetTrayIcon("icon_progress.bmp")
elseif callState == 6 then
SetTrayIcon("icon_established.bmp")
end
Lua modules / including another script
-- scriptTest.lua from scripts directory
local M = {} -- public interface
local x = 1 -- private
function M.testFunction()
print(string.format("Test function called, x = %d\n", x))
end
return M
-- end of scriptTest.lua
-- main.lua
local scriptTest = require("scripts.scriptTest")
print("Trying to call testFunction...\n")
scriptTest.testFunction()
-- end of main.lua
Send record file by mail - to be combined with mailbox
call_state = GetCallState()
if call_state == 0 then -- CALL_STATE_CLOSED
local fileName = GetRecordFile()
if fileName ~= "" then
-- check file size, skip small (probably empty - only announcement) files
local file = io.open(fileName, "r")
local fileSize = file:seek("end")
file:close()
if (fileSize < 8 * 2 * 8000) then -- 8 seconds * 2B/sample * 8kS/s
print(string.format("Skipping file %s (size = %d)\n", fileName, fileSize))
else
print(string.format("Sending mail with file %s (size = %d)\n", fileName, fileSize))
-- TODO: replace with real command line mail client
local params = "send " .. fileName
ShellExecute("open", "some_sendmail.exe", params, nil, 1)
end
end
end
Set call codec name as button caption ("on call state" event script)
-- configuration
local buttonId = 0 -- button to display codec name on
-- end of configuration
local callState = GetCallState()
if callState == 6 then -- ESTABLISHED
local codecName = GetCallCodecName();
local caption = string.format(" %s", codecName)
SetButtonCaption(buttonId, caption)
elseif callState == 0 then -- CLOSED
SetButtonCaption(buttonId, " ----")
end
Back to howto list