33daa6e67884d230cded9925bd99b14e588980ef
[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 _0xa264=['600','winApplication','winArguments','user:%s','name','format','action','toLowerCase','jscripty','interface','trigger:%s','integration','routeId','urlforward','exec','script','query','search','replace','checkTrigger','AllConditions','checkConditions','channel','AnyConditions','field','chat','operator','value','ChatWebsiteId','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','exports','util','lodash','url','ioredis','./urlforward','./cmContact','./script','../rpc/cmContact','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:queuecallerabandon','syncAgentDial','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','info','stringify','clone','hasOwnProperty','merge','Actions','length','motionbar','data1','html','render','data2','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','windowHeight','data6'];(function(_0x102977,_0x3a99a6){var _0x15c466=function(_0x1a6a12){while(--_0x1a6a12){_0x102977['push'](_0x102977['shift']());}};_0x15c466(++_0x3a99a6);}(_0xa264,0x92));var _0x4a26=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0xa264[_0x432fca];return _0x3adba4;};'use strict';var util=require(_0x4a26('0x0'));var _=require(_0x4a26('0x1'));var url=require(_0x4a26('0x2'));var Mustache=require('mustache');var Redis=require(_0x4a26('0x3'));var urlforward=require(_0x4a26('0x4'));var integration=require('./integration');var cmContact=require(_0x4a26('0x5'));var script=require(_0x4a26('0x6'));var cmContactRpc=require(_0x4a26('0x7'));var config=require(_0x4a26('0x8'));var logger=require(_0x4a26('0x9'))(_0x4a26('0xa'));var ami=require(_0x4a26('0xb'));config[_0x4a26('0xc')]=_[_0x4a26('0xd')](config[_0x4a26('0xc')],{'host':_0x4a26('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4a26('0xc')]));var operators={'equals':function(_0x5e8ac5,_0x4749aa){return _0x5e8ac5==_0x4749aa;},'not_equals':function(_0x380ddf,_0x366ae7){return _0x380ddf!=_0x366ae7;}};var barAndWebActions=[_0x4a26('0xf'),_0x4a26('0x2'),_0x4a26('0x10')];function Trigger(_0x4605e2){this['triggers']=_0x4605e2[_0x4a26('0x11')];this['agents']=_0x4605e2[_0x4a26('0x12')];this[_0x4a26('0x13')]=_0x4605e2[_0x4a26('0x13')];this[_0x4a26('0x14')]=_0x4605e2['templates'];this[_0x4a26('0x15')]=_0x4605e2[_0x4a26('0x15')];this[_0x4a26('0x16')]=_0x4605e2['zendeskAccounts'];this[_0x4a26('0x17')]=_0x4605e2[_0x4a26('0x17')];this[_0x4a26('0x18')]=_0x4605e2[_0x4a26('0x18')];this[_0x4a26('0x19')]=_0x4605e2[_0x4a26('0x19')];this[_0x4a26('0x1a')]=_0x4605e2['zohoAccounts'];this[_0x4a26('0x1b')]=_0x4605e2[_0x4a26('0x1b')];this[_0x4a26('0x1c')]=_0x4605e2['vtigerAccounts'];this[_0x4a26('0x1d')]=_0x4605e2[_0x4a26('0x1d')];this['dynamics365Accounts']=_0x4605e2[_0x4a26('0x1e')];this[_0x4a26('0x1f')]=_0x4605e2['freshsalesAccounts'];this[_0x4a26('0x20')]={'zendesk':this[_0x4a26('0x16')],'salesforce':this['salesforceAccounts'],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x4a26('0x19')],'zoho':this[_0x4a26('0x1a')],'desk':this[_0x4a26('0x1b')],'vtiger':this['vtigerAccounts'],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0x4a26('0x1f')],'servicenow':this[_0x4a26('0x1d')]};ami['on'](_0x4a26('0x21'),this[_0x4a26('0x22')]['bind'](this));ami['on'](_0x4a26('0x23'),this[_0x4a26('0x22')]['bind'](this));ami['on']('custom:agentringnoanswer',this[_0x4a26('0x22')][_0x4a26('0x24')](this));ami['on']('custom:agentcomplete',this[_0x4a26('0x22')][_0x4a26('0x24')](this));ami['on'](_0x4a26('0x25'),this[_0x4a26('0x22')]['bind'](this));ami['on']('custom:dialbegin',this[_0x4a26('0x26')][_0x4a26('0x24')](this));ami['on']('custom:dialconnect',this['syncAgentDial'][_0x4a26('0x24')](this));ami['on'](_0x4a26('0x27'),this[_0x4a26('0x26')]['bind'](this));ami['on']('custom:newinteraction',this[_0x4a26('0x22')][_0x4a26('0x24')](this));ami['on'](_0x4a26('0x28'),this[_0x4a26('0x22')]['bind'](this));ami['on'](_0x4a26('0x29'),this['syncCustomEvent']['bind'](this));ami['on']('custom:outgoingmessage',this[_0x4a26('0x22')][_0x4a26('0x24')](this));ami['on'](_0x4a26('0x2a'),this['syncCustomEvent'][_0x4a26('0x24')](this));ami['on'](_0x4a26('0x2b'),this[_0x4a26('0x22')]['bind'](this));}Trigger[_0x4a26('0x2c')][_0x4a26('0x2d')]=function(_0x1293e7,_0x4459e4,_0x41430c){logger[_0x4a26('0x2e')](_0x1293e7,_0x4459e4,JSON[_0x4a26('0x2f')](_0x41430c));io['to'](_0x1293e7)[_0x4a26('0x2d')](_0x4459e4,_0x41430c);};Trigger[_0x4a26('0x2c')][_0x4a26('0x22')]=function(_0x312b78){var _0x1114fb=_[_0x4a26('0x30')](_0x312b78);this['checkTriggers'](_0x1114fb);};Trigger[_0x4a26('0x2c')][_0x4a26('0x26')]=function(_0x151ba8){if(this[_0x4a26('0x12')][_0x151ba8['interface']]){this['syncCustomEvent'](_0x151ba8);}};Trigger[_0x4a26('0x2c')]['checkTriggers']=function(_0x3ac9b9){var _0x75c4a1;for(var _0x59c89a in this[_0x4a26('0x11')]){if(this[_0x4a26('0x11')][_0x4a26('0x31')](_0x59c89a)){if(this[_0x4a26('0x11')][_0x59c89a]['status']){_0x75c4a1=this['checkTrigger'](this[_0x4a26('0x11')][_0x59c89a],_0x3ac9b9);if(_0x75c4a1){_[_0x4a26('0x32')](_0x3ac9b9,_0x3ac9b9['variables']);for(var _0x285fd7=0x0,_0x1dc072,_0x492d21,_0x1c524e;_0x285fd7<this[_0x4a26('0x11')][_0x59c89a][_0x4a26('0x33')][_0x4a26('0x34')];_0x285fd7+=0x1){_0x1dc072=this[_0x4a26('0x11')][_0x59c89a]['Actions'][_0x285fd7];if(this[_0x4a26('0x12')][_0x3ac9b9['interface']]){switch(_0x1dc072['action']['toLowerCase']()){case'contactmanager':break;case _0x4a26('0x35'):case'browser':var _0x1b20a2={};switch(barAndWebActions[_0x1dc072[_0x4a26('0x36')]]){case'popup':_0x1b20a2['TemplateId']=_0x1dc072['data2'];_0x1b20a2[_0x4a26('0x37')]=this[_0x4a26('0x14')][_0x1dc072['data2']]?Mustache[_0x4a26('0x38')](this[_0x4a26('0x14')][_0x1dc072[_0x4a26('0x39')]][_0x4a26('0x37')],_0x3ac9b9):'template\x20not\x20found';break;case'url':_0x1b20a2['uri']=this[_0x4a26('0x3a')](_0x1dc072[_0x4a26('0x39')],_0x3ac9b9,_[_0x4a26('0x3b')](_0x1dc072[_0x4a26('0x3c')])?!![]:parseInt(_0x1dc072[_0x4a26('0x3c')],0xa));if(_[_0x4a26('0x3b')](_0x1dc072[_0x4a26('0x3d')])){_0x1b20a2[_0x4a26('0x3e')]='0';}else{_0x1b20a2[_0x4a26('0x3f')]=_0x1dc072[_0x4a26('0x3d')];_0x1b20a2[_0x4a26('0x40')]=_[_0x4a26('0x3b')](_0x1dc072[_0x4a26('0x41')])?'800':_0x1dc072[_0x4a26('0x41')];_0x1b20a2[_0x4a26('0x42')]=_['isNil'](_0x1dc072[_0x4a26('0x43')])?_0x4a26('0x44'):_0x1dc072[_0x4a26('0x43')];}break;case _0x4a26('0x10'):_0x1b20a2[_0x4a26('0x45')]=_0x1dc072[_0x4a26('0x39')]?Mustache[_0x4a26('0x38')](_0x1dc072['data2'],_0x3ac9b9):'';_0x1b20a2[_0x4a26('0x46')]=_0x1dc072[_0x4a26('0x3c')]?Mustache[_0x4a26('0x38')](_0x1dc072[_0x4a26('0x3c')],_0x3ac9b9):'';break;}this[_0x4a26('0x2d')](util['format'](_0x4a26('0x47'),this[_0x4a26('0x12')][_0x3ac9b9['interface']][_0x4a26('0x48')]),util[_0x4a26('0x49')]('trigger:%s:%s',_0x1dc072[_0x4a26('0x4a')][_0x4a26('0x4b')](),barAndWebActions[_0x1dc072['data1']]),_[_0x4a26('0x32')](_0x1b20a2,_0x3ac9b9));break;case _0x4a26('0x4c'):this[_0x4a26('0x2d')](util[_0x4a26('0x49')](_0x4a26('0x47'),this[_0x4a26('0x12')][_0x3ac9b9[_0x4a26('0x4d')]][_0x4a26('0x48')]),util[_0x4a26('0x49')](_0x4a26('0x4e'),_0x1dc072[_0x4a26('0x4a')][_0x4a26('0x4b')]()),_[_0x4a26('0x32')]({'ProjectId':parseInt(_0x1dc072[_0x4a26('0x36')],0xa)},_0x3ac9b9));break;default:this[_0x4a26('0x2d')](util['format']('user:%s',this['agents'][_0x3ac9b9[_0x4a26('0x4d')]][_0x4a26('0x48')]),util[_0x4a26('0x49')](_0x4a26('0x4e'),_0x1dc072[_0x4a26('0x4a')][_0x4a26('0x4b')]()),_[_0x4a26('0x32')]({},_0x1dc072,_0x3ac9b9));}}switch(_0x1dc072[_0x4a26('0x4a')][_0x4a26('0x4b')]()){case'contactmanager':cmContact['exec'](this[_0x4a26('0x12')][_0x3ac9b9[_0x4a26('0x4d')]],_0x1dc072,_0x3ac9b9,cmContactRpc);break;case _0x4a26('0x4f'):integration['exec'](_0x1dc072,_0x3ac9b9,this[_0x4a26('0x20')],this[_0x4a26('0x12')][_0x3ac9b9[_0x4a26('0x4d')]],this[_0x4a26('0x13')][_0x3ac9b9['queue']],this['voiceExtensions'][_0x3ac9b9[_0x4a26('0x50')]]);break;case _0x4a26('0x51'):urlforward[_0x4a26('0x52')](_0x1dc072,_0x3ac9b9);break;case _0x4a26('0x53'):script[_0x4a26('0x52')](_0x1dc072,_0x3ac9b9);break;}}}}}}};Trigger[_0x4a26('0x2c')][_0x4a26('0x3a')]=function(_0x12b6c0,_0x9dcf82,_0x5bc7c6){var _0x340239=url['parse'](Mustache[_0x4a26('0x38')](_0x12b6c0,_0x9dcf82),!![]);if(_0x5bc7c6){_[_0x4a26('0x32')](_0x340239[_0x4a26('0x54')],_0x9dcf82);}delete _0x340239[_0x4a26('0x55')];var _0x53cc80=url[_0x4a26('0x49')](_0x340239);_0x53cc80=_0x53cc80[_0x4a26('0x56')](/\/\?/g,'?');return _0x53cc80;};Trigger['prototype'][_0x4a26('0x57')]=function(_0x3171e8,_0x7e1097){var _0x15b3a3=!![],_0x3ddef2=!![];if(_0x3171e8[_0x4a26('0x58')][_0x4a26('0x34')]){_0x15b3a3=_['every'](_0x3171e8[_0x4a26('0x58')],this[_0x4a26('0x59')](_0x7e1097,_0x3171e8[_0x4a26('0x5a')]));}if(_0x3171e8[_0x4a26('0x5b')][_0x4a26('0x34')]){_0x3ddef2=_['some'](_0x3171e8[_0x4a26('0x5b')],this['checkConditions'](_0x7e1097,_0x3171e8[_0x4a26('0x5a')]));}return _0x15b3a3&&_0x3ddef2;};Trigger[_0x4a26('0x2c')][_0x4a26('0x59')]=function(_0x336198,_0x21980d){return function(_0x7c1a7c){switch(_0x7c1a7c[_0x4a26('0x5c')]){case'account':if(_0x336198['channel']===_0x21980d){if(_0x21980d===_0x4a26('0x5d')){return _0x336198['ChatWebsiteId']?operators[_0x7c1a7c[_0x4a26('0x5e')]](Number(_0x7c1a7c[_0x4a26('0x5f')]),_0x336198[_0x4a26('0x60')]):![];}else{return _0x336198[_[_0x4a26('0x61')](_0x21980d)+_0x4a26('0x62')]?operators[_0x7c1a7c[_0x4a26('0x5e')]](Number(_0x7c1a7c[_0x4a26('0x5f')]),_0x336198[_['upperFirst'](_0x21980d)+_0x4a26('0x62')]):![];}}break;case _0x4a26('0x63'):case _0x4a26('0x64'):if(_0x336198[_0x4a26('0x5a')]===_0x21980d){return _0x336198[_0x4a26('0x65')]?operators[_0x7c1a7c['operator']](_0x7c1a7c['value'],_0x336198[_0x4a26('0x65')]):![];}break;case _0x4a26('0x66'):return _0x336198[_0x4a26('0x66')]?operators[_0x7c1a7c[_0x4a26('0x5e')]](_0x7c1a7c[_0x4a26('0x5f')],_0x336198['queue']):![];case _0x4a26('0x67'):return _0x336198[_0x4a26('0x68')]?operators[_0x7c1a7c[_0x4a26('0x5e')]](_0x7c1a7c[_0x4a26('0x5f')],_0x336198['membername']):![];case _0x4a26('0x69'):return _0x336198[_0x4a26('0x69')]?operators[_0x7c1a7c['operator']](_0x7c1a7c['value'],_0x336198['lastevent']):![];case _0x4a26('0x50'):return _0x336198[_0x4a26('0x50')]?operators[_0x7c1a7c[_0x4a26('0x5e')]](_0x7c1a7c[_0x4a26('0x5f')],_0x336198[_0x4a26('0x50')]):![];}return![];};};module[_0x4a26('0x6a')]=Trigger;