Built motion from commit (unavailable).|2.5.3
[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 _0x5ad7=['Task\x20created:','/contacts/','user:%s','emit','Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','request-promise','md5','util','moment','bluebird','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','User\x20found:','adminEmail','adminId','toUpperCase','message','/api/contacts/filters','forEach','name','All\x20Contacts','Getting\x20contact\x20list','/api/contacts/view/','Searching\x20contact\x20with\x20phone','contacts','work_number','contactNumber','mobile_number','endUserId','Contact\x20found:','Contact\x20created:','POST','/api/contacts','format','contact','Creating\x20new\x20task','getString','Subjects','YYYY-MM-DDTHH:mm:ss','add','ticketId'];(function(_0x4687cc,_0x2b5856){var _0x3b705e=function(_0x160d2a){while(--_0x160d2a){_0x4687cc['push'](_0x4687cc['shift']());}};_0x3b705e(++_0x2b5856);}(_0x5ad7,0xbb));var _0x75ad=function(_0x5cd7c8,_0x8a58aa){_0x5cd7c8=_0x5cd7c8-0x0;var _0x595d51=_0x5ad7[_0x5cd7c8];return _0x595d51;};'use strict';var _=require('lodash');var rp=require(_0x75ad('0x0'));var md5=require(_0x75ad('0x1'));var util=require(_0x75ad('0x2'));var moment=require(_0x75ad('0x3'));var Promise=require(_0x75ad('0x4'));var Redis=require('ioredis');var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x75ad('0x5'));config[_0x75ad('0x6')]=_['defaults'](config[_0x75ad('0x6')],{'host':_0x75ad('0x7'),'port':0x18eb});var io=require(_0x75ad('0x8'))(new Redis(config[_0x75ad('0x6')]));function getAdminId(_0x5e5658,_0x4bdfa4,_0x3f09e7,_0x36c3a5){return new Promise(function(_0x7797e1,_0x2abfbd){var _0x1afc42=![];var _0x4d602a={'method':_0x75ad('0x9'),'uri':_0x36c3a5+_0x75ad('0xa'),'json':!![]};_0x4d602a[_0x75ad('0xb')]=_0x3f09e7;logger[_0x75ad('0xc')](_0x75ad('0xd'));return rp(_0x4d602a)[_0x75ad('0xe')](function(_0x17dc68){if(_0x17dc68){var _0x879f54=_0x17dc68[_0x75ad('0xf')];var _0x304ab0=null;for(_0x304ab0=0x0;_0x304ab0<_0x879f54[_0x75ad('0x10')];_0x304ab0++){if(_0x879f54[_0x304ab0][_0x75ad('0x11')]===_0x5e5658['adminEmail']){_0x5e5658['adminId']=_0x879f54[_0x304ab0]['id'];_0x1afc42=!![];}}if(_0x1afc42){logger[_0x75ad('0xc')](_0x75ad('0x12'),_0x5e5658['adminId']);_0x7797e1(_0x5e5658);}else{_0x2abfbd({'statusCode':0x194,'message':_0x75ad('0x13')});}}else{_0x2abfbd({'statusCode':0x194,'message':_0x75ad('0x13')});}})[_0x75ad('0x14')](function(_0x43ebb4){logger[_0x75ad('0x15')]('['+[_0x4bdfa4['toUpperCase']()]+']',_0x43ebb4['message']);_0x2abfbd(_0x43ebb4);});});}function getUser(_0x36bb96,_0x3d1763,_0x5364b4){return function(_0x5aa1c2){return new Promise(function(_0x26cc67,_0x4dc318){var _0x405011={'method':_0x75ad('0x9'),'uri':_0x5364b4+_0x75ad('0xa'),'json':!![]};_0x405011[_0x75ad('0xb')]=_0x3d1763;logger[_0x75ad('0xc')](_0x75ad('0x16'));return rp(_0x405011)[_0x75ad('0xe')](function(_0x5a0172){if(_0x5a0172){var _0x4d4e6b=_0x5a0172['users'];var _0xbee655=![];var _0x2d3b54=null;if(_0x5aa1c2['agentEmail']!==null){logger[_0x75ad('0xc')](_0x75ad('0x17'),_0x5aa1c2[_0x75ad('0x18')]);_0x5aa1c2[_0x75ad('0x19')]=_0x5aa1c2['agentEmail'];for(_0x2d3b54=0x0;_0x2d3b54<_0x4d4e6b[_0x75ad('0x10')];_0x2d3b54++){if(_0x4d4e6b[_0x2d3b54][_0x75ad('0x11')]===_0x5aa1c2[_0x75ad('0x18')]){_0xbee655=!![];_0x5aa1c2[_0x75ad('0x1a')]=_0x4d4e6b[_0x2d3b54]['id'];logger[_0x75ad('0xc')](_0x75ad('0x1b'),_0x5aa1c2[_0x75ad('0x1a')]);}}}if(!_0xbee655){logger['info']('Admin\x20selected');_0x5aa1c2[_0x75ad('0x19')]=_0x5aa1c2[_0x75ad('0x1c')];_0x5aa1c2['userId']=_0x5aa1c2[_0x75ad('0x1d')];_0xbee655=!![];}if(_0xbee655){_0x26cc67(_0x5aa1c2);}else{_0x4dc318({'statusCode':0x194,'message':_0x75ad('0x13')});}}else{_0x4dc318({'statusCode':0x194,'message':_0x75ad('0x13')});}})[_0x75ad('0x14')](function(_0x21880b){logger[_0x75ad('0x15')]('['+[_0x36bb96[_0x75ad('0x1e')]()]+']',_0x21880b[_0x75ad('0x1f')]);_0x4dc318(_0x21880b);});});};}function getEndUser(_0xd2a61c,_0x295dca,_0x1dc75c){return function(_0x56016a){return new Promise(function(_0x541077,_0x16056f){var _0x1eb708=0x0;var _0x51c78={'method':'GET','uri':_0x1dc75c+_0x75ad('0x20'),'json':!![]};_0x51c78['headers']=_0x295dca;logger[_0x75ad('0xc')]('Getting\x20contacts\x20filter');return rp(_0x51c78)['then'](function(_0x165a0c){_0x165a0c['filters'][_0x75ad('0x21')](function(_0x13b4fa){if(_0x13b4fa[_0x75ad('0x22')]===_0x75ad('0x23')){_0x1eb708=_0x13b4fa['id'];}});})[_0x75ad('0xe')](function(){logger[_0x75ad('0xc')](_0x75ad('0x24'));var _0x136aa1={'method':_0x75ad('0x9'),'uri':_0x1dc75c+_0x75ad('0x25')+_0x1eb708,'json':!![]};_0x136aa1['headers']=_0x295dca;return rp(_0x136aa1);})[_0x75ad('0xe')](function(_0x1fabaf){logger[_0x75ad('0xc')](_0x75ad('0x26'),_0x56016a['contactNumber']);if(_0x1fabaf[_0x75ad('0x27')]['length']>0x0){var _0x3789ac=_['find'](_0x1fabaf['contacts'],function(_0x20170a){if(_0x20170a[_0x75ad('0x28')]===_0x56016a[_0x75ad('0x29')]||_0x20170a[_0x75ad('0x2a')]===_0x56016a[_0x75ad('0x29')]){return _0x20170a;}});if(_0x3789ac){_0x56016a[_0x75ad('0x2b')]=_0x3789ac['id'];logger[_0x75ad('0xc')](_0x75ad('0x2c'),_0x56016a[_0x75ad('0x2b')]);_0x541077(_0x56016a);}else{return createEndUser(_0x56016a,_0xd2a61c,_0x295dca,_0x1dc75c)[_0x75ad('0xe')](function(_0x4ae523){logger[_0x75ad('0xc')](_0x75ad('0x2d'),_0x56016a[_0x75ad('0x2b')]);_0x541077(_0x4ae523);});}}else{return createEndUser(_0x56016a,_0xd2a61c,_0x295dca,_0x1dc75c)['then'](function(_0x2ccd28){logger[_0x75ad('0xc')](_0x75ad('0x2d'),_0x56016a[_0x75ad('0x2b')]);_0x541077(_0x2ccd28);});}})[_0x75ad('0x14')](function(_0x41fb1e){throw new Error(_0x41fb1e['message']);});});};}function createEndUser(_0x4cc5d5,_0x572344,_0x15b79c,_0x11aedc){return new Promise(function(_0x55d5e8,_0x236f58){var _0x565694=moment();var _0x417c38={'method':_0x75ad('0x2e'),'uri':_0x11aedc+_0x75ad('0x2f'),'body':{'contact':{'last_name':_0x4cc5d5[_0x75ad('0x29')],'work_number':_0x4cc5d5[_0x75ad('0x29')],'mobile_number':_0x4cc5d5[_0x75ad('0x29')],'owner_id':_0x4cc5d5[_0x75ad('0x1a')],'created_at':_0x565694[_0x75ad('0x30')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x417c38[_0x75ad('0xb')]=_0x15b79c;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x417c38)[_0x75ad('0xe')](function(_0x1ffd5){_0x4cc5d5['endUserId']=_0x1ffd5[_0x75ad('0x31')]['id'];_0x55d5e8(_0x4cc5d5);})[_0x75ad('0x14')](function(_0x4ea75a){logger[_0x75ad('0x15')]('['+[_0x572344[_0x75ad('0x1e')]()]+']',_0x4ea75a['message']);_0x236f58(_0x4ea75a['message']);});});}function getTicket(_0x1305f1,_0x289275,_0xed5fee,_0x16d755,_0x8997e0){return function(_0x3a6f9b){logger[_0x75ad('0xc')](_0x75ad('0x32'));return new Promise(function(_0x110002,_0x4948d3){var _0x2891fb=moment();var _0x5afc87={'method':_0x75ad('0x2e'),'uri':_0xed5fee+'/api/tasks','body':{'title':intUtil[_0x75ad('0x33')](_0x16d755[_0x75ad('0x34')],_0x8997e0,'\x20'),'description':intUtil[_0x75ad('0x33')](_0x16d755['Descriptions'],_0x8997e0,'\x0a'),'owner_id':_0x3a6f9b['userId'],'creater_id':_0x3a6f9b[_0x75ad('0x1d')],'targetable_id':_0x3a6f9b[_0x75ad('0x2b')],'targetable_type':'Contact','created_at':_0x2891fb[_0x75ad('0x30')](_0x75ad('0x35')),'due_date':_0x2891fb[_0x75ad('0x36')](0x1e,'m')[_0x75ad('0x30')](_0x75ad('0x35'))},'json':!![]};_0x5afc87[_0x75ad('0xb')]=_0x289275;return rp(_0x5afc87)[_0x75ad('0xe')](function(_0xb07754){_0x3a6f9b[_0x75ad('0x37')]=_0xb07754['task']['id'];logger[_0x75ad('0xc')](_0x75ad('0x38'),_0x3a6f9b[_0x75ad('0x37')]);_0x110002(_0x3a6f9b);})[_0x75ad('0x14')](function(_0x31e954){logger[_0x75ad('0x15')]('['+[_0x1305f1[_0x75ad('0x1e')]()]+']',_0x31e954[_0x75ad('0x1f')]);_0x4948d3(_0x31e954[_0x75ad('0x1f')]);});});};}function emit(_0x311cc9,_0x2991ad,_0x1ef18e){var _0x17852b={'uri':_0x311cc9+_0x75ad('0x39')+_0x1ef18e};io['to'](util[_0x75ad('0x30')](_0x75ad('0x3a'),_0x2991ad))[_0x75ad('0x3b')]('trigger:browser:url',_0x17852b);}exports['cs']=function(_0x47fda8,_0x4d6697,_0x17ce0f,_0x14678f,_0x4bf27b,_0x31842b,_0x3b5e62,_0x307a29){var _0xb75909={};var _0x42f62c={'Authorization':_0x75ad('0x3c')+_0x31842b[_0x75ad('0x3d')]};_0x31842b[_0x75ad('0x3e')]=intUtil['stripTrailingSlash'](_0x31842b[_0x75ad('0x3e')]);_0x31842b[_0x75ad('0x3f')]=intUtil[_0x75ad('0x40')](_0x31842b[_0x75ad('0x3f')]);var _0x2eabf4=_0x31842b[_0x75ad('0x3e')];_0xb75909[_0x75ad('0x1c')]=_0x31842b[_0x75ad('0x41')];_0xb75909[_0x75ad('0x29')]=_0x307a29[_0x75ad('0x42')]()===_0x75ad('0x43')?_0x4d6697[_0x75ad('0x44')]:_0x4d6697['calleridnum'];_0xb75909[_0x75ad('0x45')]=_0x307a29===_0x75ad('0x46')||_0x307a29==='unmanaged'?_0x75ad('0x46'):'outbound';if(_0x14678f){_0xb75909['agentEmail']=_0x14678f[_0x75ad('0x11')];}var _0xf62eec=util[_0x75ad('0x30')](_0x75ad('0x47'),_0x31842b['serverUrl'],_0x4d6697[_0x75ad('0x48')],md5(_0x4d6697[_0x75ad('0x48')]));if(_0x4bf27b&&_0x4bf27b['monitor_format']){logger['info'](_0x75ad('0x49'),'Recording\x20is\x20enabled!');_0x4d6697['recordingURL']=_0xf62eec;}else if(_0x3b5e62&&_0x3b5e62[_0x75ad('0x4a')]&&_0x3b5e62[_0x75ad('0x4a')]!=='none'){logger[_0x75ad('0xc')](_0x75ad('0x4b'),'Recording\x20is\x20enabled!');_0x4d6697[_0x75ad('0x4c')]=_0xf62eec;}else{_0x4d6697[_0x75ad('0x4c')]='';}return getAdminId(_0xb75909,_0x307a29,_0x42f62c,_0x2eabf4)[_0x75ad('0xe')](getUser(_0x307a29,_0x42f62c,_0x2eabf4))[_0x75ad('0xe')](getEndUser(_0x307a29,_0x42f62c,_0x2eabf4))[_0x75ad('0xe')](getTicket(_0x307a29,_0x42f62c,_0x2eabf4,_0x17ce0f,_0x4d6697))[_0x75ad('0xe')](function(_0x3d4bea){logger[_0x75ad('0xc')](util['format'](_0x75ad('0x4d'),_0x3d4bea[_0x75ad('0x37')]));if(_0x307a29!==_0x75ad('0x4e')){logger[_0x75ad('0xc')]('['+[_0x307a29['toUpperCase']()]+']',_0x75ad('0x4f'));emit(_0x2eabf4,_0x14678f['name'],_0x3d4bea[_0x75ad('0x2b')]);}})[_0x75ad('0x14')](function(_0x2188d9){logger[_0x75ad('0x15')]('['+[_0x307a29[_0x75ad('0x1e')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x75ad('0x50')](_0x2188d9,{'showHidden':!![],'depth':null}));});};