Built motion from commit ab870f9e.|2.5.44
[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 _0x5cb9=['Getting\x20user\x20with\x20email','userEmail','email','userId','User\x20found:','Admin\x20selected','error','&f=','&entities=contact','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','then','endUserId','work_number','Contact\x20found\x20work_number:','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','POST','getString','Subjects','Contact','add','Task\x20created:','ticketId','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','outbound','destcalleridnum','calleridnum','unmanaged','queue','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','users','length','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','headers','Getting\x20user\x20list','agentEmail'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5cb9,0x8b));var _0x95cb=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x5cb9[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x95cb('0x0'));var rp=require(_0x95cb('0x1'));var md5=require(_0x95cb('0x2'));var util=require('util');var moment=require(_0x95cb('0x3'));var Promise=require(_0x95cb('0x4'));var Redis=require(_0x95cb('0x5'));var intUtil=require(_0x95cb('0x6'));var config=require(_0x95cb('0x7'));var logger=require(_0x95cb('0x8'))('freshsales');config[_0x95cb('0x9')]=_[_0x95cb('0xa')](config['redis'],{'host':_0x95cb('0xb'),'port':0x18eb});var io=require(_0x95cb('0xc'))(new Redis(config['redis']));function getAdminId(_0x42c52e,_0x9c0d5c,_0x5cf937,_0x218abc){return new Promise(function(_0x58f909,_0x57b861){var _0x2ad4dd=![];var _0x19de6d={'method':_0x95cb('0xd'),'uri':_0x218abc+_0x95cb('0xe'),'json':!![]};_0x19de6d['headers']=_0x5cf937;logger[_0x95cb('0xf')](_0x95cb('0x10'));return rp(_0x19de6d)['then'](function(_0x402bbb){if(_0x402bbb){var _0x35400b=_0x402bbb[_0x95cb('0x11')];var _0x5cea1b=null;for(_0x5cea1b=0x0;_0x5cea1b<_0x35400b[_0x95cb('0x12')];_0x5cea1b++){if(_0x35400b[_0x5cea1b]['email']===_0x42c52e[_0x95cb('0x13')]){_0x42c52e[_0x95cb('0x14')]=_0x35400b[_0x5cea1b]['id'];_0x2ad4dd=!![];}}if(_0x2ad4dd){logger[_0x95cb('0xf')](_0x95cb('0x15'),_0x42c52e['adminId']);_0x58f909(_0x42c52e);}else{_0x57b861({'statusCode':0x194,'message':_0x95cb('0x16')});}}else{_0x57b861({'statusCode':0x194,'message':_0x95cb('0x16')});}})[_0x95cb('0x17')](function(_0x3d43cc){logger['error']('['+[_0x9c0d5c[_0x95cb('0x18')]()]+']',_0x3d43cc[_0x95cb('0x19')]);_0x57b861(_0x3d43cc);});});}function getUser(_0xc7e800,_0x4ab91c,_0x4d68f3){return function(_0x3a6d57){return new Promise(function(_0x35181a,_0x37ff96){var _0x3f3792={'method':_0x95cb('0xd'),'uri':_0x4d68f3+_0x95cb('0xe'),'json':!![]};_0x3f3792[_0x95cb('0x1a')]=_0x4ab91c;logger[_0x95cb('0xf')](_0x95cb('0x1b'));return rp(_0x3f3792)['then'](function(_0x1a439c){if(_0x1a439c){var _0x3d03e0=_0x1a439c[_0x95cb('0x11')];var _0x29e88e=![];var _0x507ed6=null;if(_0x3a6d57[_0x95cb('0x1c')]!==null){logger[_0x95cb('0xf')](_0x95cb('0x1d'),_0x3a6d57['agentEmail']);_0x3a6d57[_0x95cb('0x1e')]=_0x3a6d57['agentEmail'];for(_0x507ed6=0x0;_0x507ed6<_0x3d03e0[_0x95cb('0x12')];_0x507ed6++){if(_0x3d03e0[_0x507ed6][_0x95cb('0x1f')]===_0x3a6d57['agentEmail']){_0x29e88e=!![];_0x3a6d57[_0x95cb('0x20')]=_0x3d03e0[_0x507ed6]['id'];logger[_0x95cb('0xf')](_0x95cb('0x21'),_0x3a6d57[_0x95cb('0x20')]);}}}if(!_0x29e88e){logger[_0x95cb('0xf')](_0x95cb('0x22'));_0x3a6d57[_0x95cb('0x1e')]=_0x3a6d57[_0x95cb('0x13')];_0x3a6d57[_0x95cb('0x20')]=_0x3a6d57[_0x95cb('0x14')];_0x29e88e=!![];}if(_0x29e88e){_0x35181a(_0x3a6d57);}else{_0x37ff96({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x37ff96({'statusCode':0x194,'message':_0x95cb('0x16')});}})['catch'](function(_0x1cfe9a){logger[_0x95cb('0x23')]('['+[_0xc7e800[_0x95cb('0x18')]()]+']',_0x1cfe9a[_0x95cb('0x19')]);_0x37ff96(_0x1cfe9a);});});};}function searchContact(_0x3ff4fb,_0x226185,_0x5a38f6,_0x22895e){return new Promise(function(_0x53d374,_0x2b2883){var _0x1ecf35={'method':_0x95cb('0xd'),'headers':_0x226185,'uri':_0x3ff4fb+'/api/lookup?q='+_0x22895e+_0x95cb('0x24')+_0x5a38f6+_0x95cb('0x25'),'json':!![]};rp(_0x1ecf35)['then'](function(_0x407122){var _0x3538ce=_['find'](_0x407122[_0x95cb('0x26')][_0x95cb('0x26')],[_0x5a38f6,_0x22895e]);_0x53d374(_0x3538ce);})[_0x95cb('0x17')](function(_0x351ec1){_0x2b2883(_0x351ec1);});});}function getEndUser(_0xc94949,_0x1f55f8,_0x52ab58){return function(_0x17e3c1){return new Promise(function(_0x215f61,_0x142654){logger['info'](util['format'](_0x95cb('0x27'),_0x17e3c1[_0x95cb('0x28')]));searchContact(_0x52ab58,_0x1f55f8,_0x95cb('0x29'),_0x17e3c1[_0x95cb('0x28')])[_0x95cb('0x2a')](function(_0x49b9fd){if(_0x49b9fd){_0x17e3c1[_0x95cb('0x2b')]=_0x49b9fd['id'];logger[_0x95cb('0xf')]('Contact\x20found\x20mobile_number:',_0x17e3c1[_0x95cb('0x2b')]);return _0x215f61(_0x17e3c1);}searchContact(_0x52ab58,_0x1f55f8,_0x95cb('0x2c'),_0x17e3c1[_0x95cb('0x28')])[_0x95cb('0x2a')](function(_0x1742c0){if(_0x1742c0){_0x17e3c1[_0x95cb('0x2b')]=_0x1742c0['id'];logger[_0x95cb('0xf')](_0x95cb('0x2d'),_0x17e3c1['endUserId']);return _0x215f61(_0x17e3c1);}createEndUser(_0x17e3c1,_0xc94949,_0x1f55f8,_0x52ab58)[_0x95cb('0x2a')](function(_0x4faff4){logger['info']('Contact\x20created:',_0x4faff4[_0x95cb('0x2b')]);return _0x215f61(_0x4faff4);});});})['catch'](function(_0x3d1d0e){_0x142654(_0x3d1d0e);});});};}function createEndUser(_0x1d32f2,_0x107583,_0x4bdc20,_0x202c7a){return new Promise(function(_0x439cb8,_0x133c9e){var _0x54a7a9=moment();var _0x5115c8={'method':'POST','uri':_0x202c7a+_0x95cb('0x2e'),'body':{'contact':{'last_name':_0x1d32f2[_0x95cb('0x28')],'work_number':_0x1d32f2[_0x95cb('0x28')],'mobile_number':_0x1d32f2['contactNumber'],'owner_id':_0x1d32f2[_0x95cb('0x20')],'created_at':_0x54a7a9[_0x95cb('0x2f')](_0x95cb('0x30'))}},'json':!![]};_0x5115c8[_0x95cb('0x1a')]=_0x4bdc20;logger[_0x95cb('0xf')](_0x95cb('0x31'));return rp(_0x5115c8)[_0x95cb('0x2a')](function(_0x439da4){_0x1d32f2[_0x95cb('0x2b')]=_0x439da4[_0x95cb('0x32')]['id'];_0x439cb8(_0x1d32f2);})[_0x95cb('0x17')](function(_0xceac2){logger[_0x95cb('0x23')]('['+[_0x107583[_0x95cb('0x18')]()]+']',_0xceac2['message']);_0x133c9e(_0xceac2[_0x95cb('0x19')]);});});}function getTicket(_0x307f68,_0x3a440f,_0x578481,_0x2d58b9,_0x40ef12){return function(_0x1d2afa){logger[_0x95cb('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x329493,_0x2da305){var _0x2c4919=moment();var _0x5725a5={'method':_0x95cb('0x33'),'uri':_0x578481+'/api/tasks','body':{'title':intUtil[_0x95cb('0x34')](_0x2d58b9[_0x95cb('0x35')],_0x40ef12,'\x20'),'description':intUtil[_0x95cb('0x34')](_0x2d58b9['Descriptions'],_0x40ef12,'\x0a'),'owner_id':_0x1d2afa[_0x95cb('0x20')],'creater_id':_0x1d2afa['adminId'],'targetable_id':_0x1d2afa[_0x95cb('0x2b')],'targetable_type':_0x95cb('0x36'),'created_at':_0x2c4919[_0x95cb('0x2f')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x2c4919[_0x95cb('0x37')](0x1e,'m')['format'](_0x95cb('0x30'))},'json':!![]};_0x5725a5['headers']=_0x3a440f;return rp(_0x5725a5)[_0x95cb('0x2a')](function(_0x1e8bf0){_0x1d2afa['ticketId']=_0x1e8bf0['task']['id'];logger[_0x95cb('0xf')](_0x95cb('0x38'),_0x1d2afa[_0x95cb('0x39')]);_0x329493(_0x1d2afa);})[_0x95cb('0x17')](function(_0x93f5f3){logger['error']('['+[_0x307f68[_0x95cb('0x18')]()]+']',_0x93f5f3['message']);_0x2da305(_0x93f5f3[_0x95cb('0x19')]);});});};}function emit(_0x155346,_0x23fa80,_0x39d366){var _0x58d0a3={'uri':_0x155346+_0x95cb('0x3a')+_0x39d366};io['to'](util[_0x95cb('0x2f')](_0x95cb('0x3b'),_0x23fa80))[_0x95cb('0x3c')](_0x95cb('0x3d'),_0x58d0a3);}exports['cs']=function(_0x361c7d,_0x2292c1,_0x3f8fa3,_0xe72338,_0x1a2103,_0x4e9a8d,_0x505c83,_0x5ad8b7){var _0x46b984={};var _0x5d3d56={'Authorization':_0x95cb('0x3e')+_0x4e9a8d[_0x95cb('0x3f')]};_0x4e9a8d[_0x95cb('0x40')]=intUtil[_0x95cb('0x41')](_0x4e9a8d[_0x95cb('0x40')]);_0x4e9a8d[_0x95cb('0x42')]=intUtil[_0x95cb('0x41')](_0x4e9a8d[_0x95cb('0x42')]);var _0x17e09f=_0x4e9a8d['remoteUri'];_0x46b984['adminEmail']=_0x4e9a8d[_0x95cb('0x43')];_0x46b984['contactNumber']=_0x5ad8b7['toLowerCase']()===_0x95cb('0x44')?_0x2292c1[_0x95cb('0x45')]:_0x2292c1[_0x95cb('0x46')];_0x46b984['callDirection']=_0x5ad8b7==='queue'||_0x5ad8b7===_0x95cb('0x47')?_0x95cb('0x48'):_0x95cb('0x44');if(_0xe72338){_0x46b984['agentEmail']=_0xe72338[_0x95cb('0x1f')];}var _0x5a2aca=util[_0x95cb('0x2f')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4e9a8d['serverUrl'],_0x2292c1['uniqueid'],md5(_0x2292c1[_0x95cb('0x49')]));if(_0x1a2103&&_0x1a2103['monitor_format']){logger[_0x95cb('0xf')](_0x95cb('0x4a'),_0x95cb('0x4b'));_0x2292c1[_0x95cb('0x4c')]=_0x5a2aca;}else if(_0x505c83&&_0x505c83['recordingFormat']&&_0x505c83[_0x95cb('0x4d')]!==_0x95cb('0x4e')){logger[_0x95cb('0xf')](_0x95cb('0x4f'),'Recording\x20is\x20enabled!');_0x2292c1[_0x95cb('0x4c')]=_0x5a2aca;}else{_0x2292c1[_0x95cb('0x4c')]='';}return getAdminId(_0x46b984,_0x5ad8b7,_0x5d3d56,_0x17e09f)['then'](getUser(_0x5ad8b7,_0x5d3d56,_0x17e09f))[_0x95cb('0x2a')](getEndUser(_0x5ad8b7,_0x5d3d56,_0x17e09f))[_0x95cb('0x2a')](getTicket(_0x5ad8b7,_0x5d3d56,_0x17e09f,_0x3f8fa3,_0x2292c1))['then'](function(_0xa39f0a){logger[_0x95cb('0xf')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0xa39f0a[_0x95cb('0x39')]));if(_0x5ad8b7!=='unmanaged'){logger[_0x95cb('0xf')]('['+[_0x5ad8b7[_0x95cb('0x18')]()]+']',_0x95cb('0x50'));emit(_0x17e09f,_0xe72338[_0x95cb('0x51')],_0xa39f0a[_0x95cb('0x2b')]);}})['catch'](function(_0x3c81f0){logger[_0x95cb('0x23')]('['+[_0x5ad8b7[_0x95cb('0x18')]()]+_0x95cb('0x52'),util[_0x95cb('0x53')](_0x3c81f0,{'showHidden':!![],'depth':null}));});};