Built motion from commit (unavailable).|2.0.78
[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 _0xe790=['serverUrl','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','Fields','trigger:browser:url','abandoned','[ABANDONED]','lodash','request-promise','bluebird','md5','util','./util','../../../../config/logger','vTiger','socket.io-emitter','localhost','length','forEach','type','string','idField','content','toString','variable','variableName','customVariable','name','Variable','toLowerCase','info','merge','Open','getString','Subjects','Descriptions','POST','format','%s/webservice.php','remoteUri','create','sessionName','stringify','then','success','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','catch','query','statusCode','createTicket','Getting\x20agent\x20with\x20email','GET','admin','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','[vTiger],\x20%s,\x20%s,\x20%s','getUser','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','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','test','getEndUser','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','stripTrailingSlash','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s'];(function(_0x2118f2,_0x294cfa){var _0x4769df=function(_0x220f09){while(--_0x220f09){_0x2118f2['push'](_0x2118f2['shift']());}};_0x4769df(++_0x294cfa);}(_0xe790,0x189));var _0x0e79=function(_0x37612f,_0x10273e){_0x37612f=_0x37612f-0x0;var _0x4b3f09=_0xe790[_0x37612f];return _0x4b3f09;};'use strict';var _=require(_0x0e79('0x0'));var rp=require(_0x0e79('0x1'));var BPromise=require(_0x0e79('0x2'));var md5=require(_0x0e79('0x3'));var util=require(_0x0e79('0x4'));var intUtil=require(_0x0e79('0x5'));var logger=require(_0x0e79('0x6'))(_0x0e79('0x7'));var io=require(_0x0e79('0x8'))({'host':_0x0e79('0x9'),'port':0x18eb});function emit(_0x18b42c,_0xe02b05,_0x53f11c){io['to'](_0x18b42c)['emit'](_0xe02b05,_0x53f11c);}function getCustomFields(_0x1b9d31,_0x19cb58){var _0x46bfce={};if(_0x1b9d31[_0x0e79('0xa')]>0x0){_[_0x0e79('0xb')](_0x1b9d31,function(_0x234543){if(_0x234543[_0x0e79('0xc')]===_0x0e79('0xd')&&_0x234543[_0x0e79('0xe')]){_0x46bfce[_0x234543[_0x0e79('0xe')]]=_0x234543[_0x0e79('0xf')][_0x0e79('0x10')]();}else if(_0x234543[_0x0e79('0xc')]===_0x0e79('0x11')&&_0x234543[_0x0e79('0x12')]&&_0x234543[_0x0e79('0xe')]&&_0x19cb58[_0x234543[_0x0e79('0x12')]]){_0x46bfce[_0x234543[_0x0e79('0xe')]]=_0x19cb58[_0x234543['variableName']][_0x0e79('0x10')]();}else if(_0x234543[_0x0e79('0xc')]===_0x0e79('0x13')&&_0x234543['Variable']&&_0x234543['Variable'][_0x0e79('0x14')]&&_0x234543[_0x0e79('0xe')]&&_0x19cb58[_0x234543['Variable'][_0x0e79('0x14')]['toLowerCase']()]){_0x46bfce[_0x234543[_0x0e79('0xe')]]=_0x19cb58[_0x234543[_0x0e79('0x15')][_0x0e79('0x14')][_0x0e79('0x16')]()][_0x0e79('0x10')]();}});}return _0x46bfce;}function createTicket(_0x55807e,_0x591ebf,_0xc0af43,_0xaecd0a,_0x129126,_0x256387,_0x21a602){logger[_0x0e79('0x17')]('Creating\x20new\x20ticket...');var _0xecd22e=_[_0x0e79('0x18')]({'parent_id':'','assigned_user_id':_0x591ebf['id'],'ticketpriorities':'Normal','ticketstatus':_0x0e79('0x19'),'ticket_title':intUtil[_0x0e79('0x1a')](_0xaecd0a[_0x0e79('0x1b')],_0x129126,'\x20'),'description':intUtil[_0x0e79('0x1a')](_0xaecd0a[_0x0e79('0x1c')],_0x129126,'\x0a'),'contact_id':_0xc0af43['id']},getCustomFields(_0x256387,_0x129126));var _0x29d66c={'method':_0x0e79('0x1d'),'uri':util[_0x0e79('0x1e')](_0x0e79('0x1f'),_0x55807e[_0x0e79('0x20')]),'form':{'operation':_0x0e79('0x21'),'username':'admin','sessionName':_0x21a602[_0x0e79('0x22')],'elementType':'HelpDesk','element':JSON[_0x0e79('0x23')](_0xecd22e)},'json':!![]};return request(_0x29d66c)[_0x0e79('0x24')](function(_0x4944b4){if(_0x4944b4[_0x0e79('0x25')]){return BPromise['resolve']({'id':_0x4944b4['result']['id']});}else{throw new Error(util[_0x0e79('0x1e')](_0x0e79('0x26'),JSON['stringify'](_0x4944b4[_0x0e79('0x27')])));}})[_0x0e79('0x28')](function(_0x345c35){var _0x2a52f2=req[_0x0e79('0x29')]['test']?0x1f4:_0x345c35[_0x0e79('0x2a')]||0x1f4;logger[_0x0e79('0x27')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0e79('0x2b'),_0x2a52f2,JSON[_0x0e79('0x23')](_0x345c35));});}function getUser(_0x310fc9,_0x11befd,_0x321a36){logger['info'](_0x0e79('0x2c'),_0x11befd);return request({'method':_0x0e79('0x2d'),'uri':util[_0x0e79('0x1e')](_0x0e79('0x1f'),_0x310fc9[_0x0e79('0x20')]),'qs':{'operation':_0x0e79('0x29'),'username':_0x0e79('0x2e'),'sessionName':_0x321a36[_0x0e79('0x22')],'query':util[_0x0e79('0x1e')](_0x0e79('0x2f'),_0x11befd)},'json':!![]})['then'](function(_0x51f928){if(_0x51f928[_0x0e79('0x25')]&&_0x51f928[_0x0e79('0x30')][_0x0e79('0xa')]){logger[_0x0e79('0x17')]('Agent\x20found!');return BPromise[_0x0e79('0x31')]({'id':_0x51f928[_0x0e79('0x30')][0x0]['id'],'email':_0x51f928[_0x0e79('0x30')][0x0][_0x0e79('0x32')],'name':_0x51f928['result'][0x0]['first_name']+'\x20'+_0x51f928[_0x0e79('0x30')][_0x0e79('0x33')]});}else{logger['info'](_0x0e79('0x34'));return BPromise[_0x0e79('0x31')]({'id':_0x321a36['userId'],'email':_0x310fc9[_0x0e79('0x35')],'name':_0x0e79('0x2e')});}})[_0x0e79('0x28')](function(_0x44710c){var _0xf65850=req[_0x0e79('0x29')]['test']?0x1f4:_0x44710c[_0x0e79('0x2a')]||0x1f4;logger['error'](_0x0e79('0x36'),_0x0e79('0x37'),_0xf65850,JSON[_0x0e79('0x23')](_0x44710c));});}function getEndUser(_0x3fa891,_0x3eac8b,_0x1ebbbe,_0x1195dd){logger[_0x0e79('0x17')](_0x0e79('0x38'),_0x1ebbbe);return request({'method':'GET','uri':util[_0x0e79('0x1e')](_0x0e79('0x1f'),_0x3fa891[_0x0e79('0x20')]),'qs':{'operation':'query','username':_0x0e79('0x2e'),'sessionName':_0x1195dd[_0x0e79('0x22')],'query':util[_0x0e79('0x1e')](_0x0e79('0x39'),_0x1ebbbe,_0x1ebbbe,_0x1ebbbe,_0x1ebbbe,_0x1ebbbe)},'json':!![]})[_0x0e79('0x24')](function(_0x1e89a7){if(_0x1e89a7[_0x0e79('0x25')]&&_0x1e89a7[_0x0e79('0x30')][_0x0e79('0xa')]){logger[_0x0e79('0x17')](_0x0e79('0x3a'));return BPromise[_0x0e79('0x31')]({'id':_0x1e89a7[_0x0e79('0x30')][0x0]['id'],'name':_0x1e89a7[_0x0e79('0x30')][0x0][_0x0e79('0x3b')]+'\x20'+_0x1e89a7[_0x0e79('0x30')][0x0][_0x0e79('0x3c')],'phone':_0x1ebbbe});}else{logger['info'](_0x0e79('0x3d'));return request({'method':'POST','uri':util[_0x0e79('0x1e')](_0x0e79('0x1f'),_0x3fa891[_0x0e79('0x20')]),'form':{'operation':'create','sessionName':_0x1195dd[_0x0e79('0x22')],'elementType':_0x0e79('0x3e'),'element':JSON[_0x0e79('0x23')]({'lastname':_0x3eac8b,'phone':_0x1ebbbe,'assigned_user_id':'\x20'})},'json':!![]})[_0x0e79('0x24')](function(_0xeb228c){logger[_0x0e79('0x17')](_0x0e79('0x3f'));return BPromise[_0x0e79('0x31')]({'id':_0xeb228c[_0x0e79('0x30')]['id'],'name':_0xeb228c['result'][_0x0e79('0x3c')],'phone':_0xeb228c[_0x0e79('0x30')][_0x0e79('0x40')]});})[_0x0e79('0x28')](function(_0x29db0d){var _0x45d3ee=req[_0x0e79('0x29')][_0x0e79('0x41')]?0x1f4:_0x29db0d[_0x0e79('0x2a')]||0x1f4;logger[_0x0e79('0x27')](_0x0e79('0x36'),_0x0e79('0x42'),_0x45d3ee,JSON[_0x0e79('0x23')](_0x29db0d));});}});}function getConnection(_0x1f7022){var _0x544358=_0x1f7022[_0x0e79('0x35')];var _0x1acba0=_0x1f7022[_0x0e79('0x43')];return request({'method':_0x0e79('0x2d'),'uri':util[_0x0e79('0x1e')](_0x0e79('0x1f'),_0x1f7022['remoteUri']),'qs':{'operation':_0x0e79('0x44'),'username':_0x544358},'json':!![]})['then'](function(_0x3e285a){if(_0x3e285a[_0x0e79('0x25')]){return request({'method':'POST','uri':util[_0x0e79('0x1e')]('%s/webservice.php',_0x1f7022['remoteUri']),'form':{'operation':'login','username':_0x0e79('0x2e'),'accessKey':md5(_0x3e285a[_0x0e79('0x30')][_0x0e79('0x45')]+_0x1acba0)},'json':!![]});}})[_0x0e79('0x24')](function(_0x589215){if(_0x589215[_0x0e79('0x25')]){return BPromise[_0x0e79('0x31')](_0x589215['result']);}else{throw new Error(util[_0x0e79('0x1e')](_0x0e79('0x46'),_0x1f7022['id']));}})[_0x0e79('0x28')](function(_0x49e0af){var _0x8ed7a5=req['query'][_0x0e79('0x41')]?0x1f4:_0x49e0af[_0x0e79('0x2a')]||0x1f4;logger[_0x0e79('0x27')](_0x0e79('0x36'),'getConnection',_0x8ed7a5,JSON[_0x0e79('0x23')](_0x49e0af));});}function request(_0x2d8862){logger[_0x0e79('0x17')](_0x0e79('0x47'),JSON[_0x0e79('0x23')](_0x2d8862));return rp(_0x2d8862);}exports['queue']=function(_0x35acb3,_0x1a51b0,_0x58b04,_0x548350,_0x1b06e2,_0x12adca){var _0x48ec7f,_0x3849b5,_0x238f74,_0x2a6630;_0x12adca[_0x0e79('0x20')]=intUtil[_0x0e79('0x48')](_0x12adca['remoteUri']);if(_0x1b06e2&&_0x1b06e2[_0x0e79('0x49')]){logger[_0x0e79('0x17')]('[QUEUE]','Recording\x20is\x20enabled!');_0x1a51b0[_0x0e79('0x4a')]=util[_0x0e79('0x1e')](_0x0e79('0x4b'),_0x12adca['serverUrl'],_0x1a51b0[_0x0e79('0x4c')],md5(_0x1a51b0[_0x0e79('0x4c')]));}else{_0x1a51b0['recordingURL']='';}return getConnection(_0x12adca)[_0x0e79('0x24')](function(_0x199314){_0x2a6630=_0x199314;return getUser(_0x12adca,_0x548350?_0x548350[_0x0e79('0x4d')]:'',_0x2a6630);})[_0x0e79('0x24')](function(_0xdf9f3a){_0x48ec7f=_0xdf9f3a;logger[_0x0e79('0x17')](_0x0e79('0x4e'),_0x48ec7f['id']);return getEndUser(_0x12adca,_0x1a51b0[_0x0e79('0x4f')],_0x1a51b0[_0x0e79('0x50')],_0x2a6630);})['then'](function(_0x11b680){_0x3849b5=_0x11b680;logger['info'](_0x0e79('0x51'),_0x3849b5['id']);return createTicket(_0x12adca,_0x48ec7f,_0x3849b5,_0x58b04,_0x1a51b0,_0x58b04['Fields'],_0x2a6630);})['then'](function(_0x515d8b){_0x238f74=_0x515d8b;logger[_0x0e79('0x17')](_0x0e79('0x52'));logger[_0x0e79('0x17')](_0x0e79('0x53'),_0x238f74['id']);var _0x21515e=util[_0x0e79('0x1e')](_0x0e79('0x54'),_0x12adca[_0x0e79('0x20')],_['split'](_0x238f74['id'],'x')[0x1]);logger[_0x0e79('0x17')]('[QUEUE]',_0x0e79('0x55'));emit(util[_0x0e79('0x1e')](_0x0e79('0x56'),_0x548350[_0x0e79('0x14')]),'trigger:browser:url',{'uri':_0x21515e});})[_0x0e79('0x28')](function(_0x14e871){logger[_0x0e79('0x27')]('[QUEUE]',JSON[_0x0e79('0x23')](_0x14e871));});};exports['outbound']=function(_0x3194f9,_0x118ba4,_0x258205,_0x4e8d13,_0x25c9cf,_0x26d5bc,_0x333801){var _0x462afe,_0x179b9d,_0x3f7adc,_0x222c54;_0x26d5bc['remoteUri']=intUtil[_0x0e79('0x48')](_0x26d5bc[_0x0e79('0x20')]);_0x26d5bc[_0x0e79('0x57')]=intUtil[_0x0e79('0x48')](_0x26d5bc[_0x0e79('0x57')]);if(_0x333801&&_0x333801['recordingFormat']&&_0x333801[_0x0e79('0x58')]!=='none'){logger['info'](_0x0e79('0x59'),_0x0e79('0x5a'));_0x118ba4[_0x0e79('0x4a')]=util[_0x0e79('0x1e')](_0x0e79('0x4b'),_0x26d5bc[_0x0e79('0x57')],_0x118ba4['uniqueid'],md5(_0x118ba4[_0x0e79('0x4c')]));}return getConnection(_0x26d5bc)['then'](function(_0x513a0e){_0x222c54=_0x513a0e;return getUser(_0x26d5bc,_0x4e8d13?_0x4e8d13['email']:'',_0x222c54);})[_0x0e79('0x24')](function(_0x7803cc){_0x462afe=_0x7803cc;logger[_0x0e79('0x17')](_0x0e79('0x4e'),_0x462afe['id']);return getEndUser(_0x26d5bc,_0x118ba4['destcalleridname'],_0x118ba4[_0x0e79('0x5b')],_0x222c54);})['then'](function(_0x3a6d49){_0x179b9d=_0x3a6d49;logger['info']('The\x20Enduser\x20ID\x20is:',_0x179b9d['id']);return createTicket(_0x26d5bc,_0x462afe,_0x179b9d,_0x258205,_0x118ba4,_0x258205[_0x0e79('0x5c')],_0x222c54);})[_0x0e79('0x24')](function(_0x4a4ed9){_0x3f7adc=_0x4a4ed9;logger[_0x0e79('0x17')](_0x0e79('0x52'));logger[_0x0e79('0x17')](_0x0e79('0x53'),_0x3f7adc['id']);var _0x4a09ad=util['format'](_0x0e79('0x54'),_0x26d5bc['remoteUri'],_['split'](_0x3f7adc['id'],'x')[0x1]);logger[_0x0e79('0x17')]('[OUTBOUND]',_0x0e79('0x55'));emit(util['format'](_0x0e79('0x56'),_0x4e8d13['name']),_0x0e79('0x5d'),{'uri':_0x4a09ad});})[_0x0e79('0x28')](function(_0x4ba2fb){logger['error'](_0x0e79('0x59'),JSON['stringify'](_0x4ba2fb));});};exports[_0x0e79('0x5e')]=function(_0x4d4287,_0x2a90b6,_0x454b58,_0x24e15f,_0x963cb5,_0x3da9bd){var _0x2f5584,_0x5884fc,_0x82e49b,_0x5bddb4;_0x3da9bd[_0x0e79('0x20')]=intUtil['stripTrailingSlash'](_0x3da9bd[_0x0e79('0x20')]);_0x3da9bd[_0x0e79('0x57')]=intUtil[_0x0e79('0x48')](_0x3da9bd[_0x0e79('0x57')]);if(_0x963cb5&&_0x963cb5[_0x0e79('0x49')]){logger[_0x0e79('0x17')](_0x0e79('0x5f'),_0x0e79('0x5a'));_0x2a90b6[_0x0e79('0x4a')]=util[_0x0e79('0x1e')](_0x0e79('0x4b'),_0x3da9bd[_0x0e79('0x57')],_0x2a90b6[_0x0e79('0x4c')],md5(_0x2a90b6['uniqueid']));}else{_0x2a90b6[_0x0e79('0x4a')]='';}return getConnection(_0x3da9bd)[_0x0e79('0x24')](function(_0x369e56){_0x5bddb4=_0x369e56;return getUser(_0x3da9bd,_0x24e15f?_0x24e15f['email']:'',_0x5bddb4);})[_0x0e79('0x24')](function(_0x4297d3){_0x2f5584=_0x4297d3;logger[_0x0e79('0x17')]('The\x20User\x20ID\x20is:',_0x2f5584['id']);return getEndUser(_0x3da9bd,_0x2a90b6['calleridname'],_0x2a90b6[_0x0e79('0x50')],_0x5bddb4);})['then'](function(_0x2e6b12){_0x5884fc=_0x2e6b12;logger[_0x0e79('0x17')](_0x0e79('0x51'),_0x5884fc['id']);return createTicket(_0x3da9bd,_0x2f5584,_0x5884fc,_0x454b58,_0x2a90b6,_0x454b58['Fields'],_0x5bddb4);})['then'](function(_0x497fe4){_0x82e49b=_0x497fe4;logger['info'](_0x0e79('0x52'));logger[_0x0e79('0x17')](_0x0e79('0x53'),_0x82e49b['id']);})[_0x0e79('0x28')](function(_0x1aca3e){logger['error'](_0x0e79('0x5f'),JSON[_0x0e79('0x23')](_0x1aca3e));});};