a61b5eaf0004d4ff19d6709e1ccb86fecc5add8c
[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 _0x2ec6=['callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','users','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','/api/contacts/filters','Getting\x20contacts\x20filter','then','filters','forEach','All\x20Contacts','/api/contacts/view/','Searching\x20contact\x20with\x20phone','contactNumber','contacts','find','mobile_number','endUserId','Contact\x20created:','POST','/api/contacts','format','contact','Creating\x20new\x20task','/api/tasks','Subjects','getString','Descriptions','add','YYYY-MM-DDTHH:mm:ss','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','toLowerCase','outbound','calleridnum'];(function(_0x57d500,_0xf52c67){var _0x142c14=function(_0x4b2055){while(--_0x4b2055){_0x57d500['push'](_0x57d500['shift']());}};_0x142c14(++_0xf52c67);}(_0x2ec6,0x6a));var _0x62ec=function(_0x118483,_0x56d334){_0x118483=_0x118483-0x0;var _0x3d0bb7=_0x2ec6[_0x118483];return _0x3d0bb7;};'use strict';var _=require(_0x62ec('0x0'));var rp=require(_0x62ec('0x1'));var md5=require(_0x62ec('0x2'));var util=require(_0x62ec('0x3'));var moment=require(_0x62ec('0x4'));var Promise=require(_0x62ec('0x5'));var Redis=require('ioredis');var intUtil=require(_0x62ec('0x6'));var config=require(_0x62ec('0x7'));var logger=require(_0x62ec('0x8'))('freshsales');config[_0x62ec('0x9')]=_[_0x62ec('0xa')](config[_0x62ec('0x9')],{'host':_0x62ec('0xb'),'port':0x18eb});var io=require(_0x62ec('0xc'))(new Redis(config[_0x62ec('0x9')]));function getAdminId(_0x5b2644,_0x13ada6,_0x7b26a1,_0x1db226){return new Promise(function(_0x1f2198,_0x15727c){var _0x3486af=![];var _0x4d16be={'method':_0x62ec('0xd'),'uri':_0x1db226+_0x62ec('0xe'),'json':!![]};_0x4d16be[_0x62ec('0xf')]=_0x7b26a1;logger[_0x62ec('0x10')]('Getting\x20admin\x20information');return rp(_0x4d16be)['then'](function(_0x60d4d4){if(_0x60d4d4){var _0x842e8e=_0x60d4d4['users'];var _0x34b869=null;for(_0x34b869=0x0;_0x34b869<_0x842e8e[_0x62ec('0x11')];_0x34b869++){if(_0x842e8e[_0x34b869][_0x62ec('0x12')]===_0x5b2644[_0x62ec('0x13')]){_0x5b2644[_0x62ec('0x14')]=_0x842e8e[_0x34b869]['id'];_0x3486af=!![];}}if(_0x3486af){logger[_0x62ec('0x10')](_0x62ec('0x15'),_0x5b2644['adminId']);_0x1f2198(_0x5b2644);}else{_0x15727c({'statusCode':0x194,'message':_0x62ec('0x16')});}}else{_0x15727c({'statusCode':0x194,'message':_0x62ec('0x16')});}})[_0x62ec('0x17')](function(_0x74c237){logger[_0x62ec('0x18')]('['+[_0x13ada6[_0x62ec('0x19')]()]+']',_0x74c237[_0x62ec('0x1a')]);_0x15727c(_0x74c237);});});}function getUser(_0xe19a62,_0x40772f,_0x264ce1){return function(_0x109d3d){return new Promise(function(_0x38e353,_0x3d872f){var _0x2102a1={'method':_0x62ec('0xd'),'uri':_0x264ce1+'/api/selector/owners','json':!![]};_0x2102a1[_0x62ec('0xf')]=_0x40772f;logger[_0x62ec('0x10')](_0x62ec('0x1b'));return rp(_0x2102a1)['then'](function(_0x52386b){if(_0x52386b){var _0x4c6906=_0x52386b[_0x62ec('0x1c')];var _0x704c58=![];var _0x235b4b=null;if(_0x109d3d[_0x62ec('0x1d')]!==null){logger[_0x62ec('0x10')]('Getting\x20user\x20with\x20email',_0x109d3d['agentEmail']);_0x109d3d[_0x62ec('0x1e')]=_0x109d3d[_0x62ec('0x1d')];for(_0x235b4b=0x0;_0x235b4b<_0x4c6906[_0x62ec('0x11')];_0x235b4b++){if(_0x4c6906[_0x235b4b]['email']===_0x109d3d['agentEmail']){_0x704c58=!![];_0x109d3d[_0x62ec('0x1f')]=_0x4c6906[_0x235b4b]['id'];logger[_0x62ec('0x10')](_0x62ec('0x20'),_0x109d3d['userId']);}}}if(!_0x704c58){logger[_0x62ec('0x10')](_0x62ec('0x21'));_0x109d3d[_0x62ec('0x1e')]=_0x109d3d[_0x62ec('0x13')];_0x109d3d[_0x62ec('0x1f')]=_0x109d3d[_0x62ec('0x14')];_0x704c58=!![];}if(_0x704c58){_0x38e353(_0x109d3d);}else{_0x3d872f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x3d872f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x62ec('0x17')](function(_0x15e860){logger['error']('['+[_0xe19a62[_0x62ec('0x19')]()]+']',_0x15e860[_0x62ec('0x1a')]);_0x3d872f(_0x15e860);});});};}function getEndUser(_0x4abc63,_0x3e151e,_0x56ee44){return function(_0x5f39f4){return new Promise(function(_0x2de35d,_0x1615e6){var _0x4c4f38=0x0;var _0x322612={'method':_0x62ec('0xd'),'uri':_0x56ee44+_0x62ec('0x22'),'json':!![]};_0x322612[_0x62ec('0xf')]=_0x3e151e;logger[_0x62ec('0x10')](_0x62ec('0x23'));return rp(_0x322612)[_0x62ec('0x24')](function(_0x4190c2){_0x4190c2[_0x62ec('0x25')][_0x62ec('0x26')](function(_0x4a25d4){if(_0x4a25d4['name']===_0x62ec('0x27')){_0x4c4f38=_0x4a25d4['id'];}});})[_0x62ec('0x24')](function(){logger[_0x62ec('0x10')]('Getting\x20contact\x20list');var _0xee5e4={'method':_0x62ec('0xd'),'uri':_0x56ee44+_0x62ec('0x28')+_0x4c4f38,'json':!![]};_0xee5e4[_0x62ec('0xf')]=_0x3e151e;return rp(_0xee5e4);})['then'](function(_0x110824){logger[_0x62ec('0x10')](_0x62ec('0x29'),_0x5f39f4[_0x62ec('0x2a')]);if(_0x110824[_0x62ec('0x2b')][_0x62ec('0x11')]>0x0){var _0xf1b8ae=_[_0x62ec('0x2c')](_0x110824[_0x62ec('0x2b')],function(_0x48b90d){if(_0x48b90d['work_number']===_0x5f39f4[_0x62ec('0x2a')]||_0x48b90d[_0x62ec('0x2d')]===_0x5f39f4[_0x62ec('0x2a')]){return _0x48b90d;}});if(_0xf1b8ae){_0x5f39f4[_0x62ec('0x2e')]=_0xf1b8ae['id'];logger['info']('Contact\x20found:',_0x5f39f4[_0x62ec('0x2e')]);_0x2de35d(_0x5f39f4);}else{return createEndUser(_0x5f39f4,_0x4abc63,_0x3e151e,_0x56ee44)[_0x62ec('0x24')](function(_0x1f5ff5){logger['info'](_0x62ec('0x2f'),_0x5f39f4['endUserId']);_0x2de35d(_0x1f5ff5);});}}else{return createEndUser(_0x5f39f4,_0x4abc63,_0x3e151e,_0x56ee44)[_0x62ec('0x24')](function(_0x4b93a1){logger[_0x62ec('0x10')](_0x62ec('0x2f'),_0x5f39f4['endUserId']);_0x2de35d(_0x4b93a1);});}})[_0x62ec('0x17')](function(_0x6cc8ce){throw new Error(_0x6cc8ce[_0x62ec('0x1a')]);});});};}function createEndUser(_0x2a92aa,_0x54b3ee,_0x3509ba,_0x443297){return new Promise(function(_0x15f59b,_0x27c2e1){var _0x421810=moment();var _0xeb72a={'method':_0x62ec('0x30'),'uri':_0x443297+_0x62ec('0x31'),'body':{'contact':{'last_name':_0x2a92aa['contactNumber'],'work_number':_0x2a92aa['contactNumber'],'mobile_number':_0x2a92aa[_0x62ec('0x2a')],'owner_id':_0x2a92aa[_0x62ec('0x1f')],'created_at':_0x421810[_0x62ec('0x32')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0xeb72a[_0x62ec('0xf')]=_0x3509ba;logger[_0x62ec('0x10')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0xeb72a)[_0x62ec('0x24')](function(_0xced39){_0x2a92aa[_0x62ec('0x2e')]=_0xced39[_0x62ec('0x33')]['id'];_0x15f59b(_0x2a92aa);})[_0x62ec('0x17')](function(_0x1de829){logger[_0x62ec('0x18')]('['+[_0x54b3ee[_0x62ec('0x19')]()]+']',_0x1de829['message']);_0x27c2e1(_0x1de829[_0x62ec('0x1a')]);});});}function getTicket(_0x4bb241,_0x2ed40e,_0x3fd256,_0x4d321f,_0x47b12b){return function(_0x39406e){logger[_0x62ec('0x10')](_0x62ec('0x34'));return new Promise(function(_0x5f2e11,_0x38e040){var _0x2fe320=moment();var _0x4fc2a1={'method':_0x62ec('0x30'),'uri':_0x3fd256+_0x62ec('0x35'),'body':{'title':intUtil['getString'](_0x4d321f[_0x62ec('0x36')],_0x47b12b,'\x20'),'description':intUtil[_0x62ec('0x37')](_0x4d321f[_0x62ec('0x38')],_0x47b12b,'\x0a'),'owner_id':_0x39406e[_0x62ec('0x1f')],'creater_id':_0x39406e[_0x62ec('0x14')],'targetable_id':_0x39406e[_0x62ec('0x2e')],'targetable_type':'Contact','created_at':_0x2fe320[_0x62ec('0x32')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x2fe320[_0x62ec('0x39')](0x1e,'m')['format'](_0x62ec('0x3a'))},'json':!![]};_0x4fc2a1[_0x62ec('0xf')]=_0x2ed40e;return rp(_0x4fc2a1)[_0x62ec('0x24')](function(_0x5ab102){_0x39406e[_0x62ec('0x3b')]=_0x5ab102[_0x62ec('0x3c')]['id'];logger[_0x62ec('0x10')](_0x62ec('0x3d'),_0x39406e[_0x62ec('0x3b')]);_0x5f2e11(_0x39406e);})[_0x62ec('0x17')](function(_0x4bd636){logger[_0x62ec('0x18')]('['+[_0x4bb241[_0x62ec('0x19')]()]+']',_0x4bd636['message']);_0x38e040(_0x4bd636[_0x62ec('0x1a')]);});});};}function emit(_0x98dc7,_0x14763c,_0x247160){var _0x1749ef={'uri':_0x98dc7+_0x62ec('0x3e')+_0x247160};io['to'](util[_0x62ec('0x32')](_0x62ec('0x3f'),_0x14763c))[_0x62ec('0x40')](_0x62ec('0x41'),_0x1749ef);}exports['cs']=function(_0x237cdb,_0x4083ed,_0x38fc7b,_0xbab922,_0x198322,_0x1685dd,_0x5bf59b,_0x586c3e){var _0x2a9ad6={};var _0x57b331={'Authorization':_0x62ec('0x42')+_0x1685dd[_0x62ec('0x43')]};_0x1685dd[_0x62ec('0x44')]=intUtil['stripTrailingSlash'](_0x1685dd['remoteUri']);_0x1685dd[_0x62ec('0x45')]=intUtil[_0x62ec('0x46')](_0x1685dd[_0x62ec('0x45')]);var _0x2e65a4=_0x1685dd[_0x62ec('0x44')];_0x2a9ad6['adminEmail']=_0x1685dd['username'];_0x2a9ad6[_0x62ec('0x2a')]=_0x586c3e[_0x62ec('0x47')]()===_0x62ec('0x48')?_0x4083ed['destcalleridnum']:_0x4083ed[_0x62ec('0x49')];_0x2a9ad6[_0x62ec('0x4a')]=_0x586c3e==='queue'||_0x586c3e===_0x62ec('0x4b')?_0x62ec('0x4c'):_0x62ec('0x48');if(_0xbab922){_0x2a9ad6[_0x62ec('0x1d')]=_0xbab922[_0x62ec('0x12')];}var _0x1ffc1c=util[_0x62ec('0x32')](_0x62ec('0x4d'),_0x1685dd[_0x62ec('0x45')],_0x4083ed['uniqueid'],md5(_0x4083ed[_0x62ec('0x4e')]));if(_0x198322&&_0x198322[_0x62ec('0x4f')]){logger[_0x62ec('0x10')](_0x62ec('0x50'),_0x62ec('0x51'));_0x4083ed[_0x62ec('0x52')]=_0x1ffc1c;}else if(_0x5bf59b&&_0x5bf59b[_0x62ec('0x53')]&&_0x5bf59b['recordingFormat']!==_0x62ec('0x54')){logger[_0x62ec('0x10')]('[OUTBOUND]',_0x62ec('0x51'));_0x4083ed[_0x62ec('0x52')]=_0x1ffc1c;}else{_0x4083ed[_0x62ec('0x52')]='';}return getAdminId(_0x2a9ad6,_0x586c3e,_0x57b331,_0x2e65a4)[_0x62ec('0x24')](getUser(_0x586c3e,_0x57b331,_0x2e65a4))[_0x62ec('0x24')](getEndUser(_0x586c3e,_0x57b331,_0x2e65a4))[_0x62ec('0x24')](getTicket(_0x586c3e,_0x57b331,_0x2e65a4,_0x38fc7b,_0x4083ed))['then'](function(_0x705e8c){logger[_0x62ec('0x10')](util[_0x62ec('0x32')](_0x62ec('0x55'),_0x705e8c['ticketId']));if(_0x586c3e!==_0x62ec('0x4b')){logger[_0x62ec('0x10')]('['+[_0x586c3e[_0x62ec('0x19')]()]+']',_0x62ec('0x56'));emit(_0x2e65a4,_0xbab922[_0x62ec('0x57')],_0x705e8c[_0x62ec('0x2e')]);}})[_0x62ec('0x17')](function(_0x267a23){logger['error']('['+[_0x586c3e['toUpperCase']()]+_0x62ec('0x58'),util[_0x62ec('0x59')](_0x267a23,{'showHidden':!![],'depth':null}));});};