58158e84cbcf417074db6e83eb37eb2b315978be
[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 _0x48ce=['variable','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Subjects','getString','Descriptions','%s/webservice.php','remoteUri','create','username','sessionName','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','catch','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','Getting\x20agent\x20with\x20email','query','format','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','email1','first_name','last_name','userId','getUser','Searching\x20end\x20user\x20with\x20phone','GET','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridname','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...','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridname','user:%s','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','vTiger','redis','localhost','socket.io-emitter','emit','length','forEach','type','string','idField','toString'];(function(_0x90f4a9,_0x3da2c7){var _0xd31954=function(_0x26048a){while(--_0x26048a){_0x90f4a9['push'](_0x90f4a9['shift']());}};_0xd31954(++_0x3da2c7);}(_0x48ce,0x11f));var _0xe48c=function(_0x269d63,_0x27468f){_0x269d63=_0x269d63-0x0;var _0x3821f9=_0x48ce[_0x269d63];return _0x3821f9;};'use strict';var _=require(_0xe48c('0x0'));var rp=require(_0xe48c('0x1'));var BPromise=require(_0xe48c('0x2'));var md5=require(_0xe48c('0x3'));var util=require(_0xe48c('0x4'));var Redis=require(_0xe48c('0x5'));var intUtil=require(_0xe48c('0x6'));var config=require(_0xe48c('0x7'));var logger=require('../../../../config/logger')(_0xe48c('0x8'));config['redis']=_['defaults'](config[_0xe48c('0x9')],{'host':_0xe48c('0xa'),'port':0x18eb});var io=require(_0xe48c('0xb'))(new Redis(config[_0xe48c('0x9')]));function emit(_0x4dc3ab,_0xf363c5,_0x3bb278){io['to'](_0x4dc3ab)[_0xe48c('0xc')](_0xf363c5,_0x3bb278);}function getCustomFields(_0x295ad3,_0x4037f5){var _0x51ffe2={};if(_0x295ad3[_0xe48c('0xd')]>0x0){_[_0xe48c('0xe')](_0x295ad3,function(_0x3f2f03){if(_0x3f2f03[_0xe48c('0xf')]===_0xe48c('0x10')&&_0x3f2f03['idField']){_0x51ffe2[_0x3f2f03[_0xe48c('0x11')]]=_0x3f2f03['content'][_0xe48c('0x12')]();}else if(_0x3f2f03['type']===_0xe48c('0x13')&&_0x3f2f03['variableName']&&_0x3f2f03[_0xe48c('0x11')]&&_0x4037f5[_0x3f2f03['variableName']]){_0x51ffe2[_0x3f2f03[_0xe48c('0x11')]]=_0x4037f5[_0x3f2f03['variableName']][_0xe48c('0x12')]();}else if(_0x3f2f03['type']===_0xe48c('0x14')&&_0x3f2f03[_0xe48c('0x15')]&&_0x3f2f03[_0xe48c('0x15')]['name']&&_0x3f2f03[_0xe48c('0x11')]&&_0x4037f5[_0x3f2f03['Variable'][_0xe48c('0x16')]['toLowerCase']()]){_0x51ffe2[_0x3f2f03[_0xe48c('0x11')]]=_0x4037f5[_0x3f2f03[_0xe48c('0x15')]['name'][_0xe48c('0x17')]()][_0xe48c('0x12')]();}});}return _0x51ffe2;}function createTicket(_0x283801,_0x2a78b1,_0xb22af,_0x4c92c3,_0x5a0829,_0x4964b2,_0x4b8add){logger[_0xe48c('0x18')](_0xe48c('0x19'));var _0x1cc05e=_[_0xe48c('0x1a')]({'parent_id':'','assigned_user_id':_0x2a78b1['id'],'ticketpriorities':_0xe48c('0x1b'),'ticketstatus':'Open','ticket_title':intUtil['getString'](_0x4c92c3[_0xe48c('0x1c')],_0x5a0829,'\x20'),'description':intUtil[_0xe48c('0x1d')](_0x4c92c3[_0xe48c('0x1e')],_0x5a0829,'\x0a'),'contact_id':_0xb22af['id']},getCustomFields(_0x4964b2,_0x5a0829));var _0x52f3a5={'method':'POST','uri':util['format'](_0xe48c('0x1f'),_0x283801[_0xe48c('0x20')]),'form':{'operation':_0xe48c('0x21'),'username':_0x283801[_0xe48c('0x22')],'sessionName':_0x4b8add[_0xe48c('0x23')],'elementType':'HelpDesk','element':JSON[_0xe48c('0x24')](_0x1cc05e)},'json':!![]};return request(_0x52f3a5)[_0xe48c('0x25')](function(_0x960b1b){if(_0x960b1b[_0xe48c('0x26')]){return BPromise[_0xe48c('0x27')]({'id':_0x960b1b['result']['id']});}else{throw new Error(util['format'](_0xe48c('0x28'),JSON['stringify'](_0x960b1b[_0xe48c('0x29')])));}})[_0xe48c('0x2a')](function(_0x2c3e28){var _0x4d1c6a=_0x2c3e28[_0xe48c('0x2b')]||0x1f4;logger[_0xe48c('0x29')](_0xe48c('0x2c'),_0xe48c('0x2d'),_0x4d1c6a,JSON[_0xe48c('0x24')](_0x2c3e28));});}function getUser(_0x258b21,_0x4cd555,_0x251f88){if(intUtil['validateEmail'](_0x4cd555)){logger['info'](_0xe48c('0x2e'),_0x4cd555);return request({'method':'GET','uri':util['format'](_0xe48c('0x1f'),_0x258b21[_0xe48c('0x20')]),'qs':{'operation':_0xe48c('0x2f'),'username':_0x258b21[_0xe48c('0x22')],'sessionName':_0x251f88['sessionName'],'query':util[_0xe48c('0x30')](_0xe48c('0x31'),_0x4cd555)},'json':!![]})['then'](function(_0x5d732e){if(_0x5d732e[_0xe48c('0x26')]&&_0x5d732e[_0xe48c('0x32')][_0xe48c('0xd')]){logger['info'](_0xe48c('0x33'));return BPromise[_0xe48c('0x27')]({'id':_0x5d732e[_0xe48c('0x32')][0x0]['id'],'email':_0x5d732e['result'][0x0][_0xe48c('0x34')],'name':_0x5d732e[_0xe48c('0x32')][0x0][_0xe48c('0x35')]+'\x20'+_0x5d732e['result'][_0xe48c('0x36')]});}else{logger[_0xe48c('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0xe48c('0x27')]({'id':_0x251f88[_0xe48c('0x37')],'email':_0x258b21[_0xe48c('0x22')],'name':'admin'});}})[_0xe48c('0x2a')](function(_0xa67021){var _0x37374e=_0xa67021[_0xe48c('0x2b')]||0x1f4;logger[_0xe48c('0x29')](_0xe48c('0x2c'),_0xe48c('0x38'),_0x37374e,JSON['stringify'](_0xa67021));});}else{logger[_0xe48c('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x251f88['userId'],'email':_0x258b21[_0xe48c('0x22')],'name':'admin'})['catch'](function(_0x162c58){var _0x224eed=_0x162c58['statusCode']||0x1f4;logger[_0xe48c('0x29')](_0xe48c('0x2c'),_0xe48c('0x38'),_0x224eed,JSON[_0xe48c('0x24')](_0x162c58));});}}function getEndUser(_0x12c10b,_0x3a7b50,_0x35690b,_0x11f257){logger[_0xe48c('0x18')](_0xe48c('0x39'),_0x35690b);return request({'method':_0xe48c('0x3a'),'uri':util[_0xe48c('0x30')](_0xe48c('0x1f'),_0x12c10b[_0xe48c('0x20')]),'qs':{'operation':_0xe48c('0x2f'),'username':_0x12c10b[_0xe48c('0x22')],'sessionName':_0x11f257[_0xe48c('0x23')],'query':util[_0xe48c('0x30')]('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;',_0x35690b,_0x35690b,_0x35690b,_0x35690b,_0x35690b)},'json':!![]})[_0xe48c('0x25')](function(_0x3e6bb5){if(_0x3e6bb5[_0xe48c('0x26')]&&_0x3e6bb5['result'][_0xe48c('0xd')]){logger['info'](_0xe48c('0x3b'));return BPromise[_0xe48c('0x27')]({'id':_0x3e6bb5[_0xe48c('0x32')][0x0]['id'],'name':_0x3e6bb5[_0xe48c('0x32')][0x0][_0xe48c('0x3c')]+'\x20'+_0x3e6bb5['result'][0x0][_0xe48c('0x3d')],'phone':_0x35690b});}else{logger[_0xe48c('0x18')](_0xe48c('0x3e'));return request({'method':_0xe48c('0x3f'),'uri':util[_0xe48c('0x30')](_0xe48c('0x1f'),_0x12c10b[_0xe48c('0x20')]),'form':{'operation':_0xe48c('0x21'),'sessionName':_0x11f257[_0xe48c('0x23')],'elementType':'Contacts','element':JSON[_0xe48c('0x24')]({'lastname':_0x3a7b50,'phone':_0x35690b,'assigned_user_id':'\x20'})},'json':!![]})[_0xe48c('0x25')](function(_0x1b36f2){logger['info'](_0xe48c('0x40'));return BPromise[_0xe48c('0x27')]({'id':_0x1b36f2['result']['id'],'name':_0x1b36f2[_0xe48c('0x32')]['lastname'],'phone':_0x1b36f2[_0xe48c('0x32')][_0xe48c('0x41')]});})[_0xe48c('0x2a')](function(_0x48896e){var _0xe8ed0d=_0x48896e['statusCode']||0x1f4;logger[_0xe48c('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0xe48c('0x42'),_0xe8ed0d,JSON[_0xe48c('0x24')](_0x48896e));});}});}function getConnection(_0x1389d9){var _0x5d0ba8=_0x1389d9[_0xe48c('0x22')];var _0x5c905b=_0x1389d9[_0xe48c('0x43')];return request({'method':_0xe48c('0x3a'),'uri':util[_0xe48c('0x30')](_0xe48c('0x1f'),_0x1389d9[_0xe48c('0x20')]),'qs':{'operation':_0xe48c('0x44'),'username':_0x5d0ba8},'json':!![]})[_0xe48c('0x25')](function(_0x2594b5){if(_0x2594b5[_0xe48c('0x26')]){return request({'method':_0xe48c('0x3f'),'uri':util[_0xe48c('0x30')]('%s/webservice.php',_0x1389d9[_0xe48c('0x20')]),'form':{'operation':_0xe48c('0x45'),'username':_0x5d0ba8,'accessKey':md5(_0x2594b5[_0xe48c('0x32')]['token']+_0x5c905b)},'json':!![]});}})[_0xe48c('0x25')](function(_0x14e7fd){if(_0x14e7fd[_0xe48c('0x26')]){return BPromise[_0xe48c('0x27')](_0x14e7fd[_0xe48c('0x32')]);}else{throw new Error(util[_0xe48c('0x30')](_0xe48c('0x46'),_0x1389d9['id']));}})[_0xe48c('0x2a')](function(_0x40636a){var _0x31bf7e=_0x40636a[_0xe48c('0x2b')]||0x1f4;logger[_0xe48c('0x29')](_0xe48c('0x2c'),_0xe48c('0x47'),_0x31bf7e,JSON[_0xe48c('0x24')](_0x40636a));});}function request(_0x1b6e78){logger['info'](_0xe48c('0x48'),JSON['stringify'](_0x1b6e78));return rp(_0x1b6e78);}exports[_0xe48c('0x49')]=function(_0x3849c7,_0x431f60,_0x552c3b,_0x5a251f,_0x8c1b84,_0x436235){var _0x4baa96,_0x5d1b55,_0x4c6054,_0x3e763a;_0x436235[_0xe48c('0x20')]=intUtil['stripTrailingSlash'](_0x436235['remoteUri']);if(_0x8c1b84&&_0x8c1b84[_0xe48c('0x4a')]){logger[_0xe48c('0x18')](_0xe48c('0x4b'),_0xe48c('0x4c'));_0x431f60[_0xe48c('0x4d')]=util[_0xe48c('0x30')](_0xe48c('0x4e'),_0x436235[_0xe48c('0x4f')],_0x431f60[_0xe48c('0x50')],md5(_0x431f60[_0xe48c('0x50')]));}else{_0x431f60[_0xe48c('0x4d')]='';}return getConnection(_0x436235)[_0xe48c('0x25')](function(_0x6b0f7d){_0x3e763a=_0x6b0f7d;return getUser(_0x436235,_0x5a251f['email'],_0x3e763a);})[_0xe48c('0x25')](function(_0x3588ad){_0x4baa96=_0x3588ad;logger[_0xe48c('0x18')](_0xe48c('0x51'),_0x4baa96['id']);return getEndUser(_0x436235,_0x431f60[_0xe48c('0x52')],_0x431f60[_0xe48c('0x53')],_0x3e763a);})[_0xe48c('0x25')](function(_0x5edad9){_0x5d1b55=_0x5edad9;logger[_0xe48c('0x18')](_0xe48c('0x54'),_0x5d1b55['id']);return createTicket(_0x436235,_0x4baa96,_0x5d1b55,_0x552c3b,_0x431f60,_0x552c3b[_0xe48c('0x55')],_0x3e763a);})['then'](function(_0x4583cd){_0x4c6054=_0x4583cd;logger[_0xe48c('0x18')](_0xe48c('0x56'));logger['info'](_0xe48c('0x57'),_0x4c6054['id']);var _0x15d86b=util[_0xe48c('0x30')](_0xe48c('0x58'),_0x436235[_0xe48c('0x20')],_[_0xe48c('0x59')](_0x4c6054['id'],'x')[0x1]);logger[_0xe48c('0x18')](_0xe48c('0x4b'),_0xe48c('0x5a'));emit(util[_0xe48c('0x30')]('user:%s',_0x5a251f[_0xe48c('0x16')]),'trigger:browser:url',{'uri':_0x15d86b});})['catch'](function(_0x8ee98f){logger[_0xe48c('0x29')](_0xe48c('0x4b'),JSON[_0xe48c('0x24')](_0x8ee98f));});};exports[_0xe48c('0x5b')]=function(_0x18711b,_0x332de1,_0x56a083,_0xbde5bd,_0x72ed3f,_0x3c5973,_0x422a97){var _0x239fb6,_0x1674a0,_0x1e015d,_0x249845;_0x3c5973[_0xe48c('0x20')]=intUtil[_0xe48c('0x5c')](_0x3c5973[_0xe48c('0x20')]);_0x3c5973['serverUrl']=intUtil[_0xe48c('0x5c')](_0x3c5973['serverUrl']);if(_0x422a97&&_0x422a97[_0xe48c('0x5d')]&&_0x422a97[_0xe48c('0x5d')]!==_0xe48c('0x5e')){logger[_0xe48c('0x18')](_0xe48c('0x5f'),_0xe48c('0x4c'));_0x332de1['recordingURL']=util['format'](_0xe48c('0x4e'),_0x3c5973[_0xe48c('0x4f')],_0x332de1[_0xe48c('0x50')],md5(_0x332de1[_0xe48c('0x50')]));}return getConnection(_0x3c5973)[_0xe48c('0x25')](function(_0x1820a6){_0x249845=_0x1820a6;return getUser(_0x3c5973,_0xbde5bd['email'],_0x249845);})[_0xe48c('0x25')](function(_0x20934d){_0x239fb6=_0x20934d;logger['info'](_0xe48c('0x51'),_0x239fb6['id']);return getEndUser(_0x3c5973,_0x332de1[_0xe48c('0x60')],_0x332de1['destcalleridnum'],_0x249845);})[_0xe48c('0x25')](function(_0x932066){_0x1674a0=_0x932066;logger[_0xe48c('0x18')]('The\x20Enduser\x20ID\x20is:',_0x1674a0['id']);return createTicket(_0x3c5973,_0x239fb6,_0x1674a0,_0x56a083,_0x332de1,_0x56a083[_0xe48c('0x55')],_0x249845);})[_0xe48c('0x25')](function(_0x2446ee){_0x1e015d=_0x2446ee;logger[_0xe48c('0x18')](_0xe48c('0x56'));logger[_0xe48c('0x18')](_0xe48c('0x57'),_0x1e015d['id']);var _0x260579=util[_0xe48c('0x30')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x3c5973[_0xe48c('0x20')],_['split'](_0x1e015d['id'],'x')[0x1]);logger[_0xe48c('0x18')](_0xe48c('0x5f'),_0xe48c('0x5a'));emit(util[_0xe48c('0x30')](_0xe48c('0x61'),_0xbde5bd[_0xe48c('0x16')]),_0xe48c('0x62'),{'uri':_0x260579});})[_0xe48c('0x2a')](function(_0x110930){logger[_0xe48c('0x29')](_0xe48c('0x5f'),JSON[_0xe48c('0x24')](_0x110930));});};exports[_0xe48c('0x63')]=function(_0x1b6bda,_0x408abd,_0x5bce17,_0x273739,_0x340a4b,_0x32fdf0){var _0x17f2af,_0x5837ab,_0x10254e,_0xc5f70d;_0x32fdf0['remoteUri']=intUtil['stripTrailingSlash'](_0x32fdf0[_0xe48c('0x20')]);_0x32fdf0[_0xe48c('0x4f')]=intUtil[_0xe48c('0x5c')](_0x32fdf0[_0xe48c('0x4f')]);if(_0x340a4b&&_0x340a4b['monitor_format']){logger[_0xe48c('0x18')]('['+_0x408abd[_0xe48c('0x64')][_0xe48c('0x65')]()+']',_0xe48c('0x4c'));_0x408abd[_0xe48c('0x4d')]=util[_0xe48c('0x30')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x32fdf0['serverUrl'],_0x408abd[_0xe48c('0x50')],md5(_0x408abd[_0xe48c('0x50')]));}else{_0x408abd[_0xe48c('0x4d')]='';}return getConnection(_0x32fdf0)['then'](function(_0x35db9c){_0xc5f70d=_0x35db9c;return getUser(_0x32fdf0,'',_0xc5f70d);})[_0xe48c('0x25')](function(_0x4ddcf3){_0x17f2af=_0x4ddcf3;logger[_0xe48c('0x18')](_0xe48c('0x51'),_0x17f2af['id']);return getEndUser(_0x32fdf0,_0x408abd[_0xe48c('0x52')],_0x408abd[_0xe48c('0x53')],_0xc5f70d);})[_0xe48c('0x25')](function(_0xf82247){_0x5837ab=_0xf82247;logger[_0xe48c('0x18')](_0xe48c('0x54'),_0x5837ab['id']);return createTicket(_0x32fdf0,_0x17f2af,_0x5837ab,_0x5bce17,_0x408abd,_0x5bce17['Fields'],_0xc5f70d);})[_0xe48c('0x25')](function(_0x4911ed){_0x10254e=_0x4911ed;logger[_0xe48c('0x18')](_0xe48c('0x56'));logger['info'](_0xe48c('0x57'),_0x10254e['id']);})[_0xe48c('0x2a')](function(_0x11ac24){logger['error']('['+_0x408abd[_0xe48c('0x64')][_0xe48c('0x65')]()+']',JSON[_0xe48c('0x24')](_0x11ac24));});};