Built motion from commit (unavailable).|2.3.4
[motion2.git] / server / services / ami / trigger / integration / desk.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 _0x2e2d=['[OUTBOUND]','Authorization','destcalleridname','trigger:desk:display','%s/agent/tickets/%s','abandoned','[ABANDONED]','calleridnum','request-promise','md5','./util','../../../../config/logger','desk','redis','defaults','localhost','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','%s/users','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','format','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','toString','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','length','map','forEach','type','customField','nameField','toLowerCase','content','idField','custom_fields','variableName','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','CTI','Tags','/api/v2/users/%d','user','%s/customers/%d/cases','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','user:%s','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','Desk\x20account\x20type\x20not\x20recognized','catch','error','outbound','none'];(function(_0x261e0d,_0x415429){var _0xde47ec=function(_0x2f9451){while(--_0x2f9451){_0x261e0d['push'](_0x261e0d['shift']());}};_0xde47ec(++_0x415429);}(_0x2e2d,0x1ac));var _0xd2e2=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0x2e2d[_0x1a36a5];return _0x746243;};'use strict';var _=require('lodash');var rp=require(_0xd2e2('0x0'));var md5=require(_0xd2e2('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xd2e2('0x2'));var config=require('../../../../config/environment');var logger=require(_0xd2e2('0x3'))(_0xd2e2('0x4'));config[_0xd2e2('0x5')]=_[_0xd2e2('0x6')](config['redis'],{'host':_0xd2e2('0x7'),'port':0x18eb});var io=require(_0xd2e2('0x8'))(new Redis(config[_0xd2e2('0x5')]));function emit(_0x2052b5,_0x3d7f4a,_0xee3c79){io['to'](_0x2052b5)[_0xd2e2('0x9')](_0x3d7f4a,_0xee3c79);}var headers={'Content-Type':'application/json','Accept':_0xd2e2('0xa')};function getUser(_0x1417be,_0x556f54){if(intUtil[_0xd2e2('0xb')](_0x556f54)===!![]){logger[_0xd2e2('0xc')](_0xd2e2('0xd'),_0x556f54);return request({'uri':util['format'](_0xd2e2('0xe'),_0x1417be[_0xd2e2('0xf')])})[_0xd2e2('0x10')](function(_0x1f8bd2){if(_0x1f8bd2[_0xd2e2('0x11')]){return _[_0xd2e2('0x12')](_0x1f8bd2[_0xd2e2('0x13')][_0xd2e2('0x14')],{'email':_0x556f54});}})[_0xd2e2('0x10')](function(_0xa2b41b){if(_0xa2b41b){logger[_0xd2e2('0xc')](_0xd2e2('0x15'));return _0xa2b41b;}else{logger['info'](_0xd2e2('0x16'));return request({'uri':util[_0xd2e2('0x17')](_0xd2e2('0x18'),_0x1417be[_0xd2e2('0xf')])});}});}else{logger[_0xd2e2('0xc')](_0xd2e2('0x19'));return request({'uri':util[_0xd2e2('0x17')](_0xd2e2('0x18'),_0x1417be['remoteUri'])});}}function request(_0x1849df){logger[_0xd2e2('0x1a')](_0xd2e2('0x1b'),JSON[_0xd2e2('0x1c')](_0x1849df));return rp(_['defaults'](_0x1849df,{'method':_0xd2e2('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x45c490){var _0x1b7b79;if(_0x45c490[_0xd2e2('0x1e')]===_0xd2e2('0x1f')){_0x1b7b79=util[_0xd2e2('0x17')](_0xd2e2('0x20'),_0x45c490[_0xd2e2('0x21')],_0x45c490[_0xd2e2('0x22')]);}else if(_0x45c490[_0xd2e2('0x1e')]===_0xd2e2('0x23')){_0x1b7b79=util[_0xd2e2('0x17')](_0xd2e2('0x24'),_0x45c490[_0xd2e2('0x21')],_0x45c490[_0xd2e2('0x23')]);}return util[_0xd2e2('0x17')](_0xd2e2('0x25'),new Buffer(_0x1b7b79)[_0xd2e2('0x26')]('base64'));}function getEndUser(_0x4d4649,_0x3bba7f,_0x52bff4){logger['info'](_0xd2e2('0x27'),_0x52bff4);return request({'uri':util[_0xd2e2('0x17')](_0xd2e2('0x28'),_0x4d4649['remoteUri']),'qs':{'phone':_0x52bff4}})[_0xd2e2('0x10')](function(_0x3c6931){if(_0x3c6931[_0xd2e2('0x11')]){logger[_0xd2e2('0xc')](_0xd2e2('0x29'));return _0x3c6931[_0xd2e2('0x13')][_0xd2e2('0x14')][0x0];}else{logger['info'](_0xd2e2('0x2a'));return request({'uri':util['format'](_0xd2e2('0x2b'),_0x4d4649[_0xd2e2('0xf')]),'method':_0xd2e2('0x2c'),'body':{'first_name':_0x3bba7f,'title':_0x3bba7f,'phone_numbers':[{'type':_0xd2e2('0x2d'),'value':_0x52bff4}]}});}});}function getTags(_0x527169,_0x4caf68){var _0x485cab=[];if(_0x527169&&_0x527169[_0xd2e2('0x2e')]>0x0){_0x485cab=_[_0xd2e2('0x2f')](_0x527169,_0x4caf68);}return _0x485cab;}function getCustomFields(_0xbd6907,_0x434033){var _0x2ca911=[];var _0x584069={'custom_fields':{}};if(_0xbd6907[_0xd2e2('0x2e')]>0x0){_[_0xd2e2('0x30')](_0xbd6907,function(_0xc9bc7d){if(_0xc9bc7d[_0xd2e2('0x31')]==='string'&&_0xc9bc7d['nameField']&&!_0xc9bc7d[_0xd2e2('0x32')]){_0x584069[_0xc9bc7d[_0xd2e2('0x33')][_0xd2e2('0x34')]()]=_0xc9bc7d[_0xd2e2('0x35')]['toString']();}else if(_0xc9bc7d['type']==='string'&&_0xc9bc7d[_0xd2e2('0x36')]&&_0xc9bc7d[_0xd2e2('0x32')]){_0x584069[_0xd2e2('0x37')][_0xc9bc7d['idField']]=_0xc9bc7d[_0xd2e2('0x35')][_0xd2e2('0x26')]();}else if(_0xc9bc7d[_0xd2e2('0x31')]==='variable'&&_0xc9bc7d[_0xd2e2('0x38')]&&_0xc9bc7d[_0xd2e2('0x36')]&&_0xc9bc7d[_0xd2e2('0x32')]){_0x434033[_0xc9bc7d[_0xd2e2('0x38')]]&&(_0x584069[_0xd2e2('0x37')][_0xc9bc7d[_0xd2e2('0x36')]]=_0x434033[_0xc9bc7d[_0xd2e2('0x38')]]['toString']());}else if(_0xc9bc7d[_0xd2e2('0x31')]==='customVariable'&&_0xc9bc7d[_0xd2e2('0x39')]&&_0xc9bc7d[_0xd2e2('0x39')]['name']&&_0xc9bc7d['idField']&&_0xc9bc7d[_0xd2e2('0x32')]){_0x434033[_0xc9bc7d[_0xd2e2('0x39')][_0xd2e2('0x3a')][_0xd2e2('0x34')]()]&&(_0x584069[_0xd2e2('0x37')][_0xc9bc7d['idField']]=_0x434033[_0xc9bc7d[_0xd2e2('0x39')][_0xd2e2('0x3a')][_0xd2e2('0x34')]()][_0xd2e2('0x26')]());}});}if(_0x584069[_0xd2e2('0x3b')]){_0x584069[_0xd2e2('0x3b')]=Number(_0x584069[_0xd2e2('0x3b')]);}return _0x584069;}function getTicket(_0x3b9b55,_0x559005,_0x5b7b8c,_0x3b4e3f,_0x177919){logger[_0xd2e2('0xc')](_0xd2e2('0x3c'));var _0x2b64d8=_[_0xd2e2('0x3d')]({'subject':intUtil[_0xd2e2('0x3e')](_0x3b4e3f[_0xd2e2('0x3f')],_0x177919,'\x20'),'type':_0xd2e2('0x40'),'status':'new','labels':['xCALLY','Motion',_0xd2e2('0x41')]['concat'](getTags(_0x3b4e3f[_0xd2e2('0x42')],_0xd2e2('0x3a'))),'description':intUtil[_0xd2e2('0x3e')](_0x3b4e3f['Descriptions'],_0x177919,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xd2e2('0x43'),_0x559005['id']),'class':_0xd2e2('0x44')}},'message':{'direction':'in','body':intUtil['getString'](_0x3b4e3f['Descriptions'],_0x177919,'\x0a')}},getCustomFields(_0x3b4e3f['Fields'],_0x177919));return request({'uri':util[_0xd2e2('0x17')](_0xd2e2('0x45'),_0x3b9b55[_0xd2e2('0xf')],_0x5b7b8c['id']),'method':_0xd2e2('0x2c'),'body':_0x2b64d8});}exports[_0xd2e2('0x46')]=function(_0x191bb1,_0x31dc40,_0x3864cf,_0xb91a14,_0x5deab1,_0x23bfe2){var _0x58e9e7,_0x114672;_0x23bfe2[_0xd2e2('0xf')]=intUtil['stripTrailingSlash'](_0x23bfe2[_0xd2e2('0xf')]);_0x23bfe2[_0xd2e2('0x47')]=intUtil[_0xd2e2('0x48')](_0x23bfe2[_0xd2e2('0x47')]);if(_0x5deab1&&_0x5deab1[_0xd2e2('0x49')]){logger['info']('[QUEUE]',_0xd2e2('0x4a'));_0x31dc40[_0xd2e2('0x4b')]=util[_0xd2e2('0x17')](_0xd2e2('0x4c'),_0x23bfe2['serverUrl'],_0x31dc40[_0xd2e2('0x4d')],md5(_0x31dc40[_0xd2e2('0x4d')]));}else{_0x31dc40['recordingURL']='';}headers['Authorization']=getAuth(_0x23bfe2);return getUser(_0x23bfe2,_0xb91a14[_0xd2e2('0x4e')])[_0xd2e2('0x10')](function(_0x424183){_0x58e9e7=_0x424183;logger[_0xd2e2('0xc')](_0xd2e2('0x4f'),_0x58e9e7['id']);return getEndUser(_0x23bfe2,_0x31dc40[_0xd2e2('0x50')],_0x31dc40['calleridnum']);})['then'](function(_0x5e84bf){_0x114672=_0x5e84bf;logger[_0xd2e2('0xc')](_0xd2e2('0x51'),_0x114672['id']);return getTicket(_0x23bfe2,_0x58e9e7,_0x114672,_0x3864cf,_0x31dc40);})[_0xd2e2('0x10')](function(_0x2eb064){if(_0x2eb064){logger[_0xd2e2('0xc')](_0xd2e2('0x52'));logger[_0xd2e2('0xc')](_0xd2e2('0x53'),_0x2eb064['id']);switch(_0x23bfe2[_0xd2e2('0x31')]){case _0xd2e2('0x54'):logger[_0xd2e2('0xc')](_0xd2e2('0x55'),_0xd2e2('0x56'));emit(util[_0xd2e2('0x17')](_0xd2e2('0x57'),_0xb91a14[_0xd2e2('0x3a')]),'trigger:desk:display',{'recordId':_0x2eb064['id']});break;case _0xd2e2('0x58'):logger[_0xd2e2('0xc')](_0xd2e2('0x55'),_0xd2e2('0x59'));emit(util[_0xd2e2('0x17')](_0xd2e2('0x57'),_0xb91a14[_0xd2e2('0x3a')]),_0xd2e2('0x5a'),{'uri':util[_0xd2e2('0x17')](_0xd2e2('0x5b'),_0x2eb064['id'])});break;default:logger['error']('[QUEUE]',_0xd2e2('0x5c'));}}})[_0xd2e2('0x5d')](function(_0x3a0041){console[_0xd2e2('0x5e')](_0x3a0041);logger[_0xd2e2('0x5e')](_0xd2e2('0x55'),JSON[_0xd2e2('0x1c')](_0x3a0041));});};exports[_0xd2e2('0x5f')]=function(_0x33ad1d,_0x179323,_0x17d408,_0x1c9150,_0x4dcbe4,_0x2b9979,_0xd68275){var _0x1ff679,_0x13c5e8;_0x2b9979['remoteUri']=intUtil[_0xd2e2('0x48')](_0x2b9979[_0xd2e2('0xf')]);_0x2b9979[_0xd2e2('0x47')]=intUtil[_0xd2e2('0x48')](_0x2b9979[_0xd2e2('0x47')]);if(_0xd68275&&_0xd68275['recordingFormat']&&_0xd68275['recordingFormat']!==_0xd2e2('0x60')){logger[_0xd2e2('0xc')](_0xd2e2('0x61'),_0xd2e2('0x4a'));_0x179323[_0xd2e2('0x4b')]=util[_0xd2e2('0x17')](_0xd2e2('0x4c'),_0x2b9979['serverUrl'],_0x179323[_0xd2e2('0x4d')],md5(_0x179323[_0xd2e2('0x4d')]));}headers[_0xd2e2('0x62')]=getAuth(_0x2b9979);return getUser(_0x2b9979,_0x1c9150['email'])[_0xd2e2('0x10')](function(_0x2f3851){_0x1ff679=_0x2f3851;logger[_0xd2e2('0xc')](_0xd2e2('0x4f'),_0x1ff679['id']);return getEndUser(_0x2b9979,_0x179323[_0xd2e2('0x63')],_0x179323['destcalleridnum']);})[_0xd2e2('0x10')](function(_0x3efa16){_0x13c5e8=_0x3efa16;logger[_0xd2e2('0xc')](_0xd2e2('0x51'),_0x13c5e8['id']);return getTicket(_0x2b9979,_0x1ff679,_0x13c5e8,_0x17d408,_0x179323);})[_0xd2e2('0x10')](function(_0x292cea){if(_0x292cea){logger[_0xd2e2('0xc')]('Ticket\x20created!');logger[_0xd2e2('0xc')](_0xd2e2('0x53'),_0x292cea['id']);switch(_0x2b9979[_0xd2e2('0x31')]){case'integrationTab':logger[_0xd2e2('0xc')](_0xd2e2('0x55'),_0xd2e2('0x56'));emit(util[_0xd2e2('0x17')]('user:%s',_0x1c9150['name']),_0xd2e2('0x64'),{'recordId':_0x292cea['id']});break;case _0xd2e2('0x58'):logger[_0xd2e2('0xc')](_0xd2e2('0x55'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xd2e2('0x17')](_0xd2e2('0x57'),_0x1c9150[_0xd2e2('0x3a')]),_0xd2e2('0x5a'),{'uri':util[_0xd2e2('0x17')](_0xd2e2('0x65'),_0x2b9979[_0xd2e2('0xf')],_0x292cea['id'])});break;default:logger[_0xd2e2('0x5e')](_0xd2e2('0x61'),_0xd2e2('0x5c'));}}})[_0xd2e2('0x5d')](function(_0x599a38){logger[_0xd2e2('0x5e')](_0xd2e2('0x61'),JSON[_0xd2e2('0x1c')](_0x599a38));});};exports[_0xd2e2('0x66')]=function(_0x40a32d,_0xaebba7,_0x411ef5,_0x2ffacd,_0x266070,_0x10479d){var _0x20d019,_0x43c70e;_0x10479d[_0xd2e2('0xf')]=intUtil[_0xd2e2('0x48')](_0x10479d[_0xd2e2('0xf')]);_0x10479d[_0xd2e2('0x47')]=intUtil['stripTrailingSlash'](_0x10479d[_0xd2e2('0x47')]);if(_0x266070&&_0x266070[_0xd2e2('0x49')]){logger[_0xd2e2('0xc')](_0xd2e2('0x67'),_0xd2e2('0x4a'));_0xaebba7[_0xd2e2('0x4b')]=util[_0xd2e2('0x17')](_0xd2e2('0x4c'),_0x10479d[_0xd2e2('0x47')],_0xaebba7[_0xd2e2('0x4d')],md5(_0xaebba7['uniqueid']));}else{_0xaebba7[_0xd2e2('0x4b')]='';}headers[_0xd2e2('0x62')]=getAuth(_0x10479d);return getUser(_0x10479d)['then'](function(_0xc69bec){_0x20d019=_0xc69bec;logger[_0xd2e2('0xc')](_0xd2e2('0x4f'),_0x20d019['id']);return getEndUser(_0x10479d,_0xaebba7[_0xd2e2('0x50')],_0xaebba7[_0xd2e2('0x68')]);})[_0xd2e2('0x10')](function(_0x3f9465){_0x43c70e=_0x3f9465;logger['info'](_0xd2e2('0x51'),_0x43c70e['id']);return getTicket(_0x10479d,_0x20d019,_0x43c70e,_0x411ef5,_0xaebba7);})['then'](function(_0x4187a3){if(_0x4187a3){logger['info'](_0xd2e2('0x52'));logger[_0xd2e2('0xc')](_0xd2e2('0x53'),_0x4187a3['id']);}})['catch'](function(_0x56158d){logger[_0xd2e2('0x5e')]('[ABANDONED]',JSON[_0xd2e2('0x1c')](_0x56158d));});};