fe067d2ba8531923bf07d9c7e419e74eb4dfaad8
[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 _0x8895=['emit','length','forEach','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Subjects','Descriptions','POST','create','username','HelpDesk','stringify','then','success','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','createTicket','Getting\x20agent\x20with\x20email','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','Agent\x20found!','email1','first_name','last_name','userId','admin','[vTiger],\x20%s,\x20%s,\x20%s','statusCode','Searching\x20end\x20user\x20with\x20phone','GET','remoteUri','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;','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/webservice.php','Contacts','Enduser\x20created.','phone','getEndUser','getchallenge','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','recordingFormat','none','destcalleridname','[OUTBOUND]','unmanaged','monitor_format','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','util','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults'];(function(_0x3e8200,_0x4293cd){var _0x4c8332=function(_0x461911){while(--_0x461911){_0x3e8200['push'](_0x3e8200['shift']());}};_0x4c8332(++_0x4293cd);}(_0x8895,0x127));var _0x5889=function(_0x294507,_0x33c508){_0x294507=_0x294507-0x0;var _0x19b290=_0x8895[_0x294507];return _0x19b290;};'use strict';var _=require(_0x5889('0x0'));var rp=require(_0x5889('0x1'));var BPromise=require(_0x5889('0x2'));var md5=require(_0x5889('0x3'));var util=require(_0x5889('0x4'));var Redis=require('ioredis');var intUtil=require(_0x5889('0x5'));var config=require(_0x5889('0x6'));var logger=require(_0x5889('0x7'))(_0x5889('0x8'));config[_0x5889('0x9')]=_[_0x5889('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5889('0x9')]));function emit(_0x1ea79d,_0x177b55,_0x308268){io['to'](_0x1ea79d)[_0x5889('0xb')](_0x177b55,_0x308268);}function getCustomFields(_0x520f78,_0x4bce29){var _0x210a69={};if(_0x520f78[_0x5889('0xc')]>0x0){_[_0x5889('0xd')](_0x520f78,function(_0x366ec1){if(_0x366ec1[_0x5889('0xe')]==='string'&&_0x366ec1[_0x5889('0xf')]){_0x210a69[_0x366ec1[_0x5889('0xf')]]=_0x366ec1[_0x5889('0x10')][_0x5889('0x11')]();}else if(_0x366ec1[_0x5889('0xe')]===_0x5889('0x12')&&_0x366ec1[_0x5889('0x13')]&&_0x366ec1[_0x5889('0xf')]&&_0x4bce29[_0x366ec1[_0x5889('0x13')]]){_0x210a69[_0x366ec1[_0x5889('0xf')]]=_0x4bce29[_0x366ec1[_0x5889('0x13')]][_0x5889('0x11')]();}else if(_0x366ec1[_0x5889('0xe')]===_0x5889('0x14')&&_0x366ec1[_0x5889('0x15')]&&_0x366ec1[_0x5889('0x15')][_0x5889('0x16')]&&_0x366ec1[_0x5889('0xf')]&&_0x4bce29[_0x366ec1[_0x5889('0x15')][_0x5889('0x16')][_0x5889('0x17')]()]){_0x210a69[_0x366ec1['idField']]=_0x4bce29[_0x366ec1['Variable']['name'][_0x5889('0x17')]()][_0x5889('0x11')]();}});}return _0x210a69;}function createTicket(_0x185fc4,_0x548dbf,_0x230858,_0x5ee2d5,_0x175f5d,_0x49f6d7,_0x44a979){logger[_0x5889('0x18')](_0x5889('0x19'));var _0x1729b1=_['merge']({'parent_id':'','assigned_user_id':_0x548dbf['id'],'ticketpriorities':_0x5889('0x1a'),'ticketstatus':'Open','ticket_title':intUtil['getString'](_0x5ee2d5[_0x5889('0x1b')],_0x175f5d,'\x20'),'description':intUtil['getString'](_0x5ee2d5[_0x5889('0x1c')],_0x175f5d,'\x0a'),'contact_id':_0x230858['id']},getCustomFields(_0x49f6d7,_0x175f5d));var _0x32b382={'method':_0x5889('0x1d'),'uri':util['format']('%s/webservice.php',_0x185fc4['remoteUri']),'form':{'operation':_0x5889('0x1e'),'username':_0x185fc4[_0x5889('0x1f')],'sessionName':_0x44a979['sessionName'],'elementType':_0x5889('0x20'),'element':JSON[_0x5889('0x21')](_0x1729b1)},'json':!![]};return request(_0x32b382)[_0x5889('0x22')](function(_0x2a1439){if(_0x2a1439[_0x5889('0x23')]){return BPromise[_0x5889('0x24')]({'id':_0x2a1439[_0x5889('0x25')]['id']});}else{throw new Error(util[_0x5889('0x26')](_0x5889('0x27'),JSON[_0x5889('0x21')](_0x2a1439['error'])));}})[_0x5889('0x28')](function(_0x596e76){var _0x5cc84e=_0x596e76['statusCode']||0x1f4;logger[_0x5889('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x5889('0x2a'),_0x5cc84e,JSON[_0x5889('0x21')](_0x596e76));});}function getUser(_0x3fe0f7,_0x3e22c5,_0x53f5c8){if(intUtil['validateEmail'](_0x3e22c5)){logger[_0x5889('0x18')](_0x5889('0x2b'),_0x3e22c5);return request({'method':'GET','uri':util[_0x5889('0x26')]('%s/webservice.php',_0x3fe0f7['remoteUri']),'qs':{'operation':'query','username':_0x3fe0f7[_0x5889('0x1f')],'sessionName':_0x53f5c8[_0x5889('0x2c')],'query':util[_0x5889('0x26')](_0x5889('0x2d'),_0x3e22c5)},'json':!![]})[_0x5889('0x22')](function(_0x14e2ce){if(_0x14e2ce[_0x5889('0x23')]&&_0x14e2ce[_0x5889('0x25')]['length']){logger[_0x5889('0x18')](_0x5889('0x2e'));return BPromise[_0x5889('0x24')]({'id':_0x14e2ce['result'][0x0]['id'],'email':_0x14e2ce[_0x5889('0x25')][0x0][_0x5889('0x2f')],'name':_0x14e2ce[_0x5889('0x25')][0x0][_0x5889('0x30')]+'\x20'+_0x14e2ce[_0x5889('0x25')][_0x5889('0x31')]});}else{logger[_0x5889('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x5889('0x24')]({'id':_0x53f5c8[_0x5889('0x32')],'email':_0x3fe0f7['username'],'name':_0x5889('0x33')});}})[_0x5889('0x28')](function(_0x454ddf){var _0x11b8af=_0x454ddf['statusCode']||0x1f4;logger[_0x5889('0x29')](_0x5889('0x34'),'getUser',_0x11b8af,JSON[_0x5889('0x21')](_0x454ddf));});}else{logger[_0x5889('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x5889('0x24')]({'id':_0x53f5c8[_0x5889('0x32')],'email':_0x3fe0f7[_0x5889('0x1f')],'name':_0x5889('0x33')})[_0x5889('0x28')](function(_0x31fe3b){var _0x4572af=_0x31fe3b[_0x5889('0x35')]||0x1f4;logger[_0x5889('0x29')](_0x5889('0x34'),'getUser',_0x4572af,JSON[_0x5889('0x21')](_0x31fe3b));});}}function getEndUser(_0x11f3f4,_0x76685a,_0x31554e,_0x5d5d52){logger[_0x5889('0x18')](_0x5889('0x36'),_0x31554e);return request({'method':_0x5889('0x37'),'uri':util['format']('%s/webservice.php',_0x11f3f4[_0x5889('0x38')]),'qs':{'operation':_0x5889('0x39'),'username':_0x11f3f4['username'],'sessionName':_0x5d5d52[_0x5889('0x2c')],'query':util[_0x5889('0x26')](_0x5889('0x3a'),_0x31554e,_0x31554e,_0x31554e,_0x31554e,_0x31554e)},'json':!![]})[_0x5889('0x22')](function(_0x171d6e){if(_0x171d6e[_0x5889('0x23')]&&_0x171d6e['result'][_0x5889('0xc')]){logger[_0x5889('0x18')]('Enduser\x20found!');return BPromise['resolve']({'id':_0x171d6e['result'][0x0]['id'],'name':_0x171d6e[_0x5889('0x25')][0x0][_0x5889('0x3b')]+'\x20'+_0x171d6e[_0x5889('0x25')][0x0][_0x5889('0x3c')],'phone':_0x31554e});}else{logger[_0x5889('0x18')](_0x5889('0x3d'));return request({'method':_0x5889('0x1d'),'uri':util[_0x5889('0x26')](_0x5889('0x3e'),_0x11f3f4[_0x5889('0x38')]),'form':{'operation':'create','sessionName':_0x5d5d52[_0x5889('0x2c')],'elementType':_0x5889('0x3f'),'element':JSON[_0x5889('0x21')]({'lastname':_0x76685a,'phone':_0x31554e,'assigned_user_id':'\x20'})},'json':!![]})[_0x5889('0x22')](function(_0x1d2912){logger[_0x5889('0x18')](_0x5889('0x40'));return BPromise[_0x5889('0x24')]({'id':_0x1d2912[_0x5889('0x25')]['id'],'name':_0x1d2912['result'][_0x5889('0x3c')],'phone':_0x1d2912['result'][_0x5889('0x41')]});})[_0x5889('0x28')](function(_0x374c4e){var _0x37b234=_0x374c4e[_0x5889('0x35')]||0x1f4;logger[_0x5889('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x5889('0x42'),_0x37b234,JSON['stringify'](_0x374c4e));});}});}function getConnection(_0x52ac91){var _0x733c2f=_0x52ac91[_0x5889('0x1f')];var _0x40ca12=_0x52ac91['accessKey'];return request({'method':_0x5889('0x37'),'uri':util[_0x5889('0x26')](_0x5889('0x3e'),_0x52ac91[_0x5889('0x38')]),'qs':{'operation':_0x5889('0x43'),'username':_0x733c2f},'json':!![]})[_0x5889('0x22')](function(_0x4b8960){if(_0x4b8960[_0x5889('0x23')]){return request({'method':_0x5889('0x1d'),'uri':util[_0x5889('0x26')](_0x5889('0x3e'),_0x52ac91[_0x5889('0x38')]),'form':{'operation':_0x5889('0x44'),'username':_0x733c2f,'accessKey':md5(_0x4b8960[_0x5889('0x25')]['token']+_0x40ca12)},'json':!![]});}})[_0x5889('0x22')](function(_0xc71f80){if(_0xc71f80[_0x5889('0x23')]){return BPromise[_0x5889('0x24')](_0xc71f80[_0x5889('0x25')]);}else{throw new Error(util[_0x5889('0x26')](_0x5889('0x45'),_0x52ac91['id']));}})[_0x5889('0x28')](function(_0x400df9){var _0x6acbba=_0x400df9['statusCode']||0x1f4;logger[_0x5889('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x5889('0x46'),_0x6acbba,JSON[_0x5889('0x21')](_0x400df9));});}function request(_0x23be3a){logger[_0x5889('0x18')](_0x5889('0x47'),JSON['stringify'](_0x23be3a));return rp(_0x23be3a);}exports[_0x5889('0x48')]=function(_0x2c7bfc,_0x2791da,_0x353a98,_0x479507,_0x4d3285,_0x3a40f4){var _0x2b2e3e,_0x4648e2,_0x5a9f5d,_0x20d02f;_0x3a40f4[_0x5889('0x38')]=intUtil[_0x5889('0x49')](_0x3a40f4[_0x5889('0x38')]);if(_0x4d3285&&_0x4d3285['monitor_format']){logger[_0x5889('0x18')](_0x5889('0x4a'),_0x5889('0x4b'));_0x2791da[_0x5889('0x4c')]=util[_0x5889('0x26')](_0x5889('0x4d'),_0x3a40f4[_0x5889('0x4e')],_0x2791da[_0x5889('0x4f')],md5(_0x2791da[_0x5889('0x4f')]));}else{_0x2791da[_0x5889('0x4c')]='';}return getConnection(_0x3a40f4)[_0x5889('0x22')](function(_0xeb062f){_0x20d02f=_0xeb062f;return getUser(_0x3a40f4,_0x479507[_0x5889('0x50')],_0x20d02f);})['then'](function(_0x128376){_0x2b2e3e=_0x128376;logger[_0x5889('0x18')](_0x5889('0x51'),_0x2b2e3e['id']);return getEndUser(_0x3a40f4,_0x2791da['calleridname'],_0x2791da[_0x5889('0x52')],_0x20d02f);})[_0x5889('0x22')](function(_0x203e8f){_0x4648e2=_0x203e8f;logger['info'](_0x5889('0x53'),_0x4648e2['id']);return createTicket(_0x3a40f4,_0x2b2e3e,_0x4648e2,_0x353a98,_0x2791da,_0x353a98[_0x5889('0x54')],_0x20d02f);})[_0x5889('0x22')](function(_0x2667a3){_0x5a9f5d=_0x2667a3;logger[_0x5889('0x18')](_0x5889('0x55'));logger[_0x5889('0x18')](_0x5889('0x56'),_0x5a9f5d['id']);var _0x314342=util['format'](_0x5889('0x57'),_0x3a40f4[_0x5889('0x38')],_[_0x5889('0x58')](_0x5a9f5d['id'],'x')[0x1]);logger['info'](_0x5889('0x4a'),_0x5889('0x59'));emit(util[_0x5889('0x26')](_0x5889('0x5a'),_0x479507[_0x5889('0x16')]),_0x5889('0x5b'),{'uri':_0x314342});})['catch'](function(_0x40ddb6){logger[_0x5889('0x29')](_0x5889('0x4a'),JSON[_0x5889('0x21')](_0x40ddb6));});};exports[_0x5889('0x5c')]=function(_0x46e30a,_0x5639eb,_0x5557df,_0x306032,_0x1427ec,_0x2adbf1,_0x2deab0){var _0x352449,_0x5f078e,_0x1969d1,_0x2b8437;_0x2adbf1[_0x5889('0x38')]=intUtil[_0x5889('0x49')](_0x2adbf1['remoteUri']);_0x2adbf1[_0x5889('0x4e')]=intUtil['stripTrailingSlash'](_0x2adbf1['serverUrl']);if(_0x2deab0&&_0x2deab0['recordingFormat']&&_0x2deab0[_0x5889('0x5d')]!==_0x5889('0x5e')){logger['info']('[OUTBOUND]',_0x5889('0x4b'));_0x5639eb[_0x5889('0x4c')]=util['format'](_0x5889('0x4d'),_0x2adbf1[_0x5889('0x4e')],_0x5639eb[_0x5889('0x4f')],md5(_0x5639eb[_0x5889('0x4f')]));}return getConnection(_0x2adbf1)[_0x5889('0x22')](function(_0x5a80e3){_0x2b8437=_0x5a80e3;return getUser(_0x2adbf1,_0x306032[_0x5889('0x50')],_0x2b8437);})[_0x5889('0x22')](function(_0x597c2f){_0x352449=_0x597c2f;logger[_0x5889('0x18')](_0x5889('0x51'),_0x352449['id']);return getEndUser(_0x2adbf1,_0x5639eb[_0x5889('0x5f')],_0x5639eb['destcalleridnum'],_0x2b8437);})[_0x5889('0x22')](function(_0x36c6fe){_0x5f078e=_0x36c6fe;logger[_0x5889('0x18')](_0x5889('0x53'),_0x5f078e['id']);return createTicket(_0x2adbf1,_0x352449,_0x5f078e,_0x5557df,_0x5639eb,_0x5557df[_0x5889('0x54')],_0x2b8437);})[_0x5889('0x22')](function(_0x4efad5){_0x1969d1=_0x4efad5;logger[_0x5889('0x18')]('Ticket\x20created!');logger[_0x5889('0x18')](_0x5889('0x56'),_0x1969d1['id']);var _0x58a43c=util[_0x5889('0x26')](_0x5889('0x57'),_0x2adbf1[_0x5889('0x38')],_[_0x5889('0x58')](_0x1969d1['id'],'x')[0x1]);logger[_0x5889('0x18')](_0x5889('0x60'),_0x5889('0x59'));emit(util[_0x5889('0x26')](_0x5889('0x5a'),_0x306032[_0x5889('0x16')]),_0x5889('0x5b'),{'uri':_0x58a43c});})['catch'](function(_0x46e0b7){logger[_0x5889('0x29')](_0x5889('0x60'),JSON[_0x5889('0x21')](_0x46e0b7));});};exports[_0x5889('0x61')]=function(_0x36a509,_0x44c5e7,_0x1e5238,_0x48a74a,_0x4efa9c,_0x3f2475){var _0xa53cf6,_0x40895b,_0x13bc97,_0x211b84;_0x3f2475[_0x5889('0x38')]=intUtil[_0x5889('0x49')](_0x3f2475[_0x5889('0x38')]);_0x3f2475['serverUrl']=intUtil['stripTrailingSlash'](_0x3f2475['serverUrl']);if(_0x4efa9c&&_0x4efa9c[_0x5889('0x62')]){logger[_0x5889('0x18')]('['+_0x44c5e7[_0x5889('0x63')][_0x5889('0x64')]()+']',_0x5889('0x4b'));_0x44c5e7[_0x5889('0x4c')]=util[_0x5889('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3f2475[_0x5889('0x4e')],_0x44c5e7[_0x5889('0x4f')],md5(_0x44c5e7[_0x5889('0x4f')]));}else{_0x44c5e7['recordingURL']='';}return getConnection(_0x3f2475)[_0x5889('0x22')](function(_0x32c19c){_0x211b84=_0x32c19c;return getUser(_0x3f2475,'',_0x211b84);})[_0x5889('0x22')](function(_0x53111f){_0xa53cf6=_0x53111f;logger['info'](_0x5889('0x51'),_0xa53cf6['id']);return getEndUser(_0x3f2475,_0x44c5e7[_0x5889('0x65')],_0x44c5e7[_0x5889('0x52')],_0x211b84);})[_0x5889('0x22')](function(_0x3ac295){_0x40895b=_0x3ac295;logger['info']('The\x20Enduser\x20ID\x20is:',_0x40895b['id']);return createTicket(_0x3f2475,_0xa53cf6,_0x40895b,_0x1e5238,_0x44c5e7,_0x1e5238[_0x5889('0x54')],_0x211b84);})[_0x5889('0x22')](function(_0x1f51a4){_0x13bc97=_0x1f51a4;logger['info'](_0x5889('0x55'));logger['info'](_0x5889('0x56'),_0x13bc97['id']);})[_0x5889('0x28')](function(_0x45057b){logger[_0x5889('0x29')]('['+_0x44c5e7[_0x5889('0x63')][_0x5889('0x64')]()+']',JSON['stringify'](_0x45057b));});};