b7863678c94e2bcc1e12638dc19769c693d926fd
[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 _0xc293=['/api/contacts/filters','filters','name','All\x20Contacts','Getting\x20contact\x20list','/api/contacts/view/','Searching\x20contact\x20with\x20phone','contactNumber','contacts','find','work_number','mobile_number','endUserId','Contact\x20found:','Contact\x20created:','POST','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','toUpperCase','Descriptions','Contact','add','ticketId','task','Task\x20created:','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','util','moment','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','/api/selector/owners','headers','Getting\x20admin\x20information','then','length','email','adminEmail','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','GET','Getting\x20user\x20list','users','Getting\x20user\x20with\x20email','agentEmail','userId','User\x20found:','Admin\x20selected','error','message'];(function(_0x5d2740,_0x39ad05){var _0x38237c=function(_0xbfabcb){while(--_0xbfabcb){_0x5d2740['push'](_0x5d2740['shift']());}};_0x38237c(++_0x39ad05);}(_0xc293,0x132));var _0x3c29=function(_0x45e7e7,_0x10e163){_0x45e7e7=_0x45e7e7-0x0;var _0x5ed7e6=_0xc293[_0x45e7e7];return _0x5ed7e6;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require(_0x3c29('0x0'));var moment=require(_0x3c29('0x1'));var Promise=require('bluebird');var Redis=require(_0x3c29('0x2'));var intUtil=require('./util');var config=require(_0x3c29('0x3'));var logger=require(_0x3c29('0x4'))(_0x3c29('0x5'));config[_0x3c29('0x6')]=_['defaults'](config[_0x3c29('0x6')],{'host':_0x3c29('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0xe230bb,_0x3b2464,_0x1648d9,_0x2b8c69){return new Promise(function(_0x4e6711,_0x78473c){var _0x4ef89e=![];var _0x533123={'method':'GET','uri':_0x2b8c69+_0x3c29('0x8'),'json':!![]};_0x533123[_0x3c29('0x9')]=_0x1648d9;logger['info'](_0x3c29('0xa'));return rp(_0x533123)[_0x3c29('0xb')](function(_0x56848e){if(_0x56848e){var _0x2d46f=_0x56848e['users'];var _0x502b55=null;for(_0x502b55=0x0;_0x502b55<_0x2d46f[_0x3c29('0xc')];_0x502b55++){if(_0x2d46f[_0x502b55][_0x3c29('0xd')]===_0xe230bb[_0x3c29('0xe')]){_0xe230bb[_0x3c29('0xf')]=_0x2d46f[_0x502b55]['id'];_0x4ef89e=!![];}}if(_0x4ef89e){logger[_0x3c29('0x10')](_0x3c29('0x11'),_0xe230bb['adminId']);_0x4e6711(_0xe230bb);}else{_0x78473c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x78473c({'statusCode':0x194,'message':_0x3c29('0x12')});}})[_0x3c29('0x13')](function(_0x4f5221){logger['error']('['+[_0x3b2464['toUpperCase']()]+']',_0x4f5221['message']);_0x78473c(_0x4f5221);});});}function getUser(_0x367ee2,_0x43cbcc,_0x13d3a6){return function(_0x33ea60){return new Promise(function(_0x264cf3,_0x5843e8){var _0x502d66={'method':_0x3c29('0x14'),'uri':_0x13d3a6+_0x3c29('0x8'),'json':!![]};_0x502d66['headers']=_0x43cbcc;logger['info'](_0x3c29('0x15'));return rp(_0x502d66)[_0x3c29('0xb')](function(_0x337ba6){if(_0x337ba6){var _0x4c503a=_0x337ba6[_0x3c29('0x16')];var _0x3a6c3f=![];var _0x1b6c48=null;if(_0x33ea60['agentEmail']!==null){logger['info'](_0x3c29('0x17'),_0x33ea60[_0x3c29('0x18')]);_0x33ea60['userEmail']=_0x33ea60[_0x3c29('0x18')];for(_0x1b6c48=0x0;_0x1b6c48<_0x4c503a[_0x3c29('0xc')];_0x1b6c48++){if(_0x4c503a[_0x1b6c48]['email']===_0x33ea60[_0x3c29('0x18')]){_0x3a6c3f=!![];_0x33ea60[_0x3c29('0x19')]=_0x4c503a[_0x1b6c48]['id'];logger[_0x3c29('0x10')](_0x3c29('0x1a'),_0x33ea60[_0x3c29('0x19')]);}}}if(!_0x3a6c3f){logger[_0x3c29('0x10')](_0x3c29('0x1b'));_0x33ea60['userEmail']=_0x33ea60[_0x3c29('0xe')];_0x33ea60['userId']=_0x33ea60[_0x3c29('0xf')];_0x3a6c3f=!![];}if(_0x3a6c3f){_0x264cf3(_0x33ea60);}else{_0x5843e8({'statusCode':0x194,'message':_0x3c29('0x12')});}}else{_0x5843e8({'statusCode':0x194,'message':_0x3c29('0x12')});}})[_0x3c29('0x13')](function(_0x3a7f6e){logger[_0x3c29('0x1c')]('['+[_0x367ee2['toUpperCase']()]+']',_0x3a7f6e[_0x3c29('0x1d')]);_0x5843e8(_0x3a7f6e);});});};}function getEndUser(_0x3fc415,_0x10c7a6,_0x561625){return function(_0x1ad393){return new Promise(function(_0xf37543,_0x50e0d6){var _0x1529cd=0x0;var _0xb9b6b2={'method':_0x3c29('0x14'),'uri':_0x561625+_0x3c29('0x1e'),'json':!![]};_0xb9b6b2['headers']=_0x10c7a6;logger['info']('Getting\x20contacts\x20filter');return rp(_0xb9b6b2)['then'](function(_0x5e8d23){_0x5e8d23[_0x3c29('0x1f')]['forEach'](function(_0x38a1b6){if(_0x38a1b6[_0x3c29('0x20')]===_0x3c29('0x21')){_0x1529cd=_0x38a1b6['id'];}});})['then'](function(){logger[_0x3c29('0x10')](_0x3c29('0x22'));var _0x2fb2a8={'method':_0x3c29('0x14'),'uri':_0x561625+_0x3c29('0x23')+_0x1529cd,'json':!![]};_0x2fb2a8[_0x3c29('0x9')]=_0x10c7a6;return rp(_0x2fb2a8);})['then'](function(_0xf8e691){logger['info'](_0x3c29('0x24'),_0x1ad393[_0x3c29('0x25')]);if(_0xf8e691[_0x3c29('0x26')][_0x3c29('0xc')]>0x0){var _0x4ad382=_[_0x3c29('0x27')](_0xf8e691['contacts'],function(_0x498dc5){if(_0x498dc5[_0x3c29('0x28')]===_0x1ad393['contactNumber']||_0x498dc5[_0x3c29('0x29')]===_0x1ad393[_0x3c29('0x25')]){return _0x498dc5;}});if(_0x4ad382){_0x1ad393[_0x3c29('0x2a')]=_0x4ad382['id'];logger[_0x3c29('0x10')](_0x3c29('0x2b'),_0x1ad393[_0x3c29('0x2a')]);_0xf37543(_0x1ad393);}else{return createEndUser(_0x1ad393,_0x3fc415,_0x10c7a6,_0x561625)[_0x3c29('0xb')](function(_0x16242b){logger['info'](_0x3c29('0x2c'),_0x1ad393['endUserId']);_0xf37543(_0x16242b);});}}else{return createEndUser(_0x1ad393,_0x3fc415,_0x10c7a6,_0x561625)[_0x3c29('0xb')](function(_0x52e316){logger['info'](_0x3c29('0x2c'),_0x1ad393[_0x3c29('0x2a')]);_0xf37543(_0x52e316);});}})[_0x3c29('0x13')](function(_0x3c3d84){throw new Error(_0x3c3d84[_0x3c29('0x1d')]);});});};}function createEndUser(_0x292e99,_0x2591b1,_0x16a7ef,_0x47bf1a){return new Promise(function(_0x1b6c38,_0x3ef8d0){var _0x52dcb7=moment();var _0x8509e0={'method':_0x3c29('0x2d'),'uri':_0x47bf1a+_0x3c29('0x2e'),'body':{'contact':{'last_name':_0x292e99['contactNumber'],'work_number':_0x292e99[_0x3c29('0x25')],'mobile_number':_0x292e99[_0x3c29('0x25')],'owner_id':_0x292e99['userId'],'created_at':_0x52dcb7[_0x3c29('0x2f')](_0x3c29('0x30'))}},'json':!![]};_0x8509e0[_0x3c29('0x9')]=_0x16a7ef;logger['info'](_0x3c29('0x31'));return rp(_0x8509e0)['then'](function(_0x58fdbf){_0x292e99[_0x3c29('0x2a')]=_0x58fdbf[_0x3c29('0x32')]['id'];_0x1b6c38(_0x292e99);})[_0x3c29('0x13')](function(_0x516c03){logger[_0x3c29('0x1c')]('['+[_0x2591b1[_0x3c29('0x33')]()]+']',_0x516c03['message']);_0x3ef8d0(_0x516c03['message']);});});}function getTicket(_0x14c1c2,_0xa46e35,_0x159380,_0x507606,_0x3dda88){return function(_0x38dad3){logger['info']('Creating\x20new\x20task');return new Promise(function(_0x49e693,_0x25a3e3){var _0x58f26d=moment();var _0x370ce7={'method':'POST','uri':_0x159380+'/api/tasks','body':{'title':intUtil['getString'](_0x507606['Subjects'],_0x3dda88,'\x20'),'description':intUtil['getString'](_0x507606[_0x3c29('0x34')],_0x3dda88,'\x0a'),'owner_id':_0x38dad3['userId'],'creater_id':_0x38dad3[_0x3c29('0xf')],'targetable_id':_0x38dad3[_0x3c29('0x2a')],'targetable_type':_0x3c29('0x35'),'created_at':_0x58f26d[_0x3c29('0x2f')](_0x3c29('0x30')),'due_date':_0x58f26d[_0x3c29('0x36')](0x1e,'m')['format'](_0x3c29('0x30'))},'json':!![]};_0x370ce7[_0x3c29('0x9')]=_0xa46e35;return rp(_0x370ce7)[_0x3c29('0xb')](function(_0x28446f){_0x38dad3[_0x3c29('0x37')]=_0x28446f[_0x3c29('0x38')]['id'];logger[_0x3c29('0x10')](_0x3c29('0x39'),_0x38dad3[_0x3c29('0x37')]);_0x49e693(_0x38dad3);})[_0x3c29('0x13')](function(_0x5a2ead){logger[_0x3c29('0x1c')]('['+[_0x14c1c2[_0x3c29('0x33')]()]+']',_0x5a2ead['message']);_0x25a3e3(_0x5a2ead[_0x3c29('0x1d')]);});});};}function emit(_0xc6db6c,_0x3f244d,_0x18d3fb){var _0x4b032a={'uri':_0xc6db6c+'/contacts/'+_0x18d3fb};io['to'](util['format']('user:%s',_0x3f244d))[_0x3c29('0x3a')](_0x3c29('0x3b'),_0x4b032a);}exports['cs']=function(_0x34ead6,_0x158a54,_0x55cf81,_0x45e27d,_0x2748ed,_0x5c835e,_0xbe2fa0,_0x6e847f){var _0x528e72={};var _0x2a7f22={'Authorization':_0x3c29('0x3c')+_0x5c835e[_0x3c29('0x3d')]};_0x5c835e[_0x3c29('0x3e')]=intUtil[_0x3c29('0x3f')](_0x5c835e[_0x3c29('0x3e')]);_0x5c835e[_0x3c29('0x40')]=intUtil['stripTrailingSlash'](_0x5c835e['serverUrl']);var _0xbdde41=_0x5c835e[_0x3c29('0x3e')];_0x528e72['adminEmail']=_0x5c835e[_0x3c29('0x41')];_0x528e72[_0x3c29('0x25')]=_0x6e847f[_0x3c29('0x42')]()===_0x3c29('0x43')?_0x158a54[_0x3c29('0x44')]:_0x158a54[_0x3c29('0x45')];_0x528e72['callDirection']=_0x6e847f==='queue'||_0x6e847f===_0x3c29('0x46')?_0x3c29('0x47'):'outbound';if(_0x45e27d){_0x528e72[_0x3c29('0x18')]=_0x45e27d['email'];}var _0x4cd673=util['format'](_0x3c29('0x48'),_0x5c835e[_0x3c29('0x40')],_0x158a54['uniqueid'],md5(_0x158a54[_0x3c29('0x49')]));if(_0x2748ed&&_0x2748ed[_0x3c29('0x4a')]){logger['info'](_0x3c29('0x4b'),_0x3c29('0x4c'));_0x158a54[_0x3c29('0x4d')]=_0x4cd673;}else if(_0xbe2fa0&&_0xbe2fa0[_0x3c29('0x4e')]&&_0xbe2fa0[_0x3c29('0x4e')]!==_0x3c29('0x4f')){logger[_0x3c29('0x10')](_0x3c29('0x50'),_0x3c29('0x4c'));_0x158a54[_0x3c29('0x4d')]=_0x4cd673;}else{_0x158a54[_0x3c29('0x4d')]='';}return getAdminId(_0x528e72,_0x6e847f,_0x2a7f22,_0xbdde41)[_0x3c29('0xb')](getUser(_0x6e847f,_0x2a7f22,_0xbdde41))[_0x3c29('0xb')](getEndUser(_0x6e847f,_0x2a7f22,_0xbdde41))[_0x3c29('0xb')](getTicket(_0x6e847f,_0x2a7f22,_0xbdde41,_0x55cf81,_0x158a54))[_0x3c29('0xb')](function(_0x391ce8){logger[_0x3c29('0x10')](util[_0x3c29('0x2f')]('The\x20ticket\x20ID\x20is:\x20%s',_0x391ce8['ticketId']));if(_0x6e847f!==_0x3c29('0x46')){logger['info']('['+[_0x6e847f['toUpperCase']()]+']',_0x3c29('0x51'));emit(_0xbdde41,_0x45e27d[_0x3c29('0x20')],_0x391ce8[_0x3c29('0x2a')]);}})['catch'](function(_0x3dd269){logger['error']('['+[_0x6e847f[_0x3c29('0x33')]()]+_0x3c29('0x52'),util[_0x3c29('0x53')](_0x3dd269,{'showHidden':!![],'depth':null}));});};