b5c83e6fdbb5357cbd552024a1f0ed53942c3a34
[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 _0x54a9=['Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','md5','moment','bluebird','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','headers','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','Admin\x20selected','catch','&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','getString','Contact','add','ticketId','task','Task\x20created:','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','callDirection','unmanaged','queue','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s'];(function(_0x46a5c2,_0x581cc3){var _0x42fb4b=function(_0x58a9a5){while(--_0x58a9a5){_0x46a5c2['push'](_0x46a5c2['shift']());}};_0x42fb4b(++_0x581cc3);}(_0x54a9,0x1e9));var _0x954a=function(_0x12ecca,_0x3b4a2e){_0x12ecca=_0x12ecca-0x0;var _0x14cede=_0x54a9[_0x12ecca];return _0x14cede;};'use strict';var _=require(_0x954a('0x0'));var rp=require('request-promise');var md5=require(_0x954a('0x1'));var util=require('util');var moment=require(_0x954a('0x2'));var Promise=require(_0x954a('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x954a('0x4'));var logger=require(_0x954a('0x5'))('freshsales');config[_0x954a('0x6')]=_['defaults'](config['redis'],{'host':_0x954a('0x7'),'port':0x18eb});var io=require(_0x954a('0x8'))(new Redis(config['redis']));function getAdminId(_0xa6b05d,_0x130dd4,_0x17cd00,_0x1a6908){return new Promise(function(_0x1f955d,_0x167e72){var _0x39b7af=![];var _0x179749={'method':_0x954a('0x9'),'uri':_0x1a6908+_0x954a('0xa'),'json':!![]};_0x179749['headers']=_0x17cd00;logger[_0x954a('0xb')](_0x954a('0xc'));return rp(_0x179749)[_0x954a('0xd')](function(_0x50e1e0){if(_0x50e1e0){var _0x368520=_0x50e1e0[_0x954a('0xe')];var _0x45efdc=null;for(_0x45efdc=0x0;_0x45efdc<_0x368520[_0x954a('0xf')];_0x45efdc++){if(_0x368520[_0x45efdc][_0x954a('0x10')]===_0xa6b05d[_0x954a('0x11')]){_0xa6b05d[_0x954a('0x12')]=_0x368520[_0x45efdc]['id'];_0x39b7af=!![];}}if(_0x39b7af){logger[_0x954a('0xb')](_0x954a('0x13'),_0xa6b05d[_0x954a('0x12')]);_0x1f955d(_0xa6b05d);}else{_0x167e72({'statusCode':0x194,'message':_0x954a('0x14')});}}else{_0x167e72({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x30846f){logger[_0x954a('0x15')]('['+[_0x130dd4[_0x954a('0x16')]()]+']',_0x30846f[_0x954a('0x17')]);_0x167e72(_0x30846f);});});}function getUser(_0x55ab50,_0x5e5656,_0x2740d9){return function(_0x2528ab){return new Promise(function(_0x347279,_0xf4e607){var _0x29e97c={'method':_0x954a('0x9'),'uri':_0x2740d9+_0x954a('0xa'),'json':!![]};_0x29e97c[_0x954a('0x18')]=_0x5e5656;logger[_0x954a('0xb')]('Getting\x20user\x20list');return rp(_0x29e97c)[_0x954a('0xd')](function(_0x2416b8){if(_0x2416b8){var _0x3fc536=_0x2416b8[_0x954a('0xe')];var _0x27762a=![];var _0x3c1e27=null;if(_0x2528ab[_0x954a('0x19')]!==null){logger[_0x954a('0xb')](_0x954a('0x1a'),_0x2528ab['agentEmail']);_0x2528ab[_0x954a('0x1b')]=_0x2528ab[_0x954a('0x19')];for(_0x3c1e27=0x0;_0x3c1e27<_0x3fc536['length'];_0x3c1e27++){if(_0x3fc536[_0x3c1e27]['email']===_0x2528ab[_0x954a('0x19')]){_0x27762a=!![];_0x2528ab[_0x954a('0x1c')]=_0x3fc536[_0x3c1e27]['id'];logger[_0x954a('0xb')]('User\x20found:',_0x2528ab[_0x954a('0x1c')]);}}}if(!_0x27762a){logger['info'](_0x954a('0x1d'));_0x2528ab['userEmail']=_0x2528ab[_0x954a('0x11')];_0x2528ab[_0x954a('0x1c')]=_0x2528ab[_0x954a('0x12')];_0x27762a=!![];}if(_0x27762a){_0x347279(_0x2528ab);}else{_0xf4e607({'statusCode':0x194,'message':_0x954a('0x14')});}}else{_0xf4e607({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x954a('0x1e')](function(_0x3c36cf){logger[_0x954a('0x15')]('['+[_0x55ab50[_0x954a('0x16')]()]+']',_0x3c36cf[_0x954a('0x17')]);_0xf4e607(_0x3c36cf);});});};}function searchContact(_0x2c432a,_0x579649,_0x8cab60,_0x4d34c8){return new Promise(function(_0x51dbcc,_0x1a0de4){var _0x5ac265={'method':_0x954a('0x9'),'headers':_0x579649,'uri':_0x2c432a+'/api/lookup?q='+_0x4d34c8+'&f='+_0x8cab60+_0x954a('0x1f'),'json':!![]};rp(_0x5ac265)[_0x954a('0xd')](function(_0x38d4e9){var _0x159075=_[_0x954a('0x20')](_0x38d4e9[_0x954a('0x21')][_0x954a('0x21')],[_0x8cab60,_0x4d34c8]);_0x51dbcc(_0x159075);})[_0x954a('0x1e')](function(_0x146b7c){_0x1a0de4(_0x146b7c);});});}function getEndUser(_0x31d058,_0x2da70e,_0x500342){return function(_0x42e0dd){return new Promise(function(_0x174646,_0x449823){logger['info'](util['format'](_0x954a('0x22'),_0x42e0dd['contactNumber']));searchContact(_0x500342,_0x2da70e,_0x954a('0x23'),_0x42e0dd[_0x954a('0x24')])['then'](function(_0x16fc6a){if(_0x16fc6a){_0x42e0dd[_0x954a('0x25')]=_0x16fc6a['id'];logger[_0x954a('0xb')](_0x954a('0x26'),_0x42e0dd[_0x954a('0x25')]);return _0x174646(_0x42e0dd);}searchContact(_0x500342,_0x2da70e,_0x954a('0x27'),_0x42e0dd[_0x954a('0x24')])[_0x954a('0xd')](function(_0x400bd9){if(_0x400bd9){_0x42e0dd[_0x954a('0x25')]=_0x400bd9['id'];logger['info']('Contact\x20found\x20work_number:',_0x42e0dd[_0x954a('0x25')]);return _0x174646(_0x42e0dd);}createEndUser(_0x42e0dd,_0x31d058,_0x2da70e,_0x500342)['then'](function(_0x5217ff){logger['info'](_0x954a('0x28'),_0x5217ff[_0x954a('0x25')]);return _0x174646(_0x5217ff);});});})[_0x954a('0x1e')](function(_0xbb714b){_0x449823(_0xbb714b);});});};}function createEndUser(_0x594d97,_0x2d6d15,_0x28e633,_0x32a001){return new Promise(function(_0x5271ee,_0x4bfcbb){var _0xd3f6ae=moment();var _0x20ce77={'method':'POST','uri':_0x32a001+'/api/contacts','body':{'contact':{'last_name':_0x594d97[_0x954a('0x24')],'work_number':_0x594d97['contactNumber'],'mobile_number':_0x594d97['contactNumber'],'owner_id':_0x594d97[_0x954a('0x1c')],'created_at':_0xd3f6ae[_0x954a('0x29')](_0x954a('0x2a'))}},'json':!![]};_0x20ce77[_0x954a('0x18')]=_0x28e633;logger['info'](_0x954a('0x2b'));return rp(_0x20ce77)[_0x954a('0xd')](function(_0x3f044e){_0x594d97[_0x954a('0x25')]=_0x3f044e[_0x954a('0x2c')]['id'];_0x5271ee(_0x594d97);})[_0x954a('0x1e')](function(_0x18ba55){logger[_0x954a('0x15')]('['+[_0x2d6d15[_0x954a('0x16')]()]+']',_0x18ba55[_0x954a('0x17')]);_0x4bfcbb(_0x18ba55[_0x954a('0x17')]);});});}function getTicket(_0x3fc91c,_0x5e1115,_0x587661,_0x2f3c63,_0x5d074e){return function(_0x529baa){logger['info'](_0x954a('0x2d'));return new Promise(function(_0x255818,_0x142e61){var _0x40189c=moment();var _0x5c765e={'method':_0x954a('0x2e'),'uri':_0x587661+_0x954a('0x2f'),'body':{'title':intUtil['getString'](_0x2f3c63['Subjects'],_0x5d074e,'\x20'),'description':intUtil[_0x954a('0x30')](_0x2f3c63['Descriptions'],_0x5d074e,'\x0a'),'owner_id':_0x529baa[_0x954a('0x1c')],'creater_id':_0x529baa[_0x954a('0x12')],'targetable_id':_0x529baa['endUserId'],'targetable_type':_0x954a('0x31'),'created_at':_0x40189c[_0x954a('0x29')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x40189c[_0x954a('0x32')](0x1e,'m')[_0x954a('0x29')](_0x954a('0x2a'))},'json':!![]};_0x5c765e[_0x954a('0x18')]=_0x5e1115;return rp(_0x5c765e)[_0x954a('0xd')](function(_0x5da798){_0x529baa[_0x954a('0x33')]=_0x5da798[_0x954a('0x34')]['id'];logger['info'](_0x954a('0x35'),_0x529baa[_0x954a('0x33')]);_0x255818(_0x529baa);})[_0x954a('0x1e')](function(_0x225022){logger[_0x954a('0x15')]('['+[_0x3fc91c['toUpperCase']()]+']',_0x225022[_0x954a('0x17')]);_0x142e61(_0x225022[_0x954a('0x17')]);});});};}function emit(_0x1df6c0,_0x356061,_0x59f1ac){var _0x15fa61={'uri':_0x1df6c0+'/contacts/'+_0x59f1ac};io['to'](util[_0x954a('0x29')](_0x954a('0x36'),_0x356061))[_0x954a('0x37')](_0x954a('0x38'),_0x15fa61);}exports['cs']=function(_0x48f9ed,_0x180c7e,_0x28f6e2,_0x9a8d08,_0x46053b,_0x555d2c,_0x32e222,_0x244cec){var _0x44dfdf={};var _0x431953={'Authorization':_0x954a('0x39')+_0x555d2c[_0x954a('0x3a')]};_0x555d2c[_0x954a('0x3b')]=intUtil[_0x954a('0x3c')](_0x555d2c[_0x954a('0x3b')]);_0x555d2c[_0x954a('0x3d')]=intUtil[_0x954a('0x3c')](_0x555d2c[_0x954a('0x3d')]);var _0x55a10f=_0x555d2c[_0x954a('0x3b')];_0x44dfdf[_0x954a('0x11')]=_0x555d2c[_0x954a('0x3e')];_0x44dfdf[_0x954a('0x24')]=_0x244cec[_0x954a('0x3f')]()==='outbound'?_0x180c7e[_0x954a('0x40')]:_0x180c7e[_0x954a('0x41')];_0x44dfdf[_0x954a('0x42')]=_0x244cec==='queue'||_0x244cec===_0x954a('0x43')?_0x954a('0x44'):_0x954a('0x45');if(_0x9a8d08){_0x44dfdf[_0x954a('0x19')]=_0x9a8d08[_0x954a('0x10')];}var _0x45cc1d=util[_0x954a('0x29')](_0x954a('0x46'),_0x555d2c[_0x954a('0x3d')],_0x180c7e[_0x954a('0x47')],md5(_0x180c7e[_0x954a('0x47')]));if(_0x46053b&&_0x46053b['monitor_format']){logger[_0x954a('0xb')](_0x954a('0x48'),_0x954a('0x49'));_0x180c7e[_0x954a('0x4a')]=_0x45cc1d;}else if(_0x32e222&&_0x32e222[_0x954a('0x4b')]&&_0x32e222['recordingFormat']!==_0x954a('0x4c')){logger[_0x954a('0xb')]('[OUTBOUND]',_0x954a('0x49'));_0x180c7e[_0x954a('0x4a')]=_0x45cc1d;}else{_0x180c7e[_0x954a('0x4a')]='';}return getAdminId(_0x44dfdf,_0x244cec,_0x431953,_0x55a10f)[_0x954a('0xd')](getUser(_0x244cec,_0x431953,_0x55a10f))['then'](getEndUser(_0x244cec,_0x431953,_0x55a10f))[_0x954a('0xd')](getTicket(_0x244cec,_0x431953,_0x55a10f,_0x28f6e2,_0x180c7e))[_0x954a('0xd')](function(_0x57cd72){logger[_0x954a('0xb')](util[_0x954a('0x29')](_0x954a('0x4d'),_0x57cd72['ticketId']));if(_0x244cec!=='unmanaged'){logger[_0x954a('0xb')]('['+[_0x244cec[_0x954a('0x16')]()]+']',_0x954a('0x4e'));emit(_0x55a10f,_0x9a8d08[_0x954a('0x4f')],_0x57cd72[_0x954a('0x25')]);}})[_0x954a('0x1e')](function(_0x4c6cb0){logger[_0x954a('0x15')]('['+[_0x244cec[_0x954a('0x16')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x954a('0x50')](_0x4c6cb0,{'showHidden':!![],'depth':null}));});};