Built motion from commit 9d1906d1.|2.5.40
[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 _0x78f7=['callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','util','moment','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','headers','Getting\x20admin\x20information','then','users','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','GET','/api/selector/owners','info','Getting\x20user\x20list','agentEmail','userEmail','length','email','userId','User\x20found:','Admin\x20selected','adminEmail','error','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Creating\x20new\x20task','/api/tasks','getString','Subjects','YYYY-MM-DDTHH:mm:ss','ticketId','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','outbound','calleridnum'];(function(_0x4d878a,_0x3135d3){var _0x2f6701=function(_0x337408){while(--_0x337408){_0x4d878a['push'](_0x4d878a['shift']());}};_0x2f6701(++_0x3135d3);}(_0x78f7,0x198));var _0x778f=function(_0x573ba4,_0x5c2465){_0x573ba4=_0x573ba4-0x0;var _0x511fd8=_0x78f7[_0x573ba4];return _0x511fd8;};'use strict';var _=require(_0x778f('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x778f('0x1'));var moment=require(_0x778f('0x2'));var Promise=require('bluebird');var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x778f('0x3'));var logger=require(_0x778f('0x4'))(_0x778f('0x5'));config[_0x778f('0x6')]=_[_0x778f('0x7')](config[_0x778f('0x6')],{'host':_0x778f('0x8'),'port':0x18eb});var io=require(_0x778f('0x9'))(new Redis(config[_0x778f('0x6')]));function getAdminId(_0x59b6d9,_0x48c3d3,_0x1b6f71,_0x1c1f68){return new Promise(function(_0x52bfc6,_0x165794){var _0x24f9d9=![];var _0x597274={'method':'GET','uri':_0x1c1f68+'/api/selector/owners','json':!![]};_0x597274[_0x778f('0xa')]=_0x1b6f71;logger['info'](_0x778f('0xb'));return rp(_0x597274)[_0x778f('0xc')](function(_0x1e2112){if(_0x1e2112){var _0x591e34=_0x1e2112[_0x778f('0xd')];var _0x22c577=null;for(_0x22c577=0x0;_0x22c577<_0x591e34['length'];_0x22c577++){if(_0x591e34[_0x22c577]['email']===_0x59b6d9['adminEmail']){_0x59b6d9[_0x778f('0xe')]=_0x591e34[_0x22c577]['id'];_0x24f9d9=!![];}}if(_0x24f9d9){logger['info'](_0x778f('0xf'),_0x59b6d9['adminId']);_0x52bfc6(_0x59b6d9);}else{_0x165794({'statusCode':0x194,'message':_0x778f('0x10')});}}else{_0x165794({'statusCode':0x194,'message':_0x778f('0x10')});}})[_0x778f('0x11')](function(_0x184fd9){logger['error']('['+[_0x48c3d3[_0x778f('0x12')]()]+']',_0x184fd9[_0x778f('0x13')]);_0x165794(_0x184fd9);});});}function getUser(_0x393a13,_0x1b9d38,_0x5af3f8){return function(_0x71c301){return new Promise(function(_0x2d702d,_0x88c57){var _0x2a5234={'method':_0x778f('0x14'),'uri':_0x5af3f8+_0x778f('0x15'),'json':!![]};_0x2a5234[_0x778f('0xa')]=_0x1b9d38;logger[_0x778f('0x16')](_0x778f('0x17'));return rp(_0x2a5234)[_0x778f('0xc')](function(_0x32158d){if(_0x32158d){var _0x4eeba3=_0x32158d['users'];var _0x40df29=![];var _0x4d91f9=null;if(_0x71c301[_0x778f('0x18')]!==null){logger[_0x778f('0x16')]('Getting\x20user\x20with\x20email',_0x71c301[_0x778f('0x18')]);_0x71c301[_0x778f('0x19')]=_0x71c301[_0x778f('0x18')];for(_0x4d91f9=0x0;_0x4d91f9<_0x4eeba3[_0x778f('0x1a')];_0x4d91f9++){if(_0x4eeba3[_0x4d91f9][_0x778f('0x1b')]===_0x71c301[_0x778f('0x18')]){_0x40df29=!![];_0x71c301[_0x778f('0x1c')]=_0x4eeba3[_0x4d91f9]['id'];logger[_0x778f('0x16')](_0x778f('0x1d'),_0x71c301[_0x778f('0x1c')]);}}}if(!_0x40df29){logger[_0x778f('0x16')](_0x778f('0x1e'));_0x71c301[_0x778f('0x19')]=_0x71c301[_0x778f('0x1f')];_0x71c301['userId']=_0x71c301[_0x778f('0xe')];_0x40df29=!![];}if(_0x40df29){_0x2d702d(_0x71c301);}else{_0x88c57({'statusCode':0x194,'message':_0x778f('0x10')});}}else{_0x88c57({'statusCode':0x194,'message':_0x778f('0x10')});}})[_0x778f('0x11')](function(_0x3cbf3b){logger[_0x778f('0x20')]('['+[_0x393a13['toUpperCase']()]+']',_0x3cbf3b[_0x778f('0x13')]);_0x88c57(_0x3cbf3b);});});};}function searchContact(_0x175c53,_0x1aa591,_0x56b1c7,_0x1ac5a9){return new Promise(function(_0x5874c0,_0xcda205){var _0x4d7215={'method':'GET','headers':_0x1aa591,'uri':_0x175c53+_0x778f('0x21')+_0x1ac5a9+_0x778f('0x22')+_0x56b1c7+_0x778f('0x23'),'json':!![]};rp(_0x4d7215)['then'](function(_0x359963){var _0x45c029=_[_0x778f('0x24')](_0x359963[_0x778f('0x25')][_0x778f('0x25')],[_0x56b1c7,_0x1ac5a9]);_0x5874c0(_0x45c029);})[_0x778f('0x11')](function(_0xea9e15){_0xcda205(_0xea9e15);});});}function getEndUser(_0x4f4bfe,_0x373d78,_0x5889ef){return function(_0x2a743e){return new Promise(function(_0x521d50,_0x148843){logger[_0x778f('0x16')](util[_0x778f('0x26')](_0x778f('0x27'),_0x2a743e['contactNumber']));searchContact(_0x5889ef,_0x373d78,_0x778f('0x28'),_0x2a743e[_0x778f('0x29')])[_0x778f('0xc')](function(_0x5b9b8b){if(_0x5b9b8b){_0x2a743e[_0x778f('0x2a')]=_0x5b9b8b['id'];logger[_0x778f('0x16')](_0x778f('0x2b'),_0x2a743e['endUserId']);return _0x521d50(_0x2a743e);}searchContact(_0x5889ef,_0x373d78,_0x778f('0x2c'),_0x2a743e[_0x778f('0x29')])['then'](function(_0x4b5fc3){if(_0x4b5fc3){_0x2a743e[_0x778f('0x2a')]=_0x4b5fc3['id'];logger[_0x778f('0x16')](_0x778f('0x2d'),_0x2a743e['endUserId']);return _0x521d50(_0x2a743e);}createEndUser(_0x2a743e,_0x4f4bfe,_0x373d78,_0x5889ef)[_0x778f('0xc')](function(_0x213c0a){logger[_0x778f('0x16')](_0x778f('0x2e'),_0x213c0a[_0x778f('0x2a')]);return _0x521d50(_0x213c0a);});});})[_0x778f('0x11')](function(_0x3f5bf4){_0x148843(_0x3f5bf4);});});};}function createEndUser(_0x1cb85f,_0x513ef5,_0x2aed4c,_0x29ca99){return new Promise(function(_0x130ce0,_0x5cd1b9){var _0x39e34a=moment();var _0x1126b5={'method':_0x778f('0x2f'),'uri':_0x29ca99+_0x778f('0x30'),'body':{'contact':{'last_name':_0x1cb85f['contactNumber'],'work_number':_0x1cb85f[_0x778f('0x29')],'mobile_number':_0x1cb85f[_0x778f('0x29')],'owner_id':_0x1cb85f[_0x778f('0x1c')],'created_at':_0x39e34a['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x1126b5[_0x778f('0xa')]=_0x2aed4c;logger[_0x778f('0x16')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x1126b5)[_0x778f('0xc')](function(_0x129ff0){_0x1cb85f[_0x778f('0x2a')]=_0x129ff0['contact']['id'];_0x130ce0(_0x1cb85f);})[_0x778f('0x11')](function(_0x398c97){logger[_0x778f('0x20')]('['+[_0x513ef5['toUpperCase']()]+']',_0x398c97[_0x778f('0x13')]);_0x5cd1b9(_0x398c97[_0x778f('0x13')]);});});}function getTicket(_0x48540e,_0x4a285a,_0x4e1a3e,_0x538b60,_0x3ae661){return function(_0x214a7a){logger[_0x778f('0x16')](_0x778f('0x31'));return new Promise(function(_0x507943,_0x1234dd){var _0x404fd9=moment();var _0x17b622={'method':'POST','uri':_0x4e1a3e+_0x778f('0x32'),'body':{'title':intUtil[_0x778f('0x33')](_0x538b60[_0x778f('0x34')],_0x3ae661,'\x20'),'description':intUtil[_0x778f('0x33')](_0x538b60['Descriptions'],_0x3ae661,'\x0a'),'owner_id':_0x214a7a[_0x778f('0x1c')],'creater_id':_0x214a7a[_0x778f('0xe')],'targetable_id':_0x214a7a[_0x778f('0x2a')],'targetable_type':'Contact','created_at':_0x404fd9[_0x778f('0x26')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x404fd9['add'](0x1e,'m')[_0x778f('0x26')](_0x778f('0x35'))},'json':!![]};_0x17b622['headers']=_0x4a285a;return rp(_0x17b622)[_0x778f('0xc')](function(_0x91446a){_0x214a7a[_0x778f('0x36')]=_0x91446a['task']['id'];logger[_0x778f('0x16')]('Task\x20created:',_0x214a7a['ticketId']);_0x507943(_0x214a7a);})[_0x778f('0x11')](function(_0x3d83e6){logger[_0x778f('0x20')]('['+[_0x48540e['toUpperCase']()]+']',_0x3d83e6[_0x778f('0x13')]);_0x1234dd(_0x3d83e6[_0x778f('0x13')]);});});};}function emit(_0x2ae1a8,_0x81fac6,_0x335a87){var _0xa31dcb={'uri':_0x2ae1a8+_0x778f('0x37')+_0x335a87};io['to'](util[_0x778f('0x26')](_0x778f('0x38'),_0x81fac6))[_0x778f('0x39')](_0x778f('0x3a'),_0xa31dcb);}exports['cs']=function(_0x3d4a19,_0x5d628c,_0x1b443a,_0x5deff2,_0x7cfe5d,_0x43a32d,_0x5aa773,_0x3c155e){var _0x4217a8={};var _0xe796bb={'Authorization':'Token\x20token='+_0x43a32d[_0x778f('0x3b')]};_0x43a32d[_0x778f('0x3c')]=intUtil[_0x778f('0x3d')](_0x43a32d[_0x778f('0x3c')]);_0x43a32d[_0x778f('0x3e')]=intUtil[_0x778f('0x3d')](_0x43a32d[_0x778f('0x3e')]);var _0xb99d06=_0x43a32d[_0x778f('0x3c')];_0x4217a8['adminEmail']=_0x43a32d['username'];_0x4217a8[_0x778f('0x29')]=_0x3c155e[_0x778f('0x3f')]()===_0x778f('0x40')?_0x5d628c['destcalleridnum']:_0x5d628c[_0x778f('0x41')];_0x4217a8[_0x778f('0x42')]=_0x3c155e===_0x778f('0x43')||_0x3c155e===_0x778f('0x44')?'queue':_0x778f('0x40');if(_0x5deff2){_0x4217a8[_0x778f('0x18')]=_0x5deff2[_0x778f('0x1b')];}var _0x54fab7=util[_0x778f('0x26')](_0x778f('0x45'),_0x43a32d['serverUrl'],_0x5d628c['uniqueid'],md5(_0x5d628c[_0x778f('0x46')]));if(_0x7cfe5d&&_0x7cfe5d['monitor_format']){logger[_0x778f('0x16')](_0x778f('0x47'),_0x778f('0x48'));_0x5d628c[_0x778f('0x49')]=_0x54fab7;}else if(_0x5aa773&&_0x5aa773[_0x778f('0x4a')]&&_0x5aa773[_0x778f('0x4a')]!==_0x778f('0x4b')){logger[_0x778f('0x16')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x5d628c[_0x778f('0x49')]=_0x54fab7;}else{_0x5d628c[_0x778f('0x49')]='';}return getAdminId(_0x4217a8,_0x3c155e,_0xe796bb,_0xb99d06)[_0x778f('0xc')](getUser(_0x3c155e,_0xe796bb,_0xb99d06))['then'](getEndUser(_0x3c155e,_0xe796bb,_0xb99d06))[_0x778f('0xc')](getTicket(_0x3c155e,_0xe796bb,_0xb99d06,_0x1b443a,_0x5d628c))[_0x778f('0xc')](function(_0x56defc){logger['info'](util[_0x778f('0x26')](_0x778f('0x4c'),_0x56defc[_0x778f('0x36')]));if(_0x3c155e!==_0x778f('0x44')){logger[_0x778f('0x16')]('['+[_0x3c155e['toUpperCase']()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0xb99d06,_0x5deff2['name'],_0x56defc[_0x778f('0x2a')]);}})[_0x778f('0x11')](function(_0x1bf233){logger[_0x778f('0x20')]('['+[_0x3c155e['toUpperCase']()]+_0x778f('0x4d'),util[_0x778f('0x4e')](_0x1bf233,{'showHidden':!![],'depth':null}));});};