Built motion from commit f7863d46.|2.5.41
[motion2.git] / server / services / ami / trigger / 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 _0x87d0=['clone','motionChannel','undefined','checkTriggers','status','checkTrigger','merge','variables','Actions','length','interface','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','html','render','data2','uri','buildUri','isNil','data3','data4','windowWidth','windowHeight','data6','winApplication','winArguments','format','user:%s','name','trigger:%s:%s','trigger:%s','integration','exec','accounts','routeId','urlforward','script','parse','query','search','channel','AllConditions','every','checkConditions','AnyConditions','some','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','mailSubstatus','offlineMessage','equals','exports','util','lodash','url','ioredis','./integration','./cmContact','trigger','../ami','redis','defaults','localhost','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','custom:agentcalled','custom:agentconnect','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','emit','info','stringify','prototype'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x87d0,0xbd));var _0x087d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x87d0[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0x087d('0x0'));var _=require(_0x087d('0x1'));var url=require(_0x087d('0x2'));var Mustache=require('mustache');var Redis=require(_0x087d('0x3'));var urlforward=require('./urlforward');var integration=require(_0x087d('0x4'));var cmContact=require(_0x087d('0x5'));var script=require('./script');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x087d('0x6'));var ami=require(_0x087d('0x7'));config[_0x087d('0x8')]=_[_0x087d('0x9')](config['redis'],{'host':_0x087d('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x087d('0x8')]));var operators={'equals':function(_0x566e6c,_0xdcb49b){return _0x566e6c==_0xdcb49b;},'not_equals':function(_0x39c43a,_0xf992e1){return _0x39c43a!=_0xf992e1;}};var barAndWebActions=[_0x087d('0xb'),_0x087d('0x2'),_0x087d('0xc')];function Trigger(_0x14ba24){this[_0x087d('0xd')]=_0x14ba24[_0x087d('0xd')];this[_0x087d('0xe')]=_0x14ba24['agents'];this[_0x087d('0xf')]=_0x14ba24[_0x087d('0xf')];this['templates']=_0x14ba24[_0x087d('0x10')];this['voiceExtensions']=_0x14ba24[_0x087d('0x11')];this[_0x087d('0x12')]=_0x14ba24[_0x087d('0x12')];this[_0x087d('0x13')]=_0x14ba24[_0x087d('0x13')];this[_0x087d('0x14')]=_0x14ba24['salesforceAccounts'];this['sugarcrmAccounts']=_0x14ba24[_0x087d('0x15')];this[_0x087d('0x16')]=_0x14ba24[_0x087d('0x16')];this[_0x087d('0x17')]=_0x14ba24[_0x087d('0x17')];this['vtigerAccounts']=_0x14ba24[_0x087d('0x18')];this[_0x087d('0x19')]=_0x14ba24['servicenowAccounts'];this[_0x087d('0x1a')]=_0x14ba24[_0x087d('0x1a')];this[_0x087d('0x1b')]=_0x14ba24['freshsalesAccounts'];this['accounts']={'zendesk':this[_0x087d('0x12')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x087d('0x13')],'sugarcrm':this[_0x087d('0x15')],'zoho':this['zohoAccounts'],'desk':this[_0x087d('0x17')],'vtiger':this[_0x087d('0x18')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0x087d('0x1b')],'servicenow':this[_0x087d('0x19')]};ami['on'](_0x087d('0x1c'),this['syncCustomEvent']['bind'](this));ami['on'](_0x087d('0x1d'),this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x20'),this[_0x087d('0x1e')]['bind'](this));ami['on'](_0x087d('0x21'),this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x22'),this[_0x087d('0x1e')]['bind'](this));ami['on'](_0x087d('0x23'),this['syncCustomEvent'][_0x087d('0x1f')](this));ami['on'](_0x087d('0x24'),this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x25'),this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x26'),this['syncCustomEvent']['bind'](this));ami['on'](_0x087d('0x27'),this['syncCustomEvent'][_0x087d('0x1f')](this));ami['on']('custom:queuecallerabandon',this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x28'),this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x29'),this['syncAgentDial'][_0x087d('0x1f')](this));ami['on'](_0x087d('0x2a'),this[_0x087d('0x2b')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x2c'),this['syncAgentDial']['bind'](this));ami['on'](_0x087d('0x2d'),this[_0x087d('0x1e')]['bind'](this));ami['on'](_0x087d('0x2e'),this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x2f'),this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on'](_0x087d('0x30'),this[_0x087d('0x1e')]['bind'](this));ami['on']('custom:outgoingmessage',this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on']('custom:acceptmessage',this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on']('custom:rejectmessage',this[_0x087d('0x1e')][_0x087d('0x1f')](this));ami['on']('custom:offlineMessage',this[_0x087d('0x1e')]['bind'](this));}Trigger['prototype'][_0x087d('0x31')]=function(_0xb267d4,_0x5bc80c,_0x25fcdd){logger[_0x087d('0x32')](_0xb267d4,_0x5bc80c,JSON[_0x087d('0x33')](_0x25fcdd));io['to'](_0xb267d4)['emit'](_0x5bc80c,_0x25fcdd);};Trigger[_0x087d('0x34')][_0x087d('0x1e')]=function(_0x23ffcc){var _0x2422c1=_[_0x087d('0x35')](_0x23ffcc);if(typeof _0x2422c1[_0x087d('0x36')]===_0x087d('0x37')){_0x2422c1[_0x087d('0x36')]='voice';}this[_0x087d('0x38')](_0x2422c1);};Trigger[_0x087d('0x34')][_0x087d('0x2b')]=function(_0x1c5095){if(this[_0x087d('0xe')][_0x1c5095['interface']]){this[_0x087d('0x1e')](_0x1c5095);}};Trigger['prototype']['checkTriggers']=function(_0x2c8e54){var _0x2f8672;for(var _0x185bee in this[_0x087d('0xd')]){if(this[_0x087d('0xd')]['hasOwnProperty'](_0x185bee)){if(this[_0x087d('0xd')][_0x185bee][_0x087d('0x39')]){_0x2f8672=this[_0x087d('0x3a')](this[_0x087d('0xd')][_0x185bee],_0x2c8e54);if(_0x2f8672){_[_0x087d('0x3b')](_0x2c8e54,_0x2c8e54[_0x087d('0x3c')]);for(var _0x5c17cb=0x0,_0x47fe0d,_0x3b3558,_0x32a4c7;_0x5c17cb<this[_0x087d('0xd')][_0x185bee][_0x087d('0x3d')][_0x087d('0x3e')];_0x5c17cb+=0x1){_0x47fe0d=this[_0x087d('0xd')][_0x185bee][_0x087d('0x3d')][_0x5c17cb];if(this['agents'][_0x2c8e54[_0x087d('0x3f')]]){switch(_0x47fe0d[_0x087d('0x40')][_0x087d('0x41')]()){case _0x087d('0x42'):break;case _0x087d('0x43'):case _0x087d('0x44'):var _0x1fcd21={};switch(barAndWebActions[_0x47fe0d[_0x087d('0x45')]]){case'popup':_0x1fcd21[_0x087d('0x46')]=_0x47fe0d['data2'];_0x1fcd21[_0x087d('0x47')]=this['templates'][_0x47fe0d['data2']]?Mustache[_0x087d('0x48')](this[_0x087d('0x10')][_0x47fe0d[_0x087d('0x49')]][_0x087d('0x47')],_0x2c8e54):'template\x20not\x20found';break;case _0x087d('0x2'):_0x1fcd21[_0x087d('0x4a')]=this[_0x087d('0x4b')](_0x47fe0d['data2'],_0x2c8e54,_[_0x087d('0x4c')](_0x47fe0d[_0x087d('0x4d')])?!![]:parseInt(_0x47fe0d[_0x087d('0x4d')],0xa));if(_[_0x087d('0x4c')](_0x47fe0d['data4'])){_0x1fcd21['location']='0';}else{_0x1fcd21['uriLocation']=_0x47fe0d[_0x087d('0x4e')];_0x1fcd21[_0x087d('0x4f')]=_[_0x087d('0x4c')](_0x47fe0d['data5'])?'800':_0x47fe0d['data5'];_0x1fcd21[_0x087d('0x50')]=_[_0x087d('0x4c')](_0x47fe0d[_0x087d('0x51')])?'600':_0x47fe0d[_0x087d('0x51')];}break;case _0x087d('0xc'):_0x1fcd21[_0x087d('0x52')]=_0x47fe0d[_0x087d('0x49')]?Mustache['render'](_0x47fe0d['data2'],_0x2c8e54):'';_0x1fcd21[_0x087d('0x53')]=_0x47fe0d[_0x087d('0x4d')]?Mustache[_0x087d('0x48')](_0x47fe0d[_0x087d('0x4d')],_0x2c8e54):'';break;}this[_0x087d('0x31')](util[_0x087d('0x54')](_0x087d('0x55'),this['agents'][_0x2c8e54[_0x087d('0x3f')]][_0x087d('0x56')]),util[_0x087d('0x54')](_0x087d('0x57'),_0x47fe0d[_0x087d('0x40')][_0x087d('0x41')](),barAndWebActions[_0x47fe0d[_0x087d('0x45')]]),_[_0x087d('0x3b')](_0x1fcd21,_0x2c8e54));break;case'jscripty':this[_0x087d('0x31')](util[_0x087d('0x54')](_0x087d('0x55'),this['agents'][_0x2c8e54['interface']][_0x087d('0x56')]),util[_0x087d('0x54')](_0x087d('0x58'),_0x47fe0d['action'][_0x087d('0x41')]()),_[_0x087d('0x3b')]({'ProjectId':parseInt(_0x47fe0d[_0x087d('0x45')],0xa)},_0x2c8e54));break;default:this[_0x087d('0x31')](util[_0x087d('0x54')](_0x087d('0x55'),this[_0x087d('0xe')][_0x2c8e54[_0x087d('0x3f')]]['name']),util[_0x087d('0x54')]('trigger:%s',_0x47fe0d['action'][_0x087d('0x41')]()),_[_0x087d('0x3b')]({},_0x47fe0d,_0x2c8e54));}}switch(_0x47fe0d[_0x087d('0x40')][_0x087d('0x41')]()){case'contactmanager':cmContact['exec'](this[_0x087d('0xe')][_0x2c8e54[_0x087d('0x3f')]],this[_0x087d('0xd')][_0x185bee],_0x47fe0d,_0x2c8e54);break;case _0x087d('0x59'):integration[_0x087d('0x5a')](_0x47fe0d,_0x2c8e54,this[_0x087d('0x5b')],this[_0x087d('0xe')][_0x2c8e54[_0x087d('0x3f')]],this[_0x087d('0xf')][_0x2c8e54['queue']],this['voiceExtensions'][_0x2c8e54[_0x087d('0x5c')]]);break;case _0x087d('0x5d'):urlforward[_0x087d('0x5a')](_0x47fe0d,_0x2c8e54);break;case _0x087d('0x5e'):script['exec'](_0x47fe0d,_0x2c8e54);break;}}}}}}};Trigger[_0x087d('0x34')]['buildUri']=function(_0x4c8335,_0x31bcb4,_0x50b445){var _0x84a727=url[_0x087d('0x5f')](Mustache[_0x087d('0x48')](_0x4c8335,_0x31bcb4),!![]);if(_0x50b445){_['merge'](_0x84a727[_0x087d('0x60')],_0x31bcb4);}delete _0x84a727[_0x087d('0x61')];var _0x99f733=url['format'](_0x84a727);_0x99f733=_0x99f733['replace'](/\/\?/g,'?');return _0x99f733;};Trigger[_0x087d('0x34')][_0x087d('0x3a')]=function(_0xe0ca9b,_0x255a8c){var _0x1e8fda=!![];var _0x5cf07a=!![];var _0x3018de=![];if(_0xe0ca9b[_0x087d('0x62')]===_0x255a8c[_0x087d('0x36')]){_0x3018de=!![];}if(_0xe0ca9b[_0x087d('0x63')]['length']){_0x1e8fda=_[_0x087d('0x64')](_0xe0ca9b[_0x087d('0x63')],this[_0x087d('0x65')](_0x255a8c,_0xe0ca9b[_0x087d('0x62')]));}if(_0xe0ca9b[_0x087d('0x66')][_0x087d('0x3e')]){_0x5cf07a=_[_0x087d('0x67')](_0xe0ca9b[_0x087d('0x66')],this[_0x087d('0x65')](_0x255a8c,_0xe0ca9b[_0x087d('0x62')]));}return _0x3018de&&_0x1e8fda&&_0x5cf07a;};Trigger[_0x087d('0x34')][_0x087d('0x65')]=function(_0x5be6aa,_0x13ba29){return function(_0x6ec2ad){switch(_0x6ec2ad['field']){case'account':if(_0x5be6aa[_0x087d('0x62')]===_0x13ba29){if(_0x13ba29===_0x087d('0x68')){return _0x5be6aa[_0x087d('0x69')]?operators[_0x6ec2ad[_0x087d('0x6a')]](Number(_0x6ec2ad[_0x087d('0x6b')]),_0x5be6aa['ChatWebsiteId']):![];}else{return _0x5be6aa[_[_0x087d('0x6c')](_0x13ba29)+_0x087d('0x6d')]?operators[_0x6ec2ad[_0x087d('0x6a')]](Number(_0x6ec2ad[_0x087d('0x6b')]),_0x5be6aa[_[_0x087d('0x6c')](_0x13ba29)+_0x087d('0x6d')]):![];}}break;case _0x087d('0x6e'):case _0x087d('0x6f'):if(_0x5be6aa[_0x087d('0x62')]===_0x13ba29){return _0x5be6aa[_0x087d('0x70')]?operators[_0x6ec2ad[_0x087d('0x6a')]](_0x6ec2ad[_0x087d('0x6b')],_0x5be6aa[_0x087d('0x70')]):![];}break;case _0x087d('0x71'):return _0x5be6aa[_0x087d('0x71')]?operators[_0x6ec2ad[_0x087d('0x6a')]](_0x6ec2ad['value'],_0x5be6aa[_0x087d('0x71')]):![];case _0x087d('0x72'):return _0x5be6aa[_0x087d('0x73')]?operators[_0x6ec2ad[_0x087d('0x6a')]](_0x6ec2ad[_0x087d('0x6b')],_0x5be6aa[_0x087d('0x73')]):![];case _0x087d('0x74'):return _0x5be6aa['lastevent']?operators[_0x6ec2ad['operator']](_0x6ec2ad[_0x087d('0x6b')],_0x5be6aa['lastevent']):![];case'routeId':return _0x5be6aa[_0x087d('0x5c')]?operators[_0x6ec2ad[_0x087d('0x6a')]](_0x6ec2ad[_0x087d('0x6b')],_0x5be6aa['routeId']):![];case _0x087d('0x75'):if(_0x6ec2ad['value']==='null')_0x6ec2ad[_0x087d('0x6b')]=null;return typeof _0x5be6aa['substatus']!==_0x087d('0x37')?operators[_0x6ec2ad[_0x087d('0x6a')]](_0x6ec2ad[_0x087d('0x6b')],_0x5be6aa['substatus']):![];case _0x087d('0x76'):if(_0x5be6aa['channel']===_0x13ba29){return _0x6ec2ad['value']==='created'&&_0x6ec2ad[_0x087d('0x6a')]===_0x087d('0x77')?!![]:![];}break;}return![];};};module[_0x087d('0x78')]=Trigger;