From dcd382817b3c2c015378002a7d921b70d86dc817 Mon Sep 17 00:00:00 2001 From: Alexey Melnichuk Date: Tue, 6 Oct 2015 11:05:15 +0400 Subject: [PATCH] Fix. use timeout handler in Enterprise ring group see https://github.com/moteus/fusionpbx/commit/e5a0134ec6c36e44d0828301b20c9c194c25cd78#commitcomment-13601198 --- .../install/scripts/app/ring_groups/index.lua | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/resources/install/scripts/app/ring_groups/index.lua b/resources/install/scripts/app/ring_groups/index.lua index 545f5ecc68..bebe6817db 100644 --- a/resources/install/scripts/app/ring_groups/index.lua +++ b/resources/install/scripts/app/ring_groups/index.lua @@ -626,36 +626,27 @@ local log = require "resources.functions.log".ring_group app_data = app_data:gsub("%]", "}"); end freeswitch.consoleLog("NOTICE", "[ring group] app_data: "..app_data.."\n"); + -- log.noticef("bridge begin: originate_disposition:%s answered:%s ready:%s bridged:%s", session:getVariable("originate_disposition"), session:answered() and "true" or "false", session:ready() and "true" or "false", session:bridged() and "true" or "false") session:execute("bridge", app_data); -- log.noticef("bridge done: originate_disposition:%s answered:%s ready:%s bridged:%s", session:getVariable("originate_disposition"), session:answered() and "true" or "false", session:ready() and "true" or "false", session:bridged() and "true" or "false") end --timeout destination if (app_data ~= nil) then - if ring_group_strategy == "enterprise" - and ( true - --- I see 2 errors here `failure` and `PICKED_OFF` - --- but they be more. I think check `answered` is enough. - -- or session:getVariable("originate_disposition") == "failure" - -- or session:getVariable("originate_disposition") == "PICKED_OFF" - ) - and session:answered() then - -- for enterprise calls when intercept we get "failure" but session answered - return - end - - if (session:getVariable("originate_disposition") == "ALLOTTED_TIMEOUT" + if session:ready() and ( + session:getVariable("originate_disposition") == "ALLOTTED_TIMEOUT" or session:getVariable("originate_disposition") == "NO_ANSWER" or session:getVariable("originate_disposition") == "NO_USER_RESPONSE" or session:getVariable("originate_disposition") == "USER_NOT_REGISTERED" or session:getVariable("originate_disposition") == "NORMAL_TEMPORARY_FAILURE" or session:getVariable("originate_disposition") == "NO_ROUTE_DESTINATION" or session:getVariable("originate_disposition") == "USER_BUSY" - or session:getVariable("originate_disposition") == "failure") then - --send missed call notification - missed(); - --execute the time out action - session:execute(ring_group_timeout_app, ring_group_timeout_data); + or session:getVariable("originate_disposition") == "failure" + ) then + --send missed call notification + missed(); + --execute the time out action + session:execute(ring_group_timeout_app, ring_group_timeout_data); end else if (ring_group_timeout_app ~= nil) then