Built motion from commit (unavailable).|2.4.1
[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 _0xeb8e=['monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','abandoned','[ABANDONED]','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','validateEmail','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','_embedded','entries','info','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','stringify','authType','basic','%s:%s','token','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','forEach','type','string','customField','toLowerCase','content','idField','custom_fields','toString','variable','variableName','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY','Motion','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl'];(function(_0x351515,_0x251fd5){var _0x3dbb88=function(_0x51a447){while(--_0x51a447){_0x351515['push'](_0x351515['shift']());}};_0x3dbb88(++_0x251fd5);}(_0xeb8e,0xf0));var _0xeeb8=function(_0x16acc8,_0x1fce9a){_0x16acc8=_0x16acc8-0x0;var _0x151cf2=_0xeb8e[_0x16acc8];return _0x151cf2;};'use strict';var _=require('lodash');var rp=require(_0xeeb8('0x0'));var md5=require(_0xeeb8('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xeeb8('0x2'));var config=require(_0xeeb8('0x3'));var logger=require(_0xeeb8('0x4'))('desk');config[_0xeeb8('0x5')]=_[_0xeeb8('0x6')](config[_0xeeb8('0x5')],{'host':_0xeeb8('0x7'),'port':0x18eb});var io=require(_0xeeb8('0x8'))(new Redis(config[_0xeeb8('0x5')]));function emit(_0x2160e0,_0x5cf1a5,_0x21f123){io['to'](_0x2160e0)[_0xeeb8('0x9')](_0x5cf1a5,_0x21f123);}var headers={'Content-Type':_0xeeb8('0xa'),'Accept':'application/json'};function getUser(_0x3cc230,_0x3617d7){if(intUtil[_0xeeb8('0xb')](_0x3617d7)===!![]){logger['info'](_0xeeb8('0xc'),_0x3617d7);return request({'uri':util[_0xeeb8('0xd')](_0xeeb8('0xe'),_0x3cc230[_0xeeb8('0xf')])})[_0xeeb8('0x10')](function(_0x4afc61){if(_0x4afc61[_0xeeb8('0x11')]){return _[_0xeeb8('0x12')](_0x4afc61[_0xeeb8('0x13')][_0xeeb8('0x14')],{'email':_0x3617d7});}})['then'](function(_0x3c3a54){if(_0x3c3a54){logger[_0xeeb8('0x15')]('Agent\x20found!');return _0x3c3a54;}else{logger[_0xeeb8('0x15')](_0xeeb8('0x16'));return request({'uri':util[_0xeeb8('0xd')](_0xeeb8('0x17'),_0x3cc230[_0xeeb8('0xf')])});}});}else{logger['info'](_0xeeb8('0x18'));return request({'uri':util[_0xeeb8('0xd')]('%s/users/me',_0x3cc230[_0xeeb8('0xf')])});}}function request(_0x279c39){logger[_0xeeb8('0x19')](_0xeeb8('0x1a'),JSON[_0xeeb8('0x1b')](_0x279c39));return rp(_['defaults'](_0x279c39,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x2eb750){var _0x34c591;if(_0x2eb750[_0xeeb8('0x1c')]===_0xeeb8('0x1d')){_0x34c591=util[_0xeeb8('0xd')](_0xeeb8('0x1e'),_0x2eb750['username'],_0x2eb750['password']);}else if(_0x2eb750[_0xeeb8('0x1c')]==='token'){_0x34c591=util[_0xeeb8('0xd')]('%s/token:%s',_0x2eb750['username'],_0x2eb750[_0xeeb8('0x1f')]);}return util[_0xeeb8('0xd')](_0xeeb8('0x20'),new Buffer(_0x34c591)['toString'](_0xeeb8('0x21')));}function getEndUser(_0x1a9cc0,_0x37cede,_0xb34d14){logger['info'](_0xeeb8('0x22'),_0xb34d14);return request({'uri':util['format'](_0xeeb8('0x23'),_0x1a9cc0[_0xeeb8('0xf')]),'qs':{'phone':_0xb34d14}})[_0xeeb8('0x10')](function(_0x914449){if(_0x914449[_0xeeb8('0x11')]){logger[_0xeeb8('0x15')]('Enduser\x20found!');return _0x914449['_embedded'][_0xeeb8('0x14')][0x0];}else{logger[_0xeeb8('0x15')](_0xeeb8('0x24'));return request({'uri':util[_0xeeb8('0xd')](_0xeeb8('0x25'),_0x1a9cc0[_0xeeb8('0xf')]),'method':_0xeeb8('0x26'),'body':{'first_name':_0x37cede,'title':_0x37cede,'phone_numbers':[{'type':'work','value':_0xb34d14}]}});}});}function getTags(_0x381c35,_0x18d458){var _0x3f10ef=[];if(_0x381c35&&_0x381c35['length']>0x0){_0x3f10ef=_['map'](_0x381c35,_0x18d458);}return _0x3f10ef;}function getCustomFields(_0x2f7952,_0x4de60f){var _0x46e7a0=[];var _0x295ece={'custom_fields':{}};if(_0x2f7952['length']>0x0){_[_0xeeb8('0x27')](_0x2f7952,function(_0x424a7a){if(_0x424a7a[_0xeeb8('0x28')]===_0xeeb8('0x29')&&_0x424a7a['nameField']&&!_0x424a7a[_0xeeb8('0x2a')]){_0x295ece[_0x424a7a['nameField'][_0xeeb8('0x2b')]()]=_0x424a7a[_0xeeb8('0x2c')]['toString']();}else if(_0x424a7a[_0xeeb8('0x28')]===_0xeeb8('0x29')&&_0x424a7a[_0xeeb8('0x2d')]&&_0x424a7a['customField']){_0x295ece[_0xeeb8('0x2e')][_0x424a7a['idField']]=_0x424a7a[_0xeeb8('0x2c')][_0xeeb8('0x2f')]();}else if(_0x424a7a[_0xeeb8('0x28')]===_0xeeb8('0x30')&&_0x424a7a[_0xeeb8('0x31')]&&_0x424a7a[_0xeeb8('0x2d')]&&_0x424a7a[_0xeeb8('0x2a')]){_0x4de60f[_0x424a7a[_0xeeb8('0x31')]]&&(_0x295ece[_0xeeb8('0x2e')][_0x424a7a['idField']]=_0x4de60f[_0x424a7a['variableName']][_0xeeb8('0x2f')]());}else if(_0x424a7a[_0xeeb8('0x28')]==='customVariable'&&_0x424a7a[_0xeeb8('0x32')]&&_0x424a7a['Variable'][_0xeeb8('0x33')]&&_0x424a7a['idField']&&_0x424a7a[_0xeeb8('0x2a')]){_0x4de60f[_0x424a7a['Variable'][_0xeeb8('0x33')]['toLowerCase']()]&&(_0x295ece['custom_fields'][_0x424a7a[_0xeeb8('0x2d')]]=_0x4de60f[_0x424a7a[_0xeeb8('0x32')][_0xeeb8('0x33')]['toLowerCase']()]['toString']());}});}if(_0x295ece[_0xeeb8('0x34')]){_0x295ece[_0xeeb8('0x34')]=Number(_0x295ece['priority']);}return _0x295ece;}function getTicket(_0x75e75c,_0x23aca7,_0x4c0757,_0x3415f5,_0x3f3b0f){logger[_0xeeb8('0x15')](_0xeeb8('0x35'));var _0x253b52=_[_0xeeb8('0x36')]({'subject':intUtil[_0xeeb8('0x37')](_0x3415f5[_0xeeb8('0x38')],_0x3f3b0f,'\x20'),'type':_0xeeb8('0x39'),'status':_0xeeb8('0x3a'),'labels':[_0xeeb8('0x3b'),_0xeeb8('0x3c'),_0xeeb8('0x3d')][_0xeeb8('0x3e')](getTags(_0x3415f5[_0xeeb8('0x3f')],_0xeeb8('0x33'))),'description':intUtil[_0xeeb8('0x37')](_0x3415f5[_0xeeb8('0x40')],_0x3f3b0f,'\x0a'),'_links':{'assigned_user':{'href':util[_0xeeb8('0xd')](_0xeeb8('0x41'),_0x23aca7['id']),'class':_0xeeb8('0x42')}},'message':{'direction':'in','body':intUtil[_0xeeb8('0x37')](_0x3415f5[_0xeeb8('0x40')],_0x3f3b0f,'\x0a')}},getCustomFields(_0x3415f5[_0xeeb8('0x43')],_0x3f3b0f));return request({'uri':util['format'](_0xeeb8('0x44'),_0x75e75c[_0xeeb8('0xf')],_0x4c0757['id']),'method':_0xeeb8('0x26'),'body':_0x253b52});}exports[_0xeeb8('0x45')]=function(_0x1d149b,_0x1f88dc,_0xbce873,_0x710a23,_0x5d7318,_0x2be030){var _0x3d9ef5,_0x11a653;_0x2be030[_0xeeb8('0xf')]=intUtil[_0xeeb8('0x46')](_0x2be030[_0xeeb8('0xf')]);_0x2be030[_0xeeb8('0x47')]=intUtil[_0xeeb8('0x46')](_0x2be030[_0xeeb8('0x47')]);if(_0x5d7318&&_0x5d7318[_0xeeb8('0x48')]){logger['info'](_0xeeb8('0x49'),'Recording\x20is\x20enabled!');_0x1f88dc['recordingURL']=util[_0xeeb8('0xd')](_0xeeb8('0x4a'),_0x2be030[_0xeeb8('0x47')],_0x1f88dc[_0xeeb8('0x4b')],md5(_0x1f88dc[_0xeeb8('0x4b')]));}else{_0x1f88dc[_0xeeb8('0x4c')]='';}headers[_0xeeb8('0x4d')]=getAuth(_0x2be030);return getUser(_0x2be030,_0x710a23[_0xeeb8('0x4e')])[_0xeeb8('0x10')](function(_0x518b79){_0x3d9ef5=_0x518b79;logger[_0xeeb8('0x15')](_0xeeb8('0x4f'),_0x3d9ef5['id']);return getEndUser(_0x2be030,_0x1f88dc[_0xeeb8('0x50')],_0x1f88dc[_0xeeb8('0x51')]);})[_0xeeb8('0x10')](function(_0x3b977a){_0x11a653=_0x3b977a;logger[_0xeeb8('0x15')](_0xeeb8('0x52'),_0x11a653['id']);return getTicket(_0x2be030,_0x3d9ef5,_0x11a653,_0xbce873,_0x1f88dc);})[_0xeeb8('0x10')](function(_0x285848){if(_0x285848){logger[_0xeeb8('0x15')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x285848['id']);switch(_0x2be030['type']){case _0xeeb8('0x53'):logger['info'](_0xeeb8('0x49'),_0xeeb8('0x54'));emit(util[_0xeeb8('0xd')](_0xeeb8('0x55'),_0x710a23[_0xeeb8('0x33')]),_0xeeb8('0x56'),{'recordId':_0x285848['id']});break;case _0xeeb8('0x57'):logger['info'](_0xeeb8('0x49'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xeeb8('0xd')](_0xeeb8('0x55'),_0x710a23[_0xeeb8('0x33')]),_0xeeb8('0x58'),{'uri':util[_0xeeb8('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x285848['id'])});break;default:logger[_0xeeb8('0x59')](_0xeeb8('0x49'),_0xeeb8('0x5a'));}}})[_0xeeb8('0x5b')](function(_0x388d9b){console[_0xeeb8('0x59')](_0x388d9b);logger[_0xeeb8('0x59')]('[QUEUE]',JSON[_0xeeb8('0x1b')](_0x388d9b));});};exports[_0xeeb8('0x5c')]=function(_0x22fcef,_0x3625c4,_0x19a407,_0x197e9c,_0x19793a,_0x5f8c7b,_0x15affd){var _0x174834,_0x1a2cd1;_0x5f8c7b['remoteUri']=intUtil['stripTrailingSlash'](_0x5f8c7b[_0xeeb8('0xf')]);_0x5f8c7b[_0xeeb8('0x47')]=intUtil[_0xeeb8('0x46')](_0x5f8c7b[_0xeeb8('0x47')]);if(_0x15affd&&_0x15affd[_0xeeb8('0x5d')]&&_0x15affd[_0xeeb8('0x5d')]!==_0xeeb8('0x5e')){logger['info'](_0xeeb8('0x5f'),_0xeeb8('0x60'));_0x3625c4[_0xeeb8('0x4c')]=util[_0xeeb8('0xd')](_0xeeb8('0x4a'),_0x5f8c7b[_0xeeb8('0x47')],_0x3625c4[_0xeeb8('0x4b')],md5(_0x3625c4[_0xeeb8('0x4b')]));}headers['Authorization']=getAuth(_0x5f8c7b);return getUser(_0x5f8c7b,_0x197e9c['email'])[_0xeeb8('0x10')](function(_0x1c135c){_0x174834=_0x1c135c;logger['info'](_0xeeb8('0x4f'),_0x174834['id']);return getEndUser(_0x5f8c7b,_0x3625c4[_0xeeb8('0x61')],_0x3625c4[_0xeeb8('0x62')]);})[_0xeeb8('0x10')](function(_0x5fcacf){_0x1a2cd1=_0x5fcacf;logger[_0xeeb8('0x15')](_0xeeb8('0x52'),_0x1a2cd1['id']);return getTicket(_0x5f8c7b,_0x174834,_0x1a2cd1,_0x19a407,_0x3625c4);})['then'](function(_0x41faa5){if(_0x41faa5){logger[_0xeeb8('0x15')]('Ticket\x20created!');logger[_0xeeb8('0x15')](_0xeeb8('0x63'),_0x41faa5['id']);switch(_0x5f8c7b[_0xeeb8('0x28')]){case _0xeeb8('0x53'):logger[_0xeeb8('0x15')](_0xeeb8('0x49'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xeeb8('0xd')]('user:%s',_0x197e9c[_0xeeb8('0x33')]),_0xeeb8('0x56'),{'recordId':_0x41faa5['id']});break;case _0xeeb8('0x57'):logger[_0xeeb8('0x15')](_0xeeb8('0x49'),_0xeeb8('0x64'));emit(util[_0xeeb8('0xd')](_0xeeb8('0x55'),_0x197e9c[_0xeeb8('0x33')]),_0xeeb8('0x58'),{'uri':util['format'](_0xeeb8('0x65'),_0x5f8c7b[_0xeeb8('0xf')],_0x41faa5['id'])});break;default:logger[_0xeeb8('0x59')]('[OUTBOUND]','Desk\x20account\x20type\x20not\x20recognized');}}})[_0xeeb8('0x5b')](function(_0x1774db){logger[_0xeeb8('0x59')]('[OUTBOUND]',JSON['stringify'](_0x1774db));});};exports[_0xeeb8('0x66')]=function(_0x11408b,_0x2fafaa,_0x5a1fd1,_0x2786e6,_0x8e1ae8,_0x450d35){var _0x349678,_0x43137c;_0x450d35[_0xeeb8('0xf')]=intUtil[_0xeeb8('0x46')](_0x450d35[_0xeeb8('0xf')]);_0x450d35['serverUrl']=intUtil[_0xeeb8('0x46')](_0x450d35[_0xeeb8('0x47')]);if(_0x8e1ae8&&_0x8e1ae8[_0xeeb8('0x48')]){logger['info'](_0xeeb8('0x67'),'Recording\x20is\x20enabled!');_0x2fafaa[_0xeeb8('0x4c')]=util[_0xeeb8('0xd')](_0xeeb8('0x4a'),_0x450d35[_0xeeb8('0x47')],_0x2fafaa['uniqueid'],md5(_0x2fafaa[_0xeeb8('0x4b')]));}else{_0x2fafaa[_0xeeb8('0x4c')]='';}headers[_0xeeb8('0x4d')]=getAuth(_0x450d35);return getUser(_0x450d35)[_0xeeb8('0x10')](function(_0x1d2244){_0x349678=_0x1d2244;logger[_0xeeb8('0x15')](_0xeeb8('0x4f'),_0x349678['id']);return getEndUser(_0x450d35,_0x2fafaa['calleridname'],_0x2fafaa['calleridnum']);})[_0xeeb8('0x10')](function(_0x210ebe){_0x43137c=_0x210ebe;logger[_0xeeb8('0x15')](_0xeeb8('0x52'),_0x43137c['id']);return getTicket(_0x450d35,_0x349678,_0x43137c,_0x5a1fd1,_0x2fafaa);})['then'](function(_0x10ecec){if(_0x10ecec){logger['info']('Ticket\x20created!');logger[_0xeeb8('0x15')](_0xeeb8('0x63'),_0x10ecec['id']);}})[_0xeeb8('0x5b')](function(_0x58885a){logger[_0xeeb8('0x59')](_0xeeb8('0x67'),JSON[_0xeeb8('0x1b')](_0x58885a));});};