2bf7a1c84def1cfec4404dc2031a57b783ec7a55
[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 _0x1531=['outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Ticket\x20created!','trigger:browser:url','%s/agent/tickets/%s','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','calleridnum','catch','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','defaults','localhost','socket.io-emitter','redis','emit','validateEmail','info','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','work','map','length','forEach','includes','string','type','nameField','customField','picklist','idField','custom_fields','variable','variableName','customVariable','Variable','name','toLowerCase','priority','merge','Subjects','phone','xCALLY','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','stringify'];(function(_0x2997a4,_0x3f6809){var _0x2c1551=function(_0x1dd41f){while(--_0x1dd41f){_0x2997a4['push'](_0x2997a4['shift']());}};_0x2c1551(++_0x3f6809);}(_0x1531,0x1c2));var _0x1153=function(_0x13b745,_0x65f0a2){_0x13b745=_0x13b745-0x0;var _0x4d03ae=_0x1531[_0x13b745];return _0x4d03ae;};'use strict';var _=require(_0x1153('0x0'));var rp=require(_0x1153('0x1'));var md5=require(_0x1153('0x2'));var util=require('util');var Redis=require(_0x1153('0x3'));var intUtil=require(_0x1153('0x4'));var config=require(_0x1153('0x5'));var logger=require(_0x1153('0x6'))(_0x1153('0x7'));config['redis']=_[_0x1153('0x8')](config['redis'],{'host':_0x1153('0x9'),'port':0x18eb});var io=require(_0x1153('0xa'))(new Redis(config[_0x1153('0xb')]));function emit(_0xe065a6,_0x57affd,_0x42de35){io['to'](_0xe065a6)[_0x1153('0xc')](_0x57affd,_0x42de35);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getUser(_0x443ac0,_0x12138a){if(intUtil[_0x1153('0xd')](_0x12138a)===!![]){logger[_0x1153('0xe')]('Getting\x20agent\x20with\x20email',_0x12138a);return request({'uri':util[_0x1153('0xf')](_0x1153('0x10'),_0x443ac0['remoteUri'])})[_0x1153('0x11')](function(_0x1efced){if(_0x1efced[_0x1153('0x12')]){return _[_0x1153('0x13')](_0x1efced[_0x1153('0x14')][_0x1153('0x15')],{'email':_0x12138a});}})[_0x1153('0x11')](function(_0x179409){if(_0x179409){logger[_0x1153('0xe')](_0x1153('0x16'));return _0x179409;}else{logger[_0x1153('0xe')](_0x1153('0x17'));return request({'uri':util[_0x1153('0xf')](_0x1153('0x18'),_0x443ac0[_0x1153('0x19')])});}});}else{logger['info'](_0x1153('0x1a'));return request({'uri':util[_0x1153('0xf')](_0x1153('0x18'),_0x443ac0[_0x1153('0x19')])});}}function request(_0x3f4fb2){logger[_0x1153('0x1b')]('[HTTP]',JSON['stringify'](_0x3f4fb2));return rp(_[_0x1153('0x8')](_0x3f4fb2,{'method':_0x1153('0x1c'),'headers':headers,'json':!![]}));}function getAuth(_0x1333ea){var _0x1ebd4a;if(_0x1333ea[_0x1153('0x1d')]===_0x1153('0x1e')){_0x1ebd4a=util['format'](_0x1153('0x1f'),_0x1333ea[_0x1153('0x20')],_0x1333ea['password']);}else if(_0x1333ea[_0x1153('0x1d')]===_0x1153('0x21')){_0x1ebd4a=util['format'](_0x1153('0x22'),_0x1333ea[_0x1153('0x20')],_0x1333ea[_0x1153('0x21')]);}return util[_0x1153('0xf')]('Basic\x20%s',new Buffer(_0x1ebd4a)[_0x1153('0x23')](_0x1153('0x24')));}function getEndUser(_0x567e2d,_0x19e4f4,_0x8c467f){logger[_0x1153('0xe')](_0x1153('0x25'),_0x8c467f);return request({'uri':util[_0x1153('0xf')](_0x1153('0x26'),_0x567e2d[_0x1153('0x19')]),'qs':{'phone':_0x8c467f}})[_0x1153('0x11')](function(_0x306268){if(_0x306268[_0x1153('0x12')]){logger[_0x1153('0xe')](_0x1153('0x27'));return _0x306268[_0x1153('0x14')][_0x1153('0x15')][0x0];}else{logger['info'](_0x1153('0x28'));return request({'uri':util[_0x1153('0xf')]('%s/customers',_0x567e2d[_0x1153('0x19')]),'method':_0x1153('0x29'),'body':{'first_name':_0x19e4f4,'title':_0x19e4f4,'phone_numbers':[{'type':_0x1153('0x2a'),'value':_0x8c467f}]}});}});}function getTags(_0x3d6b3d,_0x3cb533){var _0x1b536c=[];if(_0x3d6b3d&&_0x3d6b3d['length']>0x0){_0x1b536c=_[_0x1153('0x2b')](_0x3d6b3d,_0x3cb533);}return _0x1b536c;}function getCustomFields(_0x5c36a9,_0x1beb9c){var _0x5e464b=[];var _0x10f2fd={'custom_fields':{}};if(_0x5c36a9[_0x1153('0x2c')]>0x0){_[_0x1153('0x2d')](_0x5c36a9,function(_0xb274e4){if(_[_0x1153('0x2e')]([_0x1153('0x2f'),'picklist'],_0xb274e4[_0x1153('0x30')])&&_0xb274e4[_0x1153('0x31')]&&!_0xb274e4[_0x1153('0x32')]){_0x10f2fd[_0xb274e4[_0x1153('0x31')]['toLowerCase']()]=_0xb274e4['content']['toString']();}else if(_[_0x1153('0x2e')](['string',_0x1153('0x33')],_0xb274e4[_0x1153('0x30')])&&_0xb274e4[_0x1153('0x34')]&&_0xb274e4[_0x1153('0x32')]){_0x10f2fd[_0x1153('0x35')][_0xb274e4['idField']]=_0xb274e4['content'][_0x1153('0x23')]();}else if(_0xb274e4[_0x1153('0x30')]===_0x1153('0x36')&&_0xb274e4['variableName']&&_0xb274e4[_0x1153('0x34')]&&_0xb274e4[_0x1153('0x32')]){_0x1beb9c[_0xb274e4['variableName']]&&(_0x10f2fd[_0x1153('0x35')][_0xb274e4[_0x1153('0x34')]]=_0x1beb9c[_0xb274e4[_0x1153('0x37')]][_0x1153('0x23')]());}else if(_0xb274e4[_0x1153('0x30')]===_0x1153('0x38')&&_0xb274e4[_0x1153('0x39')]&&_0xb274e4['Variable'][_0x1153('0x3a')]&&_0xb274e4[_0x1153('0x34')]&&_0xb274e4['customField']){_0x1beb9c[_0xb274e4[_0x1153('0x39')][_0x1153('0x3a')][_0x1153('0x3b')]()]&&(_0x10f2fd[_0x1153('0x35')][_0xb274e4['idField']]=_0x1beb9c[_0xb274e4[_0x1153('0x39')][_0x1153('0x3a')][_0x1153('0x3b')]()][_0x1153('0x23')]());}});}if(_0x10f2fd[_0x1153('0x3c')]){_0x10f2fd[_0x1153('0x3c')]=Number(_0x10f2fd[_0x1153('0x3c')]);}return _0x10f2fd;}function getTicket(_0xc033c9,_0x1ce1b8,_0x5ed404,_0x5654dc,_0x2071b9){logger['info']('Creating\x20new\x20ticket...');var _0x460170=_[_0x1153('0x3d')]({'subject':intUtil['getString'](_0x5654dc[_0x1153('0x3e')],_0x2071b9,'\x20'),'type':_0x1153('0x3f'),'status':'new','labels':[_0x1153('0x40'),'Motion',_0x1153('0x41')][_0x1153('0x42')](getTags(_0x5654dc[_0x1153('0x43')],_0x1153('0x3a'))),'description':intUtil[_0x1153('0x44')](_0x5654dc[_0x1153('0x45')],_0x2071b9,'\x0a'),'_links':{'assigned_user':{'href':util[_0x1153('0xf')](_0x1153('0x46'),_0x1ce1b8['id']),'class':_0x1153('0x47')}},'message':{'direction':'in','body':intUtil[_0x1153('0x44')](_0x5654dc[_0x1153('0x45')],_0x2071b9,'\x0a')}},getCustomFields(_0x5654dc[_0x1153('0x48')],_0x2071b9));return request({'uri':util[_0x1153('0xf')](_0x1153('0x49'),_0xc033c9[_0x1153('0x19')],_0x5ed404['id']),'method':_0x1153('0x29'),'body':_0x460170});}exports['queue']=function(_0x5399fa,_0x4a40cb,_0x2a1d7a,_0x47e365,_0x2570b0,_0x52ec14){var _0x5eb057,_0x1d35fb;_0x52ec14['remoteUri']=intUtil['stripTrailingSlash'](_0x52ec14['remoteUri']);_0x52ec14[_0x1153('0x4a')]=intUtil[_0x1153('0x4b')](_0x52ec14[_0x1153('0x4a')]);if(_0x2570b0&&_0x2570b0[_0x1153('0x4c')]){logger[_0x1153('0xe')](_0x1153('0x4d'),_0x1153('0x4e'));_0x4a40cb[_0x1153('0x4f')]=util[_0x1153('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x52ec14[_0x1153('0x4a')],_0x4a40cb[_0x1153('0x50')],md5(_0x4a40cb[_0x1153('0x50')]));}else{_0x4a40cb[_0x1153('0x4f')]='';}headers[_0x1153('0x51')]=getAuth(_0x52ec14);return getUser(_0x52ec14,_0x47e365[_0x1153('0x52')])['then'](function(_0x3638b4){_0x5eb057=_0x3638b4;logger[_0x1153('0xe')](_0x1153('0x53'),_0x5eb057['id']);return getEndUser(_0x52ec14,_0x4a40cb[_0x1153('0x54')],_0x4a40cb['calleridnum']);})[_0x1153('0x11')](function(_0x4834aa){_0x1d35fb=_0x4834aa;logger[_0x1153('0xe')](_0x1153('0x55'),_0x1d35fb['id']);return getTicket(_0x52ec14,_0x5eb057,_0x1d35fb,_0x2a1d7a,_0x4a40cb);})['then'](function(_0x28aef9){if(_0x28aef9){logger['info']('Ticket\x20created!');logger[_0x1153('0xe')](_0x1153('0x56'),_0x28aef9['id']);switch(_0x52ec14['type']){case'integrationTab':logger[_0x1153('0xe')](_0x1153('0x4d'),_0x1153('0x57'));emit(util['format'](_0x1153('0x58'),_0x47e365[_0x1153('0x3a')]),_0x1153('0x59'),{'recordId':_0x28aef9['id']});break;case'newTab':logger[_0x1153('0xe')](_0x1153('0x4d'),_0x1153('0x5a'));emit(util[_0x1153('0xf')](_0x1153('0x58'),_0x47e365[_0x1153('0x3a')]),'trigger:browser:url',{'uri':util['format'](_0x1153('0x5b'),_0x28aef9['id'])});break;default:logger[_0x1153('0x5c')](_0x1153('0x4d'),_0x1153('0x5d'));}}})['catch'](function(_0x4f6e7b){console[_0x1153('0x5c')](_0x4f6e7b);logger[_0x1153('0x5c')]('[QUEUE]',JSON[_0x1153('0x5e')](_0x4f6e7b));});};exports[_0x1153('0x5f')]=function(_0x28f44d,_0x425be6,_0x12b6e4,_0x5ba2d7,_0x54007a,_0x260e21,_0x4c8cd8){var _0x19a40e,_0x4e62fb;_0x260e21['remoteUri']=intUtil[_0x1153('0x4b')](_0x260e21['remoteUri']);_0x260e21['serverUrl']=intUtil[_0x1153('0x4b')](_0x260e21[_0x1153('0x4a')]);if(_0x4c8cd8&&_0x4c8cd8[_0x1153('0x60')]&&_0x4c8cd8[_0x1153('0x60')]!==_0x1153('0x61')){logger[_0x1153('0xe')](_0x1153('0x62'),_0x1153('0x4e'));_0x425be6[_0x1153('0x4f')]=util[_0x1153('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x260e21[_0x1153('0x4a')],_0x425be6[_0x1153('0x50')],md5(_0x425be6[_0x1153('0x50')]));}headers['Authorization']=getAuth(_0x260e21);return getUser(_0x260e21,_0x5ba2d7[_0x1153('0x52')])[_0x1153('0x11')](function(_0x44a6ec){_0x19a40e=_0x44a6ec;logger[_0x1153('0xe')](_0x1153('0x53'),_0x19a40e['id']);return getEndUser(_0x260e21,_0x425be6[_0x1153('0x63')],_0x425be6[_0x1153('0x64')]);})['then'](function(_0x8f4757){_0x4e62fb=_0x8f4757;logger[_0x1153('0xe')](_0x1153('0x55'),_0x4e62fb['id']);return getTicket(_0x260e21,_0x19a40e,_0x4e62fb,_0x12b6e4,_0x425be6);})[_0x1153('0x11')](function(_0x1b38ea){if(_0x1b38ea){logger[_0x1153('0xe')](_0x1153('0x65'));logger['info'](_0x1153('0x56'),_0x1b38ea['id']);switch(_0x260e21[_0x1153('0x30')]){case'integrationTab':logger[_0x1153('0xe')](_0x1153('0x4d'),_0x1153('0x57'));emit(util[_0x1153('0xf')]('user:%s',_0x5ba2d7[_0x1153('0x3a')]),'trigger:desk:display',{'recordId':_0x1b38ea['id']});break;case'newTab':logger[_0x1153('0xe')]('[QUEUE]',_0x1153('0x5a'));emit(util[_0x1153('0xf')]('user:%s',_0x5ba2d7[_0x1153('0x3a')]),_0x1153('0x66'),{'uri':util[_0x1153('0xf')](_0x1153('0x67'),_0x260e21['remoteUri'],_0x1b38ea['id'])});break;default:logger[_0x1153('0x5c')](_0x1153('0x62'),_0x1153('0x5d'));}}})['catch'](function(_0x475673){logger[_0x1153('0x5c')]('[OUTBOUND]',JSON['stringify'](_0x475673));});};exports['unmanaged']=function(_0x56cb12,_0x13c08c,_0x22dd93,_0x289a4b,_0x1c28e9,_0x45dab1){var _0x5aea38,_0x39efcd;_0x45dab1[_0x1153('0x19')]=intUtil['stripTrailingSlash'](_0x45dab1['remoteUri']);_0x45dab1[_0x1153('0x4a')]=intUtil[_0x1153('0x4b')](_0x45dab1[_0x1153('0x4a')]);if(_0x1c28e9&&_0x1c28e9[_0x1153('0x4c')]){logger['info']('['+_0x13c08c[_0x1153('0x68')][_0x1153('0x69')]()+']',_0x1153('0x4e'));_0x13c08c[_0x1153('0x4f')]=util[_0x1153('0xf')](_0x1153('0x6a'),_0x45dab1['serverUrl'],_0x13c08c[_0x1153('0x50')],md5(_0x13c08c['uniqueid']));}else{_0x13c08c[_0x1153('0x4f')]='';}headers[_0x1153('0x51')]=getAuth(_0x45dab1);return getUser(_0x45dab1)[_0x1153('0x11')](function(_0x272736){_0x5aea38=_0x272736;logger[_0x1153('0xe')](_0x1153('0x53'),_0x5aea38['id']);return getEndUser(_0x45dab1,_0x13c08c[_0x1153('0x54')],_0x13c08c[_0x1153('0x6b')]);})[_0x1153('0x11')](function(_0x544b08){_0x39efcd=_0x544b08;logger[_0x1153('0xe')]('The\x20Enduser\x20ID\x20is:',_0x39efcd['id']);return getTicket(_0x45dab1,_0x5aea38,_0x39efcd,_0x22dd93,_0x13c08c);})[_0x1153('0x11')](function(_0x3e1e62){if(_0x3e1e62){logger[_0x1153('0xe')](_0x1153('0x65'));logger[_0x1153('0xe')](_0x1153('0x56'),_0x3e1e62['id']);}})[_0x1153('0x6c')](function(_0x282f1a){logger[_0x1153('0x5c')]('['+_0x13c08c[_0x1153('0x68')]['toUpperCase']()+']',JSON[_0x1153('0x5e')](_0x282f1a));});};