Built motion from commit (unavailable).|2.5.4
[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 _0x6a9a=['/contacts/','user:%s','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','util','moment','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','Getting\x20user\x20list','agentEmail','userId','User\x20found:','Admin\x20selected','error','/api/contacts/filters','filters','forEach','All\x20Contacts','/api/contacts/view/','contacts','find','work_number','mobile_number','endUserId','Contact\x20found:','Contact\x20created:','POST','/api/contacts','contactNumber','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','/api/tasks','getString','Subjects','Descriptions','Contact','format','add','ticketId','task','Task\x20created:'];(function(_0x43cb07,_0x4efb96){var _0x54d9f8=function(_0x23fcd4){while(--_0x23fcd4){_0x43cb07['push'](_0x43cb07['shift']());}};_0x54d9f8(++_0x4efb96);}(_0x6a9a,0x1bd));var _0xa6a9=function(_0xa4c85,_0x2b52a7){_0xa4c85=_0xa4c85-0x0;var _0x172c1f=_0x6a9a[_0xa4c85];return _0x172c1f;};'use strict';var _=require(_0xa6a9('0x0'));var rp=require(_0xa6a9('0x1'));var md5=require('md5');var util=require(_0xa6a9('0x2'));var moment=require(_0xa6a9('0x3'));var Promise=require('bluebird');var Redis=require(_0xa6a9('0x4'));var intUtil=require('./util');var config=require(_0xa6a9('0x5'));var logger=require(_0xa6a9('0x6'))('freshsales');config[_0xa6a9('0x7')]=_[_0xa6a9('0x8')](config[_0xa6a9('0x7')],{'host':_0xa6a9('0x9'),'port':0x18eb});var io=require(_0xa6a9('0xa'))(new Redis(config[_0xa6a9('0x7')]));function getAdminId(_0x36823e,_0x21ecf2,_0x3c44e3,_0x173f79){return new Promise(function(_0x51a48b,_0x4eb380){var _0x2c140c=![];var _0xf898cb={'method':_0xa6a9('0xb'),'uri':_0x173f79+_0xa6a9('0xc'),'json':!![]};_0xf898cb[_0xa6a9('0xd')]=_0x3c44e3;logger[_0xa6a9('0xe')](_0xa6a9('0xf'));return rp(_0xf898cb)[_0xa6a9('0x10')](function(_0xd4e7e9){if(_0xd4e7e9){var _0x1c1d53=_0xd4e7e9[_0xa6a9('0x11')];var _0x4646d6=null;for(_0x4646d6=0x0;_0x4646d6<_0x1c1d53[_0xa6a9('0x12')];_0x4646d6++){if(_0x1c1d53[_0x4646d6][_0xa6a9('0x13')]===_0x36823e[_0xa6a9('0x14')]){_0x36823e[_0xa6a9('0x15')]=_0x1c1d53[_0x4646d6]['id'];_0x2c140c=!![];}}if(_0x2c140c){logger[_0xa6a9('0xe')](_0xa6a9('0x16'),_0x36823e[_0xa6a9('0x15')]);_0x51a48b(_0x36823e);}else{_0x4eb380({'statusCode':0x194,'message':_0xa6a9('0x17')});}}else{_0x4eb380({'statusCode':0x194,'message':_0xa6a9('0x17')});}})[_0xa6a9('0x18')](function(_0x4e26ea){logger['error']('['+[_0x21ecf2[_0xa6a9('0x19')]()]+']',_0x4e26ea[_0xa6a9('0x1a')]);_0x4eb380(_0x4e26ea);});});}function getUser(_0x2e676b,_0x82b9d,_0x523872){return function(_0x45037a){return new Promise(function(_0x5c46a5,_0x5415c7){var _0x36964d={'method':_0xa6a9('0xb'),'uri':_0x523872+_0xa6a9('0xc'),'json':!![]};_0x36964d[_0xa6a9('0xd')]=_0x82b9d;logger[_0xa6a9('0xe')](_0xa6a9('0x1b'));return rp(_0x36964d)['then'](function(_0x2a1f5f){if(_0x2a1f5f){var _0x21aa36=_0x2a1f5f[_0xa6a9('0x11')];var _0x4a4cc7=![];var _0x591347=null;if(_0x45037a[_0xa6a9('0x1c')]!==null){logger[_0xa6a9('0xe')]('Getting\x20user\x20with\x20email',_0x45037a[_0xa6a9('0x1c')]);_0x45037a['userEmail']=_0x45037a['agentEmail'];for(_0x591347=0x0;_0x591347<_0x21aa36[_0xa6a9('0x12')];_0x591347++){if(_0x21aa36[_0x591347][_0xa6a9('0x13')]===_0x45037a['agentEmail']){_0x4a4cc7=!![];_0x45037a[_0xa6a9('0x1d')]=_0x21aa36[_0x591347]['id'];logger[_0xa6a9('0xe')](_0xa6a9('0x1e'),_0x45037a[_0xa6a9('0x1d')]);}}}if(!_0x4a4cc7){logger[_0xa6a9('0xe')](_0xa6a9('0x1f'));_0x45037a['userEmail']=_0x45037a[_0xa6a9('0x14')];_0x45037a['userId']=_0x45037a['adminId'];_0x4a4cc7=!![];}if(_0x4a4cc7){_0x5c46a5(_0x45037a);}else{_0x5415c7({'statusCode':0x194,'message':_0xa6a9('0x17')});}}else{_0x5415c7({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xa6a9('0x18')](function(_0x40bb9e){logger[_0xa6a9('0x20')]('['+[_0x2e676b[_0xa6a9('0x19')]()]+']',_0x40bb9e[_0xa6a9('0x1a')]);_0x5415c7(_0x40bb9e);});});};}function getEndUser(_0x2f4835,_0x2fb9e7,_0x142628){return function(_0x474f35){return new Promise(function(_0x304ef6,_0x568ad8){var _0x30c843=0x0;var _0x59a42f={'method':_0xa6a9('0xb'),'uri':_0x142628+_0xa6a9('0x21'),'json':!![]};_0x59a42f[_0xa6a9('0xd')]=_0x2fb9e7;logger[_0xa6a9('0xe')]('Getting\x20contacts\x20filter');return rp(_0x59a42f)[_0xa6a9('0x10')](function(_0x2fd0cf){_0x2fd0cf[_0xa6a9('0x22')][_0xa6a9('0x23')](function(_0x237b8c){if(_0x237b8c['name']===_0xa6a9('0x24')){_0x30c843=_0x237b8c['id'];}});})[_0xa6a9('0x10')](function(){logger['info']('Getting\x20contact\x20list');var _0x1b7bd7={'method':_0xa6a9('0xb'),'uri':_0x142628+_0xa6a9('0x25')+_0x30c843,'json':!![]};_0x1b7bd7[_0xa6a9('0xd')]=_0x2fb9e7;return rp(_0x1b7bd7);})[_0xa6a9('0x10')](function(_0x56f756){logger[_0xa6a9('0xe')]('Searching\x20contact\x20with\x20phone',_0x474f35['contactNumber']);if(_0x56f756[_0xa6a9('0x26')][_0xa6a9('0x12')]>0x0){var _0x4bb289=_[_0xa6a9('0x27')](_0x56f756['contacts'],function(_0x1232f6){if(_0x1232f6[_0xa6a9('0x28')]===_0x474f35['contactNumber']||_0x1232f6[_0xa6a9('0x29')]===_0x474f35['contactNumber']){return _0x1232f6;}});if(_0x4bb289){_0x474f35[_0xa6a9('0x2a')]=_0x4bb289['id'];logger['info'](_0xa6a9('0x2b'),_0x474f35[_0xa6a9('0x2a')]);_0x304ef6(_0x474f35);}else{return createEndUser(_0x474f35,_0x2f4835,_0x2fb9e7,_0x142628)['then'](function(_0x582b55){logger[_0xa6a9('0xe')](_0xa6a9('0x2c'),_0x474f35[_0xa6a9('0x2a')]);_0x304ef6(_0x582b55);});}}else{return createEndUser(_0x474f35,_0x2f4835,_0x2fb9e7,_0x142628)[_0xa6a9('0x10')](function(_0x35a1e3){logger[_0xa6a9('0xe')](_0xa6a9('0x2c'),_0x474f35[_0xa6a9('0x2a')]);_0x304ef6(_0x35a1e3);});}})[_0xa6a9('0x18')](function(_0x491eba){throw new Error(_0x491eba[_0xa6a9('0x1a')]);});});};}function createEndUser(_0x674a51,_0x5b8728,_0x36187d,_0x20377b){return new Promise(function(_0x1494f1,_0x5a4207){var _0x117cc3=moment();var _0x801aa6={'method':_0xa6a9('0x2d'),'uri':_0x20377b+_0xa6a9('0x2e'),'body':{'contact':{'last_name':_0x674a51[_0xa6a9('0x2f')],'work_number':_0x674a51[_0xa6a9('0x2f')],'mobile_number':_0x674a51['contactNumber'],'owner_id':_0x674a51[_0xa6a9('0x1d')],'created_at':_0x117cc3['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x801aa6[_0xa6a9('0xd')]=_0x36187d;logger[_0xa6a9('0xe')](_0xa6a9('0x30'));return rp(_0x801aa6)['then'](function(_0x57fbc2){_0x674a51['endUserId']=_0x57fbc2['contact']['id'];_0x1494f1(_0x674a51);})[_0xa6a9('0x18')](function(_0x58a8cb){logger[_0xa6a9('0x20')]('['+[_0x5b8728[_0xa6a9('0x19')]()]+']',_0x58a8cb['message']);_0x5a4207(_0x58a8cb[_0xa6a9('0x1a')]);});});}function getTicket(_0x118947,_0x5e8d49,_0x3f8561,_0x1b7ae7,_0x4997ff){return function(_0x31bdc2){logger[_0xa6a9('0xe')]('Creating\x20new\x20task');return new Promise(function(_0x47027e,_0x16c326){var _0x526cea=moment();var _0x5c554e={'method':_0xa6a9('0x2d'),'uri':_0x3f8561+_0xa6a9('0x31'),'body':{'title':intUtil[_0xa6a9('0x32')](_0x1b7ae7[_0xa6a9('0x33')],_0x4997ff,'\x20'),'description':intUtil['getString'](_0x1b7ae7[_0xa6a9('0x34')],_0x4997ff,'\x0a'),'owner_id':_0x31bdc2[_0xa6a9('0x1d')],'creater_id':_0x31bdc2[_0xa6a9('0x15')],'targetable_id':_0x31bdc2['endUserId'],'targetable_type':_0xa6a9('0x35'),'created_at':_0x526cea[_0xa6a9('0x36')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x526cea[_0xa6a9('0x37')](0x1e,'m')[_0xa6a9('0x36')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x5c554e[_0xa6a9('0xd')]=_0x5e8d49;return rp(_0x5c554e)[_0xa6a9('0x10')](function(_0x406940){_0x31bdc2[_0xa6a9('0x38')]=_0x406940[_0xa6a9('0x39')]['id'];logger[_0xa6a9('0xe')](_0xa6a9('0x3a'),_0x31bdc2['ticketId']);_0x47027e(_0x31bdc2);})[_0xa6a9('0x18')](function(_0x444708){logger[_0xa6a9('0x20')]('['+[_0x118947[_0xa6a9('0x19')]()]+']',_0x444708[_0xa6a9('0x1a')]);_0x16c326(_0x444708['message']);});});};}function emit(_0x48b75b,_0x105cd0,_0x2599e0){var _0x1395b9={'uri':_0x48b75b+_0xa6a9('0x3b')+_0x2599e0};io['to'](util[_0xa6a9('0x36')](_0xa6a9('0x3c'),_0x105cd0))[_0xa6a9('0x3d')]('trigger:browser:url',_0x1395b9);}exports['cs']=function(_0x3e59ba,_0x58dbe2,_0x3187e2,_0x44074a,_0xc4a54e,_0x42f59d,_0x159ff6,_0x47e54b){var _0x2f08ab={};var _0x3c082b={'Authorization':_0xa6a9('0x3e')+_0x42f59d[_0xa6a9('0x3f')]};_0x42f59d[_0xa6a9('0x40')]=intUtil[_0xa6a9('0x41')](_0x42f59d[_0xa6a9('0x40')]);_0x42f59d['serverUrl']=intUtil[_0xa6a9('0x41')](_0x42f59d[_0xa6a9('0x42')]);var _0x6fa535=_0x42f59d[_0xa6a9('0x40')];_0x2f08ab['adminEmail']=_0x42f59d[_0xa6a9('0x43')];_0x2f08ab['contactNumber']=_0x47e54b['toLowerCase']()===_0xa6a9('0x44')?_0x58dbe2[_0xa6a9('0x45')]:_0x58dbe2[_0xa6a9('0x46')];_0x2f08ab[_0xa6a9('0x47')]=_0x47e54b===_0xa6a9('0x48')||_0x47e54b===_0xa6a9('0x49')?_0xa6a9('0x48'):_0xa6a9('0x44');if(_0x44074a){_0x2f08ab['agentEmail']=_0x44074a['email'];}var _0x18153a=util[_0xa6a9('0x36')](_0xa6a9('0x4a'),_0x42f59d[_0xa6a9('0x42')],_0x58dbe2[_0xa6a9('0x4b')],md5(_0x58dbe2[_0xa6a9('0x4b')]));if(_0xc4a54e&&_0xc4a54e['monitor_format']){logger[_0xa6a9('0xe')](_0xa6a9('0x4c'),_0xa6a9('0x4d'));_0x58dbe2[_0xa6a9('0x4e')]=_0x18153a;}else if(_0x159ff6&&_0x159ff6[_0xa6a9('0x4f')]&&_0x159ff6['recordingFormat']!==_0xa6a9('0x50')){logger['info']('[OUTBOUND]',_0xa6a9('0x4d'));_0x58dbe2['recordingURL']=_0x18153a;}else{_0x58dbe2['recordingURL']='';}return getAdminId(_0x2f08ab,_0x47e54b,_0x3c082b,_0x6fa535)[_0xa6a9('0x10')](getUser(_0x47e54b,_0x3c082b,_0x6fa535))['then'](getEndUser(_0x47e54b,_0x3c082b,_0x6fa535))[_0xa6a9('0x10')](getTicket(_0x47e54b,_0x3c082b,_0x6fa535,_0x3187e2,_0x58dbe2))[_0xa6a9('0x10')](function(_0x141d3e){logger[_0xa6a9('0xe')](util[_0xa6a9('0x36')](_0xa6a9('0x51'),_0x141d3e[_0xa6a9('0x38')]));if(_0x47e54b!=='unmanaged'){logger[_0xa6a9('0xe')]('['+[_0x47e54b['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x6fa535,_0x44074a[_0xa6a9('0x52')],_0x141d3e['endUserId']);}})[_0xa6a9('0x18')](function(_0x4ba0d2){logger[_0xa6a9('0x20')]('['+[_0x47e54b[_0xa6a9('0x19')]()]+_0xa6a9('0x53'),util['inspect'](_0x4ba0d2,{'showHidden':!![],'depth':null}));});};