0609233be3824157337794b4d102d7546b324628
[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 _0xd3d4=['uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','outbound','serverUrl','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','md5','util','./util','../../../../config/environment','../../../../config/logger','vTiger','defaults','redis','localhost','length','forEach','includes','type','content','toString','variable','variableName','idField','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','format','%s/webservice.php','remoteUri','username','sessionName','HelpDesk','stringify','success','resolve','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','catch','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','Agent\x20found!','email1','first_name','userId','admin','getUser','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;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','create','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s'];(function(_0x4fa665,_0x1ae12a){var _0x62ccff=function(_0x4f0bb8){while(--_0x4f0bb8){_0x4fa665['push'](_0x4fa665['shift']());}};_0x62ccff(++_0x1ae12a);}(_0xd3d4,0x1bc));var _0x4d3d=function(_0x4b34c4,_0xc61ba4){_0x4b34c4=_0x4b34c4-0x0;var _0x418e46=_0xd3d4[_0x4b34c4];return _0x418e46;};'use strict';var _=require(_0x4d3d('0x0'));var rp=require(_0x4d3d('0x1'));var BPromise=require(_0x4d3d('0x2'));var md5=require(_0x4d3d('0x3'));var util=require(_0x4d3d('0x4'));var Redis=require('ioredis');var intUtil=require(_0x4d3d('0x5'));var config=require(_0x4d3d('0x6'));var logger=require(_0x4d3d('0x7'))(_0x4d3d('0x8'));config['redis']=_[_0x4d3d('0x9')](config[_0x4d3d('0xa')],{'host':_0x4d3d('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4d3d('0xa')]));function emit(_0x14efa7,_0x315bfa,_0x5014bf){io['to'](_0x14efa7)['emit'](_0x315bfa,_0x5014bf);}function getCustomFields(_0x3e7e1a,_0x199635){var _0x5c7c3c={};if(_0x3e7e1a[_0x4d3d('0xc')]>0x0){_[_0x4d3d('0xd')](_0x3e7e1a,function(_0x57d148){if(_[_0x4d3d('0xe')](['string','picklist'],_0x57d148[_0x4d3d('0xf')])&&_0x57d148['idField']){_0x5c7c3c[_0x57d148['idField']]=_0x57d148[_0x4d3d('0x10')][_0x4d3d('0x11')]();}else if(_0x57d148['type']===_0x4d3d('0x12')&&_0x57d148['variableName']&&_0x57d148['idField']&&_0x199635[_0x57d148[_0x4d3d('0x13')]]){_0x5c7c3c[_0x57d148[_0x4d3d('0x14')]]=_0x199635[_0x57d148[_0x4d3d('0x13')]]['toString']();}else if(_0x57d148[_0x4d3d('0xf')]==='customVariable'&&_0x57d148[_0x4d3d('0x15')]&&_0x57d148[_0x4d3d('0x15')][_0x4d3d('0x16')]&&_0x57d148[_0x4d3d('0x14')]&&_0x199635[_0x57d148[_0x4d3d('0x15')][_0x4d3d('0x16')][_0x4d3d('0x17')]()]){_0x5c7c3c[_0x57d148[_0x4d3d('0x14')]]=_0x199635[_0x57d148[_0x4d3d('0x15')][_0x4d3d('0x16')][_0x4d3d('0x17')]()][_0x4d3d('0x11')]();}});}return _0x5c7c3c;}function createTicket(_0x981280,_0x2ec2cc,_0x42d2c3,_0x57c880,_0x525e12,_0x59fca,_0x5dcc7e){logger[_0x4d3d('0x18')](_0x4d3d('0x19'));var _0x21a6c5=_[_0x4d3d('0x1a')]({'parent_id':'','assigned_user_id':_0x2ec2cc['id'],'ticketpriorities':_0x4d3d('0x1b'),'ticketstatus':_0x4d3d('0x1c'),'ticket_title':intUtil[_0x4d3d('0x1d')](_0x57c880[_0x4d3d('0x1e')],_0x525e12,'\x20'),'description':intUtil[_0x4d3d('0x1d')](_0x57c880['Descriptions'],_0x525e12,'\x0a'),'contact_id':_0x42d2c3['id']},getCustomFields(_0x59fca,_0x525e12));var _0x5253f8={'method':_0x4d3d('0x1f'),'uri':util[_0x4d3d('0x20')](_0x4d3d('0x21'),_0x981280[_0x4d3d('0x22')]),'form':{'operation':'create','username':_0x981280[_0x4d3d('0x23')],'sessionName':_0x5dcc7e[_0x4d3d('0x24')],'elementType':_0x4d3d('0x25'),'element':JSON[_0x4d3d('0x26')](_0x21a6c5)},'json':!![]};return request(_0x5253f8)['then'](function(_0x165d47){if(_0x165d47[_0x4d3d('0x27')]){return BPromise[_0x4d3d('0x28')]({'id':_0x165d47[_0x4d3d('0x29')]['id']});}else{throw new Error(util[_0x4d3d('0x20')](_0x4d3d('0x2a'),JSON[_0x4d3d('0x26')](_0x165d47[_0x4d3d('0x2b')])));}})[_0x4d3d('0x2c')](function(_0x4fab4b){var _0x3f52dc=_0x4fab4b[_0x4d3d('0x2d')]||0x1f4;logger['error'](_0x4d3d('0x2e'),_0x4d3d('0x2f'),_0x3f52dc,JSON[_0x4d3d('0x26')](_0x4fab4b));});}function getUser(_0x511bf8,_0x1b3317,_0x3537ed){if(intUtil['validateEmail'](_0x1b3317)){logger[_0x4d3d('0x18')](_0x4d3d('0x30'),_0x1b3317);return request({'method':_0x4d3d('0x31'),'uri':util[_0x4d3d('0x20')](_0x4d3d('0x21'),_0x511bf8[_0x4d3d('0x22')]),'qs':{'operation':_0x4d3d('0x32'),'username':_0x511bf8[_0x4d3d('0x23')],'sessionName':_0x3537ed[_0x4d3d('0x24')],'query':util[_0x4d3d('0x20')](_0x4d3d('0x33'),_0x1b3317)},'json':!![]})['then'](function(_0x55e97b){if(_0x55e97b[_0x4d3d('0x27')]&&_0x55e97b[_0x4d3d('0x29')][_0x4d3d('0xc')]){logger[_0x4d3d('0x18')](_0x4d3d('0x34'));return BPromise[_0x4d3d('0x28')]({'id':_0x55e97b[_0x4d3d('0x29')][0x0]['id'],'email':_0x55e97b['result'][0x0][_0x4d3d('0x35')],'name':_0x55e97b[_0x4d3d('0x29')][0x0][_0x4d3d('0x36')]+'\x20'+_0x55e97b[_0x4d3d('0x29')]['last_name']});}else{logger[_0x4d3d('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x4d3d('0x28')]({'id':_0x3537ed[_0x4d3d('0x37')],'email':_0x511bf8['username'],'name':_0x4d3d('0x38')});}})[_0x4d3d('0x2c')](function(_0x272959){var _0x45aafe=_0x272959[_0x4d3d('0x2d')]||0x1f4;logger[_0x4d3d('0x2b')](_0x4d3d('0x2e'),_0x4d3d('0x39'),_0x45aafe,JSON['stringify'](_0x272959));});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x4d3d('0x28')]({'id':_0x3537ed[_0x4d3d('0x37')],'email':_0x511bf8[_0x4d3d('0x23')],'name':'admin'})[_0x4d3d('0x2c')](function(_0xcae0b0){var _0x46d00c=_0xcae0b0[_0x4d3d('0x2d')]||0x1f4;logger[_0x4d3d('0x2b')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x4d3d('0x39'),_0x46d00c,JSON[_0x4d3d('0x26')](_0xcae0b0));});}}function getEndUser(_0x588969,_0x449393,_0x2f6430,_0x477fa3){logger['info']('Searching\x20end\x20user\x20with\x20phone',_0x2f6430);return request({'method':_0x4d3d('0x31'),'uri':util[_0x4d3d('0x20')](_0x4d3d('0x21'),_0x588969[_0x4d3d('0x22')]),'qs':{'operation':'query','username':_0x588969['username'],'sessionName':_0x477fa3[_0x4d3d('0x24')],'query':util['format'](_0x4d3d('0x3a'),_0x2f6430,_0x2f6430,_0x2f6430,_0x2f6430,_0x2f6430)},'json':!![]})['then'](function(_0x7b877f){if(_0x7b877f[_0x4d3d('0x27')]&&_0x7b877f[_0x4d3d('0x29')][_0x4d3d('0xc')]){logger[_0x4d3d('0x18')](_0x4d3d('0x3b'));return BPromise[_0x4d3d('0x28')]({'id':_0x7b877f[_0x4d3d('0x29')][0x0]['id'],'name':_0x7b877f['result'][0x0][_0x4d3d('0x3c')]+'\x20'+_0x7b877f[_0x4d3d('0x29')][0x0][_0x4d3d('0x3d')],'phone':_0x2f6430});}else{logger['info'](_0x4d3d('0x3e'));return request({'method':_0x4d3d('0x1f'),'uri':util['format']('%s/webservice.php',_0x588969[_0x4d3d('0x22')]),'form':{'operation':_0x4d3d('0x3f'),'sessionName':_0x477fa3['sessionName'],'elementType':'Contacts','element':JSON['stringify']({'lastname':_0x449393,'phone':_0x2f6430,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x1c7fed){logger[_0x4d3d('0x18')](_0x4d3d('0x40'));return BPromise[_0x4d3d('0x28')]({'id':_0x1c7fed[_0x4d3d('0x29')]['id'],'name':_0x1c7fed['result']['lastname'],'phone':_0x1c7fed[_0x4d3d('0x29')][_0x4d3d('0x41')]});})[_0x4d3d('0x2c')](function(_0x2886a0){var _0xea08d8=_0x2886a0[_0x4d3d('0x2d')]||0x1f4;logger[_0x4d3d('0x2b')](_0x4d3d('0x2e'),_0x4d3d('0x42'),_0xea08d8,JSON[_0x4d3d('0x26')](_0x2886a0));});}});}function getConnection(_0x3c9651){var _0x2f2c69=_0x3c9651[_0x4d3d('0x23')];var _0x360595=_0x3c9651[_0x4d3d('0x43')];return request({'method':'GET','uri':util[_0x4d3d('0x20')]('%s/webservice.php',_0x3c9651[_0x4d3d('0x22')]),'qs':{'operation':_0x4d3d('0x44'),'username':_0x2f2c69},'json':!![]})[_0x4d3d('0x45')](function(_0x3c1235){if(_0x3c1235['success']){return request({'method':_0x4d3d('0x1f'),'uri':util['format']('%s/webservice.php',_0x3c9651[_0x4d3d('0x22')]),'form':{'operation':_0x4d3d('0x46'),'username':_0x2f2c69,'accessKey':md5(_0x3c1235[_0x4d3d('0x29')][_0x4d3d('0x47')]+_0x360595)},'json':!![]});}})[_0x4d3d('0x45')](function(_0x3a92a6){if(_0x3a92a6[_0x4d3d('0x27')]){return BPromise['resolve'](_0x3a92a6[_0x4d3d('0x29')]);}else{throw new Error(util['format'](_0x4d3d('0x48'),_0x3c9651['id']));}})[_0x4d3d('0x2c')](function(_0x22f67d){var _0x4f99a8=_0x22f67d['statusCode']||0x1f4;logger[_0x4d3d('0x2b')](_0x4d3d('0x2e'),_0x4d3d('0x49'),_0x4f99a8,JSON['stringify'](_0x22f67d));});}function request(_0x452678){logger['info'](_0x4d3d('0x4a'),JSON['stringify'](_0x452678));return rp(_0x452678);}exports[_0x4d3d('0x4b')]=function(_0x5626fd,_0x40efb5,_0x5d3038,_0x3df89e,_0x49ba58,_0x2cb800){var _0x4a66d3,_0x3c8c2c,_0x126c12,_0xca6765;_0x2cb800[_0x4d3d('0x22')]=intUtil[_0x4d3d('0x4c')](_0x2cb800[_0x4d3d('0x22')]);if(_0x49ba58&&_0x49ba58[_0x4d3d('0x4d')]){logger[_0x4d3d('0x18')](_0x4d3d('0x4e'),_0x4d3d('0x4f'));_0x40efb5['recordingURL']=util[_0x4d3d('0x20')](_0x4d3d('0x50'),_0x2cb800['serverUrl'],_0x40efb5[_0x4d3d('0x51')],md5(_0x40efb5[_0x4d3d('0x51')]));}else{_0x40efb5[_0x4d3d('0x52')]='';}return getConnection(_0x2cb800)['then'](function(_0x3585e6){_0xca6765=_0x3585e6;return getUser(_0x2cb800,_0x3df89e[_0x4d3d('0x53')],_0xca6765);})[_0x4d3d('0x45')](function(_0x3ebc44){_0x4a66d3=_0x3ebc44;logger[_0x4d3d('0x18')](_0x4d3d('0x54'),_0x4a66d3['id']);return getEndUser(_0x2cb800,_0x40efb5[_0x4d3d('0x55')],_0x40efb5['calleridnum'],_0xca6765);})[_0x4d3d('0x45')](function(_0x1dd5f6){_0x3c8c2c=_0x1dd5f6;logger[_0x4d3d('0x18')]('The\x20Enduser\x20ID\x20is:',_0x3c8c2c['id']);return createTicket(_0x2cb800,_0x4a66d3,_0x3c8c2c,_0x5d3038,_0x40efb5,_0x5d3038[_0x4d3d('0x56')],_0xca6765);})[_0x4d3d('0x45')](function(_0x5af22a){_0x126c12=_0x5af22a;logger[_0x4d3d('0x18')](_0x4d3d('0x57'));logger[_0x4d3d('0x18')](_0x4d3d('0x58'),_0x126c12['id']);var _0x1b7cfb=util[_0x4d3d('0x20')](_0x4d3d('0x59'),_0x2cb800[_0x4d3d('0x22')],_[_0x4d3d('0x5a')](_0x126c12['id'],'x')[0x1]);logger[_0x4d3d('0x18')](_0x4d3d('0x4e'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x4d3d('0x20')]('user:%s',_0x3df89e[_0x4d3d('0x16')]),'trigger:browser:url',{'uri':_0x1b7cfb});})['catch'](function(_0x9a42d2){logger[_0x4d3d('0x2b')](_0x4d3d('0x4e'),JSON[_0x4d3d('0x26')](_0x9a42d2));});};exports[_0x4d3d('0x5b')]=function(_0x90f335,_0x45dbce,_0x396767,_0x5bb5ab,_0x566f13,_0x5214c9,_0x3c9b54){var _0x4e806a,_0x1c1cb0,_0xc34580,_0x2bff4d;_0x5214c9[_0x4d3d('0x22')]=intUtil[_0x4d3d('0x4c')](_0x5214c9[_0x4d3d('0x22')]);_0x5214c9[_0x4d3d('0x5c')]=intUtil[_0x4d3d('0x4c')](_0x5214c9[_0x4d3d('0x5c')]);if(_0x3c9b54&&_0x3c9b54[_0x4d3d('0x5d')]&&_0x3c9b54[_0x4d3d('0x5d')]!==_0x4d3d('0x5e')){logger[_0x4d3d('0x18')](_0x4d3d('0x5f'),_0x4d3d('0x4f'));_0x45dbce[_0x4d3d('0x52')]=util[_0x4d3d('0x20')](_0x4d3d('0x50'),_0x5214c9[_0x4d3d('0x5c')],_0x45dbce[_0x4d3d('0x51')],md5(_0x45dbce[_0x4d3d('0x51')]));}return getConnection(_0x5214c9)[_0x4d3d('0x45')](function(_0x232e7b){_0x2bff4d=_0x232e7b;return getUser(_0x5214c9,_0x5bb5ab[_0x4d3d('0x53')],_0x2bff4d);})[_0x4d3d('0x45')](function(_0x3b080b){_0x4e806a=_0x3b080b;logger[_0x4d3d('0x18')](_0x4d3d('0x54'),_0x4e806a['id']);return getEndUser(_0x5214c9,_0x45dbce[_0x4d3d('0x60')],_0x45dbce[_0x4d3d('0x61')],_0x2bff4d);})[_0x4d3d('0x45')](function(_0x29c928){_0x1c1cb0=_0x29c928;logger['info'](_0x4d3d('0x62'),_0x1c1cb0['id']);return createTicket(_0x5214c9,_0x4e806a,_0x1c1cb0,_0x396767,_0x45dbce,_0x396767[_0x4d3d('0x56')],_0x2bff4d);})[_0x4d3d('0x45')](function(_0x2b4869){_0xc34580=_0x2b4869;logger[_0x4d3d('0x18')]('Ticket\x20created!');logger['info'](_0x4d3d('0x58'),_0xc34580['id']);var _0x2e154c=util[_0x4d3d('0x20')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x5214c9['remoteUri'],_['split'](_0xc34580['id'],'x')[0x1]);logger['info']('[OUTBOUND]',_0x4d3d('0x63'));emit(util['format'](_0x4d3d('0x64'),_0x5bb5ab[_0x4d3d('0x16')]),_0x4d3d('0x65'),{'uri':_0x2e154c});})[_0x4d3d('0x2c')](function(_0x506636){logger['error']('[OUTBOUND]',JSON[_0x4d3d('0x26')](_0x506636));});};exports[_0x4d3d('0x66')]=function(_0xc5ab79,_0x18996a,_0x264edd,_0x395c09,_0x32d477,_0x5d3342){var _0x4f58ad,_0x47fa4a,_0x14607c,_0x33b8f8;_0x5d3342[_0x4d3d('0x22')]=intUtil[_0x4d3d('0x4c')](_0x5d3342[_0x4d3d('0x22')]);_0x5d3342[_0x4d3d('0x5c')]=intUtil[_0x4d3d('0x4c')](_0x5d3342[_0x4d3d('0x5c')]);if(_0x32d477&&_0x32d477['monitor_format']){logger[_0x4d3d('0x18')]('['+_0x18996a[_0x4d3d('0x67')][_0x4d3d('0x68')]()+']',_0x4d3d('0x4f'));_0x18996a[_0x4d3d('0x52')]=util[_0x4d3d('0x20')](_0x4d3d('0x50'),_0x5d3342['serverUrl'],_0x18996a[_0x4d3d('0x51')],md5(_0x18996a[_0x4d3d('0x51')]));}else{_0x18996a[_0x4d3d('0x52')]='';}return getConnection(_0x5d3342)[_0x4d3d('0x45')](function(_0x119f5f){_0x33b8f8=_0x119f5f;return getUser(_0x5d3342,'',_0x33b8f8);})[_0x4d3d('0x45')](function(_0x2aaa42){_0x4f58ad=_0x2aaa42;logger[_0x4d3d('0x18')](_0x4d3d('0x54'),_0x4f58ad['id']);return getEndUser(_0x5d3342,_0x18996a[_0x4d3d('0x55')],_0x18996a['calleridnum'],_0x33b8f8);})['then'](function(_0xb88667){_0x47fa4a=_0xb88667;logger[_0x4d3d('0x18')](_0x4d3d('0x62'),_0x47fa4a['id']);return createTicket(_0x5d3342,_0x4f58ad,_0x47fa4a,_0x264edd,_0x18996a,_0x264edd[_0x4d3d('0x56')],_0x33b8f8);})['then'](function(_0x20beec){_0x14607c=_0x20beec;logger[_0x4d3d('0x18')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x14607c['id']);})['catch'](function(_0x289c09){logger[_0x4d3d('0x2b')]('['+_0x18996a[_0x4d3d('0x67')][_0x4d3d('0x68')]()+']',JSON[_0x4d3d('0x26')](_0x289c09));});};