742d561c1cf00cd2d047877623e37ce9fb30ad35
[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 _0x5a43=['AllConditions','checkConditions','channel','AnyConditions','some','field','account','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','membername','lastevent','util','lodash','url','mustache','ioredis','./urlforward','./integration','../../../config/logger','trigger','../ami','redis','defaults','socket.io-emitter','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentcomplete','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialend','custom:closedinteraction','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','info','stringify','clone','checkTriggers','hasOwnProperty','status','checkTrigger','length','Actions','interface','action','toLowerCase','contactmanager','motionbar','browser','data1','popup','TemplateId','data2','html','render','template\x20not\x20found','uri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','600','winapp','winApplication','winArguments','format','name','trigger:%s:%s','merge','jscripty','user:%s','trigger:%s','exec','integration','queue','routeId','script','query','search','replace'];(function(_0xd44c85,_0x5ab70a){var _0x57ee0d=function(_0x23eac9){while(--_0x23eac9){_0xd44c85['push'](_0xd44c85['shift']());}};_0x57ee0d(++_0x5ab70a);}(_0x5a43,0xf1));var _0x35a4=function(_0x23d088,_0x3e38a6){_0x23d088=_0x23d088-0x0;var _0x56f4f4=_0x5a43[_0x23d088];return _0x56f4f4;};'use strict';var util=require(_0x35a4('0x0'));var _=require(_0x35a4('0x1'));var url=require(_0x35a4('0x2'));var Mustache=require(_0x35a4('0x3'));var Redis=require(_0x35a4('0x4'));var urlforward=require(_0x35a4('0x5'));var integration=require(_0x35a4('0x6'));var cmContact=require('./cmContact');var script=require('./script');var cmContactRpc=require('../rpc/cmContact');var config=require('../../../config/environment');var logger=require(_0x35a4('0x7'))(_0x35a4('0x8'));var ami=require(_0x35a4('0x9'));config[_0x35a4('0xa')]=_[_0x35a4('0xb')](config[_0x35a4('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x35a4('0xc'))(new Redis(config[_0x35a4('0xa')]));var operators={'equals':function(_0x104abe,_0x3e23d6){return _0x104abe==_0x3e23d6;},'not_equals':function(_0x43df6d,_0x351402){return _0x43df6d!=_0x351402;}};var barAndWebActions=['popup','url','winapp'];function Trigger(_0x355394){this['triggers']=_0x355394[_0x35a4('0xd')];this[_0x35a4('0xe')]=_0x355394[_0x35a4('0xe')];this['voiceQueues']=_0x355394[_0x35a4('0xf')];this[_0x35a4('0x10')]=_0x355394[_0x35a4('0x10')];this[_0x35a4('0x11')]=_0x355394['voiceExtensions'];this[_0x35a4('0x12')]=_0x355394[_0x35a4('0x12')];this['freshdeskAccounts']=_0x355394[_0x35a4('0x13')];this['salesforceAccounts']=_0x355394[_0x35a4('0x14')];this[_0x35a4('0x15')]=_0x355394[_0x35a4('0x15')];this[_0x35a4('0x16')]=_0x355394[_0x35a4('0x16')];this[_0x35a4('0x17')]=_0x355394[_0x35a4('0x17')];this[_0x35a4('0x18')]=_0x355394[_0x35a4('0x18')];this['servicenowAccounts']=_0x355394[_0x35a4('0x19')];this[_0x35a4('0x1a')]=_0x355394[_0x35a4('0x1a')];this[_0x35a4('0x1b')]=_0x355394[_0x35a4('0x1b')];this[_0x35a4('0x1c')]={'zendesk':this[_0x35a4('0x12')],'salesforce':this[_0x35a4('0x14')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x35a4('0x15')],'zoho':this['zohoAccounts'],'desk':this['deskAccounts'],'vtiger':this[_0x35a4('0x18')],'dynamics365':this[_0x35a4('0x1a')],'freshsales':this[_0x35a4('0x1b')],'servicenow':this['servicenowAccounts']};ami['on'](_0x35a4('0x1d'),this[_0x35a4('0x1e')][_0x35a4('0x1f')](this));ami['on']('custom:agentconnect',this[_0x35a4('0x1e')][_0x35a4('0x1f')](this));ami['on']('custom:agentringnoanswer',this[_0x35a4('0x1e')][_0x35a4('0x1f')](this));ami['on'](_0x35a4('0x20'),this[_0x35a4('0x1e')]['bind'](this));ami['on']('custom:queuecallerabandon',this[_0x35a4('0x1e')]['bind'](this));ami['on'](_0x35a4('0x21'),this[_0x35a4('0x1e')][_0x35a4('0x1f')](this));ami['on'](_0x35a4('0x22'),this[_0x35a4('0x23')][_0x35a4('0x1f')](this));ami['on']('custom:dialconnect',this['syncAgentDial']['bind'](this));ami['on'](_0x35a4('0x24'),this[_0x35a4('0x23')]['bind'](this));ami['on']('custom:newinteraction',this[_0x35a4('0x1e')][_0x35a4('0x1f')](this));ami['on'](_0x35a4('0x25'),this[_0x35a4('0x1e')]['bind'](this));ami['on']('custom:incomingmessage',this['syncCustomEvent']['bind'](this));ami['on'](_0x35a4('0x26'),this[_0x35a4('0x1e')][_0x35a4('0x1f')](this));ami['on'](_0x35a4('0x27'),this[_0x35a4('0x1e')][_0x35a4('0x1f')](this));ami['on'](_0x35a4('0x28'),this[_0x35a4('0x1e')][_0x35a4('0x1f')](this));}Trigger[_0x35a4('0x29')][_0x35a4('0x2a')]=function(_0x6692d5,_0x3767fa,_0x36a34e){logger[_0x35a4('0x2b')](_0x6692d5,_0x3767fa,JSON[_0x35a4('0x2c')](_0x36a34e));io['to'](_0x6692d5)['emit'](_0x3767fa,_0x36a34e);};Trigger[_0x35a4('0x29')][_0x35a4('0x1e')]=function(_0xdb0a8d){var _0x5b9679=_[_0x35a4('0x2d')](_0xdb0a8d);this[_0x35a4('0x2e')](_0x5b9679);};Trigger[_0x35a4('0x29')]['syncAgentDial']=function(_0x526bf6){if(this[_0x35a4('0xe')][_0x526bf6['interface']]){this[_0x35a4('0x1e')](_0x526bf6);}};Trigger[_0x35a4('0x29')][_0x35a4('0x2e')]=function(_0x4ea3b0){var _0x5cc3a4;for(var _0x995edf in this[_0x35a4('0xd')]){if(this[_0x35a4('0xd')][_0x35a4('0x2f')](_0x995edf)){if(this[_0x35a4('0xd')][_0x995edf][_0x35a4('0x30')]){_0x5cc3a4=this[_0x35a4('0x31')](this[_0x35a4('0xd')][_0x995edf],_0x4ea3b0);if(_0x5cc3a4){_['merge'](_0x4ea3b0,_0x4ea3b0['variables']);for(var _0x1c16d8=0x0,_0x35ace3,_0x1be157,_0xacf660;_0x1c16d8<this[_0x35a4('0xd')][_0x995edf]['Actions'][_0x35a4('0x32')];_0x1c16d8+=0x1){_0x35ace3=this['triggers'][_0x995edf][_0x35a4('0x33')][_0x1c16d8];if(this['agents'][_0x4ea3b0[_0x35a4('0x34')]]){switch(_0x35ace3[_0x35a4('0x35')][_0x35a4('0x36')]()){case _0x35a4('0x37'):break;case _0x35a4('0x38'):case _0x35a4('0x39'):var _0x59090d={};switch(barAndWebActions[_0x35ace3[_0x35a4('0x3a')]]){case _0x35a4('0x3b'):_0x59090d[_0x35a4('0x3c')]=_0x35ace3[_0x35a4('0x3d')];_0x59090d[_0x35a4('0x3e')]=this[_0x35a4('0x10')][_0x35ace3[_0x35a4('0x3d')]]?Mustache[_0x35a4('0x3f')](this[_0x35a4('0x10')][_0x35ace3[_0x35a4('0x3d')]][_0x35a4('0x3e')],_0x4ea3b0):_0x35a4('0x40');break;case'url':_0x59090d[_0x35a4('0x41')]=this['buildUri'](_0x35ace3[_0x35a4('0x3d')],_0x4ea3b0,_[_0x35a4('0x42')](_0x35ace3[_0x35a4('0x43')])?!![]:parseInt(_0x35ace3[_0x35a4('0x43')],0xa));if(_[_0x35a4('0x42')](_0x35ace3[_0x35a4('0x44')])){_0x59090d[_0x35a4('0x45')]='0';}else{_0x59090d[_0x35a4('0x46')]=_0x35ace3[_0x35a4('0x44')];_0x59090d[_0x35a4('0x47')]=_['isNil'](_0x35ace3[_0x35a4('0x48')])?_0x35a4('0x49'):_0x35ace3[_0x35a4('0x48')];_0x59090d[_0x35a4('0x4a')]=_[_0x35a4('0x42')](_0x35ace3[_0x35a4('0x4b')])?_0x35a4('0x4c'):_0x35ace3['data6'];}break;case _0x35a4('0x4d'):_0x59090d[_0x35a4('0x4e')]=_0x35ace3[_0x35a4('0x3d')]?Mustache['render'](_0x35ace3[_0x35a4('0x3d')],_0x4ea3b0):'';_0x59090d[_0x35a4('0x4f')]=_0x35ace3[_0x35a4('0x43')]?Mustache[_0x35a4('0x3f')](_0x35ace3[_0x35a4('0x43')],_0x4ea3b0):'';break;}this[_0x35a4('0x2a')](util[_0x35a4('0x50')]('user:%s',this[_0x35a4('0xe')][_0x4ea3b0['interface']][_0x35a4('0x51')]),util[_0x35a4('0x50')](_0x35a4('0x52'),_0x35ace3[_0x35a4('0x35')]['toLowerCase'](),barAndWebActions[_0x35ace3[_0x35a4('0x3a')]]),_[_0x35a4('0x53')](_0x59090d,_0x4ea3b0));break;case _0x35a4('0x54'):this[_0x35a4('0x2a')](util[_0x35a4('0x50')](_0x35a4('0x55'),this[_0x35a4('0xe')][_0x4ea3b0[_0x35a4('0x34')]][_0x35a4('0x51')]),util['format'](_0x35a4('0x56'),_0x35ace3[_0x35a4('0x35')]['toLowerCase']()),_[_0x35a4('0x53')]({'ProjectId':parseInt(_0x35ace3[_0x35a4('0x3a')],0xa)},_0x4ea3b0));break;default:this[_0x35a4('0x2a')](util[_0x35a4('0x50')]('user:%s',this[_0x35a4('0xe')][_0x4ea3b0[_0x35a4('0x34')]][_0x35a4('0x51')]),util['format'](_0x35a4('0x56'),_0x35ace3['action'][_0x35a4('0x36')]()),_[_0x35a4('0x53')]({},_0x35ace3,_0x4ea3b0));}}switch(_0x35ace3['action'][_0x35a4('0x36')]()){case'contactmanager':cmContact[_0x35a4('0x57')](this['agents'][_0x4ea3b0[_0x35a4('0x34')]],_0x35ace3,_0x4ea3b0,cmContactRpc);break;case _0x35a4('0x58'):integration[_0x35a4('0x57')](_0x35ace3,_0x4ea3b0,this[_0x35a4('0x1c')],this['agents'][_0x4ea3b0['interface']],this[_0x35a4('0xf')][_0x4ea3b0[_0x35a4('0x59')]],this[_0x35a4('0x11')][_0x4ea3b0[_0x35a4('0x5a')]]);break;case'urlforward':urlforward[_0x35a4('0x57')](_0x35ace3,_0x4ea3b0);break;case _0x35a4('0x5b'):script[_0x35a4('0x57')](_0x35ace3,_0x4ea3b0);break;}}}}}}};Trigger['prototype']['buildUri']=function(_0xeffa80,_0x26ee07,_0x5af659){var _0x304eec=url['parse'](Mustache[_0x35a4('0x3f')](_0xeffa80,_0x26ee07),!![]);if(_0x5af659){_[_0x35a4('0x53')](_0x304eec[_0x35a4('0x5c')],_0x26ee07);}delete _0x304eec[_0x35a4('0x5d')];var _0x4264ae=url[_0x35a4('0x50')](_0x304eec);_0x4264ae=_0x4264ae[_0x35a4('0x5e')](/\/\?/g,'?');return _0x4264ae;};Trigger[_0x35a4('0x29')][_0x35a4('0x31')]=function(_0x456f8a,_0x41e5d0){var _0x5b9a0a=!![],_0x575912=!![];if(_0x456f8a[_0x35a4('0x5f')][_0x35a4('0x32')]){_0x5b9a0a=_['every'](_0x456f8a[_0x35a4('0x5f')],this[_0x35a4('0x60')](_0x41e5d0,_0x456f8a[_0x35a4('0x61')]));}if(_0x456f8a[_0x35a4('0x62')][_0x35a4('0x32')]){_0x575912=_[_0x35a4('0x63')](_0x456f8a[_0x35a4('0x62')],this['checkConditions'](_0x41e5d0,_0x456f8a[_0x35a4('0x61')]));}return _0x5b9a0a&&_0x575912;};Trigger[_0x35a4('0x29')][_0x35a4('0x60')]=function(_0x55af16,_0x5c5f1a){return function(_0x20679e){switch(_0x20679e[_0x35a4('0x64')]){case _0x35a4('0x65'):if(_0x55af16[_0x35a4('0x61')]===_0x5c5f1a){if(_0x5c5f1a==='chat'){return _0x55af16[_0x35a4('0x66')]?operators[_0x20679e[_0x35a4('0x67')]](Number(_0x20679e[_0x35a4('0x68')]),_0x55af16['ChatWebsiteId']):![];}else{return _0x55af16[_[_0x35a4('0x69')](_0x5c5f1a)+_0x35a4('0x6a')]?operators[_0x20679e[_0x35a4('0x67')]](Number(_0x20679e[_0x35a4('0x68')]),_0x55af16[_[_0x35a4('0x69')](_0x5c5f1a)+'AccountId']):![];}}break;case _0x35a4('0x6b'):case _0x35a4('0x6c'):if(_0x55af16['channel']===_0x5c5f1a){return _0x55af16['event']?operators[_0x20679e[_0x35a4('0x67')]](_0x20679e[_0x35a4('0x68')],_0x55af16[_0x35a4('0x6d')]):![];}break;case _0x35a4('0x59'):return _0x55af16['queue']?operators[_0x20679e[_0x35a4('0x67')]](_0x20679e[_0x35a4('0x68')],_0x55af16[_0x35a4('0x59')]):![];case'agent':return _0x55af16['membername']?operators[_0x20679e[_0x35a4('0x67')]](_0x20679e[_0x35a4('0x68')],_0x55af16[_0x35a4('0x6e')]):![];case _0x35a4('0x6f'):return _0x55af16['lastevent']?operators[_0x20679e['operator']](_0x20679e[_0x35a4('0x68')],_0x55af16[_0x35a4('0x6f')]):![];case _0x35a4('0x5a'):return _0x55af16['routeId']?operators[_0x20679e['operator']](_0x20679e[_0x35a4('0x68')],_0x55af16[_0x35a4('0x5a')]):![];}return![];};};module['exports']=Trigger;