diff --git a/submodules/strategy/strategy.js b/submodules/strategy/strategy.js index 2c46f47..6ee1944 100644 --- a/submodules/strategy/strategy.js +++ b/submodules/strategy/strategy.js @@ -1661,11 +1661,12 @@ define(function(require){ accountId: self.accountId, filters: { 'has_value':'type', - 'key_missing':'owner_id' + 'key_missing':['owner_id', 'group_id'] } }, success: function(data, status) { - var parallelRequests = {}; + var parallelRequests = {}, + menuRequests = {}; _.each(data.data, function(val, key) { if(val.type === "main" || val.type === "conference") @@ -1712,85 +1713,141 @@ define(function(require){ } _.each(self.subCallflowsLabel, function(val) { - if(!parallelRequests[val]) { - parallelRequests[val] = function(callback) { + var menuName = val+'Menu'; + if(!parallelRequests[menuName]) { + menuRequests[menuName] = function(callback) { self.callApi({ - resource: 'callflow.create', + resource: 'menu.create', data: { accountId: self.accountId, data: { - contact_list: { - exclude: false + name: menuName, + record_pin: monster.util.randomString(4, '1234567890'), + media: { + exit_media: true, + invalid_media: true, + transfer_media: true }, - numbers: [val], - type: "main", - flow: { - children: {}, - data: {}, - module: "temporal_route" - } + retries: 3, + max_extension_length: 4, + type: "main" } }, - success: function(data, status) { - callback(null, data.data); + success: function(menuData, status) { + self.callApi({ + resource: 'callflow.create', + data: { + accountId: self.accountId, + data: { + contact_list: { + exclude: false + }, + numbers: [menuName], + type: "main", + flow: { + children: {}, + data: { + id: menuData.data.id + }, + module: "menu" + } + } + }, + success: function(data, status) { + callback && callback(null, data.data); + } + }); } }); } } }); - monster.parallel(parallelRequests, function(err, results) { - if(!parallelRequests["MainCallflow"]) { - self.callApi({ - resource: 'callflow.create', - data: { - accountId: self.accountId, - data: { - contact_list: { - exclude: false - }, - numbers: ["0"], - name: "MainCallflow", - type: "main", - flow: { - children: { - '_': { + monster.parallel(menuRequests, function(err, results) { + var mainCallflows = results; + _.each(self.subCallflowsLabel, function(val) { + if(!parallelRequests[val]) { + parallelRequests[val] = function(callback) { + self.callApi({ + resource: 'callflow.create', + data: { + accountId: self.accountId, + data: { + contact_list: { + exclude: false + }, + numbers: [val], + type: "main", + flow: { children: {}, data: { - id: results["MainOpenHours"].id + id: mainCallflows[val+'Menu'].id }, - module:"callflow" + module: "callflow" } - }, - data: {}, - module: "temporal_route" + } + }, + success: function(data, status) { + callback(null, data.data); } - } - }, - success: function(data, status) { - /* If they don't have a main callflow, check if the feature codes are enabled, and create them if not */ - self.strategyCreateFeatureCodes(function() { - results["MainCallflow"] = data.data; - callback(results); }); } - }); - } else { - delete results["MainCallflow"].flow.data.timezone; - if(results["MainCallflow"].numbers[0] !== '0') { - if(results["MainCallflow"].numbers[0] === 'undefined') { - results["MainCallflow"].numbers[0] = '0'; + } + }); + + monster.parallel(parallelRequests, function(err, results) { + if(!parallelRequests["MainCallflow"]) { + self.callApi({ + resource: 'callflow.create', + data: { + accountId: self.accountId, + data: { + contact_list: { + exclude: false + }, + numbers: ["0"], + name: "MainCallflow", + type: "main", + flow: { + children: { + '_': { + children: {}, + data: { + id: results["MainOpenHours"].id + }, + module:"callflow" + } + }, + data: {}, + module: "temporal_route" + } + } + }, + success: function(data, status) { + /* If they don't have a main callflow, check if the feature codes are enabled, and create them if not */ + self.strategyCreateFeatureCodes(function() { + results["MainCallflow"] = data.data; + callback($.extend(true, mainCallflows, results)); + }); + } + }); + } else { + delete results["MainCallflow"].flow.data.timezone; + if(results["MainCallflow"].numbers[0] !== '0') { + if(results["MainCallflow"].numbers[0] === 'undefined') { + results["MainCallflow"].numbers[0] = '0'; + } else { + results["MainCallflow"].numbers.splice(0, 0, '0'); + } + self.strategyUpdateCallflow(results["MainCallflow"], function(updatedCallflow) { + results["MainCallflow"] = updatedCallflow; + callback($.extend(true, mainCallflows, results)); + }) } else { - results["MainCallflow"].numbers.splice(0, 0, '0'); + callback($.extend(true, mainCallflows, results)); } - self.strategyUpdateCallflow(results["MainCallflow"], function(updatedCallflow) { - results["MainCallflow"] = updatedCallflow; - callback(results); - }) - } else { - callback(results); } - } + }); }); } });