4f0ea164784b32a74e1836c2f2a9e2e876b592ce
[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 _0x5466=['YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','error','Creating\x20new\x20task','Subjects','getString','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','calleridnum','callDirection','queue','unmanaged','outbound','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','socket.io-emitter','GET','/api/selector/owners','headers','Getting\x20admin\x20information','then','length','email','adminEmail','adminId','info','Admin\x20found:','catch','toUpperCase','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','Requested\x20Resource\x20not\x20Found','message','&f=','&entities=contact','contacts','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','POST','/api/contacts'];(function(_0xc10e38,_0x4749da){var _0x50736e=function(_0x260176){while(--_0x260176){_0xc10e38['push'](_0xc10e38['shift']());}};_0x50736e(++_0x4749da);}(_0x5466,0x7b));var _0x6546=function(_0x3da904,_0x50d883){_0x3da904=_0x3da904-0x0;var _0x2fe771=_0x5466[_0x3da904];return _0x2fe771;};'use strict';var _=require(_0x6546('0x0'));var rp=require(_0x6546('0x1'));var md5=require(_0x6546('0x2'));var util=require(_0x6546('0x3'));var moment=require(_0x6546('0x4'));var Promise=require(_0x6546('0x5'));var Redis=require(_0x6546('0x6'));var intUtil=require(_0x6546('0x7'));var config=require(_0x6546('0x8'));var logger=require(_0x6546('0x9'))('freshsales');config[_0x6546('0xa')]=_[_0x6546('0xb')](config[_0x6546('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x6546('0xc'))(new Redis(config[_0x6546('0xa')]));function getAdminId(_0x2de233,_0x21c5b1,_0x3084ff,_0x35d46a){return new Promise(function(_0x2147c3,_0x39113f){var _0x502bdd=![];var _0x5e0b62={'method':_0x6546('0xd'),'uri':_0x35d46a+_0x6546('0xe'),'json':!![]};_0x5e0b62[_0x6546('0xf')]=_0x3084ff;logger['info'](_0x6546('0x10'));return rp(_0x5e0b62)[_0x6546('0x11')](function(_0x2c0eea){if(_0x2c0eea){var _0x18a07f=_0x2c0eea['users'];var _0x3ac44a=null;for(_0x3ac44a=0x0;_0x3ac44a<_0x18a07f[_0x6546('0x12')];_0x3ac44a++){if(_0x18a07f[_0x3ac44a][_0x6546('0x13')]===_0x2de233[_0x6546('0x14')]){_0x2de233[_0x6546('0x15')]=_0x18a07f[_0x3ac44a]['id'];_0x502bdd=!![];}}if(_0x502bdd){logger[_0x6546('0x16')](_0x6546('0x17'),_0x2de233[_0x6546('0x15')]);_0x2147c3(_0x2de233);}else{_0x39113f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x39113f({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x6546('0x18')](function(_0x9017ad){logger['error']('['+[_0x21c5b1[_0x6546('0x19')]()]+']',_0x9017ad['message']);_0x39113f(_0x9017ad);});});}function getUser(_0x5501a3,_0x421511,_0x1c6dcf){return function(_0x3dfb9f){return new Promise(function(_0x563d68,_0x2f745f){var _0x2c3ed4={'method':_0x6546('0xd'),'uri':_0x1c6dcf+_0x6546('0xe'),'json':!![]};_0x2c3ed4['headers']=_0x421511;logger[_0x6546('0x16')]('Getting\x20user\x20list');return rp(_0x2c3ed4)[_0x6546('0x11')](function(_0x441239){if(_0x441239){var _0x1a41cc=_0x441239['users'];var _0x5255fa=![];var _0xf3fc04=null;if(_0x3dfb9f['agentEmail']!==null){logger[_0x6546('0x16')](_0x6546('0x1a'),_0x3dfb9f[_0x6546('0x1b')]);_0x3dfb9f[_0x6546('0x1c')]=_0x3dfb9f[_0x6546('0x1b')];for(_0xf3fc04=0x0;_0xf3fc04<_0x1a41cc[_0x6546('0x12')];_0xf3fc04++){if(_0x1a41cc[_0xf3fc04][_0x6546('0x13')]===_0x3dfb9f[_0x6546('0x1b')]){_0x5255fa=!![];_0x3dfb9f[_0x6546('0x1d')]=_0x1a41cc[_0xf3fc04]['id'];logger[_0x6546('0x16')](_0x6546('0x1e'),_0x3dfb9f[_0x6546('0x1d')]);}}}if(!_0x5255fa){logger[_0x6546('0x16')](_0x6546('0x1f'));_0x3dfb9f[_0x6546('0x1c')]=_0x3dfb9f[_0x6546('0x14')];_0x3dfb9f[_0x6546('0x1d')]=_0x3dfb9f[_0x6546('0x15')];_0x5255fa=!![];}if(_0x5255fa){_0x563d68(_0x3dfb9f);}else{_0x2f745f({'statusCode':0x194,'message':_0x6546('0x20')});}}else{_0x2f745f({'statusCode':0x194,'message':_0x6546('0x20')});}})[_0x6546('0x18')](function(_0x2445d7){logger['error']('['+[_0x5501a3[_0x6546('0x19')]()]+']',_0x2445d7[_0x6546('0x21')]);_0x2f745f(_0x2445d7);});});};}function searchContact(_0x1bbce4,_0x54ba82,_0x4c97da,_0x15031e){return new Promise(function(_0x6874bb,_0x2694d7){var _0x3df5c8={'method':_0x6546('0xd'),'headers':_0x54ba82,'uri':_0x1bbce4+'/api/lookup?q='+_0x15031e+_0x6546('0x22')+_0x4c97da+_0x6546('0x23'),'json':!![]};rp(_0x3df5c8)[_0x6546('0x11')](function(_0x5d54f0){var _0x536d06=_['find'](_0x5d54f0[_0x6546('0x24')][_0x6546('0x24')],[_0x4c97da,_0x15031e]);_0x6874bb(_0x536d06);})[_0x6546('0x18')](function(_0x57eb27){_0x2694d7(_0x57eb27);});});}function getEndUser(_0x56dae4,_0x40c04c,_0x21619e){return function(_0x254c02){return new Promise(function(_0x4de030,_0x1736b3){logger[_0x6546('0x16')](util[_0x6546('0x25')]('Searching\x20contact\x20with\x20phone\x20%s',_0x254c02[_0x6546('0x26')]));searchContact(_0x21619e,_0x40c04c,_0x6546('0x27'),_0x254c02[_0x6546('0x26')])[_0x6546('0x11')](function(_0x399e32){if(_0x399e32){_0x254c02[_0x6546('0x28')]=_0x399e32['id'];logger[_0x6546('0x16')](_0x6546('0x29'),_0x254c02[_0x6546('0x28')]);return _0x4de030(_0x254c02);}searchContact(_0x21619e,_0x40c04c,'work_number',_0x254c02[_0x6546('0x26')])[_0x6546('0x11')](function(_0x2a6d3c){if(_0x2a6d3c){_0x254c02[_0x6546('0x28')]=_0x2a6d3c['id'];logger[_0x6546('0x16')](_0x6546('0x2a'),_0x254c02[_0x6546('0x28')]);return _0x4de030(_0x254c02);}createEndUser(_0x254c02,_0x56dae4,_0x40c04c,_0x21619e)[_0x6546('0x11')](function(_0x47c9d0){logger[_0x6546('0x16')]('Contact\x20created:',_0x47c9d0[_0x6546('0x28')]);return _0x4de030(_0x47c9d0);});});})['catch'](function(_0x6c5c90){_0x1736b3(_0x6c5c90);});});};}function createEndUser(_0xb41133,_0xd95ccc,_0x4c78d6,_0x3a239b){return new Promise(function(_0x54d5c0,_0x1e316e){var _0x198037=moment();var _0x39c51a={'method':_0x6546('0x2b'),'uri':_0x3a239b+_0x6546('0x2c'),'body':{'contact':{'last_name':_0xb41133[_0x6546('0x26')],'work_number':_0xb41133[_0x6546('0x26')],'mobile_number':_0xb41133[_0x6546('0x26')],'owner_id':_0xb41133['userId'],'created_at':_0x198037['format'](_0x6546('0x2d'))}},'json':!![]};_0x39c51a['headers']=_0x4c78d6;logger[_0x6546('0x16')](_0x6546('0x2e'));return rp(_0x39c51a)['then'](function(_0x134855){_0xb41133[_0x6546('0x28')]=_0x134855[_0x6546('0x2f')]['id'];_0x54d5c0(_0xb41133);})[_0x6546('0x18')](function(_0x361cd5){logger[_0x6546('0x30')]('['+[_0xd95ccc[_0x6546('0x19')]()]+']',_0x361cd5[_0x6546('0x21')]);_0x1e316e(_0x361cd5[_0x6546('0x21')]);});});}function getTicket(_0x32ba78,_0x2e3ed8,_0x37cae7,_0x43f393,_0x237e07){return function(_0x4c9dcc){logger[_0x6546('0x16')](_0x6546('0x31'));return new Promise(function(_0x2c2190,_0x444c26){var _0x410055=moment();var _0x55207f={'method':_0x6546('0x2b'),'uri':_0x37cae7+'/api/tasks','body':{'title':intUtil['getString'](_0x43f393[_0x6546('0x32')],_0x237e07,'\x20'),'description':intUtil[_0x6546('0x33')](_0x43f393[_0x6546('0x34')],_0x237e07,'\x0a'),'owner_id':_0x4c9dcc[_0x6546('0x1d')],'creater_id':_0x4c9dcc[_0x6546('0x15')],'targetable_id':_0x4c9dcc[_0x6546('0x28')],'targetable_type':_0x6546('0x35'),'created_at':_0x410055[_0x6546('0x25')](_0x6546('0x2d')),'due_date':_0x410055[_0x6546('0x36')](0x1e,'m')['format'](_0x6546('0x2d'))},'json':!![]};_0x55207f[_0x6546('0xf')]=_0x2e3ed8;return rp(_0x55207f)[_0x6546('0x11')](function(_0x293357){_0x4c9dcc[_0x6546('0x37')]=_0x293357[_0x6546('0x38')]['id'];logger[_0x6546('0x16')](_0x6546('0x39'),_0x4c9dcc[_0x6546('0x37')]);_0x2c2190(_0x4c9dcc);})[_0x6546('0x18')](function(_0x537cae){logger[_0x6546('0x30')]('['+[_0x32ba78[_0x6546('0x19')]()]+']',_0x537cae[_0x6546('0x21')]);_0x444c26(_0x537cae[_0x6546('0x21')]);});});};}function emit(_0x38a2de,_0x527cb4,_0x1f50b9){var _0x52b0d8={'uri':_0x38a2de+_0x6546('0x3a')+_0x1f50b9};io['to'](util[_0x6546('0x25')](_0x6546('0x3b'),_0x527cb4))[_0x6546('0x3c')](_0x6546('0x3d'),_0x52b0d8);}exports['cs']=function(_0x226dcf,_0x4e9f1d,_0x4defc9,_0x4c5a8e,_0x302797,_0x520d4c,_0x5845f7,_0x18c5e8){var _0xccf61a={};var _0x400899={'Authorization':_0x6546('0x3e')+_0x520d4c['apiKey']};_0x520d4c[_0x6546('0x3f')]=intUtil[_0x6546('0x40')](_0x520d4c[_0x6546('0x3f')]);_0x520d4c['serverUrl']=intUtil[_0x6546('0x40')](_0x520d4c[_0x6546('0x41')]);var _0x70a04=_0x520d4c['remoteUri'];_0xccf61a[_0x6546('0x14')]=_0x520d4c[_0x6546('0x42')];_0xccf61a[_0x6546('0x26')]=_0x18c5e8[_0x6546('0x43')]()==='outbound'?_0x4e9f1d['destcalleridnum']:_0x4e9f1d[_0x6546('0x44')];_0xccf61a[_0x6546('0x45')]=_0x18c5e8===_0x6546('0x46')||_0x18c5e8===_0x6546('0x47')?_0x6546('0x46'):_0x6546('0x48');if(_0x4c5a8e){_0xccf61a[_0x6546('0x1b')]=_0x4c5a8e[_0x6546('0x13')];}var _0x1d9a3f=util[_0x6546('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x520d4c[_0x6546('0x41')],_0x4e9f1d[_0x6546('0x49')],md5(_0x4e9f1d['uniqueid']));if(_0x302797&&_0x302797[_0x6546('0x4a')]){logger[_0x6546('0x16')](_0x6546('0x4b'),'Recording\x20is\x20enabled!');_0x4e9f1d[_0x6546('0x4c')]=_0x1d9a3f;}else if(_0x5845f7&&_0x5845f7[_0x6546('0x4d')]&&_0x5845f7[_0x6546('0x4d')]!==_0x6546('0x4e')){logger['info'](_0x6546('0x4f'),_0x6546('0x50'));_0x4e9f1d[_0x6546('0x4c')]=_0x1d9a3f;}else{_0x4e9f1d[_0x6546('0x4c')]='';}return getAdminId(_0xccf61a,_0x18c5e8,_0x400899,_0x70a04)[_0x6546('0x11')](getUser(_0x18c5e8,_0x400899,_0x70a04))[_0x6546('0x11')](getEndUser(_0x18c5e8,_0x400899,_0x70a04))[_0x6546('0x11')](getTicket(_0x18c5e8,_0x400899,_0x70a04,_0x4defc9,_0x4e9f1d))['then'](function(_0x5cee6f){logger[_0x6546('0x16')](util[_0x6546('0x25')]('The\x20ticket\x20ID\x20is:\x20%s',_0x5cee6f[_0x6546('0x37')]));if(_0x18c5e8!==_0x6546('0x47')){logger[_0x6546('0x16')]('['+[_0x18c5e8[_0x6546('0x19')]()]+']',_0x6546('0x51'));emit(_0x70a04,_0x4c5a8e[_0x6546('0x52')],_0x5cee6f[_0x6546('0x28')]);}})['catch'](function(_0x94b68f){logger['error']('['+[_0x18c5e8[_0x6546('0x19')]()]+_0x6546('0x53'),util['inspect'](_0x94b68f,{'showHidden':!![],'depth':null}));});};