Built motion from commit (unavailable).|2.5.31
[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 _0x79ae=['recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','calleridnum','integrationTab','user:%s','trigger:desk:display','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','outbound','recordingFormat','none','email','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','%s/agent/tickets/%s','error','catch','[OUTBOUND]','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','localhost','socket.io-emitter','application/json','validateEmail','info','format','%s/users','remoteUri','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','stringify','defaults','GET','authType','%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!','POST','work','length','map','includes','picklist','type','nameField','toLowerCase','string','customField','custom_fields','content','variable','variableName','idField','customVariable','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY','Motion','Tags','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x79ae,0xf3));var _0xe79a=function(_0x7db3a3,_0x3f2b10){_0x7db3a3=_0x7db3a3-0x0;var _0x2c029b=_0x79ae[_0x7db3a3];return _0x2c029b;};'use strict';var _=require(_0xe79a('0x0'));var rp=require(_0xe79a('0x1'));var md5=require(_0xe79a('0x2'));var util=require(_0xe79a('0x3'));var Redis=require(_0xe79a('0x4'));var intUtil=require(_0xe79a('0x5'));var config=require(_0xe79a('0x6'));var logger=require(_0xe79a('0x7'))(_0xe79a('0x8'));config[_0xe79a('0x9')]=_['defaults'](config[_0xe79a('0x9')],{'host':_0xe79a('0xa'),'port':0x18eb});var io=require(_0xe79a('0xb'))(new Redis(config['redis']));function emit(_0x5c3968,_0x2d624e,_0xd2e954){io['to'](_0x5c3968)['emit'](_0x2d624e,_0xd2e954);}var headers={'Content-Type':_0xe79a('0xc'),'Accept':_0xe79a('0xc')};function getUser(_0x4993d9,_0xc9e404){if(intUtil[_0xe79a('0xd')](_0xc9e404)===!![]){logger[_0xe79a('0xe')]('Getting\x20agent\x20with\x20email',_0xc9e404);return request({'uri':util[_0xe79a('0xf')](_0xe79a('0x10'),_0x4993d9[_0xe79a('0x11')])})[_0xe79a('0x12')](function(_0x159a5c){if(_0x159a5c['total_entries']){return _[_0xe79a('0x13')](_0x159a5c[_0xe79a('0x14')][_0xe79a('0x15')],{'email':_0xc9e404});}})[_0xe79a('0x12')](function(_0x1b1fb0){if(_0x1b1fb0){logger[_0xe79a('0xe')](_0xe79a('0x16'));return _0x1b1fb0;}else{logger[_0xe79a('0xe')](_0xe79a('0x17'));return request({'uri':util['format']('%s/users/me',_0x4993d9['remoteUri'])});}});}else{logger['info'](_0xe79a('0x18'));return request({'uri':util['format'](_0xe79a('0x19'),_0x4993d9[_0xe79a('0x11')])});}}function request(_0x5d0dde){logger[_0xe79a('0x1a')]('[HTTP]',JSON[_0xe79a('0x1b')](_0x5d0dde));return rp(_[_0xe79a('0x1c')](_0x5d0dde,{'method':_0xe79a('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x1ae007){var _0x24ae00;if(_0x1ae007[_0xe79a('0x1e')]==='basic'){_0x24ae00=util[_0xe79a('0xf')](_0xe79a('0x1f'),_0x1ae007[_0xe79a('0x20')],_0x1ae007[_0xe79a('0x21')]);}else if(_0x1ae007[_0xe79a('0x1e')]===_0xe79a('0x22')){_0x24ae00=util[_0xe79a('0xf')](_0xe79a('0x23'),_0x1ae007[_0xe79a('0x20')],_0x1ae007[_0xe79a('0x22')]);}return util[_0xe79a('0xf')](_0xe79a('0x24'),new Buffer(_0x24ae00)[_0xe79a('0x25')]('base64'));}function getEndUser(_0x2438d4,_0x464f13,_0x4f4917){logger[_0xe79a('0xe')](_0xe79a('0x26'),_0x4f4917);return request({'uri':util[_0xe79a('0xf')](_0xe79a('0x27'),_0x2438d4[_0xe79a('0x11')]),'qs':{'phone':_0x4f4917}})[_0xe79a('0x12')](function(_0x4d6a1a){if(_0x4d6a1a['total_entries']){logger[_0xe79a('0xe')](_0xe79a('0x28'));return _0x4d6a1a[_0xe79a('0x14')][_0xe79a('0x15')][0x0];}else{logger[_0xe79a('0xe')](_0xe79a('0x29'));return request({'uri':util[_0xe79a('0xf')]('%s/customers',_0x2438d4[_0xe79a('0x11')]),'method':_0xe79a('0x2a'),'body':{'first_name':_0x464f13,'title':_0x464f13,'phone_numbers':[{'type':_0xe79a('0x2b'),'value':_0x4f4917}]}});}});}function getTags(_0x3582bb,_0x3f941b){var _0x4910ec=[];if(_0x3582bb&&_0x3582bb[_0xe79a('0x2c')]>0x0){_0x4910ec=_[_0xe79a('0x2d')](_0x3582bb,_0x3f941b);}return _0x4910ec;}function getCustomFields(_0x2f279c,_0x3cecfc){var _0x39853a=[];var _0x29277c={'custom_fields':{}};if(_0x2f279c[_0xe79a('0x2c')]>0x0){_['forEach'](_0x2f279c,function(_0x405a17){if(_[_0xe79a('0x2e')](['string',_0xe79a('0x2f')],_0x405a17[_0xe79a('0x30')])&&_0x405a17[_0xe79a('0x31')]&&!_0x405a17['customField']){_0x29277c[_0x405a17[_0xe79a('0x31')][_0xe79a('0x32')]()]=_0x405a17['content']['toString']();}else if(_[_0xe79a('0x2e')]([_0xe79a('0x33'),_0xe79a('0x2f')],_0x405a17[_0xe79a('0x30')])&&_0x405a17['idField']&&_0x405a17[_0xe79a('0x34')]){_0x29277c[_0xe79a('0x35')][_0x405a17['idField']]=_0x405a17[_0xe79a('0x36')][_0xe79a('0x25')]();}else if(_0x405a17[_0xe79a('0x30')]===_0xe79a('0x37')&&_0x405a17[_0xe79a('0x38')]&&_0x405a17[_0xe79a('0x39')]&&_0x405a17['customField']){_0x3cecfc[_0x405a17[_0xe79a('0x38')]]&&(_0x29277c[_0xe79a('0x35')][_0x405a17['idField']]=_0x3cecfc[_0x405a17['variableName']][_0xe79a('0x25')]());}else if(_0x405a17[_0xe79a('0x30')]===_0xe79a('0x3a')&&_0x405a17[_0xe79a('0x3b')]&&_0x405a17[_0xe79a('0x3b')][_0xe79a('0x3c')]&&_0x405a17[_0xe79a('0x39')]&&_0x405a17['customField']){_0x3cecfc[_0x405a17[_0xe79a('0x3b')][_0xe79a('0x3c')][_0xe79a('0x32')]()]&&(_0x29277c[_0xe79a('0x35')][_0x405a17[_0xe79a('0x39')]]=_0x3cecfc[_0x405a17['Variable'][_0xe79a('0x3c')][_0xe79a('0x32')]()]['toString']());}});}if(_0x29277c[_0xe79a('0x3d')]){_0x29277c[_0xe79a('0x3d')]=Number(_0x29277c[_0xe79a('0x3d')]);}return _0x29277c;}function getTicket(_0x15c433,_0x9ab4e5,_0x2f72b9,_0x54cb8f,_0x553f9f){logger[_0xe79a('0xe')](_0xe79a('0x3e'));var _0x433b7b=_[_0xe79a('0x3f')]({'subject':intUtil[_0xe79a('0x40')](_0x54cb8f[_0xe79a('0x41')],_0x553f9f,'\x20'),'type':_0xe79a('0x42'),'status':_0xe79a('0x43'),'labels':[_0xe79a('0x44'),_0xe79a('0x45'),'CTI']['concat'](getTags(_0x54cb8f[_0xe79a('0x46')],_0xe79a('0x3c'))),'description':intUtil[_0xe79a('0x40')](_0x54cb8f[_0xe79a('0x47')],_0x553f9f,'\x0a'),'_links':{'assigned_user':{'href':util[_0xe79a('0xf')](_0xe79a('0x48'),_0x9ab4e5['id']),'class':_0xe79a('0x49')}},'message':{'direction':'in','body':intUtil[_0xe79a('0x40')](_0x54cb8f[_0xe79a('0x47')],_0x553f9f,'\x0a')}},getCustomFields(_0x54cb8f[_0xe79a('0x4a')],_0x553f9f));return request({'uri':util[_0xe79a('0xf')](_0xe79a('0x4b'),_0x15c433[_0xe79a('0x11')],_0x2f72b9['id']),'method':_0xe79a('0x2a'),'body':_0x433b7b});}exports['queue']=function(_0x289c4e,_0x2a9423,_0xf2088,_0x29ef23,_0x183751,_0x45716e){var _0x5f1fe8,_0x32c6b2;_0x45716e['remoteUri']=intUtil[_0xe79a('0x4c')](_0x45716e[_0xe79a('0x11')]);_0x45716e[_0xe79a('0x4d')]=intUtil[_0xe79a('0x4c')](_0x45716e[_0xe79a('0x4d')]);if(_0x183751&&_0x183751[_0xe79a('0x4e')]){logger[_0xe79a('0xe')](_0xe79a('0x4f'),_0xe79a('0x50'));_0x2a9423[_0xe79a('0x51')]=util[_0xe79a('0xf')](_0xe79a('0x52'),_0x45716e['serverUrl'],_0x2a9423['uniqueid'],md5(_0x2a9423[_0xe79a('0x53')]));}else{_0x2a9423[_0xe79a('0x51')]='';}headers[_0xe79a('0x54')]=getAuth(_0x45716e);return getUser(_0x45716e,_0x29ef23['email'])[_0xe79a('0x12')](function(_0x2487cb){_0x5f1fe8=_0x2487cb;logger[_0xe79a('0xe')](_0xe79a('0x55'),_0x5f1fe8['id']);return getEndUser(_0x45716e,_0x2a9423[_0xe79a('0x56')],_0x2a9423[_0xe79a('0x57')]);})['then'](function(_0x2389c1){_0x32c6b2=_0x2389c1;logger['info']('The\x20Enduser\x20ID\x20is:',_0x32c6b2['id']);return getTicket(_0x45716e,_0x5f1fe8,_0x32c6b2,_0xf2088,_0x2a9423);})[_0xe79a('0x12')](function(_0x3ea8f5){if(_0x3ea8f5){logger[_0xe79a('0xe')]('Ticket\x20created!');logger[_0xe79a('0xe')]('The\x20Ticket\x20ID\x20is:',_0x3ea8f5['id']);switch(_0x45716e[_0xe79a('0x30')]){case _0xe79a('0x58'):logger[_0xe79a('0xe')](_0xe79a('0x4f'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xe79a('0x59'),_0x29ef23[_0xe79a('0x3c')]),_0xe79a('0x5a'),{'recordId':_0x3ea8f5['id']});break;case _0xe79a('0x5b'):logger[_0xe79a('0xe')](_0xe79a('0x4f'),_0xe79a('0x5c'));emit(util[_0xe79a('0xf')]('user:%s',_0x29ef23[_0xe79a('0x3c')]),_0xe79a('0x5d'),{'uri':util[_0xe79a('0xf')](_0xe79a('0x5e'),_0x3ea8f5['id'])});break;default:logger['error']('[QUEUE]',_0xe79a('0x5f'));}}})['catch'](function(_0x4934e6){console['error'](_0x4934e6);logger['error'](_0xe79a('0x4f'),JSON[_0xe79a('0x1b')](_0x4934e6));});};exports[_0xe79a('0x60')]=function(_0x578d0d,_0x2f09c6,_0x13dca4,_0x221998,_0x152b8d,_0x59826a,_0x390911){var _0x40485d,_0x17c502;_0x59826a[_0xe79a('0x11')]=intUtil['stripTrailingSlash'](_0x59826a[_0xe79a('0x11')]);_0x59826a[_0xe79a('0x4d')]=intUtil[_0xe79a('0x4c')](_0x59826a[_0xe79a('0x4d')]);if(_0x390911&&_0x390911[_0xe79a('0x61')]&&_0x390911[_0xe79a('0x61')]!==_0xe79a('0x62')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x2f09c6[_0xe79a('0x51')]=util[_0xe79a('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x59826a[_0xe79a('0x4d')],_0x2f09c6['uniqueid'],md5(_0x2f09c6[_0xe79a('0x53')]));}headers[_0xe79a('0x54')]=getAuth(_0x59826a);return getUser(_0x59826a,_0x221998[_0xe79a('0x63')])[_0xe79a('0x12')](function(_0x292d89){_0x40485d=_0x292d89;logger['info'](_0xe79a('0x55'),_0x40485d['id']);return getEndUser(_0x59826a,_0x2f09c6['destcalleridname'],_0x2f09c6['destcalleridnum']);})[_0xe79a('0x12')](function(_0x57478e){_0x17c502=_0x57478e;logger['info'](_0xe79a('0x64'),_0x17c502['id']);return getTicket(_0x59826a,_0x40485d,_0x17c502,_0x13dca4,_0x2f09c6);})[_0xe79a('0x12')](function(_0x4483bb){if(_0x4483bb){logger['info'](_0xe79a('0x65'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x4483bb['id']);switch(_0x59826a['type']){case _0xe79a('0x58'):logger['info'](_0xe79a('0x4f'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xe79a('0xf')]('user:%s',_0x221998[_0xe79a('0x3c')]),'trigger:desk:display',{'recordId':_0x4483bb['id']});break;case'newTab':logger[_0xe79a('0xe')](_0xe79a('0x4f'),_0xe79a('0x5c'));emit(util[_0xe79a('0xf')](_0xe79a('0x59'),_0x221998[_0xe79a('0x3c')]),_0xe79a('0x5d'),{'uri':util['format'](_0xe79a('0x66'),_0x59826a[_0xe79a('0x11')],_0x4483bb['id'])});break;default:logger[_0xe79a('0x67')]('[OUTBOUND]','Desk\x20account\x20type\x20not\x20recognized');}}})[_0xe79a('0x68')](function(_0x2cd5b8){logger[_0xe79a('0x67')](_0xe79a('0x69'),JSON[_0xe79a('0x1b')](_0x2cd5b8));});};exports['unmanaged']=function(_0x26b6e1,_0xfd3cb4,_0x5ce9f7,_0x31a8ed,_0x5d8736,_0x55a691){var _0x29c437,_0x3d8f7c;_0x55a691[_0xe79a('0x11')]=intUtil['stripTrailingSlash'](_0x55a691[_0xe79a('0x11')]);_0x55a691[_0xe79a('0x4d')]=intUtil[_0xe79a('0x4c')](_0x55a691[_0xe79a('0x4d')]);if(_0x5d8736&&_0x5d8736[_0xe79a('0x4e')]){logger['info']('['+_0xfd3cb4[_0xe79a('0x6a')][_0xe79a('0x6b')]()+']',_0xe79a('0x50'));_0xfd3cb4[_0xe79a('0x51')]=util[_0xe79a('0xf')](_0xe79a('0x52'),_0x55a691[_0xe79a('0x4d')],_0xfd3cb4[_0xe79a('0x53')],md5(_0xfd3cb4[_0xe79a('0x53')]));}else{_0xfd3cb4[_0xe79a('0x51')]='';}headers[_0xe79a('0x54')]=getAuth(_0x55a691);return getUser(_0x55a691)['then'](function(_0x32e5ec){_0x29c437=_0x32e5ec;logger['info'](_0xe79a('0x55'),_0x29c437['id']);return getEndUser(_0x55a691,_0xfd3cb4[_0xe79a('0x56')],_0xfd3cb4[_0xe79a('0x57')]);})[_0xe79a('0x12')](function(_0x4d26b5){_0x3d8f7c=_0x4d26b5;logger[_0xe79a('0xe')](_0xe79a('0x64'),_0x3d8f7c['id']);return getTicket(_0x55a691,_0x29c437,_0x3d8f7c,_0x5ce9f7,_0xfd3cb4);})[_0xe79a('0x12')](function(_0x78296e){if(_0x78296e){logger['info'](_0xe79a('0x65'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x78296e['id']);}})[_0xe79a('0x68')](function(_0x2238fb){logger['error']('['+_0xfd3cb4[_0xe79a('0x6a')][_0xe79a('0x6b')]()+']',JSON[_0xe79a('0x1b')](_0x2238fb));});};