62c082dc168f106022630c7eff28803b6e84314d
[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 _0x652f=['stripTrailingSlash','serverUrl','username','calleridnum','callDirection','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',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','moment','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','then','users','length','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','email','userId','User\x20found:','Admin\x20selected','toUpperCase','message','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','Contact','add','task','ticketId','/contacts/','user:%s','Token\x20token=','remoteUri'];(function(_0xf13fbb,_0x9e5587){var _0x19c851=function(_0x158351){while(--_0x158351){_0xf13fbb['push'](_0xf13fbb['shift']());}};_0x19c851(++_0x9e5587);}(_0x652f,0x1ad));var _0xf652=function(_0x1259e9,_0x580a3f){_0x1259e9=_0x1259e9-0x0;var _0x1dd911=_0x652f[_0x1259e9];return _0x1dd911;};'use strict';var _=require(_0xf652('0x0'));var rp=require('request-promise');var md5=require(_0xf652('0x1'));var util=require(_0xf652('0x2'));var moment=require(_0xf652('0x3'));var Promise=require(_0xf652('0x4'));var Redis=require(_0xf652('0x5'));var intUtil=require('./util');var config=require(_0xf652('0x6'));var logger=require(_0xf652('0x7'))(_0xf652('0x8'));config[_0xf652('0x9')]=_['defaults'](config[_0xf652('0x9')],{'host':_0xf652('0xa'),'port':0x18eb});var io=require(_0xf652('0xb'))(new Redis(config[_0xf652('0x9')]));function getAdminId(_0x206995,_0x112e99,_0x5e9cb9,_0x438509){return new Promise(function(_0x16ecec,_0x341868){var _0x435a66=![];var _0x2cb3b8={'method':_0xf652('0xc'),'uri':_0x438509+_0xf652('0xd'),'json':!![]};_0x2cb3b8[_0xf652('0xe')]=_0x5e9cb9;logger[_0xf652('0xf')]('Getting\x20admin\x20information');return rp(_0x2cb3b8)[_0xf652('0x10')](function(_0x3cfac7){if(_0x3cfac7){var _0x41e88a=_0x3cfac7[_0xf652('0x11')];var _0x3aea4a=null;for(_0x3aea4a=0x0;_0x3aea4a<_0x41e88a[_0xf652('0x12')];_0x3aea4a++){if(_0x41e88a[_0x3aea4a]['email']===_0x206995[_0xf652('0x13')]){_0x206995[_0xf652('0x14')]=_0x41e88a[_0x3aea4a]['id'];_0x435a66=!![];}}if(_0x435a66){logger[_0xf652('0xf')]('Admin\x20found:',_0x206995['adminId']);_0x16ecec(_0x206995);}else{_0x341868({'statusCode':0x194,'message':_0xf652('0x15')});}}else{_0x341868({'statusCode':0x194,'message':_0xf652('0x15')});}})[_0xf652('0x16')](function(_0x17207c){logger[_0xf652('0x17')]('['+[_0x112e99['toUpperCase']()]+']',_0x17207c['message']);_0x341868(_0x17207c);});});}function getUser(_0xc14ced,_0x113e86,_0x43aecc){return function(_0x387dea){return new Promise(function(_0x4ef546,_0xbe3467){var _0x5e2b5f={'method':'GET','uri':_0x43aecc+_0xf652('0xd'),'json':!![]};_0x5e2b5f[_0xf652('0xe')]=_0x113e86;logger['info'](_0xf652('0x18'));return rp(_0x5e2b5f)[_0xf652('0x10')](function(_0x3eb697){if(_0x3eb697){var _0xa68304=_0x3eb697[_0xf652('0x11')];var _0x3c81a3=![];var _0xaf764b=null;if(_0x387dea['agentEmail']!==null){logger[_0xf652('0xf')](_0xf652('0x19'),_0x387dea[_0xf652('0x1a')]);_0x387dea[_0xf652('0x1b')]=_0x387dea[_0xf652('0x1a')];for(_0xaf764b=0x0;_0xaf764b<_0xa68304['length'];_0xaf764b++){if(_0xa68304[_0xaf764b][_0xf652('0x1c')]===_0x387dea[_0xf652('0x1a')]){_0x3c81a3=!![];_0x387dea[_0xf652('0x1d')]=_0xa68304[_0xaf764b]['id'];logger[_0xf652('0xf')](_0xf652('0x1e'),_0x387dea['userId']);}}}if(!_0x3c81a3){logger['info'](_0xf652('0x1f'));_0x387dea[_0xf652('0x1b')]=_0x387dea['adminEmail'];_0x387dea[_0xf652('0x1d')]=_0x387dea[_0xf652('0x14')];_0x3c81a3=!![];}if(_0x3c81a3){_0x4ef546(_0x387dea);}else{_0xbe3467({'statusCode':0x194,'message':_0xf652('0x15')});}}else{_0xbe3467({'statusCode':0x194,'message':_0xf652('0x15')});}})[_0xf652('0x16')](function(_0x16fed2){logger[_0xf652('0x17')]('['+[_0xc14ced[_0xf652('0x20')]()]+']',_0x16fed2[_0xf652('0x21')]);_0xbe3467(_0x16fed2);});});};}function searchContact(_0x18212b,_0x3794f5,_0x523b38,_0x426a58){return new Promise(function(_0x38e7b9,_0x540f11){var _0x3e021c={'method':'GET','headers':_0x3794f5,'uri':_0x18212b+_0xf652('0x22')+_0x426a58+_0xf652('0x23')+_0x523b38+_0xf652('0x24'),'json':!![]};rp(_0x3e021c)[_0xf652('0x10')](function(_0x1c88c3){var _0x33ca97=_[_0xf652('0x25')](_0x1c88c3[_0xf652('0x26')][_0xf652('0x26')],[_0x523b38,_0x426a58]);_0x38e7b9(_0x33ca97);})[_0xf652('0x16')](function(_0xbeafee){_0x540f11(_0xbeafee);});});}function getEndUser(_0x50457b,_0x3b938a,_0x51ba4f){return function(_0x573d5a){return new Promise(function(_0x3d6dd0,_0x248187){logger['info'](util[_0xf652('0x27')](_0xf652('0x28'),_0x573d5a[_0xf652('0x29')]));searchContact(_0x51ba4f,_0x3b938a,_0xf652('0x2a'),_0x573d5a[_0xf652('0x29')])[_0xf652('0x10')](function(_0x3bd7bc){if(_0x3bd7bc){_0x573d5a['endUserId']=_0x3bd7bc['id'];logger[_0xf652('0xf')](_0xf652('0x2b'),_0x573d5a[_0xf652('0x2c')]);return _0x3d6dd0(_0x573d5a);}searchContact(_0x51ba4f,_0x3b938a,_0xf652('0x2d'),_0x573d5a[_0xf652('0x29')])[_0xf652('0x10')](function(_0x124b28){if(_0x124b28){_0x573d5a['endUserId']=_0x124b28['id'];logger['info']('Contact\x20found\x20work_number:',_0x573d5a['endUserId']);return _0x3d6dd0(_0x573d5a);}createEndUser(_0x573d5a,_0x50457b,_0x3b938a,_0x51ba4f)[_0xf652('0x10')](function(_0x414ff1){logger[_0xf652('0xf')](_0xf652('0x2e'),_0x414ff1[_0xf652('0x2c')]);return _0x3d6dd0(_0x414ff1);});});})[_0xf652('0x16')](function(_0x557692){_0x248187(_0x557692);});});};}function createEndUser(_0x10eb20,_0x1165cb,_0x165b1e,_0x4d28c2){return new Promise(function(_0x384056,_0x5a048c){var _0x21c50f=moment();var _0x354273={'method':_0xf652('0x2f'),'uri':_0x4d28c2+_0xf652('0x30'),'body':{'contact':{'last_name':_0x10eb20[_0xf652('0x29')],'work_number':_0x10eb20[_0xf652('0x29')],'mobile_number':_0x10eb20[_0xf652('0x29')],'owner_id':_0x10eb20[_0xf652('0x1d')],'created_at':_0x21c50f[_0xf652('0x27')](_0xf652('0x31'))}},'json':!![]};_0x354273[_0xf652('0xe')]=_0x165b1e;logger[_0xf652('0xf')](_0xf652('0x32'));return rp(_0x354273)[_0xf652('0x10')](function(_0x51d84a){_0x10eb20[_0xf652('0x2c')]=_0x51d84a[_0xf652('0x33')]['id'];_0x384056(_0x10eb20);})[_0xf652('0x16')](function(_0x46f58a){logger[_0xf652('0x17')]('['+[_0x1165cb['toUpperCase']()]+']',_0x46f58a['message']);_0x5a048c(_0x46f58a[_0xf652('0x21')]);});});}function getTicket(_0x40466b,_0x5763c7,_0x3f04ff,_0x39bcb2,_0x2e78c4){return function(_0x397462){logger[_0xf652('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x2d12f7,_0x5beebf){var _0x1a4cf5=moment();var _0xf7a0c2={'method':_0xf652('0x2f'),'uri':_0x3f04ff+_0xf652('0x34'),'body':{'title':intUtil[_0xf652('0x35')](_0x39bcb2[_0xf652('0x36')],_0x2e78c4,'\x20'),'description':intUtil['getString'](_0x39bcb2['Descriptions'],_0x2e78c4,'\x0a'),'owner_id':_0x397462[_0xf652('0x1d')],'creater_id':_0x397462[_0xf652('0x14')],'targetable_id':_0x397462['endUserId'],'targetable_type':_0xf652('0x37'),'created_at':_0x1a4cf5['format'](_0xf652('0x31')),'due_date':_0x1a4cf5[_0xf652('0x38')](0x1e,'m')['format'](_0xf652('0x31'))},'json':!![]};_0xf7a0c2['headers']=_0x5763c7;return rp(_0xf7a0c2)['then'](function(_0xdbcbcd){_0x397462['ticketId']=_0xdbcbcd[_0xf652('0x39')]['id'];logger[_0xf652('0xf')]('Task\x20created:',_0x397462[_0xf652('0x3a')]);_0x2d12f7(_0x397462);})[_0xf652('0x16')](function(_0x19c65c){logger[_0xf652('0x17')]('['+[_0x40466b['toUpperCase']()]+']',_0x19c65c[_0xf652('0x21')]);_0x5beebf(_0x19c65c[_0xf652('0x21')]);});});};}function emit(_0x282cf8,_0x36a7e2,_0x10d8fd){var _0x4d4e03={'uri':_0x282cf8+_0xf652('0x3b')+_0x10d8fd};io['to'](util[_0xf652('0x27')](_0xf652('0x3c'),_0x36a7e2))['emit']('trigger:browser:url',_0x4d4e03);}exports['cs']=function(_0x2aff0f,_0x208620,_0x35f009,_0xa286a4,_0x1d0616,_0x4850cb,_0x2c571e,_0x27e738){var _0x103a4d={};var _0x1ee6d7={'Authorization':_0xf652('0x3d')+_0x4850cb['apiKey']};_0x4850cb[_0xf652('0x3e')]=intUtil[_0xf652('0x3f')](_0x4850cb[_0xf652('0x3e')]);_0x4850cb[_0xf652('0x40')]=intUtil[_0xf652('0x3f')](_0x4850cb[_0xf652('0x40')]);var _0x59a455=_0x4850cb[_0xf652('0x3e')];_0x103a4d['adminEmail']=_0x4850cb[_0xf652('0x41')];_0x103a4d[_0xf652('0x29')]=_0x27e738['toLowerCase']()==='outbound'?_0x208620['destcalleridnum']:_0x208620[_0xf652('0x42')];_0x103a4d[_0xf652('0x43')]=_0x27e738==='queue'||_0x27e738===_0xf652('0x44')?_0xf652('0x45'):'outbound';if(_0xa286a4){_0x103a4d[_0xf652('0x1a')]=_0xa286a4[_0xf652('0x1c')];}var _0x12fda4=util[_0xf652('0x27')](_0xf652('0x46'),_0x4850cb[_0xf652('0x40')],_0x208620[_0xf652('0x47')],md5(_0x208620['uniqueid']));if(_0x1d0616&&_0x1d0616[_0xf652('0x48')]){logger[_0xf652('0xf')](_0xf652('0x49'),_0xf652('0x4a'));_0x208620[_0xf652('0x4b')]=_0x12fda4;}else if(_0x2c571e&&_0x2c571e[_0xf652('0x4c')]&&_0x2c571e[_0xf652('0x4c')]!==_0xf652('0x4d')){logger[_0xf652('0xf')](_0xf652('0x4e'),_0xf652('0x4a'));_0x208620[_0xf652('0x4b')]=_0x12fda4;}else{_0x208620[_0xf652('0x4b')]='';}return getAdminId(_0x103a4d,_0x27e738,_0x1ee6d7,_0x59a455)['then'](getUser(_0x27e738,_0x1ee6d7,_0x59a455))[_0xf652('0x10')](getEndUser(_0x27e738,_0x1ee6d7,_0x59a455))['then'](getTicket(_0x27e738,_0x1ee6d7,_0x59a455,_0x35f009,_0x208620))[_0xf652('0x10')](function(_0x2d57a1){logger[_0xf652('0xf')](util[_0xf652('0x27')](_0xf652('0x4f'),_0x2d57a1[_0xf652('0x3a')]));if(_0x27e738!==_0xf652('0x44')){logger[_0xf652('0xf')]('['+[_0x27e738['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x59a455,_0xa286a4['name'],_0x2d57a1[_0xf652('0x2c')]);}})[_0xf652('0x16')](function(_0x114493){logger[_0xf652('0x17')]('['+[_0x27e738[_0xf652('0x20')]()]+_0xf652('0x50'),util[_0xf652('0x51')](_0x114493,{'showHidden':!![],'depth':null}));});};