tSIP: showing window on BLF change

Lua "on BLF (dialog-info) change" script showing application window when contact(s) state changed to early or confirmed.
Function ApplicationShow() used here was added in tSIP 0.3.1.2.

local execSourceType = GetExecSourceType()	-- 7 = BLF state change
if execSourceType ~= 7 then
	print("Unexpected context for BLF state script!\n")
	return
end
local contactId = GetExecSourceId()			-- contact id in this context

local number, state = GetBlfState(contactId)

--[[
for state value:
enum dialog_info_status {
	DIALOG_INFO_UNKNOWN = 0,		///< not subscribed / subscription failed
	DIALOG_INFO_TERMINATED,
	DIALOG_INFO_EARLY,
	DIALOG_INFO_CONFIRMED
};
If contactId is out of range (e.g. there is no subscription) then value = -1 is returned.
This is unexpected in script running on event though.
]]

-- number might be used to limit contacts for which action is executed
-- print(string.format("on_blf_state: number %s state = %d\n", number, state))

if state == 2 or state == 3 then	-- early + confirmed states
	-- let's limit frequency
	local currentTime = os.time()
	print ("currentTime: " .. currentTime .. "\n")
	local variableName = "OnBlfStatePlaTime"
	local prevTime, prevTimeIsSet = GetVariable(variableName)
	if prevTimeIsSet ~= 0 then
		print(string.format("prevTime = %s\n", prevTime))
		prevTime = tonumber(prevTime)
		if currentTime - prevTime < 2 then
			-- skip action
			print("Skipping show - 2 seconds not passed\n")
			return
		else
			print(string.format("delta = %d\n", currentTime - prevTime))
		end
	else
		print("prevTime not set\n")
	end

	SetVariable(variableName, currentTime)
	ApplicationShow(false) -- show without grabbing focus
end

Back to howto list.