Built motion from commit 0555bc41.|2.5.41
[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 _0x6a31=['uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','moment','bluebird','ioredis','./util','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','headers','info','then','users','length','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','/api/selector/owners','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','format','add','task','Task\x20created:','ticketId','emit','Token\x20token=','apiKey','remoteUri','serverUrl','username','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s'];(function(_0x34b5ca,_0x594010){var _0x2d72c0=function(_0x4ae1d3){while(--_0x4ae1d3){_0x34b5ca['push'](_0x34b5ca['shift']());}};_0x2d72c0(++_0x594010);}(_0x6a31,0x104));var _0x16a3=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x6a31[_0x3511d3];return _0x5d6321;};'use strict';var _=require(_0x16a3('0x0'));var rp=require('request-promise');var md5=require(_0x16a3('0x1'));var util=require(_0x16a3('0x2'));var moment=require(_0x16a3('0x3'));var Promise=require(_0x16a3('0x4'));var Redis=require(_0x16a3('0x5'));var intUtil=require(_0x16a3('0x6'));var config=require('../../../../config/environment');var logger=require(_0x16a3('0x7'))(_0x16a3('0x8'));config[_0x16a3('0x9')]=_[_0x16a3('0xa')](config[_0x16a3('0x9')],{'host':_0x16a3('0xb'),'port':0x18eb});var io=require(_0x16a3('0xc'))(new Redis(config['redis']));function getAdminId(_0x44d102,_0x366514,_0x419b9b,_0x57f132){return new Promise(function(_0x222e63,_0x5a044f){var _0x48eebe=![];var _0x1719d3={'method':_0x16a3('0xd'),'uri':_0x57f132+'/api/selector/owners','json':!![]};_0x1719d3[_0x16a3('0xe')]=_0x419b9b;logger[_0x16a3('0xf')]('Getting\x20admin\x20information');return rp(_0x1719d3)[_0x16a3('0x10')](function(_0x5d80dc){if(_0x5d80dc){var _0x55ce2b=_0x5d80dc[_0x16a3('0x11')];var _0x3ea9fa=null;for(_0x3ea9fa=0x0;_0x3ea9fa<_0x55ce2b[_0x16a3('0x12')];_0x3ea9fa++){if(_0x55ce2b[_0x3ea9fa][_0x16a3('0x13')]===_0x44d102[_0x16a3('0x14')]){_0x44d102[_0x16a3('0x15')]=_0x55ce2b[_0x3ea9fa]['id'];_0x48eebe=!![];}}if(_0x48eebe){logger[_0x16a3('0xf')]('Admin\x20found:',_0x44d102['adminId']);_0x222e63(_0x44d102);}else{_0x5a044f({'statusCode':0x194,'message':_0x16a3('0x16')});}}else{_0x5a044f({'statusCode':0x194,'message':_0x16a3('0x16')});}})[_0x16a3('0x17')](function(_0x3a09a9){logger[_0x16a3('0x18')]('['+[_0x366514[_0x16a3('0x19')]()]+']',_0x3a09a9[_0x16a3('0x1a')]);_0x5a044f(_0x3a09a9);});});}function getUser(_0x5ba01d,_0x287ca6,_0x239857){return function(_0x4ddc7a){return new Promise(function(_0x168c3f,_0x3d4533){var _0xa2509d={'method':_0x16a3('0xd'),'uri':_0x239857+_0x16a3('0x1b'),'json':!![]};_0xa2509d[_0x16a3('0xe')]=_0x287ca6;logger['info']('Getting\x20user\x20list');return rp(_0xa2509d)[_0x16a3('0x10')](function(_0x3a3561){if(_0x3a3561){var _0x38c6fc=_0x3a3561['users'];var _0x53bd21=![];var _0x30971d=null;if(_0x4ddc7a[_0x16a3('0x1c')]!==null){logger[_0x16a3('0xf')](_0x16a3('0x1d'),_0x4ddc7a['agentEmail']);_0x4ddc7a[_0x16a3('0x1e')]=_0x4ddc7a['agentEmail'];for(_0x30971d=0x0;_0x30971d<_0x38c6fc[_0x16a3('0x12')];_0x30971d++){if(_0x38c6fc[_0x30971d]['email']===_0x4ddc7a[_0x16a3('0x1c')]){_0x53bd21=!![];_0x4ddc7a[_0x16a3('0x1f')]=_0x38c6fc[_0x30971d]['id'];logger[_0x16a3('0xf')](_0x16a3('0x20'),_0x4ddc7a['userId']);}}}if(!_0x53bd21){logger['info'](_0x16a3('0x21'));_0x4ddc7a[_0x16a3('0x1e')]=_0x4ddc7a['adminEmail'];_0x4ddc7a['userId']=_0x4ddc7a[_0x16a3('0x15')];_0x53bd21=!![];}if(_0x53bd21){_0x168c3f(_0x4ddc7a);}else{_0x3d4533({'statusCode':0x194,'message':_0x16a3('0x16')});}}else{_0x3d4533({'statusCode':0x194,'message':_0x16a3('0x16')});}})[_0x16a3('0x17')](function(_0x4756e8){logger[_0x16a3('0x18')]('['+[_0x5ba01d['toUpperCase']()]+']',_0x4756e8[_0x16a3('0x1a')]);_0x3d4533(_0x4756e8);});});};}function searchContact(_0x12b52a,_0x25aa6a,_0x23c21b,_0x5b3b5a){return new Promise(function(_0x512870,_0xbcf212){var _0x56b9f2={'method':_0x16a3('0xd'),'headers':_0x25aa6a,'uri':_0x12b52a+_0x16a3('0x22')+_0x5b3b5a+_0x16a3('0x23')+_0x23c21b+_0x16a3('0x24'),'json':!![]};rp(_0x56b9f2)['then'](function(_0x5080b1){var _0xaab7f2=_[_0x16a3('0x25')](_0x5080b1[_0x16a3('0x26')][_0x16a3('0x26')],[_0x23c21b,_0x5b3b5a]);_0x512870(_0xaab7f2);})[_0x16a3('0x17')](function(_0x21df96){_0xbcf212(_0x21df96);});});}function getEndUser(_0x343e71,_0x4a8ec1,_0x4167a2){return function(_0x39f8f4){return new Promise(function(_0x215e0b,_0x481652){logger['info'](util['format'](_0x16a3('0x27'),_0x39f8f4[_0x16a3('0x28')]));searchContact(_0x4167a2,_0x4a8ec1,_0x16a3('0x29'),_0x39f8f4[_0x16a3('0x28')])[_0x16a3('0x10')](function(_0x47f9f7){if(_0x47f9f7){_0x39f8f4[_0x16a3('0x2a')]=_0x47f9f7['id'];logger[_0x16a3('0xf')](_0x16a3('0x2b'),_0x39f8f4[_0x16a3('0x2a')]);return _0x215e0b(_0x39f8f4);}searchContact(_0x4167a2,_0x4a8ec1,'work_number',_0x39f8f4['contactNumber'])['then'](function(_0x143178){if(_0x143178){_0x39f8f4[_0x16a3('0x2a')]=_0x143178['id'];logger['info'](_0x16a3('0x2c'),_0x39f8f4[_0x16a3('0x2a')]);return _0x215e0b(_0x39f8f4);}createEndUser(_0x39f8f4,_0x343e71,_0x4a8ec1,_0x4167a2)[_0x16a3('0x10')](function(_0x27afe1){logger[_0x16a3('0xf')](_0x16a3('0x2d'),_0x27afe1[_0x16a3('0x2a')]);return _0x215e0b(_0x27afe1);});});})[_0x16a3('0x17')](function(_0x49a3d3){_0x481652(_0x49a3d3);});});};}function createEndUser(_0x45a7a2,_0x1cdef6,_0x53393e,_0x3c0dd1){return new Promise(function(_0x3bde9e,_0x1489a9){var _0x3f5f6a=moment();var _0x541674={'method':_0x16a3('0x2e'),'uri':_0x3c0dd1+'/api/contacts','body':{'contact':{'last_name':_0x45a7a2['contactNumber'],'work_number':_0x45a7a2[_0x16a3('0x28')],'mobile_number':_0x45a7a2[_0x16a3('0x28')],'owner_id':_0x45a7a2[_0x16a3('0x1f')],'created_at':_0x3f5f6a['format'](_0x16a3('0x2f'))}},'json':!![]};_0x541674[_0x16a3('0xe')]=_0x53393e;logger[_0x16a3('0xf')](_0x16a3('0x30'));return rp(_0x541674)[_0x16a3('0x10')](function(_0x23bdc4){_0x45a7a2[_0x16a3('0x2a')]=_0x23bdc4[_0x16a3('0x31')]['id'];_0x3bde9e(_0x45a7a2);})[_0x16a3('0x17')](function(_0x737311){logger[_0x16a3('0x18')]('['+[_0x1cdef6[_0x16a3('0x19')]()]+']',_0x737311[_0x16a3('0x1a')]);_0x1489a9(_0x737311[_0x16a3('0x1a')]);});});}function getTicket(_0x26e3cd,_0x2ffc4a,_0x1abce7,_0x5b59f6,_0x39698b){return function(_0x313417){logger[_0x16a3('0xf')](_0x16a3('0x32'));return new Promise(function(_0x2dc9f4,_0x1201c2){var _0xa32f50=moment();var _0x92a092={'method':_0x16a3('0x2e'),'uri':_0x1abce7+_0x16a3('0x33'),'body':{'title':intUtil[_0x16a3('0x34')](_0x5b59f6['Subjects'],_0x39698b,'\x20'),'description':intUtil['getString'](_0x5b59f6[_0x16a3('0x35')],_0x39698b,'\x0a'),'owner_id':_0x313417[_0x16a3('0x1f')],'creater_id':_0x313417['adminId'],'targetable_id':_0x313417[_0x16a3('0x2a')],'targetable_type':'Contact','created_at':_0xa32f50[_0x16a3('0x36')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0xa32f50[_0x16a3('0x37')](0x1e,'m')[_0x16a3('0x36')](_0x16a3('0x2f'))},'json':!![]};_0x92a092[_0x16a3('0xe')]=_0x2ffc4a;return rp(_0x92a092)[_0x16a3('0x10')](function(_0x4e3906){_0x313417['ticketId']=_0x4e3906[_0x16a3('0x38')]['id'];logger['info'](_0x16a3('0x39'),_0x313417[_0x16a3('0x3a')]);_0x2dc9f4(_0x313417);})[_0x16a3('0x17')](function(_0x6ddb4e){logger[_0x16a3('0x18')]('['+[_0x26e3cd[_0x16a3('0x19')]()]+']',_0x6ddb4e[_0x16a3('0x1a')]);_0x1201c2(_0x6ddb4e[_0x16a3('0x1a')]);});});};}function emit(_0x2d9ffd,_0x5d0adf,_0x515061){var _0x5d687e={'uri':_0x2d9ffd+'/contacts/'+_0x515061};io['to'](util[_0x16a3('0x36')]('user:%s',_0x5d0adf))[_0x16a3('0x3b')]('trigger:browser:url',_0x5d687e);}exports['cs']=function(_0x5b9e2c,_0xbe058e,_0x799c56,_0x2d2791,_0x5efcbe,_0x193019,_0x25b844,_0x178e72){var _0x566e1f={};var _0x1b313a={'Authorization':_0x16a3('0x3c')+_0x193019[_0x16a3('0x3d')]};_0x193019[_0x16a3('0x3e')]=intUtil['stripTrailingSlash'](_0x193019['remoteUri']);_0x193019['serverUrl']=intUtil['stripTrailingSlash'](_0x193019[_0x16a3('0x3f')]);var _0x372326=_0x193019['remoteUri'];_0x566e1f[_0x16a3('0x14')]=_0x193019[_0x16a3('0x40')];_0x566e1f['contactNumber']=_0x178e72[_0x16a3('0x41')]()===_0x16a3('0x42')?_0xbe058e['destcalleridnum']:_0xbe058e[_0x16a3('0x43')];_0x566e1f[_0x16a3('0x44')]=_0x178e72===_0x16a3('0x45')||_0x178e72===_0x16a3('0x46')?_0x16a3('0x45'):_0x16a3('0x42');if(_0x2d2791){_0x566e1f[_0x16a3('0x1c')]=_0x2d2791[_0x16a3('0x13')];}var _0x10b871=util[_0x16a3('0x36')](_0x16a3('0x47'),_0x193019[_0x16a3('0x3f')],_0xbe058e[_0x16a3('0x48')],md5(_0xbe058e[_0x16a3('0x48')]));if(_0x5efcbe&&_0x5efcbe[_0x16a3('0x49')]){logger[_0x16a3('0xf')](_0x16a3('0x4a'),'Recording\x20is\x20enabled!');_0xbe058e[_0x16a3('0x4b')]=_0x10b871;}else if(_0x25b844&&_0x25b844[_0x16a3('0x4c')]&&_0x25b844[_0x16a3('0x4c')]!==_0x16a3('0x4d')){logger['info'](_0x16a3('0x4e'),'Recording\x20is\x20enabled!');_0xbe058e[_0x16a3('0x4b')]=_0x10b871;}else{_0xbe058e[_0x16a3('0x4b')]='';}return getAdminId(_0x566e1f,_0x178e72,_0x1b313a,_0x372326)[_0x16a3('0x10')](getUser(_0x178e72,_0x1b313a,_0x372326))[_0x16a3('0x10')](getEndUser(_0x178e72,_0x1b313a,_0x372326))[_0x16a3('0x10')](getTicket(_0x178e72,_0x1b313a,_0x372326,_0x799c56,_0xbe058e))[_0x16a3('0x10')](function(_0x569b1c){logger['info'](util[_0x16a3('0x36')](_0x16a3('0x4f'),_0x569b1c[_0x16a3('0x3a')]));if(_0x178e72!==_0x16a3('0x46')){logger[_0x16a3('0xf')]('['+[_0x178e72[_0x16a3('0x19')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x372326,_0x2d2791[_0x16a3('0x50')],_0x569b1c['endUserId']);}})['catch'](function(_0x44bcd9){logger[_0x16a3('0x18')]('['+[_0x178e72[_0x16a3('0x19')]()]+_0x16a3('0x51'),util[_0x16a3('0x52')](_0x44bcd9,{'showHidden':!![],'depth':null}));});};