b3236f4e7104c0df9367aca3f60ced57a7034597
[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 _0xc67a=['last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','getUser','userId','Searching\x20end\x20user\x20with\x20phone','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','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','lastname','phone','getEndUser','getchallenge','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','trigger:browser:url','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','email','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Fields','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','toUpperCase','lastevent','lodash','util','ioredis','./util','../../../../config/logger','vTiger','defaults','localhost','socket.io-emitter','redis','emit','length','forEach','type','string','idField','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','merge','Open','getString','Subjects','Descriptions','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','success','resolve','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','GET','remoteUri','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','Agent\x20found!','email1','first_name'];(function(_0x256bf3,_0x5beae7){var _0xf2f531=function(_0x443aad){while(--_0x443aad){_0x256bf3['push'](_0x256bf3['shift']());}};_0xf2f531(++_0x5beae7);}(_0xc67a,0xfb));var _0xac67=function(_0x5f5634,_0x4ac52f){_0x5f5634=_0x5f5634-0x0;var _0xaf87e2=_0xc67a[_0x5f5634];return _0xaf87e2;};'use strict';var _=require(_0xac67('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require('md5');var util=require(_0xac67('0x1'));var Redis=require(_0xac67('0x2'));var intUtil=require(_0xac67('0x3'));var config=require('../../../../config/environment');var logger=require(_0xac67('0x4'))(_0xac67('0x5'));config['redis']=_[_0xac67('0x6')](config['redis'],{'host':_0xac67('0x7'),'port':0x18eb});var io=require(_0xac67('0x8'))(new Redis(config[_0xac67('0x9')]));function emit(_0x25663e,_0x677f24,_0x4ef514){io['to'](_0x25663e)[_0xac67('0xa')](_0x677f24,_0x4ef514);}function getCustomFields(_0x230998,_0x402791){var _0x2c8efa={};if(_0x230998[_0xac67('0xb')]>0x0){_[_0xac67('0xc')](_0x230998,function(_0x3d875f){if(_0x3d875f[_0xac67('0xd')]===_0xac67('0xe')&&_0x3d875f[_0xac67('0xf')]){_0x2c8efa[_0x3d875f[_0xac67('0xf')]]=_0x3d875f['content']['toString']();}else if(_0x3d875f[_0xac67('0xd')]===_0xac67('0x10')&&_0x3d875f[_0xac67('0x11')]&&_0x3d875f[_0xac67('0xf')]&&_0x402791[_0x3d875f[_0xac67('0x11')]]){_0x2c8efa[_0x3d875f[_0xac67('0xf')]]=_0x402791[_0x3d875f[_0xac67('0x11')]][_0xac67('0x12')]();}else if(_0x3d875f[_0xac67('0xd')]===_0xac67('0x13')&&_0x3d875f[_0xac67('0x14')]&&_0x3d875f['Variable']['name']&&_0x3d875f[_0xac67('0xf')]&&_0x402791[_0x3d875f['Variable'][_0xac67('0x15')]['toLowerCase']()]){_0x2c8efa[_0x3d875f[_0xac67('0xf')]]=_0x402791[_0x3d875f[_0xac67('0x14')][_0xac67('0x15')][_0xac67('0x16')]()][_0xac67('0x12')]();}});}return _0x2c8efa;}function createTicket(_0x4a3016,_0xa48b84,_0xaba28c,_0x4d1f53,_0x3d3163,_0x5bcb39,_0xc7c69b){logger[_0xac67('0x17')]('Creating\x20new\x20ticket...');var _0x1bda11=_[_0xac67('0x18')]({'parent_id':'','assigned_user_id':_0xa48b84['id'],'ticketpriorities':'Normal','ticketstatus':_0xac67('0x19'),'ticket_title':intUtil[_0xac67('0x1a')](_0x4d1f53[_0xac67('0x1b')],_0x3d3163,'\x20'),'description':intUtil[_0xac67('0x1a')](_0x4d1f53[_0xac67('0x1c')],_0x3d3163,'\x0a'),'contact_id':_0xaba28c['id']},getCustomFields(_0x5bcb39,_0x3d3163));var _0x59e7dc={'method':_0xac67('0x1d'),'uri':util[_0xac67('0x1e')](_0xac67('0x1f'),_0x4a3016['remoteUri']),'form':{'operation':_0xac67('0x20'),'username':_0x4a3016[_0xac67('0x21')],'sessionName':_0xc7c69b[_0xac67('0x22')],'elementType':_0xac67('0x23'),'element':JSON[_0xac67('0x24')](_0x1bda11)},'json':!![]};return request(_0x59e7dc)[_0xac67('0x25')](function(_0x5ac132){if(_0x5ac132[_0xac67('0x26')]){return BPromise[_0xac67('0x27')]({'id':_0x5ac132[_0xac67('0x28')]['id']});}else{throw new Error(util['format'](_0xac67('0x29'),JSON['stringify'](_0x5ac132['error'])));}})[_0xac67('0x2a')](function(_0x3f7923){var _0x4be0cb=_0x3f7923[_0xac67('0x2b')]||0x1f4;logger[_0xac67('0x2c')](_0xac67('0x2d'),_0xac67('0x2e'),_0x4be0cb,JSON[_0xac67('0x24')](_0x3f7923));});}function getUser(_0x46f289,_0xd46d3f,_0x25e7d3){if(intUtil[_0xac67('0x2f')](_0xd46d3f)){logger[_0xac67('0x17')]('Getting\x20agent\x20with\x20email',_0xd46d3f);return request({'method':_0xac67('0x30'),'uri':util[_0xac67('0x1e')]('%s/webservice.php',_0x46f289[_0xac67('0x31')]),'qs':{'operation':_0xac67('0x32'),'username':_0x46f289[_0xac67('0x21')],'sessionName':_0x25e7d3[_0xac67('0x22')],'query':util[_0xac67('0x1e')](_0xac67('0x33'),_0xd46d3f)},'json':!![]})[_0xac67('0x25')](function(_0x388fe9){if(_0x388fe9[_0xac67('0x26')]&&_0x388fe9[_0xac67('0x28')][_0xac67('0xb')]){logger['info'](_0xac67('0x34'));return BPromise[_0xac67('0x27')]({'id':_0x388fe9['result'][0x0]['id'],'email':_0x388fe9[_0xac67('0x28')][0x0][_0xac67('0x35')],'name':_0x388fe9[_0xac67('0x28')][0x0][_0xac67('0x36')]+'\x20'+_0x388fe9[_0xac67('0x28')][_0xac67('0x37')]});}else{logger[_0xac67('0x17')](_0xac67('0x38'));return BPromise[_0xac67('0x27')]({'id':_0x25e7d3['userId'],'email':_0x46f289[_0xac67('0x21')],'name':'admin'});}})[_0xac67('0x2a')](function(_0xa3893b){var _0x1dff78=_0xa3893b[_0xac67('0x2b')]||0x1f4;logger[_0xac67('0x2c')]('[vTiger],\x20%s,\x20%s,\x20%s',_0xac67('0x39'),_0x1dff78,JSON[_0xac67('0x24')](_0xa3893b));});}else{logger[_0xac67('0x17')](_0xac67('0x38'));return BPromise[_0xac67('0x27')]({'id':_0x25e7d3[_0xac67('0x3a')],'email':_0x46f289['username'],'name':'admin'})[_0xac67('0x2a')](function(_0x26bf73){var _0x475273=_0x26bf73[_0xac67('0x2b')]||0x1f4;logger[_0xac67('0x2c')](_0xac67('0x2d'),'getUser',_0x475273,JSON[_0xac67('0x24')](_0x26bf73));});}}function getEndUser(_0x1fdc0b,_0x126aad,_0x5b385c,_0x3b98bf){logger['info'](_0xac67('0x3b'),_0x5b385c);return request({'method':_0xac67('0x30'),'uri':util[_0xac67('0x1e')](_0xac67('0x1f'),_0x1fdc0b[_0xac67('0x31')]),'qs':{'operation':_0xac67('0x32'),'username':_0x1fdc0b[_0xac67('0x21')],'sessionName':_0x3b98bf[_0xac67('0x22')],'query':util[_0xac67('0x1e')](_0xac67('0x3c'),_0x5b385c,_0x5b385c,_0x5b385c,_0x5b385c,_0x5b385c)},'json':!![]})[_0xac67('0x25')](function(_0x5bc6e2){if(_0x5bc6e2[_0xac67('0x26')]&&_0x5bc6e2['result'][_0xac67('0xb')]){logger['info'](_0xac67('0x3d'));return BPromise[_0xac67('0x27')]({'id':_0x5bc6e2[_0xac67('0x28')][0x0]['id'],'name':_0x5bc6e2[_0xac67('0x28')][0x0][_0xac67('0x3e')]+'\x20'+_0x5bc6e2['result'][0x0]['lastname'],'phone':_0x5b385c});}else{logger[_0xac67('0x17')](_0xac67('0x3f'));return request({'method':_0xac67('0x1d'),'uri':util[_0xac67('0x1e')](_0xac67('0x1f'),_0x1fdc0b[_0xac67('0x31')]),'form':{'operation':_0xac67('0x20'),'sessionName':_0x3b98bf[_0xac67('0x22')],'elementType':_0xac67('0x40'),'element':JSON[_0xac67('0x24')]({'lastname':_0x126aad,'phone':_0x5b385c,'assigned_user_id':'\x20'})},'json':!![]})[_0xac67('0x25')](function(_0x4dcba){logger[_0xac67('0x17')](_0xac67('0x41'));return BPromise['resolve']({'id':_0x4dcba[_0xac67('0x28')]['id'],'name':_0x4dcba['result'][_0xac67('0x42')],'phone':_0x4dcba[_0xac67('0x28')][_0xac67('0x43')]});})[_0xac67('0x2a')](function(_0x5015d9){var _0x1c6a5d=_0x5015d9[_0xac67('0x2b')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s',_0xac67('0x44'),_0x1c6a5d,JSON[_0xac67('0x24')](_0x5015d9));});}});}function getConnection(_0x4fc8c9){var _0x8ff597=_0x4fc8c9[_0xac67('0x21')];var _0x2f4c26=_0x4fc8c9['accessKey'];return request({'method':_0xac67('0x30'),'uri':util[_0xac67('0x1e')](_0xac67('0x1f'),_0x4fc8c9[_0xac67('0x31')]),'qs':{'operation':_0xac67('0x45'),'username':_0x8ff597},'json':!![]})[_0xac67('0x25')](function(_0x37165c){if(_0x37165c['success']){return request({'method':_0xac67('0x1d'),'uri':util[_0xac67('0x1e')](_0xac67('0x1f'),_0x4fc8c9[_0xac67('0x31')]),'form':{'operation':_0xac67('0x46'),'username':_0x8ff597,'accessKey':md5(_0x37165c[_0xac67('0x28')]['token']+_0x2f4c26)},'json':!![]});}})[_0xac67('0x25')](function(_0x3c67ce){if(_0x3c67ce[_0xac67('0x26')]){return BPromise[_0xac67('0x27')](_0x3c67ce[_0xac67('0x28')]);}else{throw new Error(util[_0xac67('0x1e')](_0xac67('0x47'),_0x4fc8c9['id']));}})['catch'](function(_0x432758){var _0x1ae12d=_0x432758[_0xac67('0x2b')]||0x1f4;logger[_0xac67('0x2c')](_0xac67('0x2d'),_0xac67('0x48'),_0x1ae12d,JSON[_0xac67('0x24')](_0x432758));});}function request(_0x3b17a6){logger['info'](_0xac67('0x49'),JSON['stringify'](_0x3b17a6));return rp(_0x3b17a6);}exports['queue']=function(_0x3f250a,_0x40a824,_0x69943e,_0x21a3c3,_0x34e7a2,_0x4a5493){var _0x28012a,_0x42a62d,_0x34e31d,_0x11d27c;_0x4a5493[_0xac67('0x31')]=intUtil['stripTrailingSlash'](_0x4a5493[_0xac67('0x31')]);if(_0x34e7a2&&_0x34e7a2[_0xac67('0x4a')]){logger[_0xac67('0x17')](_0xac67('0x4b'),'Recording\x20is\x20enabled!');_0x40a824['recordingURL']=util['format'](_0xac67('0x4c'),_0x4a5493[_0xac67('0x4d')],_0x40a824[_0xac67('0x4e')],md5(_0x40a824['uniqueid']));}else{_0x40a824[_0xac67('0x4f')]='';}return getConnection(_0x4a5493)[_0xac67('0x25')](function(_0x4e871c){_0x11d27c=_0x4e871c;return getUser(_0x4a5493,_0x21a3c3['email'],_0x11d27c);})['then'](function(_0xbcf307){_0x28012a=_0xbcf307;logger[_0xac67('0x17')](_0xac67('0x50'),_0x28012a['id']);return getEndUser(_0x4a5493,_0x40a824[_0xac67('0x51')],_0x40a824[_0xac67('0x52')],_0x11d27c);})[_0xac67('0x25')](function(_0x1cc4e3){_0x42a62d=_0x1cc4e3;logger[_0xac67('0x17')]('The\x20Enduser\x20ID\x20is:',_0x42a62d['id']);return createTicket(_0x4a5493,_0x28012a,_0x42a62d,_0x69943e,_0x40a824,_0x69943e['Fields'],_0x11d27c);})['then'](function(_0x21301c){_0x34e31d=_0x21301c;logger[_0xac67('0x17')](_0xac67('0x53'));logger['info'](_0xac67('0x54'),_0x34e31d['id']);var _0x9912c4=util[_0xac67('0x1e')](_0xac67('0x55'),_0x4a5493[_0xac67('0x31')],_[_0xac67('0x56')](_0x34e31d['id'],'x')[0x1]);logger[_0xac67('0x17')](_0xac67('0x4b'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x21a3c3[_0xac67('0x15')]),_0xac67('0x57'),{'uri':_0x9912c4});})['catch'](function(_0x51b931){logger[_0xac67('0x2c')](_0xac67('0x4b'),JSON[_0xac67('0x24')](_0x51b931));});};exports['outbound']=function(_0x51d4d4,_0x3fa1fe,_0x4322bf,_0x1915b9,_0x38cbee,_0x558ca1,_0x266b9d){var _0x1f0aed,_0x118839,_0x1fe672,_0x34d38b;_0x558ca1['remoteUri']=intUtil['stripTrailingSlash'](_0x558ca1[_0xac67('0x31')]);_0x558ca1[_0xac67('0x4d')]=intUtil[_0xac67('0x58')](_0x558ca1[_0xac67('0x4d')]);if(_0x266b9d&&_0x266b9d[_0xac67('0x59')]&&_0x266b9d[_0xac67('0x59')]!==_0xac67('0x5a')){logger['info'](_0xac67('0x5b'),_0xac67('0x5c'));_0x3fa1fe[_0xac67('0x4f')]=util['format'](_0xac67('0x4c'),_0x558ca1['serverUrl'],_0x3fa1fe['uniqueid'],md5(_0x3fa1fe['uniqueid']));}return getConnection(_0x558ca1)[_0xac67('0x25')](function(_0x13b4da){_0x34d38b=_0x13b4da;return getUser(_0x558ca1,_0x1915b9[_0xac67('0x5d')],_0x34d38b);})[_0xac67('0x25')](function(_0x4bd8df){_0x1f0aed=_0x4bd8df;logger[_0xac67('0x17')]('The\x20User\x20ID\x20is:',_0x1f0aed['id']);return getEndUser(_0x558ca1,_0x3fa1fe[_0xac67('0x5e')],_0x3fa1fe[_0xac67('0x5f')],_0x34d38b);})['then'](function(_0x430641){_0x118839=_0x430641;logger['info'](_0xac67('0x60'),_0x118839['id']);return createTicket(_0x558ca1,_0x1f0aed,_0x118839,_0x4322bf,_0x3fa1fe,_0x4322bf[_0xac67('0x61')],_0x34d38b);})[_0xac67('0x25')](function(_0x4ce1f0){_0x1fe672=_0x4ce1f0;logger[_0xac67('0x17')](_0xac67('0x53'));logger[_0xac67('0x17')](_0xac67('0x54'),_0x1fe672['id']);var _0x45d150=util[_0xac67('0x1e')](_0xac67('0x55'),_0x558ca1[_0xac67('0x31')],_[_0xac67('0x56')](_0x1fe672['id'],'x')[0x1]);logger[_0xac67('0x17')](_0xac67('0x5b'),_0xac67('0x62'));emit(util[_0xac67('0x1e')]('user:%s',_0x1915b9[_0xac67('0x15')]),_0xac67('0x57'),{'uri':_0x45d150});})[_0xac67('0x2a')](function(_0x548efc){logger[_0xac67('0x2c')](_0xac67('0x5b'),JSON[_0xac67('0x24')](_0x548efc));});};exports[_0xac67('0x63')]=function(_0x229255,_0x244518,_0x21f58a,_0x1e2d41,_0x1ad294,_0x300c64){var _0x596dee,_0x1c76e5,_0xeea4f3,_0x193e48;_0x300c64['remoteUri']=intUtil['stripTrailingSlash'](_0x300c64[_0xac67('0x31')]);_0x300c64['serverUrl']=intUtil[_0xac67('0x58')](_0x300c64[_0xac67('0x4d')]);if(_0x1ad294&&_0x1ad294[_0xac67('0x4a')]){logger[_0xac67('0x17')]('['+_0x244518['lastevent'][_0xac67('0x64')]()+']',_0xac67('0x5c'));_0x244518['recordingURL']=util['format'](_0xac67('0x4c'),_0x300c64[_0xac67('0x4d')],_0x244518[_0xac67('0x4e')],md5(_0x244518[_0xac67('0x4e')]));}else{_0x244518[_0xac67('0x4f')]='';}return getConnection(_0x300c64)[_0xac67('0x25')](function(_0xbc52c5){_0x193e48=_0xbc52c5;return getUser(_0x300c64,'',_0x193e48);})['then'](function(_0x2ec777){_0x596dee=_0x2ec777;logger[_0xac67('0x17')](_0xac67('0x50'),_0x596dee['id']);return getEndUser(_0x300c64,_0x244518[_0xac67('0x51')],_0x244518['calleridnum'],_0x193e48);})['then'](function(_0x37170a){_0x1c76e5=_0x37170a;logger[_0xac67('0x17')](_0xac67('0x60'),_0x1c76e5['id']);return createTicket(_0x300c64,_0x596dee,_0x1c76e5,_0x21f58a,_0x244518,_0x21f58a[_0xac67('0x61')],_0x193e48);})[_0xac67('0x25')](function(_0x38b7f9){_0xeea4f3=_0x38b7f9;logger[_0xac67('0x17')](_0xac67('0x53'));logger['info'](_0xac67('0x54'),_0xeea4f3['id']);})[_0xac67('0x2a')](function(_0x2dd7ab){logger[_0xac67('0x2c')]('['+_0x244518[_0xac67('0x65')][_0xac67('0x64')]()+']',JSON[_0xac67('0x24')](_0x2dd7ab));});};