Built motion from commit (unavailable).|2.6.0
[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 _0x8e7a=['type','nameField','toLowerCase','content','string','idField','customField','custom_fields','variable','variableName','customVariable','Variable','name','Creating\x20new\x20ticket...','merge','Subjects','phone','new','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','trigger:desk:display','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','stringify','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','%s/agent/tickets/%s','unmanaged','toUpperCase','lastevent','lodash','md5','util','./util','../../../../config/environment','desk','redis','defaults','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','_embedded','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','GET','authType','basic','password','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','entries','%s/customers','POST','work','length','map','forEach','includes','picklist'];(function(_0x1a6480,_0x2e8d74){var _0x58d4cc=function(_0x123b77){while(--_0x123b77){_0x1a6480['push'](_0x1a6480['shift']());}};_0x58d4cc(++_0x2e8d74);}(_0x8e7a,0x120));var _0xa8e7=function(_0x11365b,_0x666e8e){_0x11365b=_0x11365b-0x0;var _0x39b7c6=_0x8e7a[_0x11365b];return _0x39b7c6;};'use strict';var _=require(_0xa8e7('0x0'));var rp=require('request-promise');var md5=require(_0xa8e7('0x1'));var util=require(_0xa8e7('0x2'));var Redis=require('ioredis');var intUtil=require(_0xa8e7('0x3'));var config=require(_0xa8e7('0x4'));var logger=require('../../../../config/logger')(_0xa8e7('0x5'));config[_0xa8e7('0x6')]=_[_0xa8e7('0x7')](config[_0xa8e7('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xa8e7('0x8'))(new Redis(config[_0xa8e7('0x6')]));function emit(_0x453dc2,_0x213a17,_0x61df0b){io['to'](_0x453dc2)[_0xa8e7('0x9')](_0x213a17,_0x61df0b);}var headers={'Content-Type':_0xa8e7('0xa'),'Accept':'application/json'};function getUser(_0x5c9a92,_0x5f40ce){if(intUtil[_0xa8e7('0xb')](_0x5f40ce)===!![]){logger[_0xa8e7('0xc')](_0xa8e7('0xd'),_0x5f40ce);return request({'uri':util[_0xa8e7('0xe')](_0xa8e7('0xf'),_0x5c9a92[_0xa8e7('0x10')])})[_0xa8e7('0x11')](function(_0x2150bc){if(_0x2150bc[_0xa8e7('0x12')]){return _[_0xa8e7('0x13')](_0x2150bc[_0xa8e7('0x14')]['entries'],{'email':_0x5f40ce});}})[_0xa8e7('0x11')](function(_0x19af5a){if(_0x19af5a){logger['info']('Agent\x20found!');return _0x19af5a;}else{logger[_0xa8e7('0xc')](_0xa8e7('0x15'));return request({'uri':util[_0xa8e7('0xe')]('%s/users/me',_0x5c9a92[_0xa8e7('0x10')])});}});}else{logger[_0xa8e7('0xc')](_0xa8e7('0x16'));return request({'uri':util['format'](_0xa8e7('0x17'),_0x5c9a92['remoteUri'])});}}function request(_0x46a784){logger['debug']('[HTTP]',JSON['stringify'](_0x46a784));return rp(_[_0xa8e7('0x7')](_0x46a784,{'method':_0xa8e7('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x3401d8){var _0x486714;if(_0x3401d8[_0xa8e7('0x19')]===_0xa8e7('0x1a')){_0x486714=util[_0xa8e7('0xe')]('%s:%s',_0x3401d8['username'],_0x3401d8[_0xa8e7('0x1b')]);}else if(_0x3401d8[_0xa8e7('0x19')]===_0xa8e7('0x1c')){_0x486714=util[_0xa8e7('0xe')]('%s/token:%s',_0x3401d8[_0xa8e7('0x1d')],_0x3401d8[_0xa8e7('0x1c')]);}return util[_0xa8e7('0xe')](_0xa8e7('0x1e'),new Buffer(_0x486714)[_0xa8e7('0x1f')](_0xa8e7('0x20')));}function getEndUser(_0x4f55ae,_0x429efe,_0xe02bb0){logger[_0xa8e7('0xc')](_0xa8e7('0x21'),_0xe02bb0);return request({'uri':util[_0xa8e7('0xe')](_0xa8e7('0x22'),_0x4f55ae[_0xa8e7('0x10')]),'qs':{'phone':_0xe02bb0}})[_0xa8e7('0x11')](function(_0x4c0618){if(_0x4c0618[_0xa8e7('0x12')]){logger[_0xa8e7('0xc')](_0xa8e7('0x23'));return _0x4c0618[_0xa8e7('0x14')][_0xa8e7('0x24')][0x0];}else{logger[_0xa8e7('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xa8e7('0xe')](_0xa8e7('0x25'),_0x4f55ae[_0xa8e7('0x10')]),'method':_0xa8e7('0x26'),'body':{'first_name':_0x429efe,'title':_0x429efe,'phone_numbers':[{'type':_0xa8e7('0x27'),'value':_0xe02bb0}]}});}});}function getTags(_0x2055b5,_0x26e98d){var _0x474c6d=[];if(_0x2055b5&&_0x2055b5[_0xa8e7('0x28')]>0x0){_0x474c6d=_[_0xa8e7('0x29')](_0x2055b5,_0x26e98d);}return _0x474c6d;}function getCustomFields(_0x9d96df,_0x1c3048){var _0x484f5a=[];var _0x16cace={'custom_fields':{}};if(_0x9d96df[_0xa8e7('0x28')]>0x0){_[_0xa8e7('0x2a')](_0x9d96df,function(_0x16c400){if(_[_0xa8e7('0x2b')](['string',_0xa8e7('0x2c')],_0x16c400[_0xa8e7('0x2d')])&&_0x16c400[_0xa8e7('0x2e')]&&!_0x16c400['customField']){_0x16cace[_0x16c400[_0xa8e7('0x2e')][_0xa8e7('0x2f')]()]=_0x16c400[_0xa8e7('0x30')][_0xa8e7('0x1f')]();}else if(_[_0xa8e7('0x2b')]([_0xa8e7('0x31'),'picklist'],_0x16c400[_0xa8e7('0x2d')])&&_0x16c400[_0xa8e7('0x32')]&&_0x16c400[_0xa8e7('0x33')]){_0x16cace[_0xa8e7('0x34')][_0x16c400[_0xa8e7('0x32')]]=_0x16c400[_0xa8e7('0x30')][_0xa8e7('0x1f')]();}else if(_0x16c400['type']===_0xa8e7('0x35')&&_0x16c400['variableName']&&_0x16c400[_0xa8e7('0x32')]&&_0x16c400[_0xa8e7('0x33')]){_0x1c3048[_0x16c400[_0xa8e7('0x36')]]&&(_0x16cace[_0xa8e7('0x34')][_0x16c400[_0xa8e7('0x32')]]=_0x1c3048[_0x16c400['variableName']][_0xa8e7('0x1f')]());}else if(_0x16c400[_0xa8e7('0x2d')]===_0xa8e7('0x37')&&_0x16c400['Variable']&&_0x16c400[_0xa8e7('0x38')][_0xa8e7('0x39')]&&_0x16c400['idField']&&_0x16c400[_0xa8e7('0x33')]){_0x1c3048[_0x16c400[_0xa8e7('0x38')][_0xa8e7('0x39')]['toLowerCase']()]&&(_0x16cace[_0xa8e7('0x34')][_0x16c400[_0xa8e7('0x32')]]=_0x1c3048[_0x16c400[_0xa8e7('0x38')][_0xa8e7('0x39')][_0xa8e7('0x2f')]()]['toString']());}});}if(_0x16cace['priority']){_0x16cace['priority']=Number(_0x16cace['priority']);}return _0x16cace;}function getTicket(_0x11ad83,_0x1ada52,_0x2178e1,_0x551ab4,_0x43faa9){logger['info'](_0xa8e7('0x3a'));var _0x203f96=_[_0xa8e7('0x3b')]({'subject':intUtil['getString'](_0x551ab4[_0xa8e7('0x3c')],_0x43faa9,'\x20'),'type':_0xa8e7('0x3d'),'status':_0xa8e7('0x3e'),'labels':[_0xa8e7('0x3f'),_0xa8e7('0x40'),_0xa8e7('0x41')][_0xa8e7('0x42')](getTags(_0x551ab4[_0xa8e7('0x43')],_0xa8e7('0x39'))),'description':intUtil[_0xa8e7('0x44')](_0x551ab4[_0xa8e7('0x45')],_0x43faa9,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa8e7('0xe')](_0xa8e7('0x46'),_0x1ada52['id']),'class':_0xa8e7('0x47')}},'message':{'direction':'in','body':intUtil[_0xa8e7('0x44')](_0x551ab4['Descriptions'],_0x43faa9,'\x0a')}},getCustomFields(_0x551ab4[_0xa8e7('0x48')],_0x43faa9));return request({'uri':util['format']('%s/customers/%d/cases',_0x11ad83['remoteUri'],_0x2178e1['id']),'method':_0xa8e7('0x26'),'body':_0x203f96});}exports[_0xa8e7('0x49')]=function(_0x3c69b5,_0x26c32c,_0x3db002,_0xe35084,_0x3f218a,_0x18663d){var _0x3a2cee,_0x15177c;_0x18663d[_0xa8e7('0x10')]=intUtil[_0xa8e7('0x4a')](_0x18663d[_0xa8e7('0x10')]);_0x18663d[_0xa8e7('0x4b')]=intUtil[_0xa8e7('0x4a')](_0x18663d[_0xa8e7('0x4b')]);if(_0x3f218a&&_0x3f218a[_0xa8e7('0x4c')]){logger[_0xa8e7('0xc')](_0xa8e7('0x4d'),_0xa8e7('0x4e'));_0x26c32c[_0xa8e7('0x4f')]=util['format'](_0xa8e7('0x50'),_0x18663d[_0xa8e7('0x4b')],_0x26c32c[_0xa8e7('0x51')],md5(_0x26c32c[_0xa8e7('0x51')]));}else{_0x26c32c[_0xa8e7('0x4f')]='';}headers[_0xa8e7('0x52')]=getAuth(_0x18663d);return getUser(_0x18663d,_0xe35084[_0xa8e7('0x53')])[_0xa8e7('0x11')](function(_0x162ddd){_0x3a2cee=_0x162ddd;logger[_0xa8e7('0xc')]('The\x20User\x20ID\x20is:',_0x3a2cee['id']);return getEndUser(_0x18663d,_0x26c32c[_0xa8e7('0x54')],_0x26c32c[_0xa8e7('0x55')]);})[_0xa8e7('0x11')](function(_0xf5317b){_0x15177c=_0xf5317b;logger['info'](_0xa8e7('0x56'),_0x15177c['id']);return getTicket(_0x18663d,_0x3a2cee,_0x15177c,_0x3db002,_0x26c32c);})['then'](function(_0x30e1c9){if(_0x30e1c9){logger[_0xa8e7('0xc')](_0xa8e7('0x57'));logger[_0xa8e7('0xc')](_0xa8e7('0x58'),_0x30e1c9['id']);switch(_0x18663d[_0xa8e7('0x2d')]){case'integrationTab':logger[_0xa8e7('0xc')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa8e7('0xe')](_0xa8e7('0x59'),_0xe35084[_0xa8e7('0x39')]),_0xa8e7('0x5a'),{'recordId':_0x30e1c9['id']});break;case'newTab':logger['info'](_0xa8e7('0x4d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xa8e7('0x59'),_0xe35084[_0xa8e7('0x39')]),_0xa8e7('0x5b'),{'uri':util['format'](_0xa8e7('0x5c'),_0x30e1c9['id'])});break;default:logger[_0xa8e7('0x5d')]('[QUEUE]',_0xa8e7('0x5e'));}}})[_0xa8e7('0x5f')](function(_0x286a5f){console[_0xa8e7('0x5d')](_0x286a5f);logger['error'](_0xa8e7('0x4d'),JSON[_0xa8e7('0x60')](_0x286a5f));});};exports[_0xa8e7('0x61')]=function(_0x180ce8,_0x1d8289,_0x5eac03,_0x3ae65b,_0x118dc6,_0x327b7f,_0x380506){var _0x13e551,_0xe1150b;_0x327b7f[_0xa8e7('0x10')]=intUtil[_0xa8e7('0x4a')](_0x327b7f[_0xa8e7('0x10')]);_0x327b7f[_0xa8e7('0x4b')]=intUtil[_0xa8e7('0x4a')](_0x327b7f[_0xa8e7('0x4b')]);if(_0x380506&&_0x380506[_0xa8e7('0x62')]&&_0x380506[_0xa8e7('0x62')]!==_0xa8e7('0x63')){logger[_0xa8e7('0xc')](_0xa8e7('0x64'),_0xa8e7('0x4e'));_0x1d8289[_0xa8e7('0x4f')]=util[_0xa8e7('0xe')](_0xa8e7('0x50'),_0x327b7f[_0xa8e7('0x4b')],_0x1d8289[_0xa8e7('0x51')],md5(_0x1d8289[_0xa8e7('0x51')]));}headers[_0xa8e7('0x52')]=getAuth(_0x327b7f);return getUser(_0x327b7f,_0x3ae65b[_0xa8e7('0x53')])['then'](function(_0x2620ae){_0x13e551=_0x2620ae;logger[_0xa8e7('0xc')](_0xa8e7('0x65'),_0x13e551['id']);return getEndUser(_0x327b7f,_0x1d8289[_0xa8e7('0x66')],_0x1d8289[_0xa8e7('0x67')]);})[_0xa8e7('0x11')](function(_0x5e9f2e){_0xe1150b=_0x5e9f2e;logger['info'](_0xa8e7('0x56'),_0xe1150b['id']);return getTicket(_0x327b7f,_0x13e551,_0xe1150b,_0x5eac03,_0x1d8289);})[_0xa8e7('0x11')](function(_0x8237a){if(_0x8237a){logger['info']('Ticket\x20created!');logger[_0xa8e7('0xc')](_0xa8e7('0x58'),_0x8237a['id']);switch(_0x327b7f['type']){case _0xa8e7('0x68'):logger[_0xa8e7('0xc')](_0xa8e7('0x4d'),_0xa8e7('0x69'));emit(util[_0xa8e7('0xe')](_0xa8e7('0x59'),_0x3ae65b[_0xa8e7('0x39')]),_0xa8e7('0x5a'),{'recordId':_0x8237a['id']});break;case _0xa8e7('0x6a'):logger[_0xa8e7('0xc')](_0xa8e7('0x4d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xa8e7('0xe')](_0xa8e7('0x59'),_0x3ae65b['name']),_0xa8e7('0x5b'),{'uri':util[_0xa8e7('0xe')](_0xa8e7('0x6b'),_0x327b7f[_0xa8e7('0x10')],_0x8237a['id'])});break;default:logger['error'](_0xa8e7('0x64'),_0xa8e7('0x5e'));}}})[_0xa8e7('0x5f')](function(_0x1eb558){logger[_0xa8e7('0x5d')](_0xa8e7('0x64'),JSON[_0xa8e7('0x60')](_0x1eb558));});};exports[_0xa8e7('0x6c')]=function(_0x2def05,_0x5d866b,_0x47e7c9,_0x9de1e3,_0x47fcbb,_0x3e938){var _0x59410b,_0x3cd6f1;_0x3e938[_0xa8e7('0x10')]=intUtil[_0xa8e7('0x4a')](_0x3e938[_0xa8e7('0x10')]);_0x3e938[_0xa8e7('0x4b')]=intUtil['stripTrailingSlash'](_0x3e938[_0xa8e7('0x4b')]);if(_0x47fcbb&&_0x47fcbb['monitor_format']){logger[_0xa8e7('0xc')]('['+_0x5d866b['lastevent'][_0xa8e7('0x6d')]()+']',_0xa8e7('0x4e'));_0x5d866b[_0xa8e7('0x4f')]=util[_0xa8e7('0xe')](_0xa8e7('0x50'),_0x3e938[_0xa8e7('0x4b')],_0x5d866b[_0xa8e7('0x51')],md5(_0x5d866b[_0xa8e7('0x51')]));}else{_0x5d866b[_0xa8e7('0x4f')]='';}headers['Authorization']=getAuth(_0x3e938);return getUser(_0x3e938)[_0xa8e7('0x11')](function(_0x2961d4){_0x59410b=_0x2961d4;logger['info'](_0xa8e7('0x65'),_0x59410b['id']);return getEndUser(_0x3e938,_0x5d866b[_0xa8e7('0x54')],_0x5d866b[_0xa8e7('0x55')]);})[_0xa8e7('0x11')](function(_0x14120c){_0x3cd6f1=_0x14120c;logger['info'](_0xa8e7('0x56'),_0x3cd6f1['id']);return getTicket(_0x3e938,_0x59410b,_0x3cd6f1,_0x47e7c9,_0x5d866b);})['then'](function(_0x44eaf6){if(_0x44eaf6){logger[_0xa8e7('0xc')](_0xa8e7('0x57'));logger[_0xa8e7('0xc')](_0xa8e7('0x58'),_0x44eaf6['id']);}})[_0xa8e7('0x5f')](function(_0x433bf8){logger[_0xa8e7('0x5d')]('['+_0x5d866b[_0xa8e7('0x6e')]['toUpperCase']()+']',JSON[_0xa8e7('0x60')](_0x433bf8));});};