Built motion from commit b5996064.|2.6.21
[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 _0x4916=['contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','POST','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20Freshsales\x20integration','inspect','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','/api/selector/owners','Getting\x20user\x20list','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s'];(function(_0x3f4a8e,_0x507c39){var _0x7f68fd=function(_0x29890f){while(--_0x29890f){_0x3f4a8e['push'](_0x3f4a8e['shift']());}};_0x7f68fd(++_0x507c39);}(_0x4916,0x183));var _0x6491=function(_0x545363,_0x4f21c8){_0x545363=_0x545363-0x0;var _0x3ddde5=_0x4916[_0x545363];return _0x3ddde5;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x6491('0x0'));var util=require(_0x6491('0x1'));var moment=require(_0x6491('0x2'));var Promise=require(_0x6491('0x3'));var Redis=require(_0x6491('0x4'));var intUtil=require(_0x6491('0x5'));var config=require(_0x6491('0x6'));var logger=require(_0x6491('0x7'))(_0x6491('0x8'));config[_0x6491('0x9')]=_[_0x6491('0xa')](config[_0x6491('0x9')],{'host':_0x6491('0xb'),'port':0x18eb});var io=require(_0x6491('0xc'))(new Redis(config['redis']));function getAdminId(_0x1d27cd,_0x29375d,_0xad077d,_0x189761){return new Promise(function(_0x5e59c7,_0x409352){var _0x4b0514=![];var _0xe4a83a={'method':_0x6491('0xd'),'uri':_0x189761+'/api/selector/owners','json':!![]};_0xe4a83a[_0x6491('0xe')]=_0xad077d;logger[_0x6491('0xf')](_0x6491('0x10'));return rp(_0xe4a83a)[_0x6491('0x11')](function(_0x5e921b){if(_0x5e921b){var _0x4dc5c1=_0x5e921b[_0x6491('0x12')];var _0x5cd13f=null;for(_0x5cd13f=0x0;_0x5cd13f<_0x4dc5c1[_0x6491('0x13')];_0x5cd13f++){if(_0x4dc5c1[_0x5cd13f][_0x6491('0x14')]===_0x1d27cd[_0x6491('0x15')]){_0x1d27cd[_0x6491('0x16')]=_0x4dc5c1[_0x5cd13f]['id'];_0x4b0514=!![];}}if(_0x4b0514){logger[_0x6491('0xf')](_0x6491('0x17'),_0x1d27cd[_0x6491('0x16')]);_0x5e59c7(_0x1d27cd);}else{_0x409352({'statusCode':0x194,'message':_0x6491('0x18')});}}else{_0x409352({'statusCode':0x194,'message':_0x6491('0x18')});}})[_0x6491('0x19')](function(_0x301aa8){logger[_0x6491('0x1a')]('['+[_0x29375d[_0x6491('0x1b')]()]+']',_0x301aa8[_0x6491('0x1c')]);_0x409352(_0x301aa8);});});}function getUser(_0x56cded,_0x1ba1fb,_0x303c2b){return function(_0x167960){return new Promise(function(_0x13cd2e,_0x206070){var _0x59cc06={'method':_0x6491('0xd'),'uri':_0x303c2b+_0x6491('0x1d'),'json':!![]};_0x59cc06[_0x6491('0xe')]=_0x1ba1fb;logger[_0x6491('0xf')](_0x6491('0x1e'));return rp(_0x59cc06)[_0x6491('0x11')](function(_0x232811){if(_0x232811){var _0x156cb2=_0x232811[_0x6491('0x12')];var _0x3b25a3=![];var _0x57690d=null;if(_0x167960[_0x6491('0x1f')]!==null){logger['info']('Getting\x20user\x20with\x20email',_0x167960[_0x6491('0x1f')]);_0x167960[_0x6491('0x20')]=_0x167960['agentEmail'];for(_0x57690d=0x0;_0x57690d<_0x156cb2['length'];_0x57690d++){if(_0x156cb2[_0x57690d]['email']===_0x167960[_0x6491('0x1f')]){_0x3b25a3=!![];_0x167960[_0x6491('0x21')]=_0x156cb2[_0x57690d]['id'];logger['info'](_0x6491('0x22'),_0x167960[_0x6491('0x21')]);}}}if(!_0x3b25a3){logger[_0x6491('0xf')](_0x6491('0x23'));_0x167960[_0x6491('0x20')]=_0x167960[_0x6491('0x15')];_0x167960[_0x6491('0x21')]=_0x167960['adminId'];_0x3b25a3=!![];}if(_0x3b25a3){_0x13cd2e(_0x167960);}else{_0x206070({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x206070({'statusCode':0x194,'message':_0x6491('0x18')});}})['catch'](function(_0x1297b7){logger[_0x6491('0x1a')]('['+[_0x56cded['toUpperCase']()]+']',_0x1297b7['message']);_0x206070(_0x1297b7);});});};}function searchContact(_0x8aee8a,_0xe6d200,_0x40d729,_0x4c39c9){return new Promise(function(_0x40c76b,_0x2ac1a5){var _0x384e13={'method':'GET','headers':_0xe6d200,'uri':_0x8aee8a+_0x6491('0x24')+_0x4c39c9+_0x6491('0x25')+_0x40d729+_0x6491('0x26'),'json':!![]};rp(_0x384e13)[_0x6491('0x11')](function(_0x348ad4){var _0x14c1fc=_[_0x6491('0x27')](_0x348ad4['contacts'][_0x6491('0x28')],[_0x40d729,_0x4c39c9]);_0x40c76b(_0x14c1fc);})[_0x6491('0x19')](function(_0x527d55){_0x2ac1a5(_0x527d55);});});}function getEndUser(_0x512ed8,_0x270749,_0x33804a){return function(_0x471812){return new Promise(function(_0x3291ac,_0x1029fe){logger[_0x6491('0xf')](util[_0x6491('0x29')](_0x6491('0x2a'),_0x471812['contactNumber']));searchContact(_0x33804a,_0x270749,'mobile_number',_0x471812[_0x6491('0x2b')])['then'](function(_0x5e25f2){if(_0x5e25f2){_0x471812[_0x6491('0x2c')]=_0x5e25f2['id'];logger[_0x6491('0xf')](_0x6491('0x2d'),_0x471812['endUserId']);return _0x3291ac(_0x471812);}searchContact(_0x33804a,_0x270749,_0x6491('0x2e'),_0x471812[_0x6491('0x2b')])[_0x6491('0x11')](function(_0x75b6c7){if(_0x75b6c7){_0x471812[_0x6491('0x2c')]=_0x75b6c7['id'];logger[_0x6491('0xf')](_0x6491('0x2f'),_0x471812[_0x6491('0x2c')]);return _0x3291ac(_0x471812);}createEndUser(_0x471812,_0x512ed8,_0x270749,_0x33804a)[_0x6491('0x11')](function(_0x4cb0eb){logger[_0x6491('0xf')](_0x6491('0x30'),_0x4cb0eb[_0x6491('0x2c')]);return _0x3291ac(_0x4cb0eb);});});})[_0x6491('0x19')](function(_0x2249fb){_0x1029fe(_0x2249fb);});});};}function createEndUser(_0x5a1a87,_0x4a6487,_0x3c31b4,_0x4d07aa){return new Promise(function(_0x36be07,_0x804a44){var _0x5610ab=moment();var _0x24049f={'method':'POST','uri':_0x4d07aa+_0x6491('0x31'),'body':{'contact':{'last_name':_0x5a1a87[_0x6491('0x2b')],'work_number':_0x5a1a87['contactNumber'],'mobile_number':_0x5a1a87['contactNumber'],'owner_id':_0x5a1a87[_0x6491('0x21')],'created_at':_0x5610ab[_0x6491('0x29')](_0x6491('0x32'))}},'json':!![]};_0x24049f[_0x6491('0xe')]=_0x3c31b4;logger['info'](_0x6491('0x33'));return rp(_0x24049f)[_0x6491('0x11')](function(_0x331f21){_0x5a1a87[_0x6491('0x2c')]=_0x331f21[_0x6491('0x34')]['id'];_0x36be07(_0x5a1a87);})[_0x6491('0x19')](function(_0x37f571){logger[_0x6491('0x1a')]('['+[_0x4a6487['toUpperCase']()]+']',_0x37f571[_0x6491('0x1c')]);_0x804a44(_0x37f571['message']);});});}function getTicket(_0x281b7c,_0x1358bb,_0x401ef0,_0x456195,_0x8e7ae4){return function(_0x14ddd8){logger[_0x6491('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x8736a7,_0x3cc1ba){var _0x2f3fc3=moment();var _0x315e87={'method':_0x6491('0x35'),'uri':_0x401ef0+_0x6491('0x36'),'body':{'title':intUtil[_0x6491('0x37')](_0x456195[_0x6491('0x38')],_0x8e7ae4,'\x20'),'description':intUtil[_0x6491('0x37')](_0x456195[_0x6491('0x39')],_0x8e7ae4,'\x0a'),'owner_id':_0x14ddd8[_0x6491('0x21')],'creater_id':_0x14ddd8['adminId'],'targetable_id':_0x14ddd8[_0x6491('0x2c')],'targetable_type':_0x6491('0x3a'),'created_at':_0x2f3fc3[_0x6491('0x29')](_0x6491('0x32')),'due_date':_0x2f3fc3[_0x6491('0x3b')](0x1e,'m')[_0x6491('0x29')](_0x6491('0x32'))},'json':!![]};_0x315e87['headers']=_0x1358bb;return rp(_0x315e87)[_0x6491('0x11')](function(_0x4ec00e){_0x14ddd8[_0x6491('0x3c')]=_0x4ec00e[_0x6491('0x3d')]['id'];logger[_0x6491('0xf')](_0x6491('0x3e'),_0x14ddd8[_0x6491('0x3c')]);_0x8736a7(_0x14ddd8);})[_0x6491('0x19')](function(_0xd8162a){logger[_0x6491('0x1a')]('['+[_0x281b7c['toUpperCase']()]+']',_0xd8162a[_0x6491('0x1c')]);_0x3cc1ba(_0xd8162a[_0x6491('0x1c')]);});});};}function emit(_0x2748fa,_0x318e6a,_0x37c034){var _0x15215c={'uri':_0x2748fa+_0x6491('0x3f')+_0x37c034};io['to'](util[_0x6491('0x29')](_0x6491('0x40'),_0x318e6a))[_0x6491('0x41')](_0x6491('0x42'),_0x15215c);}exports['cs']=function(_0x58b7a1,_0x3ec774,_0x33879e,_0x56ecfd,_0x2221d6,_0x3397c1,_0x22c0d8,_0x2f03c8){var _0x578498={};var _0x2cd35f={'Authorization':_0x6491('0x43')+_0x3397c1['apiKey']};_0x3397c1[_0x6491('0x44')]=intUtil[_0x6491('0x45')](_0x3397c1[_0x6491('0x44')]);_0x3397c1[_0x6491('0x46')]=intUtil[_0x6491('0x45')](_0x3397c1[_0x6491('0x46')]);var _0xe1e190=_0x3397c1['remoteUri'];_0x578498[_0x6491('0x15')]=_0x3397c1['username'];_0x578498[_0x6491('0x2b')]=_0x2f03c8[_0x6491('0x47')]()===_0x6491('0x48')?_0x3ec774['destcalleridnum']:_0x3ec774[_0x6491('0x49')];_0x578498[_0x6491('0x4a')]=_0x2f03c8===_0x6491('0x4b')||_0x2f03c8===_0x6491('0x4c')?_0x6491('0x4b'):_0x6491('0x48');if(_0x56ecfd){_0x578498[_0x6491('0x1f')]=_0x56ecfd[_0x6491('0x14')];}var _0x42cb88=util[_0x6491('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3397c1['serverUrl'],_0x3ec774['uniqueid'],md5(_0x3ec774[_0x6491('0x4d')]));if(_0x2221d6&&_0x2221d6[_0x6491('0x4e')]){logger[_0x6491('0xf')]('[QUEUE]',_0x6491('0x4f'));_0x3ec774[_0x6491('0x50')]=_0x42cb88;}else if(_0x22c0d8&&_0x22c0d8[_0x6491('0x51')]&&_0x22c0d8[_0x6491('0x51')]!=='none'){logger['info'](_0x6491('0x52'),'Recording\x20is\x20enabled!');_0x3ec774['recordingURL']=_0x42cb88;}else{_0x3ec774[_0x6491('0x50')]='';}return getAdminId(_0x578498,_0x2f03c8,_0x2cd35f,_0xe1e190)[_0x6491('0x11')](getUser(_0x2f03c8,_0x2cd35f,_0xe1e190))[_0x6491('0x11')](getEndUser(_0x2f03c8,_0x2cd35f,_0xe1e190))[_0x6491('0x11')](getTicket(_0x2f03c8,_0x2cd35f,_0xe1e190,_0x33879e,_0x3ec774))[_0x6491('0x11')](function(_0x2a0b73){logger[_0x6491('0xf')](util[_0x6491('0x29')](_0x6491('0x53'),_0x2a0b73['ticketId']));if(_0x2f03c8!==_0x6491('0x4c')){logger['info']('['+[_0x2f03c8[_0x6491('0x1b')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0xe1e190,_0x56ecfd['name'],_0x2a0b73['endUserId']);}})['catch'](function(_0x1d587c){logger[_0x6491('0x1a')]('['+[_0x2f03c8[_0x6491('0x1b')]()]+_0x6491('0x54'),util[_0x6491('0x55')](_0x1d587c,{'showHidden':!![],'depth':null}));});};