69e1c350535afc1ce5efa24682c47fcbffcca004
[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 _0x242e=['then','agentEmail','email','userId','Admin\x20selected','error','/api/contacts/filters','Getting\x20contacts\x20filter','forEach','name','All\x20Contacts','Getting\x20contact\x20list','/api/contacts/view/','contactNumber','contacts','find','work_number','mobile_number','endUserId','Contact\x20created:','POST','format','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','ticketId','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','users','length','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','Getting\x20user\x20list'];(function(_0x2b3ab5,_0x52a861){var _0x35c74d=function(_0x1606a3){while(--_0x1606a3){_0x2b3ab5['push'](_0x2b3ab5['shift']());}};_0x35c74d(++_0x52a861);}(_0x242e,0x12f));var _0xe242=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x242e[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0xe242('0x0'));var rp=require('request-promise');var md5=require(_0xe242('0x1'));var util=require(_0xe242('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0xe242('0x3'));var intUtil=require(_0xe242('0x4'));var config=require(_0xe242('0x5'));var logger=require(_0xe242('0x6'))(_0xe242('0x7'));config['redis']=_['defaults'](config[_0xe242('0x8')],{'host':_0xe242('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe242('0x8')]));function getAdminId(_0x1a4c05,_0x38cbbb,_0x444dd9,_0x177f33){return new Promise(function(_0x5b06fb,_0x63316e){var _0x2814fa=![];var _0x23f9e4={'method':_0xe242('0xa'),'uri':_0x177f33+_0xe242('0xb'),'json':!![]};_0x23f9e4[_0xe242('0xc')]=_0x444dd9;logger[_0xe242('0xd')](_0xe242('0xe'));return rp(_0x23f9e4)['then'](function(_0x464ab1){if(_0x464ab1){var _0x8f9218=_0x464ab1[_0xe242('0xf')];var _0x4056b3=null;for(_0x4056b3=0x0;_0x4056b3<_0x8f9218[_0xe242('0x10')];_0x4056b3++){if(_0x8f9218[_0x4056b3]['email']===_0x1a4c05[_0xe242('0x11')]){_0x1a4c05[_0xe242('0x12')]=_0x8f9218[_0x4056b3]['id'];_0x2814fa=!![];}}if(_0x2814fa){logger[_0xe242('0xd')](_0xe242('0x13'),_0x1a4c05['adminId']);_0x5b06fb(_0x1a4c05);}else{_0x63316e({'statusCode':0x194,'message':_0xe242('0x14')});}}else{_0x63316e({'statusCode':0x194,'message':_0xe242('0x14')});}})[_0xe242('0x15')](function(_0x3ff340){logger['error']('['+[_0x38cbbb[_0xe242('0x16')]()]+']',_0x3ff340[_0xe242('0x17')]);_0x63316e(_0x3ff340);});});}function getUser(_0x141ef1,_0x4f9304,_0x2ad54a){return function(_0x24d6b5){return new Promise(function(_0x1a4faa,_0x292bd3){var _0x560881={'method':'GET','uri':_0x2ad54a+_0xe242('0xb'),'json':!![]};_0x560881[_0xe242('0xc')]=_0x4f9304;logger['info'](_0xe242('0x18'));return rp(_0x560881)[_0xe242('0x19')](function(_0x12bb9a){if(_0x12bb9a){var _0x229db6=_0x12bb9a[_0xe242('0xf')];var _0x504c11=![];var _0x21afd8=null;if(_0x24d6b5[_0xe242('0x1a')]!==null){logger['info']('Getting\x20user\x20with\x20email',_0x24d6b5[_0xe242('0x1a')]);_0x24d6b5['userEmail']=_0x24d6b5['agentEmail'];for(_0x21afd8=0x0;_0x21afd8<_0x229db6[_0xe242('0x10')];_0x21afd8++){if(_0x229db6[_0x21afd8][_0xe242('0x1b')]===_0x24d6b5['agentEmail']){_0x504c11=!![];_0x24d6b5[_0xe242('0x1c')]=_0x229db6[_0x21afd8]['id'];logger[_0xe242('0xd')]('User\x20found:',_0x24d6b5['userId']);}}}if(!_0x504c11){logger[_0xe242('0xd')](_0xe242('0x1d'));_0x24d6b5['userEmail']=_0x24d6b5['adminEmail'];_0x24d6b5[_0xe242('0x1c')]=_0x24d6b5[_0xe242('0x12')];_0x504c11=!![];}if(_0x504c11){_0x1a4faa(_0x24d6b5);}else{_0x292bd3({'statusCode':0x194,'message':_0xe242('0x14')});}}else{_0x292bd3({'statusCode':0x194,'message':_0xe242('0x14')});}})['catch'](function(_0x5e1b96){logger[_0xe242('0x1e')]('['+[_0x141ef1[_0xe242('0x16')]()]+']',_0x5e1b96['message']);_0x292bd3(_0x5e1b96);});});};}function getEndUser(_0x1ff467,_0x148056,_0x294764){return function(_0x552762){return new Promise(function(_0x484ce0,_0x501379){var _0x570627=0x0;var _0x4013c6={'method':_0xe242('0xa'),'uri':_0x294764+_0xe242('0x1f'),'json':!![]};_0x4013c6[_0xe242('0xc')]=_0x148056;logger['info'](_0xe242('0x20'));return rp(_0x4013c6)[_0xe242('0x19')](function(_0x5824d6){_0x5824d6['filters'][_0xe242('0x21')](function(_0x57f34e){if(_0x57f34e[_0xe242('0x22')]===_0xe242('0x23')){_0x570627=_0x57f34e['id'];}});})[_0xe242('0x19')](function(){logger[_0xe242('0xd')](_0xe242('0x24'));var _0x15e41c={'method':'GET','uri':_0x294764+_0xe242('0x25')+_0x570627,'json':!![]};_0x15e41c[_0xe242('0xc')]=_0x148056;return rp(_0x15e41c);})['then'](function(_0x3cb221){logger[_0xe242('0xd')]('Searching\x20contact\x20with\x20phone',_0x552762[_0xe242('0x26')]);if(_0x3cb221[_0xe242('0x27')]['length']>0x0){var _0x5d11b5=_[_0xe242('0x28')](_0x3cb221[_0xe242('0x27')],function(_0x5ef234){if(_0x5ef234[_0xe242('0x29')]===_0x552762[_0xe242('0x26')]||_0x5ef234[_0xe242('0x2a')]===_0x552762[_0xe242('0x26')]){return _0x5ef234;}});if(_0x5d11b5){_0x552762[_0xe242('0x2b')]=_0x5d11b5['id'];logger[_0xe242('0xd')]('Contact\x20found:',_0x552762[_0xe242('0x2b')]);_0x484ce0(_0x552762);}else{return createEndUser(_0x552762,_0x1ff467,_0x148056,_0x294764)['then'](function(_0x25cb9f){logger[_0xe242('0xd')](_0xe242('0x2c'),_0x552762[_0xe242('0x2b')]);_0x484ce0(_0x25cb9f);});}}else{return createEndUser(_0x552762,_0x1ff467,_0x148056,_0x294764)[_0xe242('0x19')](function(_0x1e4ab9){logger['info']('Contact\x20created:',_0x552762[_0xe242('0x2b')]);_0x484ce0(_0x1e4ab9);});}})[_0xe242('0x15')](function(_0x532039){throw new Error(_0x532039['message']);});});};}function createEndUser(_0x37ecd4,_0xc7c475,_0x2428bf,_0x37fa7f){return new Promise(function(_0x268012,_0x532611){var _0x4af431=moment();var _0x360288={'method':_0xe242('0x2d'),'uri':_0x37fa7f+'/api/contacts','body':{'contact':{'last_name':_0x37ecd4['contactNumber'],'work_number':_0x37ecd4[_0xe242('0x26')],'mobile_number':_0x37ecd4[_0xe242('0x26')],'owner_id':_0x37ecd4['userId'],'created_at':_0x4af431[_0xe242('0x2e')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x360288[_0xe242('0xc')]=_0x2428bf;logger[_0xe242('0xd')](_0xe242('0x2f'));return rp(_0x360288)[_0xe242('0x19')](function(_0x133594){_0x37ecd4[_0xe242('0x2b')]=_0x133594[_0xe242('0x30')]['id'];_0x268012(_0x37ecd4);})[_0xe242('0x15')](function(_0x11f70f){logger[_0xe242('0x1e')]('['+[_0xc7c475[_0xe242('0x16')]()]+']',_0x11f70f[_0xe242('0x17')]);_0x532611(_0x11f70f[_0xe242('0x17')]);});});}function getTicket(_0x3a340c,_0x5d632d,_0x49d18b,_0x1a9aee,_0x4d84b3){return function(_0x32debb){logger[_0xe242('0xd')](_0xe242('0x31'));return new Promise(function(_0x2f3aca,_0x49bb43){var _0x2307aa=moment();var _0x11fbb6={'method':_0xe242('0x2d'),'uri':_0x49d18b+_0xe242('0x32'),'body':{'title':intUtil[_0xe242('0x33')](_0x1a9aee[_0xe242('0x34')],_0x4d84b3,'\x20'),'description':intUtil[_0xe242('0x33')](_0x1a9aee[_0xe242('0x35')],_0x4d84b3,'\x0a'),'owner_id':_0x32debb[_0xe242('0x1c')],'creater_id':_0x32debb['adminId'],'targetable_id':_0x32debb['endUserId'],'targetable_type':_0xe242('0x36'),'created_at':_0x2307aa[_0xe242('0x2e')](_0xe242('0x37')),'due_date':_0x2307aa['add'](0x1e,'m')[_0xe242('0x2e')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x11fbb6[_0xe242('0xc')]=_0x5d632d;return rp(_0x11fbb6)['then'](function(_0x11c335){_0x32debb[_0xe242('0x38')]=_0x11c335['task']['id'];logger[_0xe242('0xd')]('Task\x20created:',_0x32debb[_0xe242('0x38')]);_0x2f3aca(_0x32debb);})[_0xe242('0x15')](function(_0x3e5c41){logger[_0xe242('0x1e')]('['+[_0x3a340c[_0xe242('0x16')]()]+']',_0x3e5c41[_0xe242('0x17')]);_0x49bb43(_0x3e5c41[_0xe242('0x17')]);});});};}function emit(_0x201b70,_0x67fad1,_0x11756f){var _0x48a2aa={'uri':_0x201b70+'/contacts/'+_0x11756f};io['to'](util[_0xe242('0x2e')](_0xe242('0x39'),_0x67fad1))[_0xe242('0x3a')](_0xe242('0x3b'),_0x48a2aa);}exports['cs']=function(_0x27eb3f,_0x23540e,_0x159cc6,_0x105c5f,_0x1ad488,_0x488192,_0x4e0263,_0x4d9975){var _0xd382cf={};var _0x2673c2={'Authorization':'Token\x20token='+_0x488192[_0xe242('0x3c')]};_0x488192[_0xe242('0x3d')]=intUtil[_0xe242('0x3e')](_0x488192[_0xe242('0x3d')]);_0x488192[_0xe242('0x3f')]=intUtil[_0xe242('0x3e')](_0x488192['serverUrl']);var _0x205c6a=_0x488192[_0xe242('0x3d')];_0xd382cf[_0xe242('0x11')]=_0x488192[_0xe242('0x40')];_0xd382cf[_0xe242('0x26')]=_0x4d9975[_0xe242('0x41')]()===_0xe242('0x42')?_0x23540e[_0xe242('0x43')]:_0x23540e['calleridnum'];_0xd382cf['callDirection']=_0x4d9975===_0xe242('0x44')||_0x4d9975===_0xe242('0x45')?_0xe242('0x44'):_0xe242('0x42');if(_0x105c5f){_0xd382cf[_0xe242('0x1a')]=_0x105c5f['email'];}var _0x4633a4=util[_0xe242('0x2e')](_0xe242('0x46'),_0x488192[_0xe242('0x3f')],_0x23540e[_0xe242('0x47')],md5(_0x23540e['uniqueid']));if(_0x1ad488&&_0x1ad488[_0xe242('0x48')]){logger[_0xe242('0xd')](_0xe242('0x49'),_0xe242('0x4a'));_0x23540e[_0xe242('0x4b')]=_0x4633a4;}else if(_0x4e0263&&_0x4e0263['recordingFormat']&&_0x4e0263[_0xe242('0x4c')]!==_0xe242('0x4d')){logger['info'](_0xe242('0x4e'),'Recording\x20is\x20enabled!');_0x23540e[_0xe242('0x4b')]=_0x4633a4;}else{_0x23540e['recordingURL']='';}return getAdminId(_0xd382cf,_0x4d9975,_0x2673c2,_0x205c6a)[_0xe242('0x19')](getUser(_0x4d9975,_0x2673c2,_0x205c6a))[_0xe242('0x19')](getEndUser(_0x4d9975,_0x2673c2,_0x205c6a))[_0xe242('0x19')](getTicket(_0x4d9975,_0x2673c2,_0x205c6a,_0x159cc6,_0x23540e))[_0xe242('0x19')](function(_0xfdf034){logger[_0xe242('0xd')](util[_0xe242('0x2e')](_0xe242('0x4f'),_0xfdf034[_0xe242('0x38')]));if(_0x4d9975!==_0xe242('0x45')){logger['info']('['+[_0x4d9975[_0xe242('0x16')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x205c6a,_0x105c5f[_0xe242('0x22')],_0xfdf034[_0xe242('0x2b')]);}})[_0xe242('0x15')](function(_0x433858){logger['error']('['+[_0x4d9975[_0xe242('0x16')]()]+_0xe242('0x50'),util[_0xe242('0x51')](_0x433858,{'showHidden':!![],'depth':null}));});};