8f3d055523e0f05abead2e186f433b5869888219
[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 _0x0954=['dynamics365Accounts','accounts','salesforceAccounts','freshsalesAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','stringify','clone','checkTriggers','interface','hasOwnProperty','status','merge','variables','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data4','location','uriLocation','data5','800','600','winApplication','winArguments','data3','user:%s','name','format','trigger:%s','exec','integration','queue','routeId','script','parse','search','replace','checkTrigger','AllConditions','every','channel','AnyConditions','some','checkConditions','field','account','chat','ChatWebsiteId','operator','AccountId','value','upperFirst','interaction','message','event','membername','lastevent','exports','util','url','mustache','./urlforward','./integration','./cmContact','./script','../rpc/cmContact','../../../config/environment','redis','defaults','localhost','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','zendeskAccounts','freshdeskAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','servicenowAccounts'];(function(_0x4adea6,_0x5ad6f7){var _0x500e84=function(_0x30f2a0){while(--_0x30f2a0){_0x4adea6['push'](_0x4adea6['shift']());}};_0x500e84(++_0x5ad6f7);}(_0x0954,0x135));var _0x4095=function(_0xf2662b,_0x4d8f41){_0xf2662b=_0xf2662b-0x0;var _0x257dc7=_0x0954[_0xf2662b];return _0x257dc7;};'use strict';var util=require(_0x4095('0x0'));var _=require('lodash');var url=require(_0x4095('0x1'));var Mustache=require(_0x4095('0x2'));var Redis=require('ioredis');var urlforward=require(_0x4095('0x3'));var integration=require(_0x4095('0x4'));var cmContact=require(_0x4095('0x5'));var script=require(_0x4095('0x6'));var cmContactRpc=require(_0x4095('0x7'));var config=require(_0x4095('0x8'));var logger=require('../../../config/logger')('trigger');var ami=require('../ami');config[_0x4095('0x9')]=_[_0x4095('0xa')](config[_0x4095('0x9')],{'host':_0x4095('0xb'),'port':0x18eb});var io=require(_0x4095('0xc'))(new Redis(config[_0x4095('0x9')]));var operators={'equals':function(_0x54264c,_0x158dc7){return _0x54264c==_0x158dc7;},'not_equals':function(_0xe32904,_0x9e1747){return _0xe32904!=_0x9e1747;}};var barAndWebActions=['popup',_0x4095('0x1'),_0x4095('0xd')];function Trigger(_0xe39dd9){this['triggers']=_0xe39dd9[_0x4095('0xe')];this['agents']=_0xe39dd9[_0x4095('0xf')];this['voiceQueues']=_0xe39dd9[_0x4095('0x10')];this[_0x4095('0x11')]=_0xe39dd9[_0x4095('0x11')];this['voiceExtensions']=_0xe39dd9['voiceExtensions'];this[_0x4095('0x12')]=_0xe39dd9[_0x4095('0x12')];this[_0x4095('0x13')]=_0xe39dd9[_0x4095('0x13')];this['salesforceAccounts']=_0xe39dd9['salesforceAccounts'];this[_0x4095('0x14')]=_0xe39dd9[_0x4095('0x14')];this[_0x4095('0x15')]=_0xe39dd9[_0x4095('0x15')];this[_0x4095('0x16')]=_0xe39dd9[_0x4095('0x16')];this['vtigerAccounts']=_0xe39dd9['vtigerAccounts'];this[_0x4095('0x17')]=_0xe39dd9[_0x4095('0x17')];this['dynamics365Accounts']=_0xe39dd9[_0x4095('0x18')];this['freshsalesAccounts']=_0xe39dd9['freshsalesAccounts'];this[_0x4095('0x19')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x4095('0x1a')],'freshdesk':this[_0x4095('0x13')],'sugarcrm':this[_0x4095('0x14')],'zoho':this[_0x4095('0x15')],'desk':this['deskAccounts'],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x4095('0x18')],'freshsales':this[_0x4095('0x1b')],'servicenow':this[_0x4095('0x17')]};ami['on'](_0x4095('0x1c'),this[_0x4095('0x1d')][_0x4095('0x1e')](this));ami['on'](_0x4095('0x1f'),this[_0x4095('0x1d')][_0x4095('0x1e')](this));ami['on'](_0x4095('0x20'),this[_0x4095('0x1d')][_0x4095('0x1e')](this));ami['on'](_0x4095('0x21'),this[_0x4095('0x1d')]['bind'](this));ami['on']('custom:queuecallerabandon',this[_0x4095('0x1d')][_0x4095('0x1e')](this));ami['on'](_0x4095('0x22'),this['syncCustomEvent']['bind'](this));ami['on'](_0x4095('0x23'),this[_0x4095('0x24')][_0x4095('0x1e')](this));ami['on'](_0x4095('0x25'),this[_0x4095('0x24')]['bind'](this));ami['on'](_0x4095('0x26'),this[_0x4095('0x24')][_0x4095('0x1e')](this));ami['on'](_0x4095('0x27'),this['syncCustomEvent'][_0x4095('0x1e')](this));ami['on']('custom:closedinteraction',this['syncCustomEvent'][_0x4095('0x1e')](this));ami['on'](_0x4095('0x28'),this[_0x4095('0x1d')][_0x4095('0x1e')](this));ami['on']('custom:outgoingmessage',this[_0x4095('0x1d')]['bind'](this));ami['on'](_0x4095('0x29'),this[_0x4095('0x1d')]['bind'](this));ami['on'](_0x4095('0x2a'),this[_0x4095('0x1d')][_0x4095('0x1e')](this));}Trigger[_0x4095('0x2b')][_0x4095('0x2c')]=function(_0x43254e,_0x2e4b1e,_0xee8562){logger['info'](_0x43254e,_0x2e4b1e,JSON[_0x4095('0x2d')](_0xee8562));io['to'](_0x43254e)['emit'](_0x2e4b1e,_0xee8562);};Trigger[_0x4095('0x2b')][_0x4095('0x1d')]=function(_0x4c2f0d){var _0x367ed8=_[_0x4095('0x2e')](_0x4c2f0d);this[_0x4095('0x2f')](_0x367ed8);};Trigger[_0x4095('0x2b')][_0x4095('0x24')]=function(_0x19e6ed){if(this[_0x4095('0xf')][_0x19e6ed[_0x4095('0x30')]]){this[_0x4095('0x1d')](_0x19e6ed);}};Trigger['prototype'][_0x4095('0x2f')]=function(_0x9ae55d){var _0x53b7ea;for(var _0x42b09c in this['triggers']){if(this['triggers'][_0x4095('0x31')](_0x42b09c)){if(this[_0x4095('0xe')][_0x42b09c][_0x4095('0x32')]){_0x53b7ea=this['checkTrigger'](this['triggers'][_0x42b09c],_0x9ae55d);if(_0x53b7ea){_[_0x4095('0x33')](_0x9ae55d,_0x9ae55d[_0x4095('0x34')]);for(var _0x1649f9=0x0,_0x598ef1,_0x1df981,_0x1d2104;_0x1649f9<this[_0x4095('0xe')][_0x42b09c][_0x4095('0x35')][_0x4095('0x36')];_0x1649f9+=0x1){_0x598ef1=this[_0x4095('0xe')][_0x42b09c][_0x4095('0x35')][_0x1649f9];if(this[_0x4095('0xf')][_0x9ae55d[_0x4095('0x30')]]){switch(_0x598ef1[_0x4095('0x37')][_0x4095('0x38')]()){case _0x4095('0x39'):break;case _0x4095('0x3a'):case _0x4095('0x3b'):var _0x488d28={};switch(barAndWebActions[_0x598ef1[_0x4095('0x3c')]]){case'popup':_0x488d28[_0x4095('0x3d')]=_0x598ef1[_0x4095('0x3e')];_0x488d28[_0x4095('0x3f')]=this[_0x4095('0x11')][_0x598ef1['data2']]?Mustache[_0x4095('0x40')](this['templates'][_0x598ef1[_0x4095('0x3e')]]['html'],_0x9ae55d):_0x4095('0x41');break;case _0x4095('0x1'):_0x488d28[_0x4095('0x42')]=this[_0x4095('0x43')](_0x598ef1[_0x4095('0x3e')],_0x9ae55d,_['isNil'](_0x598ef1['data3'])?!![]:parseInt(_0x598ef1['data3'],0xa));if(_[_0x4095('0x44')](_0x598ef1[_0x4095('0x45')])){_0x488d28[_0x4095('0x46')]='0';}else{_0x488d28[_0x4095('0x47')]=_0x598ef1[_0x4095('0x45')];_0x488d28['windowWidth']=_[_0x4095('0x44')](_0x598ef1[_0x4095('0x48')])?_0x4095('0x49'):_0x598ef1['data5'];_0x488d28['windowHeight']=_['isNil'](_0x598ef1['data6'])?_0x4095('0x4a'):_0x598ef1['data6'];}break;case _0x4095('0xd'):_0x488d28[_0x4095('0x4b')]=_0x598ef1[_0x4095('0x3e')]?Mustache[_0x4095('0x40')](_0x598ef1[_0x4095('0x3e')],_0x9ae55d):'';_0x488d28[_0x4095('0x4c')]=_0x598ef1[_0x4095('0x4d')]?Mustache['render'](_0x598ef1[_0x4095('0x4d')],_0x9ae55d):'';break;}this[_0x4095('0x2c')](util['format'](_0x4095('0x4e'),this[_0x4095('0xf')][_0x9ae55d[_0x4095('0x30')]][_0x4095('0x4f')]),util['format']('trigger:%s:%s',_0x598ef1[_0x4095('0x37')][_0x4095('0x38')](),barAndWebActions[_0x598ef1[_0x4095('0x3c')]]),_[_0x4095('0x33')](_0x488d28,_0x9ae55d));break;case'jscripty':this[_0x4095('0x2c')](util['format'](_0x4095('0x4e'),this[_0x4095('0xf')][_0x9ae55d[_0x4095('0x30')]][_0x4095('0x4f')]),util[_0x4095('0x50')](_0x4095('0x51'),_0x598ef1[_0x4095('0x37')][_0x4095('0x38')]()),_[_0x4095('0x33')]({'ProjectId':parseInt(_0x598ef1[_0x4095('0x3c')],0xa)},_0x9ae55d));break;default:this[_0x4095('0x2c')](util[_0x4095('0x50')]('user:%s',this[_0x4095('0xf')][_0x9ae55d['interface']][_0x4095('0x4f')]),util[_0x4095('0x50')](_0x4095('0x51'),_0x598ef1[_0x4095('0x37')][_0x4095('0x38')]()),_[_0x4095('0x33')]({},_0x598ef1,_0x9ae55d));}}switch(_0x598ef1[_0x4095('0x37')][_0x4095('0x38')]()){case _0x4095('0x39'):cmContact[_0x4095('0x52')](this[_0x4095('0xf')][_0x9ae55d[_0x4095('0x30')]],_0x598ef1,_0x9ae55d,cmContactRpc);break;case _0x4095('0x53'):integration[_0x4095('0x52')](_0x598ef1,_0x9ae55d,this[_0x4095('0x19')],this[_0x4095('0xf')][_0x9ae55d[_0x4095('0x30')]],this[_0x4095('0x10')][_0x9ae55d[_0x4095('0x54')]],this['voiceExtensions'][_0x9ae55d[_0x4095('0x55')]]);break;case'urlforward':urlforward[_0x4095('0x52')](_0x598ef1,_0x9ae55d);break;case _0x4095('0x56'):script[_0x4095('0x52')](_0x598ef1,_0x9ae55d);break;}}}}}}};Trigger[_0x4095('0x2b')][_0x4095('0x43')]=function(_0x1a3167,_0x18a20c,_0x33f64f){var _0x21091f=url[_0x4095('0x57')](Mustache[_0x4095('0x40')](_0x1a3167,_0x18a20c),!![]);if(_0x33f64f){_[_0x4095('0x33')](_0x21091f['query'],_0x18a20c);}delete _0x21091f[_0x4095('0x58')];var _0x41a570=url[_0x4095('0x50')](_0x21091f);_0x41a570=_0x41a570[_0x4095('0x59')](/\/\?/g,'?');return _0x41a570;};Trigger['prototype'][_0x4095('0x5a')]=function(_0x117ae9,_0x388829){var _0xf6fd5=!![],_0x4ed088=!![];if(_0x117ae9[_0x4095('0x5b')][_0x4095('0x36')]){_0xf6fd5=_[_0x4095('0x5c')](_0x117ae9['AllConditions'],this['checkConditions'](_0x388829,_0x117ae9[_0x4095('0x5d')]));}if(_0x117ae9[_0x4095('0x5e')][_0x4095('0x36')]){_0x4ed088=_[_0x4095('0x5f')](_0x117ae9[_0x4095('0x5e')],this['checkConditions'](_0x388829,_0x117ae9['channel']));}return _0xf6fd5&&_0x4ed088;};Trigger[_0x4095('0x2b')][_0x4095('0x60')]=function(_0x11b7c9,_0x2ab247){return function(_0x1155bf){switch(_0x1155bf[_0x4095('0x61')]){case _0x4095('0x62'):if(_0x11b7c9[_0x4095('0x5d')]===_0x2ab247){if(_0x2ab247===_0x4095('0x63')){return _0x11b7c9[_0x4095('0x64')]?operators[_0x1155bf[_0x4095('0x65')]](Number(_0x1155bf['value']),_0x11b7c9[_0x4095('0x64')]):![];}else{return _0x11b7c9[_['upperFirst'](_0x2ab247)+_0x4095('0x66')]?operators[_0x1155bf[_0x4095('0x65')]](Number(_0x1155bf[_0x4095('0x67')]),_0x11b7c9[_[_0x4095('0x68')](_0x2ab247)+_0x4095('0x66')]):![];}}break;case _0x4095('0x69'):case _0x4095('0x6a'):if(_0x11b7c9['channel']===_0x2ab247){return _0x11b7c9['event']?operators[_0x1155bf[_0x4095('0x65')]](_0x1155bf[_0x4095('0x67')],_0x11b7c9[_0x4095('0x6b')]):![];}break;case _0x4095('0x54'):return _0x11b7c9[_0x4095('0x54')]?operators[_0x1155bf[_0x4095('0x65')]](_0x1155bf[_0x4095('0x67')],_0x11b7c9[_0x4095('0x54')]):![];case'agent':return _0x11b7c9[_0x4095('0x6c')]?operators[_0x1155bf['operator']](_0x1155bf['value'],_0x11b7c9[_0x4095('0x6c')]):![];case _0x4095('0x6d'):return _0x11b7c9[_0x4095('0x6d')]?operators[_0x1155bf[_0x4095('0x65')]](_0x1155bf[_0x4095('0x67')],_0x11b7c9['lastevent']):![];case _0x4095('0x55'):return _0x11b7c9[_0x4095('0x55')]?operators[_0x1155bf['operator']](_0x1155bf['value'],_0x11b7c9['routeId']):![];}return![];};};module[_0x4095('0x6e')]=Trigger;