Built motion from commit (unavailable).|2.5.11
[motion2.git] / server / services / agi / index.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xcb99=['addVertex','omit','mxCell','isArray','length','source','target','addEdge','value','getSquareProject','catch','createSquareReport','indexOf','agi_','inspect','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','sync','production','start','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','vertex','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]','./server','listening','connection','xml2json','syncho','../../config/environment','../../config/logger','agi','./rpc','./mailRpc','./vertices','defaults','127.0.0.1','nextTick','error','stack','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','format','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry'];(function(_0x179a44,_0x559b80){var _0xcb3b65=function(_0x21b40f){while(--_0x21b40f){_0x179a44['push'](_0x179a44['shift']());}};_0xcb3b65(++_0x559b80);}(_0xcb99,0x8b));var _0x9cb9=function(_0xce44ee,_0x387d70){_0xce44ee=_0xce44ee-0x0;var _0xf97a49=_0xcb99[_0xce44ee];return _0xf97a49;};'use strict';var parser=require(_0x9cb9('0x0'));var _=require('lodash');var syncho=require(_0x9cb9('0x1'));var util=require('util');var moment=require('moment');var config=require(_0x9cb9('0x2'));var logger=require(_0x9cb9('0x3'))(_0x9cb9('0x4'));var utilLicense=require('../../config/license/util');var rpc=require(_0x9cb9('0x5'));var mailRpc=require(_0x9cb9('0x6'));var Graph=require('./graph');var Vertices=require(_0x9cb9('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0x9cb9('0x8')](config[_0x9cb9('0x4')],{'ip':_0x9cb9('0x9'),'port':0x11dd});function connectionHandler(_0x1dd62f){process[_0x9cb9('0xa')](function(){syncho(function(){try{setChannelVariables(_0x1dd62f);agiHandler(_0x1dd62f);}catch(_0x124bd0){logger[_0x9cb9('0xb')](_0x124bd0[_0x9cb9('0xc')]);}});});}function listeningHandler(){console['log']('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x9cb9('0x4')][_0x9cb9('0xd')]);logger[_0x9cb9('0xe')](util['format'](_0x9cb9('0xf'),config[_0x9cb9('0x4')]['ip'],config['agi']['port']));}function errorHandler(_0x227d49){if(_0x227d49&&_0x227d49[_0x9cb9('0x10')]&&_0x227d49[_0x9cb9('0x11')]){logger[_0x9cb9('0xb')](util['format'](_0x9cb9('0x12'),_0x227d49[_0x9cb9('0x10')],_0x227d49[_0x9cb9('0x11')]));}else{logger[_0x9cb9('0xb')](util[_0x9cb9('0x13')](_0x9cb9('0x14'),_0x227d49[_0x9cb9('0xc')]));}}function closeHandler(){logger[_0x9cb9('0xe')](util[_0x9cb9('0x13')](_0x9cb9('0x15'),this[_0x9cb9('0x16')],this[_0x9cb9('0x17')],this[_0x9cb9('0x18')],this[_0x9cb9('0x19')],this[_0x9cb9('0x1a')]));try{createSquareReport(this);}catch(_0x4244b3){logger[_0x9cb9('0xb')](_0x4244b3[_0x9cb9('0xc')]);}}function timeoutHandler(){logger['info'](util['format'](_0x9cb9('0x1b'),this['arg_1'],this['calleridname'],this['callerid'],this[_0x9cb9('0x19')],this['uniqueid']));}function hangupHandler(){logger[_0x9cb9('0xe')](util[_0x9cb9('0x13')](_0x9cb9('0x1c'),this[_0x9cb9('0x16')],this[_0x9cb9('0x17')],this[_0x9cb9('0x18')],this[_0x9cb9('0x19')],this[_0x9cb9('0x1a')]));this[_0x9cb9('0x1d')]=!![];}function getRoot(_0x169948){return parser[_0x9cb9('0x1e')](_0x169948,{'object':!![]})[_0x9cb9('0x1f')][_0x9cb9('0x20')];}function addVertex(_0x1a464f,_0x4cc235,_0x57fc41){_0x4cc235[_0x9cb9('0x21')]=_0x57fc41;if(_0x4cc235[_0x9cb9('0x22')](_0x9cb9('0x23'))){_0x4cc235[_0x9cb9('0x24')]=parseInt(_0x4cc235[_0x9cb9('0x23')],0xa);}_0x1a464f[_0x9cb9('0x25')](_[_0x9cb9('0x26')](_0x4cc235,_0x9cb9('0x27')));}function initGraph(_0x10d09a,_0x4e036a){var _0x1f42b3=new Graph();for(var _0x2d32ee in _0x10d09a){if(_0x10d09a[_0x9cb9('0x22')](_0x2d32ee)){if(_[_0x9cb9('0x28')](_0x10d09a[_0x2d32ee])){for(var _0x4db8a4=0x0;_0x4db8a4<_0x10d09a[_0x2d32ee][_0x9cb9('0x29')];_0x4db8a4+=0x1){addVertex(_0x1f42b3,_0x10d09a[_0x2d32ee][_0x4db8a4],_0x2d32ee);}}else{addVertex(_0x1f42b3,_0x10d09a[_0x2d32ee],_0x2d32ee);}}}for(var _0x567e9b=0x0;_0x567e9b<_0x4e036a[_0x9cb9('0x29')];_0x567e9b+=0x1){if(_0x4e036a[_0x567e9b][_0x9cb9('0x2a')]&&_0x4e036a[_0x567e9b][_0x9cb9('0x2b')]){_0x1f42b3[_0x9cb9('0x2c')](_0x4e036a[_0x567e9b]['source'],_0x4e036a[_0x567e9b][_0x9cb9('0x2b')],_0x4e036a[_0x567e9b][_0x9cb9('0x2d')]);}}return _0x1f42b3;}function getSquareProject(_0x39f9dd,_0x53ad7b){rpc[_0x9cb9('0x2e')](_0x39f9dd)['then'](function(_0x45fab7){_0x53ad7b(null,_0x45fab7);})[_0x9cb9('0x2f')](function(_0x146fe7){_0x53ad7b(null,_0x146fe7);});}function createSquareReport(_0x2ed362,_0x22ed67){rpc[_0x9cb9('0x30')](_0x2ed362)['then'](function(_0x164074){if(_0x22ed67){_0x22ed67(null,_0x164074);}})[_0x9cb9('0x2f')](function(_0x123ada){if(_0x22ed67){_0x22ed67(null,_0x123ada);}});}function setChannelVariables(_0x547ee8){for(var _0x5f3aac in _0x547ee8){if(_0x547ee8[_0x9cb9('0x22')](_0x5f3aac)){if(_0x5f3aac[_0x9cb9('0x31')](_0x9cb9('0x32'))===0x0){_0x547ee8[_0x5f3aac['substring'](0x4)]=_0x547ee8[_0x5f3aac];delete _0x547ee8[_0x5f3aac];}}}}function getLogFromObject(_0x4a913b){return util[_0x9cb9('0x33')](_0x4a913b,{'showHidden':![],'depth':null});}function agiHandler(_0x395dae){var _0x59a521,_0x39156f,_0x1a4cb5,_0x8a17d1,_0x354c0f;logger[_0x9cb9('0x34')]('variables',JSON[_0x9cb9('0x35')](_0x395dae,null,0x2));logger[_0x9cb9('0xe')](util['format'](_0x9cb9('0x36'),_0x395dae['arg_1'],_0x395dae[_0x9cb9('0x17')],_0x395dae[_0x9cb9('0x18')],_0x395dae['dnid'],_0x395dae['uniqueid']));_0x395dae['on'](_0x9cb9('0xb'),errorHandler);_0x395dae['on'](_0x9cb9('0x37'),closeHandler);_0x395dae['on'](_0x9cb9('0x38'),timeoutHandler);_0x395dae[_0x9cb9('0x1d')]=![];_0x395dae['on'](_0x9cb9('0x39'),hangupHandler);var _0x2dd463=getSquareProject[_0x9cb9('0x3a')](null,_0x395dae['arg_1']);if(_0x2dd463){if(_0x2dd463[_0x9cb9('0x3b')]){_0x59a521=getRoot(_0x2dd463[_0x9cb9('0x3b')]);if(_0x59a521&&_0x59a521[_0x9cb9('0x3c')]){logger[_0x9cb9('0x34')](_0x9cb9('0x20'),JSON[_0x9cb9('0x35')](_0x59a521,null,0x2));_0x395dae['joinAt']=moment()[_0x9cb9('0x13')](_0x9cb9('0x3d'));_0x39156f=initGraph(_[_0x9cb9('0x26')](_0x59a521,_0x9cb9('0x27')),_0x59a521[_0x9cb9('0x27')]);_0x1a4cb5=new Vertices(_0x395dae,rpc,mailRpc);logger[_0x9cb9('0xe')](util[_0x9cb9('0x13')](_0x9cb9('0x3e'),_0x395dae[_0x9cb9('0x16')],_0x395dae['calleridname'],_0x395dae[_0x9cb9('0x18')],_0x395dae['dnid'],_0x395dae[_0x9cb9('0x1a')]));_0x39156f['traverseBFS'](_0x59a521[_0x9cb9('0x3c')]['id'],function(_0x2f8c06){try{_0x2f8c06=_0x1a4cb5[_0x9cb9('0x3f')](_0x2f8c06);logger[_0x9cb9('0x34')]('vertex',JSON[_0x9cb9('0x35')](_0x2f8c06,null,0x2));if(_0x2f8c06['agicommand']===_0x9cb9('0x40')){logger[_0x9cb9('0xe')](_0x9cb9('0x41'));_0x395dae[_0x9cb9('0x42')]=_0x2f8c06[_0x9cb9('0x42')]||_0x395dae['context'];_0x395dae[_0x9cb9('0x43')]=_0x2f8c06[_0x9cb9('0x43')];_0x395dae[_0x9cb9('0x44')]=_0x2f8c06[_0x9cb9('0x44')]?_0x2f8c06[_0x9cb9('0x44')]-0x1:0x1;return null;}else if(_0x2f8c06&&_0x1a4cb5[_0x2f8c06[_0x9cb9('0x21')]]){_0x354c0f=_0x1a4cb5[_0x2f8c06[_0x9cb9('0x21')]](_0x2f8c06);logger[_0x9cb9('0xe')](_0x9cb9('0x45'),JSON['stringify'](_0x354c0f,null,0x2));if(_0x354c0f&&_0x354c0f[_0x9cb9('0x46')]===AGI_CODE_SUCCESS&&_0x354c0f[_0x9cb9('0x47')]!==AGI_RESULT_ERROR&&!_0x395dae[_0x9cb9('0x1d')]){logger[_0x9cb9('0x34')](_0x9cb9('0x45'),getLogFromObject(_0x354c0f));return _['isUndefined'](_0x354c0f[_0x9cb9('0x47')])?null:_0x354c0f[_0x9cb9('0x47')][_0x9cb9('0x48')]();}else{logger['error'](_0x9cb9('0x45'),getLogFromObject(_0x354c0f));return null;}}else{logger[_0x9cb9('0xb')](_0x9cb9('0x49'));return null;}}catch(_0x4a6dc9){logger[_0x9cb9('0xb')](_0x4a6dc9[_0x9cb9('0xc')]);return null;}});if(_0x59a521[_0x9cb9('0x4a')]){logger[_0x9cb9('0xe')](util[_0x9cb9('0x13')](_0x9cb9('0x4b'),_0x395dae['arg_1'],_0x395dae[_0x9cb9('0x17')],_0x395dae[_0x9cb9('0x18')],_0x395dae[_0x9cb9('0x19')],_0x395dae[_0x9cb9('0x1a')]));_0x39156f[_0x9cb9('0x4c')](_0x59a521[_0x9cb9('0x4a')]['id'],function(_0x1799fd){try{_0x1799fd=_0x1a4cb5[_0x9cb9('0x3f')](_0x1799fd);logger[_0x9cb9('0x34')](_0x9cb9('0x4d'),JSON[_0x9cb9('0x35')](_0x1799fd,null,0x2));if(_0x1799fd&&_0x1a4cb5[_0x1799fd[_0x9cb9('0x21')]]){_0x354c0f=_0x1a4cb5[_0x1799fd[_0x9cb9('0x21')]](_0x1799fd);if(_0x354c0f){logger['debug'](_0x9cb9('0x45'),getLogFromObject(_0x354c0f));return _['isUndefined'](_0x354c0f[_0x9cb9('0x47')])?null:_0x354c0f[_0x9cb9('0x47')][_0x9cb9('0x48')]();}else{logger['error'](_0x9cb9('0x45'),getLogFromObject(_0x354c0f));return null;}}else{logger[_0x9cb9('0xb')](_0x9cb9('0x49'));return null;}}catch(_0x9da13e){logger['error'](_0x9da13e['stack']);return null;}});}logger['info'](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x395dae['arg_1'],_0x395dae[_0x9cb9('0x17')],_0x395dae[_0x9cb9('0x18')],_0x395dae[_0x9cb9('0x19')],_0x395dae['uniqueid']));logger[_0x9cb9('0xe')](util[_0x9cb9('0x13')](_0x9cb9('0x4e'),_0x395dae[_0x9cb9('0x42')],_0x395dae[_0x9cb9('0x43')],parseInt(_0x395dae[_0x9cb9('0x44')],0xa)+0x1));_0x395dae[_0x9cb9('0x4f')](_0x395dae[_0x9cb9('0x42')],_0x395dae['extension'],parseInt(_0x395dae[_0x9cb9('0x44')],0xa)+0x1);_0x395dae['close']();}}else{logger[_0x9cb9('0xb')](util[_0x9cb9('0x13')](_0x9cb9('0x50'),_0x395dae[_0x9cb9('0x16')]));_0x395dae['continueAt'](_0x395dae['context'],_0x395dae[_0x9cb9('0x43')],parseInt(_0x395dae[_0x9cb9('0x44')],0xa)+0x1);_0x395dae[_0x9cb9('0x37')]();}}else{logger['error'](util[_0x9cb9('0x13')]('Project\x20%s\x20not\x20found',_0x395dae[_0x9cb9('0x16')]));_0x395dae[_0x9cb9('0x4f')](_0x395dae[_0x9cb9('0x42')],_0x395dae[_0x9cb9('0x43')],parseInt(_0x395dae['priority'],0xa)+0x1);_0x395dae[_0x9cb9('0x37')]();}}function main(){var _0x3ce2dd;return utilLicense['getLicense']()['then'](function(_0x50b115){if(_0x50b115){if(_0x50b115[_0x9cb9('0x51')]){if(_0x50b115[_0x9cb9('0x52')]&&_0x50b115['callysquare']>0x0){logger['info'](util[_0x9cb9('0x13')](_0x9cb9('0x53'),_0x50b115[_0x9cb9('0x52')]));_0x3ce2dd=_0x50b115[_0x9cb9('0x52')];}else{logger[_0x9cb9('0xe')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0x9cb9('0xe')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x3ce2dd=-0x1;}}})['catch'](function(_0x32e651){logger[_0x9cb9('0xb')](_0x9cb9('0x54'),_0x32e651['stack']);})[_0x9cb9('0x4a')](function(){var _0x17a1d5=require(_0x9cb9('0x55'))(config[_0x9cb9('0x4')][_0x9cb9('0xd')],config[_0x9cb9('0x4')]['ip'],_0x3ce2dd);_0x17a1d5['on'](_0x9cb9('0xb'),errorHandler);_0x17a1d5['on'](_0x9cb9('0x56'),listeningHandler);_0x17a1d5['on'](_0x9cb9('0x57'),connectionHandler);_0x17a1d5['on'](_0x9cb9('0x37'),closeHandler);});}main();