Built motion from commit (unavailable).|2.4.18
[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 _0x58a4=['[HTTP]','GET','authType','%s:%s','password','username','token','Basic\x20%s','toString','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','forEach','string','customField','toLowerCase','content','type','idField','custom_fields','variableName','customVariable','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY','Motion','CTI','concat','/api/v2/users/%d','user','Descriptions','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','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','catch','error','stringify','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridname','destcalleridnum','%s/agent/tickets/%s','[ABANDONED]','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug'];(function(_0x572d15,_0x557db9){var _0x225c7e=function(_0xa8dc9f){while(--_0xa8dc9f){_0x572d15['push'](_0x572d15['shift']());}};_0x225c7e(++_0x557db9);}(_0x58a4,0xbf));var _0x458a=function(_0x161e88,_0x49ce5e){_0x161e88=_0x161e88-0x0;var _0x40ee62=_0x58a4[_0x161e88];return _0x40ee62;};'use strict';var _=require(_0x458a('0x0'));var rp=require(_0x458a('0x1'));var md5=require(_0x458a('0x2'));var util=require(_0x458a('0x3'));var Redis=require(_0x458a('0x4'));var intUtil=require(_0x458a('0x5'));var config=require(_0x458a('0x6'));var logger=require(_0x458a('0x7'))(_0x458a('0x8'));config[_0x458a('0x9')]=_[_0x458a('0xa')](config[_0x458a('0x9')],{'host':_0x458a('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x30b095,_0x11fcaa,_0x2029bc){io['to'](_0x30b095)[_0x458a('0xc')](_0x11fcaa,_0x2029bc);}var headers={'Content-Type':_0x458a('0xd'),'Accept':'application/json'};function getUser(_0x4bedce,_0x185c5f){if(intUtil[_0x458a('0xe')](_0x185c5f)===!![]){logger[_0x458a('0xf')](_0x458a('0x10'),_0x185c5f);return request({'uri':util[_0x458a('0x11')]('%s/users',_0x4bedce[_0x458a('0x12')])})[_0x458a('0x13')](function(_0x5a3874){if(_0x5a3874[_0x458a('0x14')]){return _[_0x458a('0x15')](_0x5a3874[_0x458a('0x16')][_0x458a('0x17')],{'email':_0x185c5f});}})[_0x458a('0x13')](function(_0x5bd09e){if(_0x5bd09e){logger['info'](_0x458a('0x18'));return _0x5bd09e;}else{logger['info'](_0x458a('0x19'));return request({'uri':util[_0x458a('0x11')](_0x458a('0x1a'),_0x4bedce[_0x458a('0x12')])});}});}else{logger[_0x458a('0xf')](_0x458a('0x1b'));return request({'uri':util['format']('%s/users/me',_0x4bedce['remoteUri'])});}}function request(_0x2faf6a){logger[_0x458a('0x1c')](_0x458a('0x1d'),JSON['stringify'](_0x2faf6a));return rp(_[_0x458a('0xa')](_0x2faf6a,{'method':_0x458a('0x1e'),'headers':headers,'json':!![]}));}function getAuth(_0x18504d){var _0x392986;if(_0x18504d[_0x458a('0x1f')]==='basic'){_0x392986=util['format'](_0x458a('0x20'),_0x18504d['username'],_0x18504d[_0x458a('0x21')]);}else if(_0x18504d[_0x458a('0x1f')]==='token'){_0x392986=util[_0x458a('0x11')]('%s/token:%s',_0x18504d[_0x458a('0x22')],_0x18504d[_0x458a('0x23')]);}return util['format'](_0x458a('0x24'),new Buffer(_0x392986)[_0x458a('0x25')]('base64'));}function getEndUser(_0xa6b8ff,_0x5ad95a,_0x370959){logger['info'](_0x458a('0x26'),_0x370959);return request({'uri':util['format'](_0x458a('0x27'),_0xa6b8ff[_0x458a('0x12')]),'qs':{'phone':_0x370959}})[_0x458a('0x13')](function(_0xcda8cc){if(_0xcda8cc[_0x458a('0x14')]){logger[_0x458a('0xf')](_0x458a('0x28'));return _0xcda8cc[_0x458a('0x16')][_0x458a('0x17')][0x0];}else{logger[_0x458a('0xf')](_0x458a('0x29'));return request({'uri':util[_0x458a('0x11')](_0x458a('0x2a'),_0xa6b8ff['remoteUri']),'method':_0x458a('0x2b'),'body':{'first_name':_0x5ad95a,'title':_0x5ad95a,'phone_numbers':[{'type':_0x458a('0x2c'),'value':_0x370959}]}});}});}function getTags(_0x5f3ac0,_0x5df150){var _0x41b23d=[];if(_0x5f3ac0&&_0x5f3ac0['length']>0x0){_0x41b23d=_[_0x458a('0x2d')](_0x5f3ac0,_0x5df150);}return _0x41b23d;}function getCustomFields(_0x29f9b5,_0x223f73){var _0x4a49e4=[];var _0xa6fdf={'custom_fields':{}};if(_0x29f9b5[_0x458a('0x2e')]>0x0){_[_0x458a('0x2f')](_0x29f9b5,function(_0x562c36){if(_0x562c36['type']===_0x458a('0x30')&&_0x562c36['nameField']&&!_0x562c36[_0x458a('0x31')]){_0xa6fdf[_0x562c36['nameField'][_0x458a('0x32')]()]=_0x562c36[_0x458a('0x33')]['toString']();}else if(_0x562c36[_0x458a('0x34')]===_0x458a('0x30')&&_0x562c36[_0x458a('0x35')]&&_0x562c36['customField']){_0xa6fdf[_0x458a('0x36')][_0x562c36[_0x458a('0x35')]]=_0x562c36[_0x458a('0x33')][_0x458a('0x25')]();}else if(_0x562c36[_0x458a('0x34')]==='variable'&&_0x562c36[_0x458a('0x37')]&&_0x562c36[_0x458a('0x35')]&&_0x562c36[_0x458a('0x31')]){_0x223f73[_0x562c36[_0x458a('0x37')]]&&(_0xa6fdf[_0x458a('0x36')][_0x562c36[_0x458a('0x35')]]=_0x223f73[_0x562c36['variableName']][_0x458a('0x25')]());}else if(_0x562c36[_0x458a('0x34')]===_0x458a('0x38')&&_0x562c36[_0x458a('0x39')]&&_0x562c36[_0x458a('0x39')][_0x458a('0x3a')]&&_0x562c36[_0x458a('0x35')]&&_0x562c36[_0x458a('0x31')]){_0x223f73[_0x562c36[_0x458a('0x39')]['name'][_0x458a('0x32')]()]&&(_0xa6fdf[_0x458a('0x36')][_0x562c36[_0x458a('0x35')]]=_0x223f73[_0x562c36[_0x458a('0x39')][_0x458a('0x3a')][_0x458a('0x32')]()][_0x458a('0x25')]());}});}if(_0xa6fdf[_0x458a('0x3b')]){_0xa6fdf[_0x458a('0x3b')]=Number(_0xa6fdf[_0x458a('0x3b')]);}return _0xa6fdf;}function getTicket(_0x1a4011,_0x1aa28e,_0x40c6cb,_0x73e060,_0x5d79cb){logger['info'](_0x458a('0x3c'));var _0x397a41=_[_0x458a('0x3d')]({'subject':intUtil[_0x458a('0x3e')](_0x73e060[_0x458a('0x3f')],_0x5d79cb,'\x20'),'type':_0x458a('0x40'),'status':_0x458a('0x41'),'labels':[_0x458a('0x42'),_0x458a('0x43'),_0x458a('0x44')][_0x458a('0x45')](getTags(_0x73e060['Tags'],_0x458a('0x3a'))),'description':intUtil[_0x458a('0x3e')](_0x73e060['Descriptions'],_0x5d79cb,'\x0a'),'_links':{'assigned_user':{'href':util[_0x458a('0x11')](_0x458a('0x46'),_0x1aa28e['id']),'class':_0x458a('0x47')}},'message':{'direction':'in','body':intUtil['getString'](_0x73e060[_0x458a('0x48')],_0x5d79cb,'\x0a')}},getCustomFields(_0x73e060[_0x458a('0x49')],_0x5d79cb));return request({'uri':util[_0x458a('0x11')](_0x458a('0x4a'),_0x1a4011[_0x458a('0x12')],_0x40c6cb['id']),'method':_0x458a('0x2b'),'body':_0x397a41});}exports[_0x458a('0x4b')]=function(_0x667255,_0x5883ab,_0x296385,_0x145e3c,_0x2b9030,_0x5180ae){var _0x3d3d0e,_0x369d4b;_0x5180ae['remoteUri']=intUtil[_0x458a('0x4c')](_0x5180ae[_0x458a('0x12')]);_0x5180ae[_0x458a('0x4d')]=intUtil[_0x458a('0x4c')](_0x5180ae[_0x458a('0x4d')]);if(_0x2b9030&&_0x2b9030['monitor_format']){logger['info'](_0x458a('0x4e'),_0x458a('0x4f'));_0x5883ab[_0x458a('0x50')]=util[_0x458a('0x11')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5180ae[_0x458a('0x4d')],_0x5883ab[_0x458a('0x51')],md5(_0x5883ab['uniqueid']));}else{_0x5883ab[_0x458a('0x50')]='';}headers['Authorization']=getAuth(_0x5180ae);return getUser(_0x5180ae,_0x145e3c[_0x458a('0x52')])[_0x458a('0x13')](function(_0x30d9d9){_0x3d3d0e=_0x30d9d9;logger['info'](_0x458a('0x53'),_0x3d3d0e['id']);return getEndUser(_0x5180ae,_0x5883ab[_0x458a('0x54')],_0x5883ab[_0x458a('0x55')]);})['then'](function(_0x5edbc9){_0x369d4b=_0x5edbc9;logger[_0x458a('0xf')](_0x458a('0x56'),_0x369d4b['id']);return getTicket(_0x5180ae,_0x3d3d0e,_0x369d4b,_0x296385,_0x5883ab);})[_0x458a('0x13')](function(_0x4dea55){if(_0x4dea55){logger['info'](_0x458a('0x57'));logger[_0x458a('0xf')](_0x458a('0x58'),_0x4dea55['id']);switch(_0x5180ae[_0x458a('0x34')]){case _0x458a('0x59'):logger[_0x458a('0xf')](_0x458a('0x4e'),_0x458a('0x5a'));emit(util[_0x458a('0x11')](_0x458a('0x5b'),_0x145e3c[_0x458a('0x3a')]),_0x458a('0x5c'),{'recordId':_0x4dea55['id']});break;case _0x458a('0x5d'):logger[_0x458a('0xf')](_0x458a('0x4e'),_0x458a('0x5e'));emit(util['format'](_0x458a('0x5b'),_0x145e3c[_0x458a('0x3a')]),_0x458a('0x5f'),{'uri':util[_0x458a('0x11')](_0x458a('0x60'),_0x4dea55['id'])});break;default:logger['error']('[QUEUE]','Desk\x20account\x20type\x20not\x20recognized');}}})[_0x458a('0x61')](function(_0x5b47e0){console[_0x458a('0x62')](_0x5b47e0);logger[_0x458a('0x62')](_0x458a('0x4e'),JSON[_0x458a('0x63')](_0x5b47e0));});};exports[_0x458a('0x64')]=function(_0x5f0151,_0x48f68e,_0x3d7616,_0x2d8b77,_0x2587a1,_0x8ff0dd,_0x2d67b1){var _0x5a6650,_0x21c01a;_0x8ff0dd['remoteUri']=intUtil[_0x458a('0x4c')](_0x8ff0dd['remoteUri']);_0x8ff0dd[_0x458a('0x4d')]=intUtil['stripTrailingSlash'](_0x8ff0dd['serverUrl']);if(_0x2d67b1&&_0x2d67b1['recordingFormat']&&_0x2d67b1[_0x458a('0x65')]!==_0x458a('0x66')){logger['info'](_0x458a('0x67'),_0x458a('0x4f'));_0x48f68e[_0x458a('0x50')]=util['format'](_0x458a('0x68'),_0x8ff0dd[_0x458a('0x4d')],_0x48f68e[_0x458a('0x51')],md5(_0x48f68e[_0x458a('0x51')]));}headers[_0x458a('0x69')]=getAuth(_0x8ff0dd);return getUser(_0x8ff0dd,_0x2d8b77[_0x458a('0x52')])['then'](function(_0x15200c){_0x5a6650=_0x15200c;logger[_0x458a('0xf')](_0x458a('0x53'),_0x5a6650['id']);return getEndUser(_0x8ff0dd,_0x48f68e[_0x458a('0x6a')],_0x48f68e[_0x458a('0x6b')]);})[_0x458a('0x13')](function(_0x1181c2){_0x21c01a=_0x1181c2;logger[_0x458a('0xf')]('The\x20Enduser\x20ID\x20is:',_0x21c01a['id']);return getTicket(_0x8ff0dd,_0x5a6650,_0x21c01a,_0x3d7616,_0x48f68e);})[_0x458a('0x13')](function(_0x4abe93){if(_0x4abe93){logger[_0x458a('0xf')](_0x458a('0x57'));logger[_0x458a('0xf')](_0x458a('0x58'),_0x4abe93['id']);switch(_0x8ff0dd['type']){case'integrationTab':logger[_0x458a('0xf')](_0x458a('0x4e'),_0x458a('0x5a'));emit(util[_0x458a('0x11')](_0x458a('0x5b'),_0x2d8b77[_0x458a('0x3a')]),'trigger:desk:display',{'recordId':_0x4abe93['id']});break;case _0x458a('0x5d'):logger[_0x458a('0xf')]('[QUEUE]',_0x458a('0x5e'));emit(util['format'](_0x458a('0x5b'),_0x2d8b77[_0x458a('0x3a')]),_0x458a('0x5f'),{'uri':util[_0x458a('0x11')](_0x458a('0x6c'),_0x8ff0dd[_0x458a('0x12')],_0x4abe93['id'])});break;default:logger[_0x458a('0x62')](_0x458a('0x67'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x458a('0x61')](function(_0x3ed05d){logger['error'](_0x458a('0x67'),JSON[_0x458a('0x63')](_0x3ed05d));});};exports['abandoned']=function(_0xaf7b50,_0x14b483,_0x47cbcf,_0x17b611,_0x180df0,_0x582ff7){var _0x16f82f,_0x1f95d4;_0x582ff7[_0x458a('0x12')]=intUtil[_0x458a('0x4c')](_0x582ff7[_0x458a('0x12')]);_0x582ff7[_0x458a('0x4d')]=intUtil[_0x458a('0x4c')](_0x582ff7[_0x458a('0x4d')]);if(_0x180df0&&_0x180df0['monitor_format']){logger[_0x458a('0xf')](_0x458a('0x6d'),_0x458a('0x4f'));_0x14b483[_0x458a('0x50')]=util[_0x458a('0x11')](_0x458a('0x68'),_0x582ff7[_0x458a('0x4d')],_0x14b483[_0x458a('0x51')],md5(_0x14b483[_0x458a('0x51')]));}else{_0x14b483[_0x458a('0x50')]='';}headers['Authorization']=getAuth(_0x582ff7);return getUser(_0x582ff7)[_0x458a('0x13')](function(_0x527c09){_0x16f82f=_0x527c09;logger[_0x458a('0xf')](_0x458a('0x53'),_0x16f82f['id']);return getEndUser(_0x582ff7,_0x14b483[_0x458a('0x54')],_0x14b483[_0x458a('0x55')]);})[_0x458a('0x13')](function(_0x3d1d37){_0x1f95d4=_0x3d1d37;logger[_0x458a('0xf')](_0x458a('0x56'),_0x1f95d4['id']);return getTicket(_0x582ff7,_0x16f82f,_0x1f95d4,_0x47cbcf,_0x14b483);})[_0x458a('0x13')](function(_0x413d7c){if(_0x413d7c){logger[_0x458a('0xf')](_0x458a('0x57'));logger[_0x458a('0xf')](_0x458a('0x58'),_0x413d7c['id']);}})[_0x458a('0x61')](function(_0x2c131b){logger['error'](_0x458a('0x6d'),JSON['stringify'](_0x2c131b));});};