62da7209ef28dcd6552208a658c2d07657d68d01
[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 _0x2384=['length','action','toLowerCase','contactmanager','motionbar','data1','data2','html','render','uri','buildUri','data3','uriLocation','data4','windowWidth','isNil','data5','800','windowHeight','data6','600','winApplication','winArguments','format','user:%s','interface','name','trigger:%s:%s','jscripty','trigger:%s','integration','exec','queue','routeId','urlforward','query','search','checkTrigger','channel','AllConditions','every','checkConditions','AnyConditions','some','field','account','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','mailSubstatus','substatus','created','equals','util','url','mustache','ioredis','./urlforward','./integration','./script','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','freshsalesAccounts','accounts','dynamics365Accounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentcomplete','custom:agentbusy','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','info','stringify','clone','motionChannel','undefined','checkTriggers','hasOwnProperty','merge','variables','Actions'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x2384,0x1aa));var _0x4238=function(_0x3a7547,_0x4fbb60){_0x3a7547=_0x3a7547-0x0;var _0x45fc04=_0x2384[_0x3a7547];return _0x45fc04;};'use strict';var util=require(_0x4238('0x0'));var _=require('lodash');var url=require(_0x4238('0x1'));var Mustache=require(_0x4238('0x2'));var Redis=require(_0x4238('0x3'));var urlforward=require(_0x4238('0x4'));var integration=require(_0x4238('0x5'));var cmContact=require('./cmContact');var script=require(_0x4238('0x6'));var config=require('../../../config/environment');var logger=require(_0x4238('0x7'))(_0x4238('0x8'));var ami=require(_0x4238('0x9'));config[_0x4238('0xa')]=_[_0x4238('0xb')](config[_0x4238('0xa')],{'host':_0x4238('0xc'),'port':0x18eb});var io=require(_0x4238('0xd'))(new Redis(config[_0x4238('0xa')]));var operators={'equals':function(_0x5ccd90,_0x460199){return _0x5ccd90==_0x460199;},'not_equals':function(_0xf06385,_0x4c308c){return _0xf06385!=_0x4c308c;}};var barAndWebActions=[_0x4238('0xe'),'url','winapp'];function Trigger(_0xbb61d0){this[_0x4238('0xf')]=_0xbb61d0[_0x4238('0xf')];this[_0x4238('0x10')]=_0xbb61d0[_0x4238('0x10')];this[_0x4238('0x11')]=_0xbb61d0[_0x4238('0x11')];this[_0x4238('0x12')]=_0xbb61d0[_0x4238('0x12')];this[_0x4238('0x13')]=_0xbb61d0[_0x4238('0x13')];this[_0x4238('0x14')]=_0xbb61d0[_0x4238('0x14')];this[_0x4238('0x15')]=_0xbb61d0[_0x4238('0x15')];this[_0x4238('0x16')]=_0xbb61d0['salesforceAccounts'];this[_0x4238('0x17')]=_0xbb61d0[_0x4238('0x17')];this['zohoAccounts']=_0xbb61d0[_0x4238('0x18')];this[_0x4238('0x19')]=_0xbb61d0[_0x4238('0x19')];this['vtigerAccounts']=_0xbb61d0[_0x4238('0x1a')];this[_0x4238('0x1b')]=_0xbb61d0[_0x4238('0x1b')];this['dynamics365Accounts']=_0xbb61d0['dynamics365Accounts'];this[_0x4238('0x1c')]=_0xbb61d0['freshsalesAccounts'];this[_0x4238('0x1d')]={'zendesk':this[_0x4238('0x14')],'salesforce':this[_0x4238('0x16')],'freshdesk':this[_0x4238('0x15')],'sugarcrm':this[_0x4238('0x17')],'zoho':this[_0x4238('0x18')],'desk':this[_0x4238('0x19')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x4238('0x1e')],'freshsales':this[_0x4238('0x1c')],'servicenow':this[_0x4238('0x1b')]};ami['on'](_0x4238('0x1f'),this['syncCustomEvent'][_0x4238('0x20')](this));ami['on'](_0x4238('0x21'),this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on']('custom:agentringnoanswer',this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on'](_0x4238('0x23'),this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on']('custom:agentnosuchnumber',this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on']('custom:agentnoanswer',this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on'](_0x4238('0x24'),this['syncCustomEvent'][_0x4238('0x20')](this));ami['on']('custom:agentcongestion',this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on'](_0x4238('0x25'),this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on'](_0x4238('0x26'),this['syncCustomEvent'][_0x4238('0x20')](this));ami['on'](_0x4238('0x27'),this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on'](_0x4238('0x28'),this['syncCustomEvent']['bind'](this));ami['on'](_0x4238('0x29'),this[_0x4238('0x2a')][_0x4238('0x20')](this));ami['on']('custom:dialconnect',this[_0x4238('0x2a')]['bind'](this));ami['on'](_0x4238('0x2b'),this[_0x4238('0x2a')]['bind'](this));ami['on'](_0x4238('0x2c'),this[_0x4238('0x22')]['bind'](this));ami['on'](_0x4238('0x2d'),this['syncCustomEvent'][_0x4238('0x20')](this));ami['on'](_0x4238('0x2e'),this['syncCustomEvent']['bind'](this));ami['on']('custom:incomingmessage',this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on']('custom:outgoingmessage',this[_0x4238('0x22')]['bind'](this));ami['on'](_0x4238('0x2f'),this[_0x4238('0x22')]['bind'](this));ami['on'](_0x4238('0x30'),this[_0x4238('0x22')][_0x4238('0x20')](this));ami['on'](_0x4238('0x31'),this[_0x4238('0x22')][_0x4238('0x20')](this));}Trigger[_0x4238('0x32')][_0x4238('0x33')]=function(_0x559ca3,_0x384f63,_0x14c6f4){logger[_0x4238('0x34')](_0x559ca3,_0x384f63,JSON[_0x4238('0x35')](_0x14c6f4));io['to'](_0x559ca3)[_0x4238('0x33')](_0x384f63,_0x14c6f4);};Trigger[_0x4238('0x32')][_0x4238('0x22')]=function(_0x2bdece){var _0x57aff5=_[_0x4238('0x36')](_0x2bdece);if(typeof _0x57aff5[_0x4238('0x37')]===_0x4238('0x38')){_0x57aff5[_0x4238('0x37')]='voice';}this[_0x4238('0x39')](_0x57aff5);};Trigger[_0x4238('0x32')][_0x4238('0x2a')]=function(_0x2a7147){if(this[_0x4238('0x10')][_0x2a7147['interface']]){this[_0x4238('0x22')](_0x2a7147);}};Trigger[_0x4238('0x32')][_0x4238('0x39')]=function(_0x38555a){var _0x5106c2;for(var _0x3bad57 in this[_0x4238('0xf')]){if(this['triggers'][_0x4238('0x3a')](_0x3bad57)){if(this['triggers'][_0x3bad57]['status']){_0x5106c2=this['checkTrigger'](this[_0x4238('0xf')][_0x3bad57],_0x38555a);if(_0x5106c2){_[_0x4238('0x3b')](_0x38555a,_0x38555a[_0x4238('0x3c')]);for(var _0x3af6d9=0x0,_0x2de073,_0x59eba6,_0x36d730;_0x3af6d9<this[_0x4238('0xf')][_0x3bad57][_0x4238('0x3d')][_0x4238('0x3e')];_0x3af6d9+=0x1){_0x2de073=this[_0x4238('0xf')][_0x3bad57][_0x4238('0x3d')][_0x3af6d9];if(this[_0x4238('0x10')][_0x38555a['interface']]){switch(_0x2de073[_0x4238('0x3f')][_0x4238('0x40')]()){case _0x4238('0x41'):break;case _0x4238('0x42'):case'browser':var _0x15c057={};switch(barAndWebActions[_0x2de073[_0x4238('0x43')]]){case _0x4238('0xe'):_0x15c057['TemplateId']=_0x2de073[_0x4238('0x44')];_0x15c057[_0x4238('0x45')]=this[_0x4238('0x12')][_0x2de073[_0x4238('0x44')]]?Mustache[_0x4238('0x46')](this[_0x4238('0x12')][_0x2de073[_0x4238('0x44')]]['html'],_0x38555a):'template\x20not\x20found';break;case'url':_0x15c057[_0x4238('0x47')]=this[_0x4238('0x48')](_0x2de073[_0x4238('0x44')],_0x38555a,_['isNil'](_0x2de073[_0x4238('0x49')])?!![]:parseInt(_0x2de073['data3'],0xa));if(_['isNil'](_0x2de073['data4'])){_0x15c057['location']='0';}else{_0x15c057[_0x4238('0x4a')]=_0x2de073[_0x4238('0x4b')];_0x15c057[_0x4238('0x4c')]=_[_0x4238('0x4d')](_0x2de073[_0x4238('0x4e')])?_0x4238('0x4f'):_0x2de073[_0x4238('0x4e')];_0x15c057[_0x4238('0x50')]=_['isNil'](_0x2de073[_0x4238('0x51')])?_0x4238('0x52'):_0x2de073[_0x4238('0x51')];}break;case'winapp':_0x15c057[_0x4238('0x53')]=_0x2de073[_0x4238('0x44')]?Mustache[_0x4238('0x46')](_0x2de073[_0x4238('0x44')],_0x38555a):'';_0x15c057[_0x4238('0x54')]=_0x2de073[_0x4238('0x49')]?Mustache['render'](_0x2de073[_0x4238('0x49')],_0x38555a):'';break;}this['emit'](util[_0x4238('0x55')](_0x4238('0x56'),this[_0x4238('0x10')][_0x38555a[_0x4238('0x57')]][_0x4238('0x58')]),util[_0x4238('0x55')](_0x4238('0x59'),_0x2de073['action']['toLowerCase'](),barAndWebActions[_0x2de073[_0x4238('0x43')]]),_[_0x4238('0x3b')](_0x15c057,_0x38555a));break;case _0x4238('0x5a'):this[_0x4238('0x33')](util['format']('user:%s',this['agents'][_0x38555a[_0x4238('0x57')]]['name']),util[_0x4238('0x55')]('trigger:%s',_0x2de073[_0x4238('0x3f')][_0x4238('0x40')]()),_[_0x4238('0x3b')]({'ProjectId':parseInt(_0x2de073[_0x4238('0x43')],0xa)},_0x38555a));break;default:this[_0x4238('0x33')](util[_0x4238('0x55')](_0x4238('0x56'),this[_0x4238('0x10')][_0x38555a[_0x4238('0x57')]]['name']),util[_0x4238('0x55')](_0x4238('0x5b'),_0x2de073[_0x4238('0x3f')][_0x4238('0x40')]()),_[_0x4238('0x3b')]({},_0x2de073,_0x38555a));}}switch(_0x2de073[_0x4238('0x3f')][_0x4238('0x40')]()){case _0x4238('0x41'):cmContact['exec'](this[_0x4238('0x10')][_0x38555a[_0x4238('0x57')]],this[_0x4238('0xf')][_0x3bad57],_0x2de073,_0x38555a);break;case _0x4238('0x5c'):integration[_0x4238('0x5d')](_0x2de073,_0x38555a,this[_0x4238('0x1d')],this[_0x4238('0x10')][_0x38555a[_0x4238('0x57')]],this[_0x4238('0x11')][_0x38555a[_0x4238('0x5e')]],this['voiceExtensions'][_0x38555a[_0x4238('0x5f')]]);break;case _0x4238('0x60'):urlforward['exec'](_0x2de073,_0x38555a);break;case'script':script[_0x4238('0x5d')](_0x2de073,_0x38555a);break;}}}}}}};Trigger[_0x4238('0x32')]['buildUri']=function(_0x3e3de6,_0xdd810b,_0xb33fc6){var _0x19c1c2=url['parse'](Mustache['render'](_0x3e3de6,_0xdd810b),!![]);if(_0xb33fc6){_[_0x4238('0x3b')](_0x19c1c2[_0x4238('0x61')],_0xdd810b);}delete _0x19c1c2[_0x4238('0x62')];var _0xc41541=url['format'](_0x19c1c2);_0xc41541=_0xc41541['replace'](/\/\?/g,'?');return _0xc41541;};Trigger[_0x4238('0x32')][_0x4238('0x63')]=function(_0x4b4e80,_0x37aba4){var _0x24a659=!![];var _0x3ef630=!![];var _0x5c655c=![];if(_0x4b4e80[_0x4238('0x64')]===_0x37aba4[_0x4238('0x37')]){_0x5c655c=!![];}if(_0x4b4e80[_0x4238('0x65')]['length']){_0x24a659=_[_0x4238('0x66')](_0x4b4e80['AllConditions'],this[_0x4238('0x67')](_0x37aba4,_0x4b4e80[_0x4238('0x64')]));}if(_0x4b4e80[_0x4238('0x68')]['length']){_0x3ef630=_[_0x4238('0x69')](_0x4b4e80[_0x4238('0x68')],this['checkConditions'](_0x37aba4,_0x4b4e80[_0x4238('0x64')]));}return _0x5c655c&&_0x24a659&&_0x3ef630;};Trigger[_0x4238('0x32')]['checkConditions']=function(_0x16e018,_0x459e07){return function(_0x5834db){switch(_0x5834db[_0x4238('0x6a')]){case _0x4238('0x6b'):if(_0x16e018[_0x4238('0x64')]===_0x459e07){if(_0x459e07==='chat'){return _0x16e018[_0x4238('0x6c')]?operators[_0x5834db[_0x4238('0x6d')]](Number(_0x5834db[_0x4238('0x6e')]),_0x16e018['ChatWebsiteId']):![];}else{return _0x16e018[_[_0x4238('0x6f')](_0x459e07)+_0x4238('0x70')]?operators[_0x5834db[_0x4238('0x6d')]](Number(_0x5834db['value']),_0x16e018[_['upperFirst'](_0x459e07)+_0x4238('0x70')]):![];}}break;case _0x4238('0x71'):case _0x4238('0x72'):if(_0x16e018[_0x4238('0x64')]===_0x459e07){return _0x16e018[_0x4238('0x73')]?operators[_0x5834db[_0x4238('0x6d')]](_0x5834db[_0x4238('0x6e')],_0x16e018[_0x4238('0x73')]):![];}break;case _0x4238('0x5e'):return _0x16e018[_0x4238('0x5e')]?operators[_0x5834db['operator']](_0x5834db[_0x4238('0x6e')],_0x16e018['queue']):![];case _0x4238('0x74'):return _0x16e018['membername']?operators[_0x5834db['operator']](_0x5834db[_0x4238('0x6e')],_0x16e018[_0x4238('0x75')]):![];case'lastevent':return _0x16e018['lastevent']?operators[_0x5834db[_0x4238('0x6d')]](_0x5834db[_0x4238('0x6e')],_0x16e018['lastevent']):![];case _0x4238('0x5f'):return _0x16e018[_0x4238('0x5f')]?operators[_0x5834db[_0x4238('0x6d')]](_0x5834db['value'],_0x16e018[_0x4238('0x5f')]):![];case _0x4238('0x76'):if(_0x5834db[_0x4238('0x6e')]==='null')_0x5834db[_0x4238('0x6e')]=null;return typeof _0x16e018[_0x4238('0x77')]!=='undefined'?operators[_0x5834db[_0x4238('0x6d')]](_0x5834db[_0x4238('0x6e')],_0x16e018['substatus']):![];case'offlineMessage':if(_0x16e018[_0x4238('0x64')]===_0x459e07){return _0x5834db['value']===_0x4238('0x78')&&_0x5834db[_0x4238('0x6d')]===_0x4238('0x79')?!![]:![];}break;}return![];};};module['exports']=Trigger;