Built motion from commit (unavailable).|2.5.4
[motion2.git] / server / services / ami / trigger / integration / vtiger.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 _0x86d6=['request-promise','bluebird','util','ioredis','./util','../../../../config/logger','vTiger','defaults','localhost','socket.io-emitter','emit','forEach','type','string','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','getString','Subjects','POST','%s/webservice.php','remoteUri','create','username','sessionName','HelpDesk','then','success','result','format','stringify','catch','statusCode','error','createTicket','Getting\x20agent\x20with\x20email','GET','Agent\x20found!','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','[vTiger],\x20%s,\x20%s,\x20%s','getUser','query','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','length','Enduser\x20found!','firstname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','lastname','phone','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','user:%s','trigger:browser:url','outbound','recordingFormat','Recording\x20is\x20enabled!','serverUrl','destcalleridname','Fields','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','stripTrailingSlash','lastevent','Ticket\x20created!','toUpperCase','lodash'];(function(_0x59ee78,_0x1ae1cc){var _0x4ee3c7=function(_0x5684ca){while(--_0x5684ca){_0x59ee78['push'](_0x59ee78['shift']());}};_0x4ee3c7(++_0x1ae1cc);}(_0x86d6,0x125));var _0x686d=function(_0x18dc0f,_0xb432e3){_0x18dc0f=_0x18dc0f-0x0;var _0x4d6c1c=_0x86d6[_0x18dc0f];return _0x4d6c1c;};'use strict';var _=require(_0x686d('0x0'));var rp=require(_0x686d('0x1'));var BPromise=require(_0x686d('0x2'));var md5=require('md5');var util=require(_0x686d('0x3'));var Redis=require(_0x686d('0x4'));var intUtil=require(_0x686d('0x5'));var config=require('../../../../config/environment');var logger=require(_0x686d('0x6'))(_0x686d('0x7'));config['redis']=_[_0x686d('0x8')](config['redis'],{'host':_0x686d('0x9'),'port':0x18eb});var io=require(_0x686d('0xa'))(new Redis(config['redis']));function emit(_0x5089e4,_0x237582,_0x3f421f){io['to'](_0x5089e4)[_0x686d('0xb')](_0x237582,_0x3f421f);}function getCustomFields(_0x127595,_0x91c7fb){var _0x28cac1={};if(_0x127595['length']>0x0){_[_0x686d('0xc')](_0x127595,function(_0x5ae4e2){if(_0x5ae4e2[_0x686d('0xd')]===_0x686d('0xe')&&_0x5ae4e2[_0x686d('0xf')]){_0x28cac1[_0x5ae4e2[_0x686d('0xf')]]=_0x5ae4e2[_0x686d('0x10')][_0x686d('0x11')]();}else if(_0x5ae4e2[_0x686d('0xd')]===_0x686d('0x12')&&_0x5ae4e2[_0x686d('0x13')]&&_0x5ae4e2['idField']&&_0x91c7fb[_0x5ae4e2['variableName']]){_0x28cac1[_0x5ae4e2[_0x686d('0xf')]]=_0x91c7fb[_0x5ae4e2[_0x686d('0x13')]][_0x686d('0x11')]();}else if(_0x5ae4e2[_0x686d('0xd')]===_0x686d('0x14')&&_0x5ae4e2['Variable']&&_0x5ae4e2[_0x686d('0x15')][_0x686d('0x16')]&&_0x5ae4e2[_0x686d('0xf')]&&_0x91c7fb[_0x5ae4e2[_0x686d('0x15')][_0x686d('0x16')][_0x686d('0x17')]()]){_0x28cac1[_0x5ae4e2[_0x686d('0xf')]]=_0x91c7fb[_0x5ae4e2['Variable'][_0x686d('0x16')]['toLowerCase']()]['toString']();}});}return _0x28cac1;}function createTicket(_0x4aee2a,_0x5504d4,_0x1f06ef,_0x38c6f5,_0x28f0e9,_0x44a34c,_0x2f8c35){logger[_0x686d('0x18')](_0x686d('0x19'));var _0x516a38=_['merge']({'parent_id':'','assigned_user_id':_0x5504d4['id'],'ticketpriorities':_0x686d('0x1a'),'ticketstatus':_0x686d('0x1b'),'ticket_title':intUtil[_0x686d('0x1c')](_0x38c6f5[_0x686d('0x1d')],_0x28f0e9,'\x20'),'description':intUtil[_0x686d('0x1c')](_0x38c6f5['Descriptions'],_0x28f0e9,'\x0a'),'contact_id':_0x1f06ef['id']},getCustomFields(_0x44a34c,_0x28f0e9));var _0x112c86={'method':_0x686d('0x1e'),'uri':util['format'](_0x686d('0x1f'),_0x4aee2a[_0x686d('0x20')]),'form':{'operation':_0x686d('0x21'),'username':_0x4aee2a[_0x686d('0x22')],'sessionName':_0x2f8c35[_0x686d('0x23')],'elementType':_0x686d('0x24'),'element':JSON['stringify'](_0x516a38)},'json':!![]};return request(_0x112c86)[_0x686d('0x25')](function(_0x293937){if(_0x293937[_0x686d('0x26')]){return BPromise['resolve']({'id':_0x293937[_0x686d('0x27')]['id']});}else{throw new Error(util[_0x686d('0x28')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x686d('0x29')](_0x293937['error'])));}})[_0x686d('0x2a')](function(_0x7b2851){var _0x1960e0=_0x7b2851[_0x686d('0x2b')]||0x1f4;logger[_0x686d('0x2c')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x686d('0x2d'),_0x1960e0,JSON['stringify'](_0x7b2851));});}function getUser(_0x1f0b56,_0x4aa62b,_0xdfb0f4){if(intUtil['validateEmail'](_0x4aa62b)){logger[_0x686d('0x18')](_0x686d('0x2e'),_0x4aa62b);return request({'method':_0x686d('0x2f'),'uri':util[_0x686d('0x28')]('%s/webservice.php',_0x1f0b56[_0x686d('0x20')]),'qs':{'operation':'query','username':_0x1f0b56[_0x686d('0x22')],'sessionName':_0xdfb0f4[_0x686d('0x23')],'query':util[_0x686d('0x28')]('SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;',_0x4aa62b)},'json':!![]})[_0x686d('0x25')](function(_0x3f21f9){if(_0x3f21f9[_0x686d('0x26')]&&_0x3f21f9[_0x686d('0x27')]['length']){logger[_0x686d('0x18')](_0x686d('0x30'));return BPromise[_0x686d('0x31')]({'id':_0x3f21f9['result'][0x0]['id'],'email':_0x3f21f9[_0x686d('0x27')][0x0][_0x686d('0x32')],'name':_0x3f21f9[_0x686d('0x27')][0x0]['first_name']+'\x20'+_0x3f21f9['result'][_0x686d('0x33')]});}else{logger['info'](_0x686d('0x34'));return BPromise[_0x686d('0x31')]({'id':_0xdfb0f4[_0x686d('0x35')],'email':_0x1f0b56[_0x686d('0x22')],'name':_0x686d('0x36')});}})[_0x686d('0x2a')](function(_0x29b27b){var _0x1b253f=_0x29b27b[_0x686d('0x2b')]||0x1f4;logger[_0x686d('0x2c')](_0x686d('0x37'),_0x686d('0x38'),_0x1b253f,JSON['stringify'](_0x29b27b));});}else{logger[_0x686d('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x686d('0x31')]({'id':_0xdfb0f4['userId'],'email':_0x1f0b56['username'],'name':_0x686d('0x36')})[_0x686d('0x2a')](function(_0x537ee0){var _0x412f7d=_0x537ee0[_0x686d('0x2b')]||0x1f4;logger[_0x686d('0x2c')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x686d('0x38'),_0x412f7d,JSON[_0x686d('0x29')](_0x537ee0));});}}function getEndUser(_0x4b9471,_0x517c15,_0x5e0176,_0x59110f){logger[_0x686d('0x18')]('Searching\x20end\x20user\x20with\x20phone',_0x5e0176);return request({'method':_0x686d('0x2f'),'uri':util[_0x686d('0x28')](_0x686d('0x1f'),_0x4b9471[_0x686d('0x20')]),'qs':{'operation':_0x686d('0x39'),'username':_0x4b9471['username'],'sessionName':_0x59110f[_0x686d('0x23')],'query':util['format'](_0x686d('0x3a'),_0x5e0176,_0x5e0176,_0x5e0176,_0x5e0176,_0x5e0176)},'json':!![]})[_0x686d('0x25')](function(_0x3cd031){if(_0x3cd031[_0x686d('0x26')]&&_0x3cd031[_0x686d('0x27')][_0x686d('0x3b')]){logger[_0x686d('0x18')](_0x686d('0x3c'));return BPromise['resolve']({'id':_0x3cd031['result'][0x0]['id'],'name':_0x3cd031['result'][0x0][_0x686d('0x3d')]+'\x20'+_0x3cd031['result'][0x0]['lastname'],'phone':_0x5e0176});}else{logger[_0x686d('0x18')](_0x686d('0x3e'));return request({'method':_0x686d('0x1e'),'uri':util[_0x686d('0x28')](_0x686d('0x1f'),_0x4b9471[_0x686d('0x20')]),'form':{'operation':'create','sessionName':_0x59110f[_0x686d('0x23')],'elementType':_0x686d('0x3f'),'element':JSON[_0x686d('0x29')]({'lastname':_0x517c15,'phone':_0x5e0176,'assigned_user_id':'\x20'})},'json':!![]})[_0x686d('0x25')](function(_0x3f2376){logger[_0x686d('0x18')](_0x686d('0x40'));return BPromise[_0x686d('0x31')]({'id':_0x3f2376['result']['id'],'name':_0x3f2376[_0x686d('0x27')][_0x686d('0x41')],'phone':_0x3f2376['result'][_0x686d('0x42')]});})['catch'](function(_0xe4690a){var _0x1ff94b=_0xe4690a[_0x686d('0x2b')]||0x1f4;logger[_0x686d('0x2c')]('[vTiger],\x20%s,\x20%s,\x20%s','getEndUser',_0x1ff94b,JSON[_0x686d('0x29')](_0xe4690a));});}});}function getConnection(_0x28c960){var _0x4ae033=_0x28c960[_0x686d('0x22')];var _0x2fe595=_0x28c960[_0x686d('0x43')];return request({'method':_0x686d('0x2f'),'uri':util[_0x686d('0x28')]('%s/webservice.php',_0x28c960['remoteUri']),'qs':{'operation':_0x686d('0x44'),'username':_0x4ae033},'json':!![]})[_0x686d('0x25')](function(_0x17c08b){if(_0x17c08b['success']){return request({'method':_0x686d('0x1e'),'uri':util[_0x686d('0x28')]('%s/webservice.php',_0x28c960[_0x686d('0x20')]),'form':{'operation':_0x686d('0x45'),'username':_0x4ae033,'accessKey':md5(_0x17c08b[_0x686d('0x27')][_0x686d('0x46')]+_0x2fe595)},'json':!![]});}})[_0x686d('0x25')](function(_0x4673b5){if(_0x4673b5[_0x686d('0x26')]){return BPromise[_0x686d('0x31')](_0x4673b5['result']);}else{throw new Error(util[_0x686d('0x28')](_0x686d('0x47'),_0x28c960['id']));}})[_0x686d('0x2a')](function(_0x7697d){var _0x20e75c=_0x7697d['statusCode']||0x1f4;logger[_0x686d('0x2c')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x686d('0x48'),_0x20e75c,JSON[_0x686d('0x29')](_0x7697d));});}function request(_0x50ed74){logger[_0x686d('0x18')]('[HTTP]',JSON['stringify'](_0x50ed74));return rp(_0x50ed74);}exports['queue']=function(_0xaee3cb,_0x1719c4,_0x5ba704,_0xf3f146,_0x226fd4,_0x44baa9){var _0x7a3702,_0x213e2c,_0x111728,_0x4ad3c8;_0x44baa9['remoteUri']=intUtil['stripTrailingSlash'](_0x44baa9['remoteUri']);if(_0x226fd4&&_0x226fd4[_0x686d('0x49')]){logger[_0x686d('0x18')](_0x686d('0x4a'),'Recording\x20is\x20enabled!');_0x1719c4[_0x686d('0x4b')]=util[_0x686d('0x28')](_0x686d('0x4c'),_0x44baa9['serverUrl'],_0x1719c4['uniqueid'],md5(_0x1719c4[_0x686d('0x4d')]));}else{_0x1719c4[_0x686d('0x4b')]='';}return getConnection(_0x44baa9)[_0x686d('0x25')](function(_0x536560){_0x4ad3c8=_0x536560;return getUser(_0x44baa9,_0xf3f146[_0x686d('0x4e')],_0x4ad3c8);})[_0x686d('0x25')](function(_0x4d04ae){_0x7a3702=_0x4d04ae;logger['info'](_0x686d('0x4f'),_0x7a3702['id']);return getEndUser(_0x44baa9,_0x1719c4['calleridname'],_0x1719c4['calleridnum'],_0x4ad3c8);})[_0x686d('0x25')](function(_0x257fd6){_0x213e2c=_0x257fd6;logger[_0x686d('0x18')](_0x686d('0x50'),_0x213e2c['id']);return createTicket(_0x44baa9,_0x7a3702,_0x213e2c,_0x5ba704,_0x1719c4,_0x5ba704['Fields'],_0x4ad3c8);})['then'](function(_0x3613e1){_0x111728=_0x3613e1;logger[_0x686d('0x18')]('Ticket\x20created!');logger[_0x686d('0x18')](_0x686d('0x51'),_0x111728['id']);var _0x43d9a6=util[_0x686d('0x28')](_0x686d('0x52'),_0x44baa9[_0x686d('0x20')],_['split'](_0x111728['id'],'x')[0x1]);logger['info'](_0x686d('0x4a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x686d('0x28')](_0x686d('0x53'),_0xf3f146[_0x686d('0x16')]),_0x686d('0x54'),{'uri':_0x43d9a6});})[_0x686d('0x2a')](function(_0x596723){logger[_0x686d('0x2c')]('[QUEUE]',JSON[_0x686d('0x29')](_0x596723));});};exports[_0x686d('0x55')]=function(_0x588b4a,_0x4bd858,_0x36e625,_0x1a11e6,_0x41c704,_0xdc37b0,_0x112bd3){var _0x474c9e,_0x4224a3,_0x1c466b,_0x26c163;_0xdc37b0[_0x686d('0x20')]=intUtil['stripTrailingSlash'](_0xdc37b0[_0x686d('0x20')]);_0xdc37b0['serverUrl']=intUtil['stripTrailingSlash'](_0xdc37b0['serverUrl']);if(_0x112bd3&&_0x112bd3[_0x686d('0x56')]&&_0x112bd3[_0x686d('0x56')]!=='none'){logger['info']('[OUTBOUND]',_0x686d('0x57'));_0x4bd858[_0x686d('0x4b')]=util[_0x686d('0x28')](_0x686d('0x4c'),_0xdc37b0[_0x686d('0x58')],_0x4bd858[_0x686d('0x4d')],md5(_0x4bd858[_0x686d('0x4d')]));}return getConnection(_0xdc37b0)[_0x686d('0x25')](function(_0x3cdb72){_0x26c163=_0x3cdb72;return getUser(_0xdc37b0,_0x1a11e6[_0x686d('0x4e')],_0x26c163);})[_0x686d('0x25')](function(_0x456188){_0x474c9e=_0x456188;logger[_0x686d('0x18')](_0x686d('0x4f'),_0x474c9e['id']);return getEndUser(_0xdc37b0,_0x4bd858[_0x686d('0x59')],_0x4bd858['destcalleridnum'],_0x26c163);})[_0x686d('0x25')](function(_0x227e64){_0x4224a3=_0x227e64;logger[_0x686d('0x18')](_0x686d('0x50'),_0x4224a3['id']);return createTicket(_0xdc37b0,_0x474c9e,_0x4224a3,_0x36e625,_0x4bd858,_0x36e625[_0x686d('0x5a')],_0x26c163);})[_0x686d('0x25')](function(_0xfe8233){_0x1c466b=_0xfe8233;logger[_0x686d('0x18')]('Ticket\x20created!');logger[_0x686d('0x18')](_0x686d('0x51'),_0x1c466b['id']);var _0x536383=util['format']('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0xdc37b0['remoteUri'],_['split'](_0x1c466b['id'],'x')[0x1]);logger[_0x686d('0x18')](_0x686d('0x5b'),_0x686d('0x5c'));emit(util['format'](_0x686d('0x53'),_0x1a11e6['name']),_0x686d('0x54'),{'uri':_0x536383});})[_0x686d('0x2a')](function(_0x384c42){logger[_0x686d('0x2c')](_0x686d('0x5b'),JSON[_0x686d('0x29')](_0x384c42));});};exports[_0x686d('0x5d')]=function(_0x3b83f9,_0x3f2111,_0x5b91fb,_0x2936fa,_0xae332c,_0x13ce57){var _0x1de959,_0xffb29a,_0x165d70,_0x97f55f;_0x13ce57[_0x686d('0x20')]=intUtil['stripTrailingSlash'](_0x13ce57[_0x686d('0x20')]);_0x13ce57[_0x686d('0x58')]=intUtil[_0x686d('0x5e')](_0x13ce57[_0x686d('0x58')]);if(_0xae332c&&_0xae332c[_0x686d('0x49')]){logger[_0x686d('0x18')]('['+_0x3f2111[_0x686d('0x5f')]['toUpperCase']()+']',_0x686d('0x57'));_0x3f2111[_0x686d('0x4b')]=util[_0x686d('0x28')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x13ce57[_0x686d('0x58')],_0x3f2111[_0x686d('0x4d')],md5(_0x3f2111['uniqueid']));}else{_0x3f2111[_0x686d('0x4b')]='';}return getConnection(_0x13ce57)['then'](function(_0x70e52){_0x97f55f=_0x70e52;return getUser(_0x13ce57,'',_0x97f55f);})[_0x686d('0x25')](function(_0x319488){_0x1de959=_0x319488;logger[_0x686d('0x18')](_0x686d('0x4f'),_0x1de959['id']);return getEndUser(_0x13ce57,_0x3f2111['calleridname'],_0x3f2111['calleridnum'],_0x97f55f);})[_0x686d('0x25')](function(_0x59db30){_0xffb29a=_0x59db30;logger[_0x686d('0x18')]('The\x20Enduser\x20ID\x20is:',_0xffb29a['id']);return createTicket(_0x13ce57,_0x1de959,_0xffb29a,_0x5b91fb,_0x3f2111,_0x5b91fb[_0x686d('0x5a')],_0x97f55f);})[_0x686d('0x25')](function(_0xec65c5){_0x165d70=_0xec65c5;logger[_0x686d('0x18')](_0x686d('0x60'));logger[_0x686d('0x18')]('The\x20Ticket\x20ID\x20is:',_0x165d70['id']);})[_0x686d('0x2a')](function(_0xc1b674){logger[_0x686d('0x2c')]('['+_0x3f2111[_0x686d('0x5f')][_0x686d('0x61')]()+']',JSON[_0x686d('0x29')](_0xc1b674));});};