Built motion from commit e0fa946e.|2.6.5
[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 _0xc493=['contacts','format','mobile_number','contactNumber','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','add','ticketId','Task\x20created:','error','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','calleridnum','callDirection','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','name','inspect','lodash','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','toUpperCase','message','Getting\x20user\x20list','then','agentEmail','Getting\x20user\x20with\x20email','userId','Admin\x20selected','userEmail','catch','/api/lookup?q=','&entities=contact','find'];(function(_0x13d2ca,_0x5bb1ea){var _0x35477b=function(_0x4f323e){while(--_0x4f323e){_0x13d2ca['push'](_0x13d2ca['shift']());}};_0x35477b(++_0x5bb1ea);}(_0xc493,0x18d));var _0x3c49=function(_0x2e2530,_0x19db59){_0x2e2530=_0x2e2530-0x0;var _0x5d6c91=_0xc493[_0x2e2530];return _0x5d6c91;};'use strict';var _=require(_0x3c49('0x0'));var rp=require(_0x3c49('0x1'));var md5=require(_0x3c49('0x2'));var util=require(_0x3c49('0x3'));var moment=require('moment');var Promise=require(_0x3c49('0x4'));var Redis=require(_0x3c49('0x5'));var intUtil=require(_0x3c49('0x6'));var config=require(_0x3c49('0x7'));var logger=require(_0x3c49('0x8'))(_0x3c49('0x9'));config['redis']=_[_0x3c49('0xa')](config[_0x3c49('0xb')],{'host':_0x3c49('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0xb850a9,_0x409b4a,_0x366ae4,_0x414a1f){return new Promise(function(_0x33bb75,_0x432fe9){var _0x5b3340=![];var _0x31773c={'method':_0x3c49('0xd'),'uri':_0x414a1f+_0x3c49('0xe'),'json':!![]};_0x31773c[_0x3c49('0xf')]=_0x366ae4;logger[_0x3c49('0x10')](_0x3c49('0x11'));return rp(_0x31773c)['then'](function(_0x3beefb){if(_0x3beefb){var _0x35e70f=_0x3beefb[_0x3c49('0x12')];var _0x511377=null;for(_0x511377=0x0;_0x511377<_0x35e70f[_0x3c49('0x13')];_0x511377++){if(_0x35e70f[_0x511377][_0x3c49('0x14')]===_0xb850a9[_0x3c49('0x15')]){_0xb850a9[_0x3c49('0x16')]=_0x35e70f[_0x511377]['id'];_0x5b3340=!![];}}if(_0x5b3340){logger[_0x3c49('0x10')](_0x3c49('0x17'),_0xb850a9[_0x3c49('0x16')]);_0x33bb75(_0xb850a9);}else{_0x432fe9({'statusCode':0x194,'message':_0x3c49('0x18')});}}else{_0x432fe9({'statusCode':0x194,'message':_0x3c49('0x18')});}})['catch'](function(_0x102090){logger['error']('['+[_0x409b4a[_0x3c49('0x19')]()]+']',_0x102090[_0x3c49('0x1a')]);_0x432fe9(_0x102090);});});}function getUser(_0x54df63,_0x18b140,_0x41a571){return function(_0x2c1714){return new Promise(function(_0x4a9ba1,_0x1219a8){var _0x174109={'method':_0x3c49('0xd'),'uri':_0x41a571+_0x3c49('0xe'),'json':!![]};_0x174109[_0x3c49('0xf')]=_0x18b140;logger[_0x3c49('0x10')](_0x3c49('0x1b'));return rp(_0x174109)[_0x3c49('0x1c')](function(_0x33f043){if(_0x33f043){var _0x5011b0=_0x33f043[_0x3c49('0x12')];var _0x260d3c=![];var _0x210206=null;if(_0x2c1714[_0x3c49('0x1d')]!==null){logger[_0x3c49('0x10')](_0x3c49('0x1e'),_0x2c1714['agentEmail']);_0x2c1714['userEmail']=_0x2c1714['agentEmail'];for(_0x210206=0x0;_0x210206<_0x5011b0['length'];_0x210206++){if(_0x5011b0[_0x210206]['email']===_0x2c1714['agentEmail']){_0x260d3c=!![];_0x2c1714[_0x3c49('0x1f')]=_0x5011b0[_0x210206]['id'];logger[_0x3c49('0x10')]('User\x20found:',_0x2c1714[_0x3c49('0x1f')]);}}}if(!_0x260d3c){logger[_0x3c49('0x10')](_0x3c49('0x20'));_0x2c1714[_0x3c49('0x21')]=_0x2c1714['adminEmail'];_0x2c1714[_0x3c49('0x1f')]=_0x2c1714['adminId'];_0x260d3c=!![];}if(_0x260d3c){_0x4a9ba1(_0x2c1714);}else{_0x1219a8({'statusCode':0x194,'message':_0x3c49('0x18')});}}else{_0x1219a8({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x3c49('0x22')](function(_0x505d81){logger['error']('['+[_0x54df63[_0x3c49('0x19')]()]+']',_0x505d81[_0x3c49('0x1a')]);_0x1219a8(_0x505d81);});});};}function searchContact(_0x415d41,_0x2539ce,_0x502529,_0xb4c211){return new Promise(function(_0x14e5d1,_0x43e3e4){var _0x27d533={'method':'GET','headers':_0x2539ce,'uri':_0x415d41+_0x3c49('0x23')+_0xb4c211+'&f='+_0x502529+_0x3c49('0x24'),'json':!![]};rp(_0x27d533)[_0x3c49('0x1c')](function(_0x4efae8){var _0x321c76=_[_0x3c49('0x25')](_0x4efae8['contacts'][_0x3c49('0x26')],[_0x502529,_0xb4c211]);_0x14e5d1(_0x321c76);})[_0x3c49('0x22')](function(_0x5f59fe){_0x43e3e4(_0x5f59fe);});});}function getEndUser(_0x50f8b9,_0x352292,_0x486321){return function(_0x29da17){return new Promise(function(_0x7f33cf,_0x3d755c){logger[_0x3c49('0x10')](util[_0x3c49('0x27')]('Searching\x20contact\x20with\x20phone\x20%s',_0x29da17['contactNumber']));searchContact(_0x486321,_0x352292,_0x3c49('0x28'),_0x29da17[_0x3c49('0x29')])[_0x3c49('0x1c')](function(_0x3fde1f){if(_0x3fde1f){_0x29da17[_0x3c49('0x2a')]=_0x3fde1f['id'];logger[_0x3c49('0x10')]('Contact\x20found\x20mobile_number:',_0x29da17[_0x3c49('0x2a')]);return _0x7f33cf(_0x29da17);}searchContact(_0x486321,_0x352292,_0x3c49('0x2b'),_0x29da17[_0x3c49('0x29')])[_0x3c49('0x1c')](function(_0x18122f){if(_0x18122f){_0x29da17['endUserId']=_0x18122f['id'];logger[_0x3c49('0x10')](_0x3c49('0x2c'),_0x29da17[_0x3c49('0x2a')]);return _0x7f33cf(_0x29da17);}createEndUser(_0x29da17,_0x50f8b9,_0x352292,_0x486321)[_0x3c49('0x1c')](function(_0x1aaf13){logger[_0x3c49('0x10')](_0x3c49('0x2d'),_0x1aaf13[_0x3c49('0x2a')]);return _0x7f33cf(_0x1aaf13);});});})[_0x3c49('0x22')](function(_0x3d8eca){_0x3d755c(_0x3d8eca);});});};}function createEndUser(_0x6c198e,_0x34987f,_0x19f939,_0x21a7d6){return new Promise(function(_0x22c298,_0x506748){var _0x3b1461=moment();var _0x4425f4={'method':_0x3c49('0x2e'),'uri':_0x21a7d6+_0x3c49('0x2f'),'body':{'contact':{'last_name':_0x6c198e[_0x3c49('0x29')],'work_number':_0x6c198e[_0x3c49('0x29')],'mobile_number':_0x6c198e[_0x3c49('0x29')],'owner_id':_0x6c198e[_0x3c49('0x1f')],'created_at':_0x3b1461[_0x3c49('0x27')](_0x3c49('0x30'))}},'json':!![]};_0x4425f4[_0x3c49('0xf')]=_0x19f939;logger['info'](_0x3c49('0x31'));return rp(_0x4425f4)['then'](function(_0x5a652b){_0x6c198e[_0x3c49('0x2a')]=_0x5a652b[_0x3c49('0x32')]['id'];_0x22c298(_0x6c198e);})[_0x3c49('0x22')](function(_0x415b84){logger['error']('['+[_0x34987f[_0x3c49('0x19')]()]+']',_0x415b84['message']);_0x506748(_0x415b84[_0x3c49('0x1a')]);});});}function getTicket(_0x5d64d2,_0x222046,_0x5ecbe0,_0x422bc5,_0x2372b4){return function(_0x1210d2){logger[_0x3c49('0x10')](_0x3c49('0x33'));return new Promise(function(_0x388614,_0x16a4c1){var _0x2f6e68=moment();var _0x199288={'method':_0x3c49('0x2e'),'uri':_0x5ecbe0+_0x3c49('0x34'),'body':{'title':intUtil[_0x3c49('0x35')](_0x422bc5[_0x3c49('0x36')],_0x2372b4,'\x20'),'description':intUtil[_0x3c49('0x35')](_0x422bc5[_0x3c49('0x37')],_0x2372b4,'\x0a'),'owner_id':_0x1210d2[_0x3c49('0x1f')],'creater_id':_0x1210d2[_0x3c49('0x16')],'targetable_id':_0x1210d2['endUserId'],'targetable_type':_0x3c49('0x38'),'created_at':_0x2f6e68[_0x3c49('0x27')](_0x3c49('0x30')),'due_date':_0x2f6e68[_0x3c49('0x39')](0x1e,'m')[_0x3c49('0x27')](_0x3c49('0x30'))},'json':!![]};_0x199288[_0x3c49('0xf')]=_0x222046;return rp(_0x199288)['then'](function(_0x4b79e5){_0x1210d2[_0x3c49('0x3a')]=_0x4b79e5['task']['id'];logger[_0x3c49('0x10')](_0x3c49('0x3b'),_0x1210d2[_0x3c49('0x3a')]);_0x388614(_0x1210d2);})['catch'](function(_0x226268){logger[_0x3c49('0x3c')]('['+[_0x5d64d2['toUpperCase']()]+']',_0x226268[_0x3c49('0x1a')]);_0x16a4c1(_0x226268[_0x3c49('0x1a')]);});});};}function emit(_0x2a7e3c,_0x5dd11b,_0x3e30b7){var _0x1cfd25={'uri':_0x2a7e3c+_0x3c49('0x3d')+_0x3e30b7};io['to'](util[_0x3c49('0x27')](_0x3c49('0x3e'),_0x5dd11b))[_0x3c49('0x3f')](_0x3c49('0x40'),_0x1cfd25);}exports['cs']=function(_0x2dbfae,_0x56c949,_0x3b3a6a,_0x28cfae,_0x7c4b50,_0xd3593,_0x456c57,_0x1cbab7){var _0x231c11={};var _0x1c7577={'Authorization':_0x3c49('0x41')+_0xd3593['apiKey']};_0xd3593[_0x3c49('0x42')]=intUtil[_0x3c49('0x43')](_0xd3593[_0x3c49('0x42')]);_0xd3593[_0x3c49('0x44')]=intUtil['stripTrailingSlash'](_0xd3593[_0x3c49('0x44')]);var _0x2b9bc5=_0xd3593[_0x3c49('0x42')];_0x231c11[_0x3c49('0x15')]=_0xd3593[_0x3c49('0x45')];_0x231c11[_0x3c49('0x29')]=_0x1cbab7[_0x3c49('0x46')]()==='outbound'?_0x56c949['destcalleridnum']:_0x56c949[_0x3c49('0x47')];_0x231c11[_0x3c49('0x48')]=_0x1cbab7===_0x3c49('0x49')||_0x1cbab7===_0x3c49('0x4a')?_0x3c49('0x49'):_0x3c49('0x4b');if(_0x28cfae){_0x231c11[_0x3c49('0x1d')]=_0x28cfae[_0x3c49('0x14')];}var _0x33b977=util[_0x3c49('0x27')](_0x3c49('0x4c'),_0xd3593['serverUrl'],_0x56c949[_0x3c49('0x4d')],md5(_0x56c949[_0x3c49('0x4d')]));if(_0x7c4b50&&_0x7c4b50[_0x3c49('0x4e')]){logger['info']('[QUEUE]',_0x3c49('0x4f'));_0x56c949[_0x3c49('0x50')]=_0x33b977;}else if(_0x456c57&&_0x456c57[_0x3c49('0x51')]&&_0x456c57[_0x3c49('0x51')]!==_0x3c49('0x52')){logger[_0x3c49('0x10')](_0x3c49('0x53'),_0x3c49('0x4f'));_0x56c949['recordingURL']=_0x33b977;}else{_0x56c949[_0x3c49('0x50')]='';}return getAdminId(_0x231c11,_0x1cbab7,_0x1c7577,_0x2b9bc5)['then'](getUser(_0x1cbab7,_0x1c7577,_0x2b9bc5))[_0x3c49('0x1c')](getEndUser(_0x1cbab7,_0x1c7577,_0x2b9bc5))['then'](getTicket(_0x1cbab7,_0x1c7577,_0x2b9bc5,_0x3b3a6a,_0x56c949))[_0x3c49('0x1c')](function(_0x482050){logger['info'](util[_0x3c49('0x27')](_0x3c49('0x54'),_0x482050[_0x3c49('0x3a')]));if(_0x1cbab7!==_0x3c49('0x4a')){logger['info']('['+[_0x1cbab7[_0x3c49('0x19')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x2b9bc5,_0x28cfae[_0x3c49('0x55')],_0x482050[_0x3c49('0x2a')]);}})[_0x3c49('0x22')](function(_0x4a23e8){logger['error']('['+[_0x1cbab7[_0x3c49('0x19')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x3c49('0x56')](_0x4a23e8,{'showHidden':!![],'depth':null}));});};