Built motion from commit 0900f080.|2.5.45
[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 _0xa3fe=['custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','stringify','motionChannel','voice','checkTriggers','interface','triggers','status','checkTrigger','merge','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','popup','data2','template\x20not\x20found','uri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','data6','winArguments','render','format','name','jscripty','user:%s','trigger:%s','exec','integration','voiceExtensions','routeId','urlforward','script','buildUri','parse','query','search','replace','channel','AllConditions','every','checkConditions','AnyConditions','field','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','null','substatus','undefined','offlineMessage','created','equals','exports','util','url','mustache','./urlforward','./integration','./cmContact','../../../config/environment','trigger','../ami','redis','localhost','socket.io-emitter','winapp','agents','voiceQueues','templates','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentnoanswer'];(function(_0x5c66c4,_0x1450d8){var _0x1e5755=function(_0x1b18ea){while(--_0x1b18ea){_0x5c66c4['push'](_0x5c66c4['shift']());}};_0x1e5755(++_0x1450d8);}(_0xa3fe,0xd8));var _0xea3f=function(_0x43a93d,_0x5d986b){_0x43a93d=_0x43a93d-0x0;var _0x311ad0=_0xa3fe[_0x43a93d];return _0x311ad0;};'use strict';var util=require(_0xea3f('0x0'));var _=require('lodash');var url=require(_0xea3f('0x1'));var Mustache=require(_0xea3f('0x2'));var Redis=require('ioredis');var urlforward=require(_0xea3f('0x3'));var integration=require(_0xea3f('0x4'));var cmContact=require(_0xea3f('0x5'));var script=require('./script');var config=require(_0xea3f('0x6'));var logger=require('../../../config/logger')(_0xea3f('0x7'));var ami=require(_0xea3f('0x8'));config[_0xea3f('0x9')]=_['defaults'](config['redis'],{'host':_0xea3f('0xa'),'port':0x18eb});var io=require(_0xea3f('0xb'))(new Redis(config[_0xea3f('0x9')]));var operators={'equals':function(_0x5dbd3e,_0x5ec1ac){return _0x5dbd3e==_0x5ec1ac;},'not_equals':function(_0x464ad4,_0x5d9b2c){return _0x464ad4!=_0x5d9b2c;}};var barAndWebActions=['popup',_0xea3f('0x1'),_0xea3f('0xc')];function Trigger(_0x414ddb){this['triggers']=_0x414ddb['triggers'];this['agents']=_0x414ddb[_0xea3f('0xd')];this[_0xea3f('0xe')]=_0x414ddb[_0xea3f('0xe')];this[_0xea3f('0xf')]=_0x414ddb['templates'];this['voiceExtensions']=_0x414ddb['voiceExtensions'];this[_0xea3f('0x10')]=_0x414ddb[_0xea3f('0x10')];this['freshdeskAccounts']=_0x414ddb[_0xea3f('0x11')];this[_0xea3f('0x12')]=_0x414ddb['salesforceAccounts'];this[_0xea3f('0x13')]=_0x414ddb[_0xea3f('0x13')];this[_0xea3f('0x14')]=_0x414ddb[_0xea3f('0x14')];this[_0xea3f('0x15')]=_0x414ddb[_0xea3f('0x15')];this[_0xea3f('0x16')]=_0x414ddb[_0xea3f('0x16')];this[_0xea3f('0x17')]=_0x414ddb[_0xea3f('0x17')];this[_0xea3f('0x18')]=_0x414ddb[_0xea3f('0x18')];this[_0xea3f('0x19')]=_0x414ddb[_0xea3f('0x19')];this[_0xea3f('0x1a')]={'zendesk':this[_0xea3f('0x10')],'salesforce':this[_0xea3f('0x12')],'freshdesk':this[_0xea3f('0x11')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0xea3f('0x14')],'desk':this[_0xea3f('0x15')],'vtiger':this[_0xea3f('0x16')],'dynamics365':this[_0xea3f('0x18')],'freshsales':this[_0xea3f('0x19')],'servicenow':this['servicenowAccounts']};ami['on']('custom:agentcalled',this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on']('custom:agentconnect',this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x1d'),this[_0xea3f('0x1b')]['bind'](this));ami['on']('custom:agentcomplete',this['syncCustomEvent'][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x1e'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x1f'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on']('custom:agentbusy',this[_0xea3f('0x1b')]['bind'](this));ami['on'](_0xea3f('0x20'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x21'),this[_0xea3f('0x1b')]['bind'](this));ami['on'](_0xea3f('0x22'),this['syncCustomEvent'][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x23'),this[_0xea3f('0x1b')]['bind'](this));ami['on'](_0xea3f('0x24'),this[_0xea3f('0x1b')]['bind'](this));ami['on'](_0xea3f('0x25'),this[_0xea3f('0x26')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x27'),this[_0xea3f('0x26')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x28'),this[_0xea3f('0x26')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x29'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x2a'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x2b'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x2c'),this['syncCustomEvent'][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x2d'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x2e'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));ami['on'](_0xea3f('0x2f'),this[_0xea3f('0x1b')]['bind'](this));ami['on'](_0xea3f('0x30'),this[_0xea3f('0x1b')][_0xea3f('0x1c')](this));}Trigger[_0xea3f('0x31')][_0xea3f('0x32')]=function(_0x4c2973,_0x4d46f2,_0x145fdf){logger['info'](_0x4c2973,_0x4d46f2,JSON[_0xea3f('0x33')](_0x145fdf));io['to'](_0x4c2973)[_0xea3f('0x32')](_0x4d46f2,_0x145fdf);};Trigger[_0xea3f('0x31')][_0xea3f('0x1b')]=function(_0x48a846){var _0x443d4e=_['clone'](_0x48a846);if(typeof _0x443d4e[_0xea3f('0x34')]==='undefined'){_0x443d4e['motionChannel']=_0xea3f('0x35');}this[_0xea3f('0x36')](_0x443d4e);};Trigger[_0xea3f('0x31')][_0xea3f('0x26')]=function(_0x353b5d){if(this[_0xea3f('0xd')][_0x353b5d[_0xea3f('0x37')]]){this[_0xea3f('0x1b')](_0x353b5d);}};Trigger[_0xea3f('0x31')][_0xea3f('0x36')]=function(_0xea081b){var _0x37e63c;for(var _0x2adbb0 in this['triggers']){if(this[_0xea3f('0x38')]['hasOwnProperty'](_0x2adbb0)){if(this[_0xea3f('0x38')][_0x2adbb0][_0xea3f('0x39')]){_0x37e63c=this[_0xea3f('0x3a')](this[_0xea3f('0x38')][_0x2adbb0],_0xea081b);if(_0x37e63c){_[_0xea3f('0x3b')](_0xea081b,_0xea081b['variables']);for(var _0x3ca2b5=0x0,_0x4af967,_0x46e2a5,_0x3b1109;_0x3ca2b5<this[_0xea3f('0x38')][_0x2adbb0][_0xea3f('0x3c')][_0xea3f('0x3d')];_0x3ca2b5+=0x1){_0x4af967=this[_0xea3f('0x38')][_0x2adbb0][_0xea3f('0x3c')][_0x3ca2b5];if(this[_0xea3f('0xd')][_0xea081b[_0xea3f('0x37')]]){switch(_0x4af967[_0xea3f('0x3e')][_0xea3f('0x3f')]()){case _0xea3f('0x40'):break;case _0xea3f('0x41'):case _0xea3f('0x42'):var _0x464a1b={};switch(barAndWebActions[_0x4af967['data1']]){case _0xea3f('0x43'):_0x464a1b['TemplateId']=_0x4af967[_0xea3f('0x44')];_0x464a1b['html']=this[_0xea3f('0xf')][_0x4af967[_0xea3f('0x44')]]?Mustache['render'](this[_0xea3f('0xf')][_0x4af967[_0xea3f('0x44')]]['html'],_0xea081b):_0xea3f('0x45');break;case _0xea3f('0x1'):_0x464a1b[_0xea3f('0x46')]=this['buildUri'](_0x4af967[_0xea3f('0x44')],_0xea081b,_[_0xea3f('0x47')](_0x4af967[_0xea3f('0x48')])?!![]:parseInt(_0x4af967[_0xea3f('0x48')],0xa));if(_[_0xea3f('0x47')](_0x4af967[_0xea3f('0x49')])){_0x464a1b[_0xea3f('0x4a')]='0';}else{_0x464a1b[_0xea3f('0x4b')]=_0x4af967[_0xea3f('0x49')];_0x464a1b[_0xea3f('0x4c')]=_[_0xea3f('0x47')](_0x4af967[_0xea3f('0x4d')])?_0xea3f('0x4e'):_0x4af967[_0xea3f('0x4d')];_0x464a1b['windowHeight']=_['isNil'](_0x4af967[_0xea3f('0x4f')])?'600':_0x4af967[_0xea3f('0x4f')];}break;case _0xea3f('0xc'):_0x464a1b['winApplication']=_0x4af967['data2']?Mustache['render'](_0x4af967['data2'],_0xea081b):'';_0x464a1b[_0xea3f('0x50')]=_0x4af967[_0xea3f('0x48')]?Mustache[_0xea3f('0x51')](_0x4af967[_0xea3f('0x48')],_0xea081b):'';break;}this[_0xea3f('0x32')](util[_0xea3f('0x52')]('user:%s',this[_0xea3f('0xd')][_0xea081b['interface']][_0xea3f('0x53')]),util[_0xea3f('0x52')]('trigger:%s:%s',_0x4af967[_0xea3f('0x3e')][_0xea3f('0x3f')](),barAndWebActions[_0x4af967['data1']]),_[_0xea3f('0x3b')](_0x464a1b,_0xea081b));break;case _0xea3f('0x54'):this[_0xea3f('0x32')](util[_0xea3f('0x52')](_0xea3f('0x55'),this[_0xea3f('0xd')][_0xea081b[_0xea3f('0x37')]][_0xea3f('0x53')]),util[_0xea3f('0x52')](_0xea3f('0x56'),_0x4af967[_0xea3f('0x3e')][_0xea3f('0x3f')]()),_[_0xea3f('0x3b')]({'ProjectId':parseInt(_0x4af967['data1'],0xa)},_0xea081b));break;default:this['emit'](util['format'](_0xea3f('0x55'),this[_0xea3f('0xd')][_0xea081b[_0xea3f('0x37')]][_0xea3f('0x53')]),util[_0xea3f('0x52')](_0xea3f('0x56'),_0x4af967['action'][_0xea3f('0x3f')]()),_[_0xea3f('0x3b')]({},_0x4af967,_0xea081b));}}switch(_0x4af967['action'][_0xea3f('0x3f')]()){case'contactmanager':cmContact[_0xea3f('0x57')](this[_0xea3f('0xd')][_0xea081b[_0xea3f('0x37')]],this[_0xea3f('0x38')][_0x2adbb0],_0x4af967,_0xea081b);break;case _0xea3f('0x58'):integration[_0xea3f('0x57')](_0x4af967,_0xea081b,this[_0xea3f('0x1a')],this[_0xea3f('0xd')][_0xea081b['interface']],this['voiceQueues'][_0xea081b['queue']],this[_0xea3f('0x59')][_0xea081b[_0xea3f('0x5a')]]);break;case _0xea3f('0x5b'):urlforward['exec'](_0x4af967,_0xea081b);break;case _0xea3f('0x5c'):script[_0xea3f('0x57')](_0x4af967,_0xea081b);break;}}}}}}};Trigger['prototype'][_0xea3f('0x5d')]=function(_0x5c6841,_0x5ba685,_0xc998ca){var _0x5bf5f2=url[_0xea3f('0x5e')](Mustache[_0xea3f('0x51')](_0x5c6841,_0x5ba685),!![]);if(_0xc998ca){_[_0xea3f('0x3b')](_0x5bf5f2[_0xea3f('0x5f')],_0x5ba685);}delete _0x5bf5f2[_0xea3f('0x60')];var _0x566c85=url[_0xea3f('0x52')](_0x5bf5f2);_0x566c85=_0x566c85[_0xea3f('0x61')](/\/\?/g,'?');return _0x566c85;};Trigger[_0xea3f('0x31')][_0xea3f('0x3a')]=function(_0x73e7e4,_0x2ac961){var _0x527e46=!![];var _0x50bfc4=!![];var _0x18627a=![];if(_0x73e7e4[_0xea3f('0x62')]===_0x2ac961[_0xea3f('0x34')]){_0x18627a=!![];}if(_0x73e7e4[_0xea3f('0x63')][_0xea3f('0x3d')]){_0x527e46=_[_0xea3f('0x64')](_0x73e7e4['AllConditions'],this[_0xea3f('0x65')](_0x2ac961,_0x73e7e4[_0xea3f('0x62')]));}if(_0x73e7e4[_0xea3f('0x66')][_0xea3f('0x3d')]){_0x50bfc4=_['some'](_0x73e7e4[_0xea3f('0x66')],this[_0xea3f('0x65')](_0x2ac961,_0x73e7e4['channel']));}return _0x18627a&&_0x527e46&&_0x50bfc4;};Trigger[_0xea3f('0x31')][_0xea3f('0x65')]=function(_0x1cd0b7,_0x5b1859){return function(_0x4235b5){switch(_0x4235b5[_0xea3f('0x67')]){case'account':if(_0x1cd0b7['channel']===_0x5b1859){if(_0x5b1859===_0xea3f('0x68')){return _0x1cd0b7[_0xea3f('0x69')]?operators[_0x4235b5[_0xea3f('0x6a')]](Number(_0x4235b5[_0xea3f('0x6b')]),_0x1cd0b7[_0xea3f('0x69')]):![];}else{return _0x1cd0b7[_[_0xea3f('0x6c')](_0x5b1859)+_0xea3f('0x6d')]?operators[_0x4235b5[_0xea3f('0x6a')]](Number(_0x4235b5[_0xea3f('0x6b')]),_0x1cd0b7[_[_0xea3f('0x6c')](_0x5b1859)+_0xea3f('0x6d')]):![];}}break;case _0xea3f('0x6e'):case _0xea3f('0x6f'):if(_0x1cd0b7[_0xea3f('0x62')]===_0x5b1859){return _0x1cd0b7[_0xea3f('0x70')]?operators[_0x4235b5[_0xea3f('0x6a')]](_0x4235b5[_0xea3f('0x6b')],_0x1cd0b7[_0xea3f('0x70')]):![];}break;case _0xea3f('0x71'):return _0x1cd0b7['queue']?operators[_0x4235b5[_0xea3f('0x6a')]](_0x4235b5[_0xea3f('0x6b')],_0x1cd0b7['queue']):![];case _0xea3f('0x72'):return _0x1cd0b7[_0xea3f('0x73')]?operators[_0x4235b5[_0xea3f('0x6a')]](_0x4235b5[_0xea3f('0x6b')],_0x1cd0b7[_0xea3f('0x73')]):![];case _0xea3f('0x74'):return _0x1cd0b7[_0xea3f('0x74')]?operators[_0x4235b5[_0xea3f('0x6a')]](_0x4235b5['value'],_0x1cd0b7[_0xea3f('0x74')]):![];case _0xea3f('0x5a'):return _0x1cd0b7['routeId']?operators[_0x4235b5['operator']](_0x4235b5[_0xea3f('0x6b')],_0x1cd0b7[_0xea3f('0x5a')]):![];case'mailSubstatus':if(_0x4235b5['value']===_0xea3f('0x75'))_0x4235b5['value']=null;return typeof _0x1cd0b7[_0xea3f('0x76')]!==_0xea3f('0x77')?operators[_0x4235b5['operator']](_0x4235b5['value'],_0x1cd0b7[_0xea3f('0x76')]):![];case _0xea3f('0x78'):if(_0x1cd0b7['channel']===_0x5b1859){return _0x4235b5[_0xea3f('0x6b')]===_0xea3f('0x79')&&_0x4235b5[_0xea3f('0x6a')]===_0xea3f('0x7a')?!![]:![];}break;}return![];};};module[_0xea3f('0x7b')]=Trigger;