Built motion from commit (unavailable).|2.5.14
[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 _0xd206=['%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','name','error',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','socket.io-emitter','redis','GET','/api/selector/owners','info','then','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','Getting\x20user\x20list','users','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','Admin\x20selected','/api/lookup?q=','&f=','contacts','format','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','Contact','ticketId','Task\x20created:','/contacts/','user:%s','emit','Token\x20token=','apiKey','serverUrl','remoteUri','username','outbound','calleridnum','callDirection','unmanaged','queue'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd206,0x107));var _0x6d20=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd206[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x6d20('0x0'));var rp=require(_0x6d20('0x1'));var md5=require('md5');var util=require(_0x6d20('0x2'));var moment=require(_0x6d20('0x3'));var Promise=require(_0x6d20('0x4'));var Redis=require('ioredis');var intUtil=require(_0x6d20('0x5'));var config=require(_0x6d20('0x6'));var logger=require(_0x6d20('0x7'))(_0x6d20('0x8'));config['redis']=_[_0x6d20('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x6d20('0xa'))(new Redis(config[_0x6d20('0xb')]));function getAdminId(_0x5b4154,_0x2b338c,_0x56b407,_0x3ce1be){return new Promise(function(_0x4222dc,_0x49fc93){var _0x588dfb=![];var _0x5610b6={'method':_0x6d20('0xc'),'uri':_0x3ce1be+_0x6d20('0xd'),'json':!![]};_0x5610b6['headers']=_0x56b407;logger[_0x6d20('0xe')]('Getting\x20admin\x20information');return rp(_0x5610b6)[_0x6d20('0xf')](function(_0x4c909b){if(_0x4c909b){var _0x57f713=_0x4c909b['users'];var _0x555d7f=null;for(_0x555d7f=0x0;_0x555d7f<_0x57f713[_0x6d20('0x10')];_0x555d7f++){if(_0x57f713[_0x555d7f][_0x6d20('0x11')]===_0x5b4154[_0x6d20('0x12')]){_0x5b4154[_0x6d20('0x13')]=_0x57f713[_0x555d7f]['id'];_0x588dfb=!![];}}if(_0x588dfb){logger[_0x6d20('0xe')](_0x6d20('0x14'),_0x5b4154['adminId']);_0x4222dc(_0x5b4154);}else{_0x49fc93({'statusCode':0x194,'message':_0x6d20('0x15')});}}else{_0x49fc93({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x6d20('0x16')](function(_0x37151b){logger['error']('['+[_0x2b338c[_0x6d20('0x17')]()]+']',_0x37151b[_0x6d20('0x18')]);_0x49fc93(_0x37151b);});});}function getUser(_0xf93805,_0x133cd0,_0x48cc05){return function(_0x5ef31b){return new Promise(function(_0x24ee5e,_0x12fad7){var _0x4f938f={'method':_0x6d20('0xc'),'uri':_0x48cc05+'/api/selector/owners','json':!![]};_0x4f938f['headers']=_0x133cd0;logger[_0x6d20('0xe')](_0x6d20('0x19'));return rp(_0x4f938f)[_0x6d20('0xf')](function(_0x42e463){if(_0x42e463){var _0x5cdbfa=_0x42e463[_0x6d20('0x1a')];var _0x3ad6bb=![];var _0x35802d=null;if(_0x5ef31b[_0x6d20('0x1b')]!==null){logger[_0x6d20('0xe')](_0x6d20('0x1c'),_0x5ef31b[_0x6d20('0x1b')]);_0x5ef31b[_0x6d20('0x1d')]=_0x5ef31b[_0x6d20('0x1b')];for(_0x35802d=0x0;_0x35802d<_0x5cdbfa[_0x6d20('0x10')];_0x35802d++){if(_0x5cdbfa[_0x35802d]['email']===_0x5ef31b[_0x6d20('0x1b')]){_0x3ad6bb=!![];_0x5ef31b['userId']=_0x5cdbfa[_0x35802d]['id'];logger[_0x6d20('0xe')]('User\x20found:',_0x5ef31b[_0x6d20('0x1e')]);}}}if(!_0x3ad6bb){logger[_0x6d20('0xe')](_0x6d20('0x1f'));_0x5ef31b[_0x6d20('0x1d')]=_0x5ef31b[_0x6d20('0x12')];_0x5ef31b[_0x6d20('0x1e')]=_0x5ef31b[_0x6d20('0x13')];_0x3ad6bb=!![];}if(_0x3ad6bb){_0x24ee5e(_0x5ef31b);}else{_0x12fad7({'statusCode':0x194,'message':_0x6d20('0x15')});}}else{_0x12fad7({'statusCode':0x194,'message':_0x6d20('0x15')});}})[_0x6d20('0x16')](function(_0x14504f){logger['error']('['+[_0xf93805[_0x6d20('0x17')]()]+']',_0x14504f['message']);_0x12fad7(_0x14504f);});});};}function searchContact(_0x3da5a3,_0x29c2d3,_0x251958,_0x4f2364){return new Promise(function(_0xf51845,_0x51bf95){var _0x26aa8d={'method':_0x6d20('0xc'),'headers':_0x29c2d3,'uri':_0x3da5a3+_0x6d20('0x20')+_0x4f2364+_0x6d20('0x21')+_0x251958+'&entities=contact','json':!![]};rp(_0x26aa8d)[_0x6d20('0xf')](function(_0x136d60){var _0x3b182c=_['find'](_0x136d60[_0x6d20('0x22')][_0x6d20('0x22')],[_0x251958,_0x4f2364]);_0xf51845(_0x3b182c);})[_0x6d20('0x16')](function(_0x3cbb12){_0x51bf95(_0x3cbb12);});});}function getEndUser(_0x31045d,_0x192d39,_0xd2431f){return function(_0x1b8541){return new Promise(function(_0x375ef0,_0x38db48){logger[_0x6d20('0xe')](util[_0x6d20('0x23')]('Searching\x20contact\x20with\x20phone\x20%s',_0x1b8541[_0x6d20('0x24')]));searchContact(_0xd2431f,_0x192d39,_0x6d20('0x25'),_0x1b8541[_0x6d20('0x24')])[_0x6d20('0xf')](function(_0x562494){if(_0x562494){_0x1b8541['endUserId']=_0x562494['id'];logger[_0x6d20('0xe')](_0x6d20('0x26'),_0x1b8541[_0x6d20('0x27')]);return _0x375ef0(_0x1b8541);}searchContact(_0xd2431f,_0x192d39,_0x6d20('0x28'),_0x1b8541['contactNumber'])[_0x6d20('0xf')](function(_0x374fba){if(_0x374fba){_0x1b8541[_0x6d20('0x27')]=_0x374fba['id'];logger[_0x6d20('0xe')](_0x6d20('0x29'),_0x1b8541[_0x6d20('0x27')]);return _0x375ef0(_0x1b8541);}createEndUser(_0x1b8541,_0x31045d,_0x192d39,_0xd2431f)[_0x6d20('0xf')](function(_0x2157d2){logger['info'](_0x6d20('0x2a'),_0x2157d2['endUserId']);return _0x375ef0(_0x2157d2);});});})[_0x6d20('0x16')](function(_0x1ff848){_0x38db48(_0x1ff848);});});};}function createEndUser(_0x2580f8,_0x24bb33,_0x5baf4d,_0x44c83d){return new Promise(function(_0x4c9d8d,_0x14cbac){var _0xc69e3e=moment();var _0x42d684={'method':_0x6d20('0x2b'),'uri':_0x44c83d+_0x6d20('0x2c'),'body':{'contact':{'last_name':_0x2580f8[_0x6d20('0x24')],'work_number':_0x2580f8['contactNumber'],'mobile_number':_0x2580f8[_0x6d20('0x24')],'owner_id':_0x2580f8['userId'],'created_at':_0xc69e3e[_0x6d20('0x23')](_0x6d20('0x2d'))}},'json':!![]};_0x42d684['headers']=_0x5baf4d;logger[_0x6d20('0xe')](_0x6d20('0x2e'));return rp(_0x42d684)['then'](function(_0x316349){_0x2580f8['endUserId']=_0x316349[_0x6d20('0x2f')]['id'];_0x4c9d8d(_0x2580f8);})[_0x6d20('0x16')](function(_0x1e50eb){logger['error']('['+[_0x24bb33[_0x6d20('0x17')]()]+']',_0x1e50eb[_0x6d20('0x18')]);_0x14cbac(_0x1e50eb[_0x6d20('0x18')]);});});}function getTicket(_0x5ceca8,_0x2b5fb7,_0x348b3f,_0x47019b,_0x1cc3ca){return function(_0x315949){logger['info'](_0x6d20('0x30'));return new Promise(function(_0x277390,_0x15496d){var _0x7a137=moment();var _0x2da7ca={'method':'POST','uri':_0x348b3f+_0x6d20('0x31'),'body':{'title':intUtil[_0x6d20('0x32')](_0x47019b[_0x6d20('0x33')],_0x1cc3ca,'\x20'),'description':intUtil[_0x6d20('0x32')](_0x47019b[_0x6d20('0x34')],_0x1cc3ca,'\x0a'),'owner_id':_0x315949['userId'],'creater_id':_0x315949[_0x6d20('0x13')],'targetable_id':_0x315949['endUserId'],'targetable_type':_0x6d20('0x35'),'created_at':_0x7a137[_0x6d20('0x23')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x7a137['add'](0x1e,'m')[_0x6d20('0x23')](_0x6d20('0x2d'))},'json':!![]};_0x2da7ca['headers']=_0x2b5fb7;return rp(_0x2da7ca)[_0x6d20('0xf')](function(_0x49e27d){_0x315949[_0x6d20('0x36')]=_0x49e27d['task']['id'];logger['info'](_0x6d20('0x37'),_0x315949[_0x6d20('0x36')]);_0x277390(_0x315949);})[_0x6d20('0x16')](function(_0x107cc6){logger['error']('['+[_0x5ceca8[_0x6d20('0x17')]()]+']',_0x107cc6[_0x6d20('0x18')]);_0x15496d(_0x107cc6[_0x6d20('0x18')]);});});};}function emit(_0x48e6d6,_0x32b8c6,_0x45e223){var _0x3a1c99={'uri':_0x48e6d6+_0x6d20('0x38')+_0x45e223};io['to'](util['format'](_0x6d20('0x39'),_0x32b8c6))[_0x6d20('0x3a')]('trigger:browser:url',_0x3a1c99);}exports['cs']=function(_0x49c09,_0x40d23d,_0x9c487b,_0x2f0d96,_0xe07f91,_0x4a14aa,_0x26269e,_0x45730f){var _0x22b5e5={};var _0x2b6a7a={'Authorization':_0x6d20('0x3b')+_0x4a14aa[_0x6d20('0x3c')]};_0x4a14aa['remoteUri']=intUtil['stripTrailingSlash'](_0x4a14aa['remoteUri']);_0x4a14aa['serverUrl']=intUtil['stripTrailingSlash'](_0x4a14aa[_0x6d20('0x3d')]);var _0x3eaad9=_0x4a14aa[_0x6d20('0x3e')];_0x22b5e5[_0x6d20('0x12')]=_0x4a14aa[_0x6d20('0x3f')];_0x22b5e5[_0x6d20('0x24')]=_0x45730f['toLowerCase']()===_0x6d20('0x40')?_0x40d23d['destcalleridnum']:_0x40d23d[_0x6d20('0x41')];_0x22b5e5[_0x6d20('0x42')]=_0x45730f==='queue'||_0x45730f===_0x6d20('0x43')?_0x6d20('0x44'):_0x6d20('0x40');if(_0x2f0d96){_0x22b5e5[_0x6d20('0x1b')]=_0x2f0d96['email'];}var _0x5161e7=util[_0x6d20('0x23')](_0x6d20('0x45'),_0x4a14aa['serverUrl'],_0x40d23d[_0x6d20('0x46')],md5(_0x40d23d[_0x6d20('0x46')]));if(_0xe07f91&&_0xe07f91[_0x6d20('0x47')]){logger['info'](_0x6d20('0x48'),_0x6d20('0x49'));_0x40d23d[_0x6d20('0x4a')]=_0x5161e7;}else if(_0x26269e&&_0x26269e[_0x6d20('0x4b')]&&_0x26269e['recordingFormat']!==_0x6d20('0x4c')){logger[_0x6d20('0xe')](_0x6d20('0x4d'),_0x6d20('0x49'));_0x40d23d['recordingURL']=_0x5161e7;}else{_0x40d23d['recordingURL']='';}return getAdminId(_0x22b5e5,_0x45730f,_0x2b6a7a,_0x3eaad9)[_0x6d20('0xf')](getUser(_0x45730f,_0x2b6a7a,_0x3eaad9))[_0x6d20('0xf')](getEndUser(_0x45730f,_0x2b6a7a,_0x3eaad9))['then'](getTicket(_0x45730f,_0x2b6a7a,_0x3eaad9,_0x9c487b,_0x40d23d))[_0x6d20('0xf')](function(_0x57af05){logger[_0x6d20('0xe')](util[_0x6d20('0x23')](_0x6d20('0x4e'),_0x57af05[_0x6d20('0x36')]));if(_0x45730f!=='unmanaged'){logger['info']('['+[_0x45730f['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x3eaad9,_0x2f0d96[_0x6d20('0x4f')],_0x57af05[_0x6d20('0x27')]);}})['catch'](function(_0x9cc36b){logger[_0x6d20('0x50')]('['+[_0x45730f[_0x6d20('0x17')]()]+_0x6d20('0x51'),util[_0x6d20('0x52')](_0x9cc36b,{'showHidden':!![],'depth':null}));});};