Built motion from commit (unavailable).|2.5.3
[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 _0x01ed=['Getting\x20contact\x20list','/api/contacts/view/','contacts','find','work_number','contactNumber','mobile_number','endUserId','Contact\x20found:','Contact\x20created:','POST','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','add','ticketId','task','/contacts/','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','outbound','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','inspect','request-promise','md5','util','moment','./util','../../../../config/logger','freshsales','redis','defaults','localhost','GET','headers','Getting\x20admin\x20information','email','adminEmail','info','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','/api/selector/owners','then','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','userId','User\x20found:','Admin\x20selected','adminId','catch','Getting\x20contacts\x20filter','forEach','name','All\x20Contacts'];(function(_0x57d3f0,_0x17ffdb){var _0x24eed8=function(_0x413544){while(--_0x413544){_0x57d3f0['push'](_0x57d3f0['shift']());}};_0x24eed8(++_0x17ffdb);}(_0x01ed,0x119));var _0xd01e=function(_0x13bfe3,_0x1011a6){_0x13bfe3=_0x13bfe3-0x0;var _0x4a8149=_0x01ed[_0x13bfe3];return _0x4a8149;};'use strict';var _=require('lodash');var rp=require(_0xd01e('0x0'));var md5=require(_0xd01e('0x1'));var util=require(_0xd01e('0x2'));var moment=require(_0xd01e('0x3'));var Promise=require('bluebird');var Redis=require('ioredis');var intUtil=require(_0xd01e('0x4'));var config=require('../../../../config/environment');var logger=require(_0xd01e('0x5'))(_0xd01e('0x6'));config[_0xd01e('0x7')]=_[_0xd01e('0x8')](config[_0xd01e('0x7')],{'host':_0xd01e('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd01e('0x7')]));function getAdminId(_0x4cad2a,_0x53a1ff,_0x5d3c7d,_0x2d43be){return new Promise(function(_0x4fade0,_0x57d6e9){var _0x62ce43=![];var _0x5c1038={'method':_0xd01e('0xa'),'uri':_0x2d43be+'/api/selector/owners','json':!![]};_0x5c1038[_0xd01e('0xb')]=_0x5d3c7d;logger['info'](_0xd01e('0xc'));return rp(_0x5c1038)['then'](function(_0x5ae223){if(_0x5ae223){var _0x6e9b02=_0x5ae223['users'];var _0x636c3=null;for(_0x636c3=0x0;_0x636c3<_0x6e9b02['length'];_0x636c3++){if(_0x6e9b02[_0x636c3][_0xd01e('0xd')]===_0x4cad2a[_0xd01e('0xe')]){_0x4cad2a['adminId']=_0x6e9b02[_0x636c3]['id'];_0x62ce43=!![];}}if(_0x62ce43){logger[_0xd01e('0xf')]('Admin\x20found:',_0x4cad2a['adminId']);_0x4fade0(_0x4cad2a);}else{_0x57d6e9({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x57d6e9({'statusCode':0x194,'message':_0xd01e('0x10')});}})['catch'](function(_0x3eff83){logger[_0xd01e('0x11')]('['+[_0x53a1ff[_0xd01e('0x12')]()]+']',_0x3eff83[_0xd01e('0x13')]);_0x57d6e9(_0x3eff83);});});}function getUser(_0x229c29,_0x574577,_0x457ea6){return function(_0x154e4b){return new Promise(function(_0x1cdb83,_0x449c98){var _0x34a212={'method':_0xd01e('0xa'),'uri':_0x457ea6+_0xd01e('0x14'),'json':!![]};_0x34a212[_0xd01e('0xb')]=_0x574577;logger[_0xd01e('0xf')]('Getting\x20user\x20list');return rp(_0x34a212)[_0xd01e('0x15')](function(_0x5c2dd5){if(_0x5c2dd5){var _0x35ab93=_0x5c2dd5['users'];var _0x3ff83a=![];var _0x2c952f=null;if(_0x154e4b[_0xd01e('0x16')]!==null){logger['info'](_0xd01e('0x17'),_0x154e4b[_0xd01e('0x16')]);_0x154e4b[_0xd01e('0x18')]=_0x154e4b[_0xd01e('0x16')];for(_0x2c952f=0x0;_0x2c952f<_0x35ab93[_0xd01e('0x19')];_0x2c952f++){if(_0x35ab93[_0x2c952f][_0xd01e('0xd')]===_0x154e4b[_0xd01e('0x16')]){_0x3ff83a=!![];_0x154e4b[_0xd01e('0x1a')]=_0x35ab93[_0x2c952f]['id'];logger[_0xd01e('0xf')](_0xd01e('0x1b'),_0x154e4b[_0xd01e('0x1a')]);}}}if(!_0x3ff83a){logger[_0xd01e('0xf')](_0xd01e('0x1c'));_0x154e4b['userEmail']=_0x154e4b[_0xd01e('0xe')];_0x154e4b[_0xd01e('0x1a')]=_0x154e4b[_0xd01e('0x1d')];_0x3ff83a=!![];}if(_0x3ff83a){_0x1cdb83(_0x154e4b);}else{_0x449c98({'statusCode':0x194,'message':_0xd01e('0x10')});}}else{_0x449c98({'statusCode':0x194,'message':_0xd01e('0x10')});}})[_0xd01e('0x1e')](function(_0x33aa06){logger[_0xd01e('0x11')]('['+[_0x229c29[_0xd01e('0x12')]()]+']',_0x33aa06['message']);_0x449c98(_0x33aa06);});});};}function getEndUser(_0xdbacbf,_0x4424c5,_0x3198af){return function(_0x2ae386){return new Promise(function(_0x12fb83,_0x50b09d){var _0x424476=0x0;var _0x12d2c4={'method':_0xd01e('0xa'),'uri':_0x3198af+'/api/contacts/filters','json':!![]};_0x12d2c4[_0xd01e('0xb')]=_0x4424c5;logger[_0xd01e('0xf')](_0xd01e('0x1f'));return rp(_0x12d2c4)[_0xd01e('0x15')](function(_0x9dd326){_0x9dd326['filters'][_0xd01e('0x20')](function(_0x2a6219){if(_0x2a6219[_0xd01e('0x21')]===_0xd01e('0x22')){_0x424476=_0x2a6219['id'];}});})[_0xd01e('0x15')](function(){logger[_0xd01e('0xf')](_0xd01e('0x23'));var _0x43ab6a={'method':_0xd01e('0xa'),'uri':_0x3198af+_0xd01e('0x24')+_0x424476,'json':!![]};_0x43ab6a[_0xd01e('0xb')]=_0x4424c5;return rp(_0x43ab6a);})['then'](function(_0x371844){logger[_0xd01e('0xf')]('Searching\x20contact\x20with\x20phone',_0x2ae386['contactNumber']);if(_0x371844[_0xd01e('0x25')][_0xd01e('0x19')]>0x0){var _0x13719a=_[_0xd01e('0x26')](_0x371844['contacts'],function(_0x11c02d){if(_0x11c02d[_0xd01e('0x27')]===_0x2ae386[_0xd01e('0x28')]||_0x11c02d[_0xd01e('0x29')]===_0x2ae386[_0xd01e('0x28')]){return _0x11c02d;}});if(_0x13719a){_0x2ae386[_0xd01e('0x2a')]=_0x13719a['id'];logger[_0xd01e('0xf')](_0xd01e('0x2b'),_0x2ae386[_0xd01e('0x2a')]);_0x12fb83(_0x2ae386);}else{return createEndUser(_0x2ae386,_0xdbacbf,_0x4424c5,_0x3198af)[_0xd01e('0x15')](function(_0x404750){logger[_0xd01e('0xf')]('Contact\x20created:',_0x2ae386[_0xd01e('0x2a')]);_0x12fb83(_0x404750);});}}else{return createEndUser(_0x2ae386,_0xdbacbf,_0x4424c5,_0x3198af)[_0xd01e('0x15')](function(_0x76a6fd){logger[_0xd01e('0xf')](_0xd01e('0x2c'),_0x2ae386[_0xd01e('0x2a')]);_0x12fb83(_0x76a6fd);});}})[_0xd01e('0x1e')](function(_0x321803){throw new Error(_0x321803[_0xd01e('0x13')]);});});};}function createEndUser(_0x48448d,_0x184b47,_0x11def3,_0x3278c1){return new Promise(function(_0x4bba54,_0x4206ab){var _0x484bb9=moment();var _0x30d9f4={'method':_0xd01e('0x2d'),'uri':_0x3278c1+_0xd01e('0x2e'),'body':{'contact':{'last_name':_0x48448d['contactNumber'],'work_number':_0x48448d[_0xd01e('0x28')],'mobile_number':_0x48448d[_0xd01e('0x28')],'owner_id':_0x48448d[_0xd01e('0x1a')],'created_at':_0x484bb9[_0xd01e('0x2f')](_0xd01e('0x30'))}},'json':!![]};_0x30d9f4[_0xd01e('0xb')]=_0x11def3;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x30d9f4)[_0xd01e('0x15')](function(_0x18dfc3){_0x48448d[_0xd01e('0x2a')]=_0x18dfc3['contact']['id'];_0x4bba54(_0x48448d);})[_0xd01e('0x1e')](function(_0x2383f1){logger[_0xd01e('0x11')]('['+[_0x184b47[_0xd01e('0x12')]()]+']',_0x2383f1[_0xd01e('0x13')]);_0x4206ab(_0x2383f1[_0xd01e('0x13')]);});});}function getTicket(_0x1614e5,_0x44e3ff,_0x5e831e,_0x5c3b65,_0x42f777){return function(_0x49009d){logger['info'](_0xd01e('0x31'));return new Promise(function(_0x158734,_0x440996){var _0x8e8eeb=moment();var _0x52a852={'method':'POST','uri':_0x5e831e+_0xd01e('0x32'),'body':{'title':intUtil[_0xd01e('0x33')](_0x5c3b65[_0xd01e('0x34')],_0x42f777,'\x20'),'description':intUtil[_0xd01e('0x33')](_0x5c3b65[_0xd01e('0x35')],_0x42f777,'\x0a'),'owner_id':_0x49009d['userId'],'creater_id':_0x49009d['adminId'],'targetable_id':_0x49009d[_0xd01e('0x2a')],'targetable_type':'Contact','created_at':_0x8e8eeb['format']('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x8e8eeb[_0xd01e('0x36')](0x1e,'m')[_0xd01e('0x2f')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x52a852[_0xd01e('0xb')]=_0x44e3ff;return rp(_0x52a852)['then'](function(_0x1eca1a){_0x49009d[_0xd01e('0x37')]=_0x1eca1a[_0xd01e('0x38')]['id'];logger[_0xd01e('0xf')]('Task\x20created:',_0x49009d[_0xd01e('0x37')]);_0x158734(_0x49009d);})[_0xd01e('0x1e')](function(_0x569dc9){logger['error']('['+[_0x1614e5[_0xd01e('0x12')]()]+']',_0x569dc9['message']);_0x440996(_0x569dc9[_0xd01e('0x13')]);});});};}function emit(_0x2f5bdc,_0x53f9ff,_0x3b4af4){var _0x3077ac={'uri':_0x2f5bdc+_0xd01e('0x39')+_0x3b4af4};io['to'](util['format']('user:%s',_0x53f9ff))['emit'](_0xd01e('0x3a'),_0x3077ac);}exports['cs']=function(_0x1bc8c3,_0x5a69e8,_0xab2e7c,_0x908305,_0x4d0a6a,_0x35cca6,_0x4dd25a,_0xa1989c){var _0x3fb072={};var _0x306f37={'Authorization':_0xd01e('0x3b')+_0x35cca6[_0xd01e('0x3c')]};_0x35cca6[_0xd01e('0x3d')]=intUtil['stripTrailingSlash'](_0x35cca6['remoteUri']);_0x35cca6[_0xd01e('0x3e')]=intUtil[_0xd01e('0x3f')](_0x35cca6[_0xd01e('0x3e')]);var _0xed29d6=_0x35cca6[_0xd01e('0x3d')];_0x3fb072[_0xd01e('0xe')]=_0x35cca6[_0xd01e('0x40')];_0x3fb072[_0xd01e('0x28')]=_0xa1989c['toLowerCase']()===_0xd01e('0x41')?_0x5a69e8['destcalleridnum']:_0x5a69e8['calleridnum'];_0x3fb072[_0xd01e('0x42')]=_0xa1989c===_0xd01e('0x43')||_0xa1989c===_0xd01e('0x44')?_0xd01e('0x43'):_0xd01e('0x41');if(_0x908305){_0x3fb072['agentEmail']=_0x908305[_0xd01e('0xd')];}var _0x42d8c7=util[_0xd01e('0x2f')](_0xd01e('0x45'),_0x35cca6[_0xd01e('0x3e')],_0x5a69e8[_0xd01e('0x46')],md5(_0x5a69e8['uniqueid']));if(_0x4d0a6a&&_0x4d0a6a['monitor_format']){logger[_0xd01e('0xf')](_0xd01e('0x47'),_0xd01e('0x48'));_0x5a69e8['recordingURL']=_0x42d8c7;}else if(_0x4dd25a&&_0x4dd25a['recordingFormat']&&_0x4dd25a[_0xd01e('0x49')]!==_0xd01e('0x4a')){logger['info'](_0xd01e('0x4b'),_0xd01e('0x48'));_0x5a69e8[_0xd01e('0x4c')]=_0x42d8c7;}else{_0x5a69e8[_0xd01e('0x4c')]='';}return getAdminId(_0x3fb072,_0xa1989c,_0x306f37,_0xed29d6)['then'](getUser(_0xa1989c,_0x306f37,_0xed29d6))[_0xd01e('0x15')](getEndUser(_0xa1989c,_0x306f37,_0xed29d6))['then'](getTicket(_0xa1989c,_0x306f37,_0xed29d6,_0xab2e7c,_0x5a69e8))['then'](function(_0x453ba7){logger['info'](util[_0xd01e('0x2f')](_0xd01e('0x4d'),_0x453ba7[_0xd01e('0x37')]));if(_0xa1989c!==_0xd01e('0x44')){logger[_0xd01e('0xf')]('['+[_0xa1989c['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0xed29d6,_0x908305['name'],_0x453ba7['endUserId']);}})[_0xd01e('0x1e')](function(_0x4099d6){logger[_0xd01e('0x11')]('['+[_0xa1989c[_0xd01e('0x12')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xd01e('0x4e')](_0x4099d6,{'showHidden':!![],'depth':null}));});};