Built motion from commit (unavailable).|2.5.11
[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 _0xafc4=['queue','unmanaged','outbound','%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...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','moment','bluebird','ioredis','./util','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','info','Getting\x20admin\x20information','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','message','GET','headers','Getting\x20user\x20list','then','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','catch','/api/lookup?q=','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','contactNumber','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','toUpperCase','/api/tasks','getString','Subjects','Descriptions','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','destcalleridnum','callDirection'];(function(_0x1ea034,_0x476985){var _0x2a16c1=function(_0x2d8a2c){while(--_0x2d8a2c){_0x1ea034['push'](_0x1ea034['shift']());}};_0x2a16c1(++_0x476985);}(_0xafc4,0x69));var _0x4afc=function(_0x2177ae,_0x2e9815){_0x2177ae=_0x2177ae-0x0;var _0x31e38f=_0xafc4[_0x2177ae];return _0x31e38f;};'use strict';var _=require(_0x4afc('0x0'));var rp=require('request-promise');var md5=require(_0x4afc('0x1'));var util=require('util');var moment=require(_0x4afc('0x2'));var Promise=require(_0x4afc('0x3'));var Redis=require(_0x4afc('0x4'));var intUtil=require(_0x4afc('0x5'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')('freshsales');config[_0x4afc('0x6')]=_[_0x4afc('0x7')](config[_0x4afc('0x6')],{'host':_0x4afc('0x8'),'port':0x18eb});var io=require(_0x4afc('0x9'))(new Redis(config[_0x4afc('0x6')]));function getAdminId(_0x5e1e29,_0x31e165,_0x1c740c,_0x134aad){return new Promise(function(_0x1e6bf5,_0x1b8981){var _0x458fde=![];var _0x5542ec={'method':'GET','uri':_0x134aad+_0x4afc('0xa'),'json':!![]};_0x5542ec['headers']=_0x1c740c;logger[_0x4afc('0xb')](_0x4afc('0xc'));return rp(_0x5542ec)['then'](function(_0x38b322){if(_0x38b322){var _0x3fb54a=_0x38b322[_0x4afc('0xd')];var _0x2768bf=null;for(_0x2768bf=0x0;_0x2768bf<_0x3fb54a[_0x4afc('0xe')];_0x2768bf++){if(_0x3fb54a[_0x2768bf][_0x4afc('0xf')]===_0x5e1e29[_0x4afc('0x10')]){_0x5e1e29[_0x4afc('0x11')]=_0x3fb54a[_0x2768bf]['id'];_0x458fde=!![];}}if(_0x458fde){logger['info'](_0x4afc('0x12'),_0x5e1e29[_0x4afc('0x11')]);_0x1e6bf5(_0x5e1e29);}else{_0x1b8981({'statusCode':0x194,'message':_0x4afc('0x13')});}}else{_0x1b8981({'statusCode':0x194,'message':_0x4afc('0x13')});}})['catch'](function(_0x4e32e8){logger[_0x4afc('0x14')]('['+[_0x31e165['toUpperCase']()]+']',_0x4e32e8[_0x4afc('0x15')]);_0x1b8981(_0x4e32e8);});});}function getUser(_0x24ed6d,_0x2b928b,_0x31eec4){return function(_0x3a306f){return new Promise(function(_0x3ebdc8,_0x22f809){var _0x3ad418={'method':_0x4afc('0x16'),'uri':_0x31eec4+_0x4afc('0xa'),'json':!![]};_0x3ad418[_0x4afc('0x17')]=_0x2b928b;logger['info'](_0x4afc('0x18'));return rp(_0x3ad418)[_0x4afc('0x19')](function(_0x32865e){if(_0x32865e){var _0x14558a=_0x32865e['users'];var _0x3bddc0=![];var _0x30eda3=null;if(_0x3a306f[_0x4afc('0x1a')]!==null){logger[_0x4afc('0xb')](_0x4afc('0x1b'),_0x3a306f[_0x4afc('0x1a')]);_0x3a306f[_0x4afc('0x1c')]=_0x3a306f['agentEmail'];for(_0x30eda3=0x0;_0x30eda3<_0x14558a[_0x4afc('0xe')];_0x30eda3++){if(_0x14558a[_0x30eda3][_0x4afc('0xf')]===_0x3a306f['agentEmail']){_0x3bddc0=!![];_0x3a306f[_0x4afc('0x1d')]=_0x14558a[_0x30eda3]['id'];logger['info'](_0x4afc('0x1e'),_0x3a306f[_0x4afc('0x1d')]);}}}if(!_0x3bddc0){logger[_0x4afc('0xb')](_0x4afc('0x1f'));_0x3a306f[_0x4afc('0x1c')]=_0x3a306f[_0x4afc('0x10')];_0x3a306f[_0x4afc('0x1d')]=_0x3a306f[_0x4afc('0x11')];_0x3bddc0=!![];}if(_0x3bddc0){_0x3ebdc8(_0x3a306f);}else{_0x22f809({'statusCode':0x194,'message':_0x4afc('0x13')});}}else{_0x22f809({'statusCode':0x194,'message':_0x4afc('0x13')});}})[_0x4afc('0x20')](function(_0x359c07){logger[_0x4afc('0x14')]('['+[_0x24ed6d['toUpperCase']()]+']',_0x359c07[_0x4afc('0x15')]);_0x22f809(_0x359c07);});});};}function searchContact(_0x244f6c,_0x2d6112,_0x4e254d,_0x52212d){return new Promise(function(_0x54433f,_0x426e9d){var _0x5db47e={'method':'GET','headers':_0x2d6112,'uri':_0x244f6c+_0x4afc('0x21')+_0x52212d+_0x4afc('0x22')+_0x4e254d+'&entities=contact','json':!![]};rp(_0x5db47e)['then'](function(_0x52e3dd){var _0x3bae1a=_[_0x4afc('0x23')](_0x52e3dd[_0x4afc('0x24')][_0x4afc('0x24')],[_0x4e254d,_0x52212d]);_0x54433f(_0x3bae1a);})[_0x4afc('0x20')](function(_0x28cd3e){_0x426e9d(_0x28cd3e);});});}function getEndUser(_0x566389,_0x290391,_0x3d1693){return function(_0x1ba6b5){return new Promise(function(_0x2f178c,_0x2b115d){logger[_0x4afc('0xb')](util[_0x4afc('0x25')](_0x4afc('0x26'),_0x1ba6b5['contactNumber']));searchContact(_0x3d1693,_0x290391,_0x4afc('0x27'),_0x1ba6b5['contactNumber'])['then'](function(_0x324a12){if(_0x324a12){_0x1ba6b5[_0x4afc('0x28')]=_0x324a12['id'];logger[_0x4afc('0xb')](_0x4afc('0x29'),_0x1ba6b5[_0x4afc('0x28')]);return _0x2f178c(_0x1ba6b5);}searchContact(_0x3d1693,_0x290391,_0x4afc('0x2a'),_0x1ba6b5['contactNumber'])[_0x4afc('0x19')](function(_0x2d0ad8){if(_0x2d0ad8){_0x1ba6b5[_0x4afc('0x28')]=_0x2d0ad8['id'];logger[_0x4afc('0xb')](_0x4afc('0x2b'),_0x1ba6b5[_0x4afc('0x28')]);return _0x2f178c(_0x1ba6b5);}createEndUser(_0x1ba6b5,_0x566389,_0x290391,_0x3d1693)['then'](function(_0x22eea2){logger[_0x4afc('0xb')](_0x4afc('0x2c'),_0x22eea2[_0x4afc('0x28')]);return _0x2f178c(_0x22eea2);});});})['catch'](function(_0x4be1e6){_0x2b115d(_0x4be1e6);});});};}function createEndUser(_0x43c341,_0x22bd75,_0x17ea03,_0x5edfe1){return new Promise(function(_0x5790a2,_0x391120){var _0x4a06cf=moment();var _0x5947bb={'method':_0x4afc('0x2d'),'uri':_0x5edfe1+_0x4afc('0x2e'),'body':{'contact':{'last_name':_0x43c341[_0x4afc('0x2f')],'work_number':_0x43c341[_0x4afc('0x2f')],'mobile_number':_0x43c341[_0x4afc('0x2f')],'owner_id':_0x43c341[_0x4afc('0x1d')],'created_at':_0x4a06cf[_0x4afc('0x25')](_0x4afc('0x30'))}},'json':!![]};_0x5947bb[_0x4afc('0x17')]=_0x17ea03;logger[_0x4afc('0xb')](_0x4afc('0x31'));return rp(_0x5947bb)[_0x4afc('0x19')](function(_0x15c6cb){_0x43c341[_0x4afc('0x28')]=_0x15c6cb[_0x4afc('0x32')]['id'];_0x5790a2(_0x43c341);})['catch'](function(_0xd48eea){logger[_0x4afc('0x14')]('['+[_0x22bd75[_0x4afc('0x33')]()]+']',_0xd48eea[_0x4afc('0x15')]);_0x391120(_0xd48eea[_0x4afc('0x15')]);});});}function getTicket(_0x260b06,_0x3e87f0,_0x50d53f,_0x5e97f4,_0x5ee5d7){return function(_0x43bd0f){logger[_0x4afc('0xb')]('Creating\x20new\x20task');return new Promise(function(_0xe62748,_0x38a1bb){var _0x8ba5e6=moment();var _0x397996={'method':'POST','uri':_0x50d53f+_0x4afc('0x34'),'body':{'title':intUtil[_0x4afc('0x35')](_0x5e97f4[_0x4afc('0x36')],_0x5ee5d7,'\x20'),'description':intUtil[_0x4afc('0x35')](_0x5e97f4[_0x4afc('0x37')],_0x5ee5d7,'\x0a'),'owner_id':_0x43bd0f[_0x4afc('0x1d')],'creater_id':_0x43bd0f['adminId'],'targetable_id':_0x43bd0f[_0x4afc('0x28')],'targetable_type':'Contact','created_at':_0x8ba5e6[_0x4afc('0x25')](_0x4afc('0x30')),'due_date':_0x8ba5e6[_0x4afc('0x38')](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x397996[_0x4afc('0x17')]=_0x3e87f0;return rp(_0x397996)[_0x4afc('0x19')](function(_0x2cf64e){_0x43bd0f[_0x4afc('0x39')]=_0x2cf64e[_0x4afc('0x3a')]['id'];logger[_0x4afc('0xb')](_0x4afc('0x3b'),_0x43bd0f[_0x4afc('0x39')]);_0xe62748(_0x43bd0f);})['catch'](function(_0x658c5b){logger[_0x4afc('0x14')]('['+[_0x260b06['toUpperCase']()]+']',_0x658c5b[_0x4afc('0x15')]);_0x38a1bb(_0x658c5b['message']);});});};}function emit(_0x20a2d3,_0x24a731,_0x16c6c4){var _0x5e0ebd={'uri':_0x20a2d3+_0x4afc('0x3c')+_0x16c6c4};io['to'](util[_0x4afc('0x25')](_0x4afc('0x3d'),_0x24a731))[_0x4afc('0x3e')](_0x4afc('0x3f'),_0x5e0ebd);}exports['cs']=function(_0x19a0ac,_0x5d9d90,_0x4e470d,_0x4f4e46,_0x32f3b9,_0x1c5661,_0x42e274,_0x269c24){var _0xb5cca9={};var _0x122cbc={'Authorization':_0x4afc('0x40')+_0x1c5661[_0x4afc('0x41')]};_0x1c5661[_0x4afc('0x42')]=intUtil[_0x4afc('0x43')](_0x1c5661['remoteUri']);_0x1c5661[_0x4afc('0x44')]=intUtil['stripTrailingSlash'](_0x1c5661['serverUrl']);var _0x46599a=_0x1c5661['remoteUri'];_0xb5cca9[_0x4afc('0x10')]=_0x1c5661[_0x4afc('0x45')];_0xb5cca9[_0x4afc('0x2f')]=_0x269c24[_0x4afc('0x46')]()==='outbound'?_0x5d9d90[_0x4afc('0x47')]:_0x5d9d90['calleridnum'];_0xb5cca9[_0x4afc('0x48')]=_0x269c24===_0x4afc('0x49')||_0x269c24===_0x4afc('0x4a')?_0x4afc('0x49'):_0x4afc('0x4b');if(_0x4f4e46){_0xb5cca9[_0x4afc('0x1a')]=_0x4f4e46[_0x4afc('0xf')];}var _0x12fa43=util[_0x4afc('0x25')](_0x4afc('0x4c'),_0x1c5661[_0x4afc('0x44')],_0x5d9d90[_0x4afc('0x4d')],md5(_0x5d9d90['uniqueid']));if(_0x32f3b9&&_0x32f3b9[_0x4afc('0x4e')]){logger[_0x4afc('0xb')](_0x4afc('0x4f'),_0x4afc('0x50'));_0x5d9d90[_0x4afc('0x51')]=_0x12fa43;}else if(_0x42e274&&_0x42e274[_0x4afc('0x52')]&&_0x42e274[_0x4afc('0x52')]!==_0x4afc('0x53')){logger[_0x4afc('0xb')](_0x4afc('0x54'),_0x4afc('0x50'));_0x5d9d90[_0x4afc('0x51')]=_0x12fa43;}else{_0x5d9d90[_0x4afc('0x51')]='';}return getAdminId(_0xb5cca9,_0x269c24,_0x122cbc,_0x46599a)['then'](getUser(_0x269c24,_0x122cbc,_0x46599a))[_0x4afc('0x19')](getEndUser(_0x269c24,_0x122cbc,_0x46599a))['then'](getTicket(_0x269c24,_0x122cbc,_0x46599a,_0x4e470d,_0x5d9d90))[_0x4afc('0x19')](function(_0x2abc1b){logger[_0x4afc('0xb')](util[_0x4afc('0x25')]('The\x20ticket\x20ID\x20is:\x20%s',_0x2abc1b['ticketId']));if(_0x269c24!==_0x4afc('0x4a')){logger[_0x4afc('0xb')]('['+[_0x269c24['toUpperCase']()]+']',_0x4afc('0x55'));emit(_0x46599a,_0x4f4e46[_0x4afc('0x56')],_0x2abc1b[_0x4afc('0x28')]);}})[_0x4afc('0x20')](function(_0x329550){logger[_0x4afc('0x14')]('['+[_0x269c24[_0x4afc('0x33')]()]+_0x4afc('0x57'),util[_0x4afc('0x58')](_0x329550,{'showHidden':!![],'depth':null}));});};