summaryrefslogtreecommitdiff
path: root/misc/freeswitch/scripts/acd_wait.lua
blob: fd16bea488d26c4a335f79043f829401645afdd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
-- Gemeinschaft 5: acd call handler
-- (c) AMOOMA GmbH 2012
-- 

local caller_uuid    = argv[1];
local acd_id        = tonumber(argv[2]);
local timeout       = tonumber(argv[3]);
local retry_timeout = tonumber(argv[4]);
local acd_caller_id = tonumber(argv[5]);

-- initialize logging
require 'common.log'
local log = common.log.Log:new{ prefix = '### [' .. caller_uuid .. '] ' };

if not acd_id then
  log:error('ACD_WAIT - automaticcalldistributor=', acd_id, ' not specified');
  return;
end

-- connect to database
require 'common.database'
local database = common.database.Database:new{ log = log }:connect();
if not database:connected() then
  log:critical('ACD_WAIT - database connect failed');
  database:release();
  return;
end

require 'dialplan.acd'
local acd = dialplan.acd.AutomaticCallDistributor:new{ log = log, database = database }:find_by_id(acd_id);

if not acd then
  log:error('ACD_WAIT - automaticcalldistributor=', acd_id, ' not found');
  database:release();
  return;
end

log:debug('ACD_WAIT ', acd_id, ' - start');
acd:wait_turn(caller_uuid, acd_caller_id, timeout, retry_timeout);
log:debug('ACD_WAIT ', acd_id, ' - end');

-- release database
if database then
  database:release();
end