Built motion from commit ddca4d0d.|2.5.47
[motion2.git] / server / services / ami / trigger / integration / freshsales.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 _0xfa77=['unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','lodash','md5','util','moment','ioredis','./util','../../../../config/logger','freshsales','redis','localhost','GET','/api/selector/owners','info','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','catch','/api/lookup?q=','&entities=contact','find','contacts','format','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','Descriptions','Contact','add','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','stripTrailingSlash','serverUrl','remoteUri','username','toLowerCase','outbound','callDirection'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xfa77,0xa8));var _0x7fa7=function(_0x4dc974,_0x51e37c){_0x4dc974=_0x4dc974-0x0;var _0x504950=_0xfa77[_0x4dc974];return _0x504950;};'use strict';var _=require(_0x7fa7('0x0'));var rp=require('request-promise');var md5=require(_0x7fa7('0x1'));var util=require(_0x7fa7('0x2'));var moment=require(_0x7fa7('0x3'));var Promise=require('bluebird');var Redis=require(_0x7fa7('0x4'));var intUtil=require(_0x7fa7('0x5'));var config=require('../../../../config/environment');var logger=require(_0x7fa7('0x6'))(_0x7fa7('0x7'));config[_0x7fa7('0x8')]=_['defaults'](config[_0x7fa7('0x8')],{'host':_0x7fa7('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7fa7('0x8')]));function getAdminId(_0x58cbce,_0x11a151,_0x119804,_0x3081bb){return new Promise(function(_0x542ed7,_0x1a304e){var _0x15e89e=![];var _0x8016c5={'method':_0x7fa7('0xa'),'uri':_0x3081bb+_0x7fa7('0xb'),'json':!![]};_0x8016c5['headers']=_0x119804;logger[_0x7fa7('0xc')]('Getting\x20admin\x20information');return rp(_0x8016c5)[_0x7fa7('0xd')](function(_0x3e6306){if(_0x3e6306){var _0xc8dad8=_0x3e6306[_0x7fa7('0xe')];var _0x306ac0=null;for(_0x306ac0=0x0;_0x306ac0<_0xc8dad8[_0x7fa7('0xf')];_0x306ac0++){if(_0xc8dad8[_0x306ac0][_0x7fa7('0x10')]===_0x58cbce[_0x7fa7('0x11')]){_0x58cbce[_0x7fa7('0x12')]=_0xc8dad8[_0x306ac0]['id'];_0x15e89e=!![];}}if(_0x15e89e){logger['info'](_0x7fa7('0x13'),_0x58cbce[_0x7fa7('0x12')]);_0x542ed7(_0x58cbce);}else{_0x1a304e({'statusCode':0x194,'message':_0x7fa7('0x14')});}}else{_0x1a304e({'statusCode':0x194,'message':_0x7fa7('0x14')});}})['catch'](function(_0x42cbd8){logger[_0x7fa7('0x15')]('['+[_0x11a151[_0x7fa7('0x16')]()]+']',_0x42cbd8[_0x7fa7('0x17')]);_0x1a304e(_0x42cbd8);});});}function getUser(_0x2c421b,_0x5d1f24,_0x2294fd){return function(_0x55dab8){return new Promise(function(_0x2a3533,_0x56a5fb){var _0x59dec2={'method':_0x7fa7('0xa'),'uri':_0x2294fd+_0x7fa7('0xb'),'json':!![]};_0x59dec2[_0x7fa7('0x18')]=_0x5d1f24;logger['info'](_0x7fa7('0x19'));return rp(_0x59dec2)[_0x7fa7('0xd')](function(_0x38c4f3){if(_0x38c4f3){var _0x356fbc=_0x38c4f3[_0x7fa7('0xe')];var _0xbef24f=![];var _0x4e33e1=null;if(_0x55dab8[_0x7fa7('0x1a')]!==null){logger[_0x7fa7('0xc')](_0x7fa7('0x1b'),_0x55dab8[_0x7fa7('0x1a')]);_0x55dab8[_0x7fa7('0x1c')]=_0x55dab8[_0x7fa7('0x1a')];for(_0x4e33e1=0x0;_0x4e33e1<_0x356fbc['length'];_0x4e33e1++){if(_0x356fbc[_0x4e33e1][_0x7fa7('0x10')]===_0x55dab8[_0x7fa7('0x1a')]){_0xbef24f=!![];_0x55dab8[_0x7fa7('0x1d')]=_0x356fbc[_0x4e33e1]['id'];logger[_0x7fa7('0xc')]('User\x20found:',_0x55dab8[_0x7fa7('0x1d')]);}}}if(!_0xbef24f){logger[_0x7fa7('0xc')]('Admin\x20selected');_0x55dab8[_0x7fa7('0x1c')]=_0x55dab8[_0x7fa7('0x11')];_0x55dab8['userId']=_0x55dab8[_0x7fa7('0x12')];_0xbef24f=!![];}if(_0xbef24f){_0x2a3533(_0x55dab8);}else{_0x56a5fb({'statusCode':0x194,'message':_0x7fa7('0x14')});}}else{_0x56a5fb({'statusCode':0x194,'message':_0x7fa7('0x14')});}})[_0x7fa7('0x1e')](function(_0x59e8c2){logger[_0x7fa7('0x15')]('['+[_0x2c421b[_0x7fa7('0x16')]()]+']',_0x59e8c2['message']);_0x56a5fb(_0x59e8c2);});});};}function searchContact(_0x501d02,_0x162679,_0xaf424a,_0x281247){return new Promise(function(_0x94f2db,_0x28de42){var _0x2d11d1={'method':'GET','headers':_0x162679,'uri':_0x501d02+_0x7fa7('0x1f')+_0x281247+'&f='+_0xaf424a+_0x7fa7('0x20'),'json':!![]};rp(_0x2d11d1)[_0x7fa7('0xd')](function(_0x126330){var _0x588ce0=_[_0x7fa7('0x21')](_0x126330['contacts'][_0x7fa7('0x22')],[_0xaf424a,_0x281247]);_0x94f2db(_0x588ce0);})[_0x7fa7('0x1e')](function(_0x102a87){_0x28de42(_0x102a87);});});}function getEndUser(_0x44752c,_0x49e6ed,_0x51a8a1){return function(_0x457519){return new Promise(function(_0x5d8d69,_0x24f514){logger[_0x7fa7('0xc')](util[_0x7fa7('0x23')]('Searching\x20contact\x20with\x20phone\x20%s',_0x457519['contactNumber']));searchContact(_0x51a8a1,_0x49e6ed,_0x7fa7('0x24'),_0x457519[_0x7fa7('0x25')])[_0x7fa7('0xd')](function(_0x2f3121){if(_0x2f3121){_0x457519[_0x7fa7('0x26')]=_0x2f3121['id'];logger['info'](_0x7fa7('0x27'),_0x457519[_0x7fa7('0x26')]);return _0x5d8d69(_0x457519);}searchContact(_0x51a8a1,_0x49e6ed,_0x7fa7('0x28'),_0x457519[_0x7fa7('0x25')])[_0x7fa7('0xd')](function(_0x5e7668){if(_0x5e7668){_0x457519[_0x7fa7('0x26')]=_0x5e7668['id'];logger[_0x7fa7('0xc')](_0x7fa7('0x29'),_0x457519[_0x7fa7('0x26')]);return _0x5d8d69(_0x457519);}createEndUser(_0x457519,_0x44752c,_0x49e6ed,_0x51a8a1)[_0x7fa7('0xd')](function(_0x18b57d){logger[_0x7fa7('0xc')](_0x7fa7('0x2a'),_0x18b57d['endUserId']);return _0x5d8d69(_0x18b57d);});});})[_0x7fa7('0x1e')](function(_0x4488e8){_0x24f514(_0x4488e8);});});};}function createEndUser(_0x47da50,_0x210992,_0x414116,_0x3631dd){return new Promise(function(_0x26f12a,_0x37f22c){var _0x1f9eb4=moment();var _0x171032={'method':'POST','uri':_0x3631dd+_0x7fa7('0x2b'),'body':{'contact':{'last_name':_0x47da50[_0x7fa7('0x25')],'work_number':_0x47da50['contactNumber'],'mobile_number':_0x47da50[_0x7fa7('0x25')],'owner_id':_0x47da50[_0x7fa7('0x1d')],'created_at':_0x1f9eb4['format'](_0x7fa7('0x2c'))}},'json':!![]};_0x171032[_0x7fa7('0x18')]=_0x414116;logger[_0x7fa7('0xc')](_0x7fa7('0x2d'));return rp(_0x171032)[_0x7fa7('0xd')](function(_0x55dd38){_0x47da50[_0x7fa7('0x26')]=_0x55dd38[_0x7fa7('0x2e')]['id'];_0x26f12a(_0x47da50);})['catch'](function(_0x1652bd){logger['error']('['+[_0x210992[_0x7fa7('0x16')]()]+']',_0x1652bd[_0x7fa7('0x17')]);_0x37f22c(_0x1652bd[_0x7fa7('0x17')]);});});}function getTicket(_0x4d4977,_0x4a85c4,_0x3275cd,_0xdfedc5,_0x2d4489){return function(_0x2b9fd5){logger['info'](_0x7fa7('0x2f'));return new Promise(function(_0x115fb5,_0x109098){var _0x3a2029=moment();var _0x23dc1e={'method':'POST','uri':_0x3275cd+_0x7fa7('0x30'),'body':{'title':intUtil['getString'](_0xdfedc5['Subjects'],_0x2d4489,'\x20'),'description':intUtil['getString'](_0xdfedc5[_0x7fa7('0x31')],_0x2d4489,'\x0a'),'owner_id':_0x2b9fd5[_0x7fa7('0x1d')],'creater_id':_0x2b9fd5[_0x7fa7('0x12')],'targetable_id':_0x2b9fd5[_0x7fa7('0x26')],'targetable_type':_0x7fa7('0x32'),'created_at':_0x3a2029[_0x7fa7('0x23')](_0x7fa7('0x2c')),'due_date':_0x3a2029[_0x7fa7('0x33')](0x1e,'m')[_0x7fa7('0x23')](_0x7fa7('0x2c'))},'json':!![]};_0x23dc1e[_0x7fa7('0x18')]=_0x4a85c4;return rp(_0x23dc1e)['then'](function(_0x525b87){_0x2b9fd5[_0x7fa7('0x34')]=_0x525b87['task']['id'];logger[_0x7fa7('0xc')](_0x7fa7('0x35'),_0x2b9fd5[_0x7fa7('0x34')]);_0x115fb5(_0x2b9fd5);})[_0x7fa7('0x1e')](function(_0xf8675a){logger[_0x7fa7('0x15')]('['+[_0x4d4977[_0x7fa7('0x16')]()]+']',_0xf8675a['message']);_0x109098(_0xf8675a[_0x7fa7('0x17')]);});});};}function emit(_0x438a62,_0x5bc878,_0x3e06df){var _0x1ffeed={'uri':_0x438a62+_0x7fa7('0x36')+_0x3e06df};io['to'](util[_0x7fa7('0x23')](_0x7fa7('0x37'),_0x5bc878))[_0x7fa7('0x38')](_0x7fa7('0x39'),_0x1ffeed);}exports['cs']=function(_0x3a1684,_0x48cbbb,_0x1f3d26,_0x503d50,_0x38b639,_0x574120,_0x4ddedf,_0x141a38){var _0x23ec69={};var _0x58d4f9={'Authorization':_0x7fa7('0x3a')+_0x574120['apiKey']};_0x574120['remoteUri']=intUtil[_0x7fa7('0x3b')](_0x574120['remoteUri']);_0x574120[_0x7fa7('0x3c')]=intUtil['stripTrailingSlash'](_0x574120[_0x7fa7('0x3c')]);var _0x246519=_0x574120[_0x7fa7('0x3d')];_0x23ec69['adminEmail']=_0x574120[_0x7fa7('0x3e')];_0x23ec69[_0x7fa7('0x25')]=_0x141a38[_0x7fa7('0x3f')]()===_0x7fa7('0x40')?_0x48cbbb['destcalleridnum']:_0x48cbbb['calleridnum'];_0x23ec69[_0x7fa7('0x41')]=_0x141a38==='queue'||_0x141a38===_0x7fa7('0x42')?_0x7fa7('0x43'):_0x7fa7('0x40');if(_0x503d50){_0x23ec69['agentEmail']=_0x503d50[_0x7fa7('0x10')];}var _0x2bff53=util[_0x7fa7('0x23')](_0x7fa7('0x44'),_0x574120[_0x7fa7('0x3c')],_0x48cbbb[_0x7fa7('0x45')],md5(_0x48cbbb[_0x7fa7('0x45')]));if(_0x38b639&&_0x38b639[_0x7fa7('0x46')]){logger['info'](_0x7fa7('0x47'),_0x7fa7('0x48'));_0x48cbbb[_0x7fa7('0x49')]=_0x2bff53;}else if(_0x4ddedf&&_0x4ddedf[_0x7fa7('0x4a')]&&_0x4ddedf[_0x7fa7('0x4a')]!==_0x7fa7('0x4b')){logger[_0x7fa7('0xc')](_0x7fa7('0x4c'),_0x7fa7('0x48'));_0x48cbbb[_0x7fa7('0x49')]=_0x2bff53;}else{_0x48cbbb[_0x7fa7('0x49')]='';}return getAdminId(_0x23ec69,_0x141a38,_0x58d4f9,_0x246519)['then'](getUser(_0x141a38,_0x58d4f9,_0x246519))[_0x7fa7('0xd')](getEndUser(_0x141a38,_0x58d4f9,_0x246519))[_0x7fa7('0xd')](getTicket(_0x141a38,_0x58d4f9,_0x246519,_0x1f3d26,_0x48cbbb))[_0x7fa7('0xd')](function(_0x1dfe31){logger['info'](util['format'](_0x7fa7('0x4d'),_0x1dfe31[_0x7fa7('0x34')]));if(_0x141a38!==_0x7fa7('0x42')){logger['info']('['+[_0x141a38[_0x7fa7('0x16')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x246519,_0x503d50['name'],_0x1dfe31['endUserId']);}})[_0x7fa7('0x1e')](function(_0x44fd9d){logger[_0x7fa7('0x15')]('['+[_0x141a38[_0x7fa7('0x16')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x44fd9d,{'showHidden':!![],'depth':null}));});};