b571a4ef5ba3ae0b07dda7c20cd39f925356eb87
[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 _0xff12=['stringify','clone','checkTriggers','agents','interface','merge','variables','length','Actions','contactmanager','motionbar','browser','data1','TemplateId','data2','templates','render','html','template\x20not\x20found','buildUri','data3','isNil','data4','uriLocation','windowWidth','data5','800','windowHeight','600','data6','winapp','winApplication','winArguments','format','user:%s','action','trigger:%s','toLowerCase','name','exec','integration','queue','routeId','script','replace','checkTrigger','AllConditions','checkConditions','channel','AnyConditions','some','ChatWebsiteId','operator','value','AccountId','upperFirst','message','event','agent','membername','lastevent','exports','util','lodash','./urlforward','./integration','./cmContact','../../../config/logger','trigger','redis','socket.io-emitter','popup','url','triggers','voiceExtensions','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','freshdeskAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','prototype','emit'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0xff12,0xa8));var _0x2ff1=function(_0x5429e6,_0x1f78fe){_0x5429e6=_0x5429e6-0x0;var _0x3c6711=_0xff12[_0x5429e6];return _0x3c6711;};'use strict';var util=require(_0x2ff1('0x0'));var _=require(_0x2ff1('0x1'));var url=require('url');var Mustache=require('mustache');var Redis=require('ioredis');var urlforward=require(_0x2ff1('0x2'));var integration=require(_0x2ff1('0x3'));var cmContact=require(_0x2ff1('0x4'));var script=require('./script');var config=require('../../../config/environment');var logger=require(_0x2ff1('0x5'))(_0x2ff1('0x6'));var ami=require('../ami');config[_0x2ff1('0x7')]=_['defaults'](config[_0x2ff1('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x2ff1('0x8'))(new Redis(config[_0x2ff1('0x7')]));var operators={'equals':function(_0xf82e6a,_0x49337b){return _0xf82e6a==_0x49337b;},'not_equals':function(_0x3febd0,_0x327528){return _0x3febd0!=_0x327528;}};var barAndWebActions=[_0x2ff1('0x9'),_0x2ff1('0xa'),'winapp'];function Trigger(_0x170d00){this[_0x2ff1('0xb')]=_0x170d00[_0x2ff1('0xb')];this['agents']=_0x170d00['agents'];this['voiceQueues']=_0x170d00['voiceQueues'];this['templates']=_0x170d00['templates'];this[_0x2ff1('0xc')]=_0x170d00['voiceExtensions'];this[_0x2ff1('0xd')]=_0x170d00[_0x2ff1('0xd')];this['freshdeskAccounts']=_0x170d00['freshdeskAccounts'];this[_0x2ff1('0xe')]=_0x170d00['salesforceAccounts'];this['sugarcrmAccounts']=_0x170d00[_0x2ff1('0xf')];this['zohoAccounts']=_0x170d00[_0x2ff1('0x10')];this['deskAccounts']=_0x170d00[_0x2ff1('0x11')];this[_0x2ff1('0x12')]=_0x170d00[_0x2ff1('0x12')];this[_0x2ff1('0x13')]=_0x170d00[_0x2ff1('0x13')];this[_0x2ff1('0x14')]=_0x170d00[_0x2ff1('0x14')];this[_0x2ff1('0x15')]=_0x170d00[_0x2ff1('0x15')];this['accounts']={'zendesk':this[_0x2ff1('0xd')],'salesforce':this[_0x2ff1('0xe')],'freshdesk':this[_0x2ff1('0x16')],'sugarcrm':this[_0x2ff1('0xf')],'zoho':this[_0x2ff1('0x10')],'desk':this[_0x2ff1('0x11')],'vtiger':this[_0x2ff1('0x12')],'dynamics365':this[_0x2ff1('0x14')],'freshsales':this[_0x2ff1('0x15')],'servicenow':this[_0x2ff1('0x13')]};ami['on'](_0x2ff1('0x17'),this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x1a'),this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x1b'),this['syncCustomEvent'][_0x2ff1('0x19')](this));ami['on']('custom:agentcomplete',this['syncCustomEvent'][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x1c'),this[_0x2ff1('0x18')]['bind'](this));ami['on']('custom:agentnoanswer',this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x1d'),this[_0x2ff1('0x18')]['bind'](this));ami['on'](_0x2ff1('0x1e'),this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x1f'),this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x20'),this[_0x2ff1('0x18')]['bind'](this));ami['on'](_0x2ff1('0x21'),this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x22'),this[_0x2ff1('0x23')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x24'),this[_0x2ff1('0x23')][_0x2ff1('0x19')](this));ami['on']('custom:dialend',this[_0x2ff1('0x23')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x25'),this['syncCustomEvent']['bind'](this));ami['on'](_0x2ff1('0x26'),this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x27'),this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x28'),this[_0x2ff1('0x18')][_0x2ff1('0x19')](this));ami['on'](_0x2ff1('0x29'),this[_0x2ff1('0x18')]['bind'](this));ami['on']('custom:rejectmessage',this['syncCustomEvent']['bind'](this));}Trigger[_0x2ff1('0x2a')][_0x2ff1('0x2b')]=function(_0x5cac01,_0x3611fd,_0x52e1cb){logger['info'](_0x5cac01,_0x3611fd,JSON[_0x2ff1('0x2c')](_0x52e1cb));io['to'](_0x5cac01)[_0x2ff1('0x2b')](_0x3611fd,_0x52e1cb);};Trigger[_0x2ff1('0x2a')][_0x2ff1('0x18')]=function(_0x393ee5){var _0x55e0bf=_[_0x2ff1('0x2d')](_0x393ee5);this[_0x2ff1('0x2e')](_0x55e0bf);};Trigger['prototype'][_0x2ff1('0x23')]=function(_0x32414d){if(this[_0x2ff1('0x2f')][_0x32414d[_0x2ff1('0x30')]]){this[_0x2ff1('0x18')](_0x32414d);}};Trigger['prototype'][_0x2ff1('0x2e')]=function(_0x4e543b){var _0x511a30;for(var _0x4abceb in this[_0x2ff1('0xb')]){if(this[_0x2ff1('0xb')]['hasOwnProperty'](_0x4abceb)){if(this['triggers'][_0x4abceb]['status']){_0x511a30=this['checkTrigger'](this['triggers'][_0x4abceb],_0x4e543b);if(_0x511a30){_[_0x2ff1('0x31')](_0x4e543b,_0x4e543b[_0x2ff1('0x32')]);for(var _0x4f4a81=0x0,_0x39e5c0,_0x113ab1,_0x452b47;_0x4f4a81<this[_0x2ff1('0xb')][_0x4abceb]['Actions'][_0x2ff1('0x33')];_0x4f4a81+=0x1){_0x39e5c0=this[_0x2ff1('0xb')][_0x4abceb][_0x2ff1('0x34')][_0x4f4a81];if(this[_0x2ff1('0x2f')][_0x4e543b[_0x2ff1('0x30')]]){switch(_0x39e5c0['action']['toLowerCase']()){case _0x2ff1('0x35'):break;case _0x2ff1('0x36'):case _0x2ff1('0x37'):var _0x11c8a7={};switch(barAndWebActions[_0x39e5c0[_0x2ff1('0x38')]]){case _0x2ff1('0x9'):_0x11c8a7[_0x2ff1('0x39')]=_0x39e5c0[_0x2ff1('0x3a')];_0x11c8a7['html']=this[_0x2ff1('0x3b')][_0x39e5c0[_0x2ff1('0x3a')]]?Mustache[_0x2ff1('0x3c')](this['templates'][_0x39e5c0['data2']][_0x2ff1('0x3d')],_0x4e543b):_0x2ff1('0x3e');break;case _0x2ff1('0xa'):_0x11c8a7['uri']=this[_0x2ff1('0x3f')](_0x39e5c0[_0x2ff1('0x3a')],_0x4e543b,_['isNil'](_0x39e5c0[_0x2ff1('0x40')])?!![]:parseInt(_0x39e5c0[_0x2ff1('0x40')],0xa));if(_[_0x2ff1('0x41')](_0x39e5c0[_0x2ff1('0x42')])){_0x11c8a7['location']='0';}else{_0x11c8a7[_0x2ff1('0x43')]=_0x39e5c0[_0x2ff1('0x42')];_0x11c8a7[_0x2ff1('0x44')]=_[_0x2ff1('0x41')](_0x39e5c0[_0x2ff1('0x45')])?_0x2ff1('0x46'):_0x39e5c0[_0x2ff1('0x45')];_0x11c8a7[_0x2ff1('0x47')]=_[_0x2ff1('0x41')](_0x39e5c0['data6'])?_0x2ff1('0x48'):_0x39e5c0[_0x2ff1('0x49')];}break;case _0x2ff1('0x4a'):_0x11c8a7[_0x2ff1('0x4b')]=_0x39e5c0[_0x2ff1('0x3a')]?Mustache[_0x2ff1('0x3c')](_0x39e5c0[_0x2ff1('0x3a')],_0x4e543b):'';_0x11c8a7[_0x2ff1('0x4c')]=_0x39e5c0['data3']?Mustache[_0x2ff1('0x3c')](_0x39e5c0['data3'],_0x4e543b):'';break;}this[_0x2ff1('0x2b')](util[_0x2ff1('0x4d')](_0x2ff1('0x4e'),this[_0x2ff1('0x2f')][_0x4e543b[_0x2ff1('0x30')]]['name']),util[_0x2ff1('0x4d')]('trigger:%s:%s',_0x39e5c0[_0x2ff1('0x4f')]['toLowerCase'](),barAndWebActions[_0x39e5c0[_0x2ff1('0x38')]]),_[_0x2ff1('0x31')](_0x11c8a7,_0x4e543b));break;case'jscripty':this['emit'](util[_0x2ff1('0x4d')](_0x2ff1('0x4e'),this['agents'][_0x4e543b[_0x2ff1('0x30')]]['name']),util[_0x2ff1('0x4d')](_0x2ff1('0x50'),_0x39e5c0[_0x2ff1('0x4f')][_0x2ff1('0x51')]()),_['merge']({'ProjectId':parseInt(_0x39e5c0[_0x2ff1('0x38')],0xa)},_0x4e543b));break;default:this[_0x2ff1('0x2b')](util[_0x2ff1('0x4d')](_0x2ff1('0x4e'),this[_0x2ff1('0x2f')][_0x4e543b[_0x2ff1('0x30')]][_0x2ff1('0x52')]),util[_0x2ff1('0x4d')](_0x2ff1('0x50'),_0x39e5c0[_0x2ff1('0x4f')][_0x2ff1('0x51')]()),_[_0x2ff1('0x31')]({},_0x39e5c0,_0x4e543b));}}switch(_0x39e5c0[_0x2ff1('0x4f')][_0x2ff1('0x51')]()){case _0x2ff1('0x35'):cmContact[_0x2ff1('0x53')](this[_0x2ff1('0x2f')][_0x4e543b[_0x2ff1('0x30')]],this[_0x2ff1('0xb')][_0x4abceb],_0x39e5c0,_0x4e543b);break;case _0x2ff1('0x54'):integration[_0x2ff1('0x53')](_0x39e5c0,_0x4e543b,this['accounts'],this[_0x2ff1('0x2f')][_0x4e543b['interface']],this['voiceQueues'][_0x4e543b[_0x2ff1('0x55')]],this[_0x2ff1('0xc')][_0x4e543b[_0x2ff1('0x56')]]);break;case'urlforward':urlforward[_0x2ff1('0x53')](_0x39e5c0,_0x4e543b);break;case _0x2ff1('0x57'):script[_0x2ff1('0x53')](_0x39e5c0,_0x4e543b);break;}}}}}}};Trigger[_0x2ff1('0x2a')][_0x2ff1('0x3f')]=function(_0x256f9d,_0x4cabea,_0x314b1e){var _0x590cd5=url['parse'](Mustache[_0x2ff1('0x3c')](_0x256f9d,_0x4cabea),!![]);if(_0x314b1e){_[_0x2ff1('0x31')](_0x590cd5['query'],_0x4cabea);}delete _0x590cd5['search'];var _0x4b73a3=url[_0x2ff1('0x4d')](_0x590cd5);_0x4b73a3=_0x4b73a3[_0x2ff1('0x58')](/\/\?/g,'?');return _0x4b73a3;};Trigger[_0x2ff1('0x2a')][_0x2ff1('0x59')]=function(_0x4c2364,_0x1d0f08){var _0x33e41a=!![],_0x584267=!![];if(_0x4c2364[_0x2ff1('0x5a')][_0x2ff1('0x33')]){_0x33e41a=_['every'](_0x4c2364[_0x2ff1('0x5a')],this[_0x2ff1('0x5b')](_0x1d0f08,_0x4c2364[_0x2ff1('0x5c')]));}if(_0x4c2364[_0x2ff1('0x5d')][_0x2ff1('0x33')]){_0x584267=_[_0x2ff1('0x5e')](_0x4c2364['AnyConditions'],this[_0x2ff1('0x5b')](_0x1d0f08,_0x4c2364[_0x2ff1('0x5c')]));}return _0x33e41a&&_0x584267;};Trigger[_0x2ff1('0x2a')][_0x2ff1('0x5b')]=function(_0x2756bf,_0xe74881){return function(_0x515f99){switch(_0x515f99['field']){case'account':if(_0x2756bf[_0x2ff1('0x5c')]===_0xe74881){if(_0xe74881==='chat'){return _0x2756bf[_0x2ff1('0x5f')]?operators[_0x515f99[_0x2ff1('0x60')]](Number(_0x515f99[_0x2ff1('0x61')]),_0x2756bf['ChatWebsiteId']):![];}else{return _0x2756bf[_['upperFirst'](_0xe74881)+_0x2ff1('0x62')]?operators[_0x515f99[_0x2ff1('0x60')]](Number(_0x515f99[_0x2ff1('0x61')]),_0x2756bf[_[_0x2ff1('0x63')](_0xe74881)+_0x2ff1('0x62')]):![];}}break;case'interaction':case _0x2ff1('0x64'):if(_0x2756bf[_0x2ff1('0x5c')]===_0xe74881){return _0x2756bf[_0x2ff1('0x65')]?operators[_0x515f99['operator']](_0x515f99['value'],_0x2756bf[_0x2ff1('0x65')]):![];}break;case _0x2ff1('0x55'):return _0x2756bf[_0x2ff1('0x55')]?operators[_0x515f99[_0x2ff1('0x60')]](_0x515f99[_0x2ff1('0x61')],_0x2756bf[_0x2ff1('0x55')]):![];case _0x2ff1('0x66'):return _0x2756bf['membername']?operators[_0x515f99[_0x2ff1('0x60')]](_0x515f99[_0x2ff1('0x61')],_0x2756bf[_0x2ff1('0x67')]):![];case _0x2ff1('0x68'):return _0x2756bf['lastevent']?operators[_0x515f99[_0x2ff1('0x60')]](_0x515f99[_0x2ff1('0x61')],_0x2756bf[_0x2ff1('0x68')]):![];case _0x2ff1('0x56'):return _0x2756bf['routeId']?operators[_0x515f99['operator']](_0x515f99[_0x2ff1('0x61')],_0x2756bf[_0x2ff1('0x56')]):![];}return![];};};module[_0x2ff1('0x69')]=Trigger;