e4198f91e471024a5804fd1ca5d9b61bb293fa5e
[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 _0x5040=['lodash','url','ioredis','./integration','./cmContact','./script','../rpc/cmContact','../../../config/environment','../../../config/logger','../ami','redis','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentreject','custom:timeout','syncAgentDial','custom:dialend','custom:newinteraction','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','prototype','info','stringify','clone','checkTriggers','interface','hasOwnProperty','status','checkTrigger','length','Actions','action','toLowerCase','contactmanager','data1','TemplateId','data2','html','render','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','600','winArguments','emit','user:%s','name','format','merge','jscripty','trigger:%s','integration','exec','accounts','queue','routeId','script','parse','search','replace','AllConditions','every','channel','some','AnyConditions','checkConditions','field','ChatWebsiteId','operator','value','upperFirst','AccountId','message','event','agent','membername','lastevent'];(function(_0x12aa5f,_0x1a6cc9){var _0x1302d1=function(_0x1dd2d1){while(--_0x1dd2d1){_0x12aa5f['push'](_0x12aa5f['shift']());}};_0x1302d1(++_0x1a6cc9);}(_0x5040,0x70));var _0x0504=function(_0x12cf90,_0x174764){_0x12cf90=_0x12cf90-0x0;var _0x4d2de2=_0x5040[_0x12cf90];return _0x4d2de2;};'use strict';var util=require('util');var _=require(_0x0504('0x0'));var url=require(_0x0504('0x1'));var Mustache=require('mustache');var Redis=require(_0x0504('0x2'));var urlforward=require('./urlforward');var integration=require(_0x0504('0x3'));var cmContact=require(_0x0504('0x4'));var script=require(_0x0504('0x5'));var cmContactRpc=require(_0x0504('0x6'));var config=require(_0x0504('0x7'));var logger=require(_0x0504('0x8'))('trigger');var ami=require(_0x0504('0x9'));config[_0x0504('0xa')]=_['defaults'](config['redis'],{'host':_0x0504('0xb'),'port':0x18eb});var io=require(_0x0504('0xc'))(new Redis(config[_0x0504('0xa')]));var operators={'equals':function(_0x287a52,_0x4b04dc){return _0x287a52==_0x4b04dc;},'not_equals':function(_0x180d5e,_0x1efe07){return _0x180d5e!=_0x1efe07;}};var barAndWebActions=[_0x0504('0xd'),_0x0504('0x1'),_0x0504('0xe')];function Trigger(_0x44fdac){this[_0x0504('0xf')]=_0x44fdac[_0x0504('0xf')];this[_0x0504('0x10')]=_0x44fdac[_0x0504('0x10')];this['voiceQueues']=_0x44fdac[_0x0504('0x11')];this[_0x0504('0x12')]=_0x44fdac[_0x0504('0x12')];this[_0x0504('0x13')]=_0x44fdac[_0x0504('0x13')];this[_0x0504('0x14')]=_0x44fdac[_0x0504('0x14')];this['freshdeskAccounts']=_0x44fdac[_0x0504('0x15')];this[_0x0504('0x16')]=_0x44fdac[_0x0504('0x16')];this['sugarcrmAccounts']=_0x44fdac[_0x0504('0x17')];this[_0x0504('0x18')]=_0x44fdac[_0x0504('0x18')];this[_0x0504('0x19')]=_0x44fdac[_0x0504('0x19')];this[_0x0504('0x1a')]=_0x44fdac[_0x0504('0x1a')];this[_0x0504('0x1b')]=_0x44fdac[_0x0504('0x1b')];this[_0x0504('0x1c')]=_0x44fdac[_0x0504('0x1c')];this[_0x0504('0x1d')]=_0x44fdac[_0x0504('0x1d')];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x0504('0x15')],'sugarcrm':this[_0x0504('0x17')],'zoho':this[_0x0504('0x18')],'desk':this[_0x0504('0x19')],'vtiger':this[_0x0504('0x1a')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0x0504('0x1d')],'servicenow':this[_0x0504('0x1b')]};ami['on'](_0x0504('0x1e'),this[_0x0504('0x1f')][_0x0504('0x20')](this));ami['on']('custom:agentconnect',this[_0x0504('0x1f')][_0x0504('0x20')](this));ami['on'](_0x0504('0x21'),this['syncCustomEvent'][_0x0504('0x20')](this));ami['on'](_0x0504('0x22'),this['syncCustomEvent'][_0x0504('0x20')](this));ami['on'](_0x0504('0x23'),this[_0x0504('0x1f')][_0x0504('0x20')](this));ami['on'](_0x0504('0x24'),this[_0x0504('0x1f')]['bind'](this));ami['on'](_0x0504('0x25'),this[_0x0504('0x1f')][_0x0504('0x20')](this));ami['on']('custom:agentcongestion',this['syncCustomEvent'][_0x0504('0x20')](this));ami['on'](_0x0504('0x26'),this['syncCustomEvent']['bind'](this));ami['on']('custom:queuecallerabandon',this[_0x0504('0x1f')]['bind'](this));ami['on'](_0x0504('0x27'),this[_0x0504('0x1f')]['bind'](this));ami['on']('custom:dialbegin',this[_0x0504('0x28')][_0x0504('0x20')](this));ami['on']('custom:dialconnect',this[_0x0504('0x28')][_0x0504('0x20')](this));ami['on'](_0x0504('0x29'),this['syncAgentDial'][_0x0504('0x20')](this));ami['on'](_0x0504('0x2a'),this['syncCustomEvent'][_0x0504('0x20')](this));ami['on']('custom:closedinteraction',this[_0x0504('0x1f')][_0x0504('0x20')](this));ami['on'](_0x0504('0x2b'),this['syncCustomEvent'][_0x0504('0x20')](this));ami['on'](_0x0504('0x2c'),this[_0x0504('0x1f')][_0x0504('0x20')](this));ami['on']('custom:acceptmessage',this[_0x0504('0x1f')][_0x0504('0x20')](this));ami['on'](_0x0504('0x2d'),this['syncCustomEvent'][_0x0504('0x20')](this));}Trigger[_0x0504('0x2e')]['emit']=function(_0x40acb9,_0x5884be,_0x320c4c){logger[_0x0504('0x2f')](_0x40acb9,_0x5884be,JSON[_0x0504('0x30')](_0x320c4c));io['to'](_0x40acb9)['emit'](_0x5884be,_0x320c4c);};Trigger['prototype'][_0x0504('0x1f')]=function(_0x1b8d84){var _0x3e0bf7=_[_0x0504('0x31')](_0x1b8d84);this[_0x0504('0x32')](_0x3e0bf7);};Trigger[_0x0504('0x2e')]['syncAgentDial']=function(_0x284ce0){if(this[_0x0504('0x10')][_0x284ce0[_0x0504('0x33')]]){this[_0x0504('0x1f')](_0x284ce0);}};Trigger[_0x0504('0x2e')][_0x0504('0x32')]=function(_0xb95cb1){var _0x3866fe;for(var _0x1db048 in this['triggers']){if(this[_0x0504('0xf')][_0x0504('0x34')](_0x1db048)){if(this[_0x0504('0xf')][_0x1db048][_0x0504('0x35')]){_0x3866fe=this[_0x0504('0x36')](this[_0x0504('0xf')][_0x1db048],_0xb95cb1);if(_0x3866fe){_['merge'](_0xb95cb1,_0xb95cb1['variables']);for(var _0x59491b=0x0,_0x20afb9,_0x4eaf2b,_0x57f3bf;_0x59491b<this[_0x0504('0xf')][_0x1db048]['Actions'][_0x0504('0x37')];_0x59491b+=0x1){_0x20afb9=this[_0x0504('0xf')][_0x1db048][_0x0504('0x38')][_0x59491b];if(this[_0x0504('0x10')][_0xb95cb1['interface']]){switch(_0x20afb9[_0x0504('0x39')][_0x0504('0x3a')]()){case _0x0504('0x3b'):break;case'motionbar':case'browser':var _0x525096={};switch(barAndWebActions[_0x20afb9[_0x0504('0x3c')]]){case _0x0504('0xd'):_0x525096[_0x0504('0x3d')]=_0x20afb9[_0x0504('0x3e')];_0x525096[_0x0504('0x3f')]=this[_0x0504('0x12')][_0x20afb9[_0x0504('0x3e')]]?Mustache[_0x0504('0x40')](this[_0x0504('0x12')][_0x20afb9[_0x0504('0x3e')]][_0x0504('0x3f')],_0xb95cb1):'template\x20not\x20found';break;case _0x0504('0x1'):_0x525096[_0x0504('0x41')]=this[_0x0504('0x42')](_0x20afb9['data2'],_0xb95cb1,_[_0x0504('0x43')](_0x20afb9[_0x0504('0x44')])?!![]:parseInt(_0x20afb9[_0x0504('0x44')],0xa));if(_['isNil'](_0x20afb9[_0x0504('0x45')])){_0x525096[_0x0504('0x46')]='0';}else{_0x525096[_0x0504('0x47')]=_0x20afb9[_0x0504('0x45')];_0x525096[_0x0504('0x48')]=_[_0x0504('0x43')](_0x20afb9[_0x0504('0x49')])?_0x0504('0x4a'):_0x20afb9[_0x0504('0x49')];_0x525096[_0x0504('0x4b')]=_[_0x0504('0x43')](_0x20afb9[_0x0504('0x4c')])?_0x0504('0x4d'):_0x20afb9[_0x0504('0x4c')];}break;case'winapp':_0x525096['winApplication']=_0x20afb9['data2']?Mustache['render'](_0x20afb9[_0x0504('0x3e')],_0xb95cb1):'';_0x525096[_0x0504('0x4e')]=_0x20afb9[_0x0504('0x44')]?Mustache[_0x0504('0x40')](_0x20afb9[_0x0504('0x44')],_0xb95cb1):'';break;}this[_0x0504('0x4f')](util['format'](_0x0504('0x50'),this[_0x0504('0x10')][_0xb95cb1[_0x0504('0x33')]][_0x0504('0x51')]),util[_0x0504('0x52')]('trigger:%s:%s',_0x20afb9[_0x0504('0x39')][_0x0504('0x3a')](),barAndWebActions[_0x20afb9[_0x0504('0x3c')]]),_[_0x0504('0x53')](_0x525096,_0xb95cb1));break;case _0x0504('0x54'):this[_0x0504('0x4f')](util[_0x0504('0x52')](_0x0504('0x50'),this[_0x0504('0x10')][_0xb95cb1['interface']][_0x0504('0x51')]),util[_0x0504('0x52')](_0x0504('0x55'),_0x20afb9[_0x0504('0x39')]['toLowerCase']()),_[_0x0504('0x53')]({'ProjectId':parseInt(_0x20afb9[_0x0504('0x3c')],0xa)},_0xb95cb1));break;default:this['emit'](util['format'](_0x0504('0x50'),this[_0x0504('0x10')][_0xb95cb1[_0x0504('0x33')]][_0x0504('0x51')]),util[_0x0504('0x52')](_0x0504('0x55'),_0x20afb9[_0x0504('0x39')][_0x0504('0x3a')]()),_[_0x0504('0x53')]({},_0x20afb9,_0xb95cb1));}}switch(_0x20afb9[_0x0504('0x39')][_0x0504('0x3a')]()){case _0x0504('0x3b'):cmContact['exec'](this['agents'][_0xb95cb1[_0x0504('0x33')]],_0x20afb9,_0xb95cb1,cmContactRpc);break;case _0x0504('0x56'):integration[_0x0504('0x57')](_0x20afb9,_0xb95cb1,this[_0x0504('0x58')],this[_0x0504('0x10')][_0xb95cb1[_0x0504('0x33')]],this['voiceQueues'][_0xb95cb1[_0x0504('0x59')]],this[_0x0504('0x13')][_0xb95cb1[_0x0504('0x5a')]]);break;case'urlforward':urlforward[_0x0504('0x57')](_0x20afb9,_0xb95cb1);break;case _0x0504('0x5b'):script[_0x0504('0x57')](_0x20afb9,_0xb95cb1);break;}}}}}}};Trigger['prototype'][_0x0504('0x42')]=function(_0x541b48,_0x3f7f24,_0x36aba7){var _0x26497b=url[_0x0504('0x5c')](Mustache[_0x0504('0x40')](_0x541b48,_0x3f7f24),!![]);if(_0x36aba7){_['merge'](_0x26497b['query'],_0x3f7f24);}delete _0x26497b[_0x0504('0x5d')];var _0x14b82d=url[_0x0504('0x52')](_0x26497b);_0x14b82d=_0x14b82d[_0x0504('0x5e')](/\/\?/g,'?');return _0x14b82d;};Trigger['prototype'][_0x0504('0x36')]=function(_0x3c59ae,_0x5ed558){var _0x49f2ca=!![],_0x48584b=!![];if(_0x3c59ae[_0x0504('0x5f')]['length']){_0x49f2ca=_[_0x0504('0x60')](_0x3c59ae[_0x0504('0x5f')],this['checkConditions'](_0x5ed558,_0x3c59ae[_0x0504('0x61')]));}if(_0x3c59ae['AnyConditions']['length']){_0x48584b=_[_0x0504('0x62')](_0x3c59ae[_0x0504('0x63')],this[_0x0504('0x64')](_0x5ed558,_0x3c59ae[_0x0504('0x61')]));}return _0x49f2ca&&_0x48584b;};Trigger['prototype'][_0x0504('0x64')]=function(_0x3117d9,_0x2391b7){return function(_0x1152dd){switch(_0x1152dd[_0x0504('0x65')]){case'account':if(_0x3117d9[_0x0504('0x61')]===_0x2391b7){if(_0x2391b7==='chat'){return _0x3117d9[_0x0504('0x66')]?operators[_0x1152dd[_0x0504('0x67')]](Number(_0x1152dd[_0x0504('0x68')]),_0x3117d9['ChatWebsiteId']):![];}else{return _0x3117d9[_[_0x0504('0x69')](_0x2391b7)+_0x0504('0x6a')]?operators[_0x1152dd[_0x0504('0x67')]](Number(_0x1152dd[_0x0504('0x68')]),_0x3117d9[_['upperFirst'](_0x2391b7)+_0x0504('0x6a')]):![];}}break;case'interaction':case _0x0504('0x6b'):if(_0x3117d9['channel']===_0x2391b7){return _0x3117d9[_0x0504('0x6c')]?operators[_0x1152dd[_0x0504('0x67')]](_0x1152dd[_0x0504('0x68')],_0x3117d9['event']):![];}break;case _0x0504('0x59'):return _0x3117d9['queue']?operators[_0x1152dd[_0x0504('0x67')]](_0x1152dd[_0x0504('0x68')],_0x3117d9['queue']):![];case _0x0504('0x6d'):return _0x3117d9[_0x0504('0x6e')]?operators[_0x1152dd[_0x0504('0x67')]](_0x1152dd[_0x0504('0x68')],_0x3117d9[_0x0504('0x6e')]):![];case _0x0504('0x6f'):return _0x3117d9[_0x0504('0x6f')]?operators[_0x1152dd[_0x0504('0x67')]](_0x1152dd[_0x0504('0x68')],_0x3117d9['lastevent']):![];case _0x0504('0x5a'):return _0x3117d9[_0x0504('0x5a')]?operators[_0x1152dd[_0x0504('0x67')]](_0x1152dd[_0x0504('0x68')],_0x3117d9[_0x0504('0x5a')]):![];}return![];};};module['exports']=Trigger;