Built motion from commit (unavailable).|2.5.13
[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 _0xd45e=[']\x20Error\x20running\x20Freshsales\x20integration','request-promise','md5','moment','ioredis','./util','../../../../config/environment','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','error','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','User\x20found:','userId','toUpperCase','&f=','&entities=contact','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','getString','Subjects','Descriptions','Contact','add','task','ticketId','user:%s','emit','Token\x20token=','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','unmanaged','email','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','Displaying\x20task\x20in\x20a\x20new\x20tab...'];(function(_0x4046b6,_0x238c36){var _0x1443be=function(_0x2e6c5d){while(--_0x2e6c5d){_0x4046b6['push'](_0x4046b6['shift']());}};_0x1443be(++_0x238c36);}(_0xd45e,0x182));var _0xed45=function(_0x54cfcf,_0x3ecf5b){_0x54cfcf=_0x54cfcf-0x0;var _0x1c2060=_0xd45e[_0x54cfcf];return _0x1c2060;};'use strict';var _=require('lodash');var rp=require(_0xed45('0x0'));var md5=require(_0xed45('0x1'));var util=require('util');var moment=require(_0xed45('0x2'));var Promise=require('bluebird');var Redis=require(_0xed45('0x3'));var intUtil=require(_0xed45('0x4'));var config=require(_0xed45('0x5'));var logger=require('../../../../config/logger')(_0xed45('0x6'));config[_0xed45('0x7')]=_['defaults'](config['redis'],{'host':_0xed45('0x8'),'port':0x18eb});var io=require(_0xed45('0x9'))(new Redis(config['redis']));function getAdminId(_0x380a8,_0x428832,_0x2d3d7a,_0x1c1fb8){return new Promise(function(_0xb2019c,_0x2ea0be){var _0x52c747=![];var _0x53fce3={'method':_0xed45('0xa'),'uri':_0x1c1fb8+_0xed45('0xb'),'json':!![]};_0x53fce3[_0xed45('0xc')]=_0x2d3d7a;logger[_0xed45('0xd')](_0xed45('0xe'));return rp(_0x53fce3)[_0xed45('0xf')](function(_0x4acc31){if(_0x4acc31){var _0xb38c01=_0x4acc31[_0xed45('0x10')];var _0x79cc57=null;for(_0x79cc57=0x0;_0x79cc57<_0xb38c01[_0xed45('0x11')];_0x79cc57++){if(_0xb38c01[_0x79cc57]['email']===_0x380a8[_0xed45('0x12')]){_0x380a8['adminId']=_0xb38c01[_0x79cc57]['id'];_0x52c747=!![];}}if(_0x52c747){logger[_0xed45('0xd')](_0xed45('0x13'),_0x380a8[_0xed45('0x14')]);_0xb2019c(_0x380a8);}else{_0x2ea0be({'statusCode':0x194,'message':_0xed45('0x15')});}}else{_0x2ea0be({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xed45('0x16')](function(_0x3cfbcd){logger[_0xed45('0x17')]('['+[_0x428832['toUpperCase']()]+']',_0x3cfbcd[_0xed45('0x18')]);_0x2ea0be(_0x3cfbcd);});});}function getUser(_0x549574,_0x2d9bc4,_0x2975a7){return function(_0x3bb5ef){return new Promise(function(_0x46098d,_0x50e6d7){var _0x329f21={'method':'GET','uri':_0x2975a7+'/api/selector/owners','json':!![]};_0x329f21[_0xed45('0xc')]=_0x2d9bc4;logger[_0xed45('0xd')](_0xed45('0x19'));return rp(_0x329f21)['then'](function(_0x582d92){if(_0x582d92){var _0xaa120e=_0x582d92[_0xed45('0x10')];var _0x481c8e=![];var _0x542459=null;if(_0x3bb5ef[_0xed45('0x1a')]!==null){logger[_0xed45('0xd')](_0xed45('0x1b'),_0x3bb5ef[_0xed45('0x1a')]);_0x3bb5ef[_0xed45('0x1c')]=_0x3bb5ef[_0xed45('0x1a')];for(_0x542459=0x0;_0x542459<_0xaa120e['length'];_0x542459++){if(_0xaa120e[_0x542459]['email']===_0x3bb5ef['agentEmail']){_0x481c8e=!![];_0x3bb5ef['userId']=_0xaa120e[_0x542459]['id'];logger[_0xed45('0xd')](_0xed45('0x1d'),_0x3bb5ef[_0xed45('0x1e')]);}}}if(!_0x481c8e){logger[_0xed45('0xd')]('Admin\x20selected');_0x3bb5ef['userEmail']=_0x3bb5ef[_0xed45('0x12')];_0x3bb5ef[_0xed45('0x1e')]=_0x3bb5ef[_0xed45('0x14')];_0x481c8e=!![];}if(_0x481c8e){_0x46098d(_0x3bb5ef);}else{_0x50e6d7({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x50e6d7({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xed45('0x16')](function(_0x59bfc1){logger['error']('['+[_0x549574[_0xed45('0x1f')]()]+']',_0x59bfc1[_0xed45('0x18')]);_0x50e6d7(_0x59bfc1);});});};}function searchContact(_0x486193,_0x14131d,_0x45d6de,_0x590c30){return new Promise(function(_0x427dec,_0x34c1a9){var _0x400e2d={'method':_0xed45('0xa'),'headers':_0x14131d,'uri':_0x486193+'/api/lookup?q='+_0x590c30+_0xed45('0x20')+_0x45d6de+_0xed45('0x21'),'json':!![]};rp(_0x400e2d)['then'](function(_0x2023e4){var _0x530e19=_['find'](_0x2023e4[_0xed45('0x22')][_0xed45('0x22')],[_0x45d6de,_0x590c30]);_0x427dec(_0x530e19);})[_0xed45('0x16')](function(_0x1ae992){_0x34c1a9(_0x1ae992);});});}function getEndUser(_0x415e7b,_0x4baa1f,_0x8dfb79){return function(_0x301af5){return new Promise(function(_0x581b0d,_0xc1e44f){logger[_0xed45('0xd')](util[_0xed45('0x23')](_0xed45('0x24'),_0x301af5[_0xed45('0x25')]));searchContact(_0x8dfb79,_0x4baa1f,_0xed45('0x26'),_0x301af5[_0xed45('0x25')])['then'](function(_0x207694){if(_0x207694){_0x301af5[_0xed45('0x27')]=_0x207694['id'];logger[_0xed45('0xd')](_0xed45('0x28'),_0x301af5[_0xed45('0x27')]);return _0x581b0d(_0x301af5);}searchContact(_0x8dfb79,_0x4baa1f,'work_number',_0x301af5[_0xed45('0x25')])[_0xed45('0xf')](function(_0x313102){if(_0x313102){_0x301af5[_0xed45('0x27')]=_0x313102['id'];logger['info'](_0xed45('0x29'),_0x301af5[_0xed45('0x27')]);return _0x581b0d(_0x301af5);}createEndUser(_0x301af5,_0x415e7b,_0x4baa1f,_0x8dfb79)[_0xed45('0xf')](function(_0x59cc30){logger[_0xed45('0xd')](_0xed45('0x2a'),_0x59cc30[_0xed45('0x27')]);return _0x581b0d(_0x59cc30);});});})['catch'](function(_0x44d345){_0xc1e44f(_0x44d345);});});};}function createEndUser(_0x19117d,_0x347ccf,_0x17b54f,_0x369b2c){return new Promise(function(_0x32f98a,_0x24467e){var _0x960357=moment();var _0x5c9e7c={'method':_0xed45('0x2b'),'uri':_0x369b2c+_0xed45('0x2c'),'body':{'contact':{'last_name':_0x19117d[_0xed45('0x25')],'work_number':_0x19117d[_0xed45('0x25')],'mobile_number':_0x19117d['contactNumber'],'owner_id':_0x19117d[_0xed45('0x1e')],'created_at':_0x960357[_0xed45('0x23')](_0xed45('0x2d'))}},'json':!![]};_0x5c9e7c[_0xed45('0xc')]=_0x17b54f;logger['info'](_0xed45('0x2e'));return rp(_0x5c9e7c)[_0xed45('0xf')](function(_0x4d174c){_0x19117d[_0xed45('0x27')]=_0x4d174c[_0xed45('0x2f')]['id'];_0x32f98a(_0x19117d);})['catch'](function(_0x49947f){logger['error']('['+[_0x347ccf['toUpperCase']()]+']',_0x49947f[_0xed45('0x18')]);_0x24467e(_0x49947f[_0xed45('0x18')]);});});}function getTicket(_0xc67faa,_0x258b1b,_0x289d13,_0x45c323,_0x23b89c){return function(_0xdb93df){logger[_0xed45('0xd')]('Creating\x20new\x20task');return new Promise(function(_0x48ee6c,_0xb05145){var _0x5b0c5b=moment();var _0x4b208a={'method':_0xed45('0x2b'),'uri':_0x289d13+'/api/tasks','body':{'title':intUtil[_0xed45('0x30')](_0x45c323[_0xed45('0x31')],_0x23b89c,'\x20'),'description':intUtil[_0xed45('0x30')](_0x45c323[_0xed45('0x32')],_0x23b89c,'\x0a'),'owner_id':_0xdb93df['userId'],'creater_id':_0xdb93df[_0xed45('0x14')],'targetable_id':_0xdb93df[_0xed45('0x27')],'targetable_type':_0xed45('0x33'),'created_at':_0x5b0c5b['format'](_0xed45('0x2d')),'due_date':_0x5b0c5b[_0xed45('0x34')](0x1e,'m')[_0xed45('0x23')](_0xed45('0x2d'))},'json':!![]};_0x4b208a[_0xed45('0xc')]=_0x258b1b;return rp(_0x4b208a)['then'](function(_0x484cb6){_0xdb93df['ticketId']=_0x484cb6[_0xed45('0x35')]['id'];logger[_0xed45('0xd')]('Task\x20created:',_0xdb93df[_0xed45('0x36')]);_0x48ee6c(_0xdb93df);})[_0xed45('0x16')](function(_0x5c0400){logger['error']('['+[_0xc67faa[_0xed45('0x1f')]()]+']',_0x5c0400[_0xed45('0x18')]);_0xb05145(_0x5c0400[_0xed45('0x18')]);});});};}function emit(_0x1785f9,_0x1b0657,_0x10598c){var _0x4c742e={'uri':_0x1785f9+'/contacts/'+_0x10598c};io['to'](util['format'](_0xed45('0x37'),_0x1b0657))[_0xed45('0x38')]('trigger:browser:url',_0x4c742e);}exports['cs']=function(_0x533ae9,_0x457ea6,_0x41a3d6,_0x5a7a79,_0x5d703a,_0x4cf704,_0x4e4f4b,_0x3eeefa){var _0x18bf02={};var _0x335a9f={'Authorization':_0xed45('0x39')+_0x4cf704[_0xed45('0x3a')]};_0x4cf704['remoteUri']=intUtil[_0xed45('0x3b')](_0x4cf704[_0xed45('0x3c')]);_0x4cf704['serverUrl']=intUtil[_0xed45('0x3b')](_0x4cf704[_0xed45('0x3d')]);var _0x1ad435=_0x4cf704['remoteUri'];_0x18bf02[_0xed45('0x12')]=_0x4cf704[_0xed45('0x3e')];_0x18bf02[_0xed45('0x25')]=_0x3eeefa[_0xed45('0x3f')]()==='outbound'?_0x457ea6[_0xed45('0x40')]:_0x457ea6[_0xed45('0x41')];_0x18bf02[_0xed45('0x42')]=_0x3eeefa===_0xed45('0x43')||_0x3eeefa===_0xed45('0x44')?_0xed45('0x43'):'outbound';if(_0x5a7a79){_0x18bf02[_0xed45('0x1a')]=_0x5a7a79[_0xed45('0x45')];}var _0x23e83a=util[_0xed45('0x23')](_0xed45('0x46'),_0x4cf704[_0xed45('0x3d')],_0x457ea6[_0xed45('0x47')],md5(_0x457ea6['uniqueid']));if(_0x5d703a&&_0x5d703a['monitor_format']){logger[_0xed45('0xd')](_0xed45('0x48'),'Recording\x20is\x20enabled!');_0x457ea6[_0xed45('0x49')]=_0x23e83a;}else if(_0x4e4f4b&&_0x4e4f4b[_0xed45('0x4a')]&&_0x4e4f4b[_0xed45('0x4a')]!=='none'){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x457ea6[_0xed45('0x49')]=_0x23e83a;}else{_0x457ea6['recordingURL']='';}return getAdminId(_0x18bf02,_0x3eeefa,_0x335a9f,_0x1ad435)[_0xed45('0xf')](getUser(_0x3eeefa,_0x335a9f,_0x1ad435))['then'](getEndUser(_0x3eeefa,_0x335a9f,_0x1ad435))[_0xed45('0xf')](getTicket(_0x3eeefa,_0x335a9f,_0x1ad435,_0x41a3d6,_0x457ea6))[_0xed45('0xf')](function(_0x8efe63){logger[_0xed45('0xd')](util[_0xed45('0x23')]('The\x20ticket\x20ID\x20is:\x20%s',_0x8efe63[_0xed45('0x36')]));if(_0x3eeefa!==_0xed45('0x44')){logger[_0xed45('0xd')]('['+[_0x3eeefa[_0xed45('0x1f')]()]+']',_0xed45('0x4b'));emit(_0x1ad435,_0x5a7a79['name'],_0x8efe63[_0xed45('0x27')]);}})['catch'](function(_0x541799){logger['error']('['+[_0x3eeefa[_0xed45('0x1f')]()]+_0xed45('0x4c'),util['inspect'](_0x541799,{'showHidden':!![],'depth':null}));});};