Built motion from commit (unavailable).|2.5.1
[motion2.git] / server / services / ami / trigger / integration / zendesk.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 _0x8b29=['Descriptions','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','%s/search.json','then','count','Agent\x20found!','find','agent','%s/users/me.json','Admin\x20account\x20selected.','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','defaults','GET','map','string','nameField','customField','type','custom_fields','push','idField','content','variable','variableName','customVariable','Variable','toLowerCase','queue','serverUrl','stripTrailingSlash','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','recordingFormat','[OUTBOUND]','destcalleridname','The\x20Ticket\x20ID\x20is:','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','toUpperCase','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','remoteUri','POST','Tags','name','getString'];(function(_0xda5738,_0x56093c){var _0x1423f6=function(_0x5562b3){while(--_0x5562b3){_0xda5738['push'](_0xda5738['shift']());}};_0x1423f6(++_0x56093c);}(_0x8b29,0xbe));var _0x98b2=function(_0x28af59,_0x361f6a){_0x28af59=_0x28af59-0x0;var _0x23748f=_0x8b29[_0x28af59];return _0x23748f;};'use strict';var _=require(_0x98b2('0x0'));var rp=require('request-promise');var md5=require(_0x98b2('0x1'));var util=require(_0x98b2('0x2'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x98b2('0x3'));var logger=require(_0x98b2('0x4'))('zendesk');config[_0x98b2('0x5')]=_['defaults'](config[_0x98b2('0x5')],{'host':_0x98b2('0x6'),'port':0x18eb});var io=require(_0x98b2('0x7'))(new Redis(config[_0x98b2('0x5')]));function emit(_0x221cee,_0x2cd0cb,_0x417ca6){io['to'](_0x221cee)[_0x98b2('0x8')](_0x2cd0cb,_0x417ca6);}var headers={'Content-Type':_0x98b2('0x9'),'Accept':_0x98b2('0x9')};function getTicket(_0x501b51,_0x48a17e,_0x599bf5,_0x14e049,_0x39617c){logger[_0x98b2('0xa')](_0x98b2('0xb'));return request({'uri':util[_0x98b2('0xc')]('%s/tickets.json',_0x501b51[_0x98b2('0xd')]),'method':_0x98b2('0xe'),'body':{'ticket':_['merge']({'requester_id':_0x599bf5['id'],'submitter_id':_0x48a17e?_0x48a17e['id']:undefined,'assignee_id':_0x48a17e?_0x48a17e['id']:undefined,'tags':getTags(_0x14e049[_0x98b2('0xf')],_0x98b2('0x10')),'subject':intUtil[_0x98b2('0x11')](_0x14e049['Subjects'],_0x39617c,'\x20'),'description':intUtil['getString'](_0x14e049[_0x98b2('0x12')],_0x39617c,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x14e049[_0x98b2('0x12')],_0x39617c,'\x0a')}},getCustomFields(_0x14e049['Fields'],_0x39617c))}})['then'](function(_0x544e3c){logger[_0x98b2('0xa')](_0x98b2('0x13'));return _0x544e3c[_0x98b2('0x14')];});}function getUser(_0x5ecea1,_0x5bb60d){if(intUtil['validateEmail'](_0x5bb60d)){logger[_0x98b2('0xa')](_0x98b2('0x15'),_0x5bb60d);return request({'uri':util[_0x98b2('0xc')](_0x98b2('0x16'),_0x5ecea1['remoteUri']),'qs':{'query':util[_0x98b2('0xc')]('type:user\x20role:agent\x20email:%s',_0x5bb60d)}})[_0x98b2('0x17')](function(_0x4931f4){if(_0x4931f4[_0x98b2('0x18')]){logger[_0x98b2('0xa')](_0x98b2('0x19'));return _[_0x98b2('0x1a')](_0x4931f4['results'],{'email':_0x5bb60d,'role':_0x98b2('0x1b')});}else{logger[_0x98b2('0xa')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x98b2('0x1c'),_0x5ecea1[_0x98b2('0xd')])})['then'](function(_0x4ddded){logger[_0x98b2('0xa')](_0x98b2('0x1d'));return _0x4ddded['user'];});}});}else{logger[_0x98b2('0xa')](_0x98b2('0x1e'));return request({'uri':util[_0x98b2('0xc')]('%s/users/me.json',_0x5ecea1[_0x98b2('0xd')])})['then'](function(_0x1d6e33){logger['info']('Admin\x20account\x20selected.');return _0x1d6e33[_0x98b2('0x1f')];});}}function getEndUser(_0xe99d27,_0x5fcd00,_0x525b57){logger['info']('Searching\x20enduser\x20with\x20phone',_0x525b57);return request({'uri':util[_0x98b2('0xc')](_0x98b2('0x16'),_0xe99d27['remoteUri']),'qs':{'query':util[_0x98b2('0xc')](_0x98b2('0x20'),_0x525b57)}})[_0x98b2('0x17')](function(_0x56efb6){var _0x2e1ea4;if(_0x56efb6[_0x98b2('0x21')][_0x98b2('0x22')]){_0x56efb6[_0x98b2('0x21')]=_[_0x98b2('0x23')](_0x56efb6['results'],{'suspended':![],'role':_0x98b2('0x24')});if(_0x56efb6['results'][_0x98b2('0x22')]){_0x2e1ea4=_[_0x98b2('0x25')](_0x56efb6['results']);}}if(_0x2e1ea4){logger[_0x98b2('0xa')](_0x98b2('0x26'));return _0x2e1ea4;}else{logger['info'](_0x98b2('0x27'));return request({'uri':util[_0x98b2('0xc')](_0x98b2('0x28'),_0xe99d27[_0x98b2('0xd')]),'method':'POST','body':{'user':{'role':'end-user','name':util[_0x98b2('0xc')](_0x98b2('0x29'),_0x5fcd00||_0x525b57),'phone':_0x525b57}}})[_0x98b2('0x17')](function(_0x3d2df4){logger[_0x98b2('0xa')](_0x98b2('0x2a'));return _0x3d2df4['user'];});}});}function getAuth(_0x448c8b){var _0x2ecb46;if(_0x448c8b[_0x98b2('0x2b')]===_0x98b2('0x2c')){_0x2ecb46=util[_0x98b2('0xc')](_0x98b2('0x2d'),_0x448c8b[_0x98b2('0x2e')],_0x448c8b[_0x98b2('0x2c')]);}else if(_0x448c8b[_0x98b2('0x2b')]===_0x98b2('0x2f')){_0x2ecb46=util[_0x98b2('0xc')](_0x98b2('0x30'),_0x448c8b[_0x98b2('0x2e')],_0x448c8b['token']);}return util['format'](_0x98b2('0x31'),new Buffer(_0x2ecb46)[_0x98b2('0x32')](_0x98b2('0x33')));}function request(_0x363553){logger[_0x98b2('0x34')](_0x98b2('0x35'),JSON['stringify'](_0x363553));return rp(_[_0x98b2('0x36')](_0x363553,{'method':_0x98b2('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x30e09a,_0x35d085){var _0x4b9c32=[];if(_0x30e09a&&_0x30e09a[_0x98b2('0x22')]>0x0){_0x4b9c32=_[_0x98b2('0x38')](_0x30e09a,_0x35d085);}return _0x4b9c32;}function getCustomFields(_0x3b5d34,_0x178ad1){var _0x2cadb7=[];var _0x3eea54={'custom_fields':[]};if(_0x3b5d34[_0x98b2('0x22')]>0x0){_['forEach'](_0x3b5d34,function(_0x158d80){if(_0x158d80['type']===_0x98b2('0x39')&&_0x158d80[_0x98b2('0x3a')]&&!_0x158d80[_0x98b2('0x3b')]){_0x3eea54[_0x158d80[_0x98b2('0x3a')]['toLowerCase']()]=_0x158d80['content'][_0x98b2('0x32')]();}else if(_0x158d80[_0x98b2('0x3c')]===_0x98b2('0x39')&&_0x158d80['idField']&&_0x158d80[_0x98b2('0x3b')]){_0x3eea54[_0x98b2('0x3d')][_0x98b2('0x3e')]({'id':_0x158d80[_0x98b2('0x3f')],'value':_0x158d80[_0x98b2('0x40')][_0x98b2('0x32')]()});}else if(_0x158d80['type']===_0x98b2('0x41')&&_0x158d80[_0x98b2('0x42')]&&_0x158d80[_0x98b2('0x3f')]&&_0x158d80['customField']){_0x178ad1[_0x158d80[_0x98b2('0x42')]]&&_0x3eea54[_0x98b2('0x3d')][_0x98b2('0x3e')]({'id':_0x158d80[_0x98b2('0x3f')],'value':_0x178ad1[_0x158d80[_0x98b2('0x42')]][_0x98b2('0x32')]()});}else if(_0x158d80['type']===_0x98b2('0x43')&&_0x158d80['Variable']&&_0x158d80[_0x98b2('0x44')][_0x98b2('0x10')]&&_0x158d80[_0x98b2('0x3f')]&&_0x158d80[_0x98b2('0x3b')]){_0x178ad1[_0x158d80[_0x98b2('0x44')][_0x98b2('0x10')][_0x98b2('0x45')]()]&&_0x3eea54[_0x98b2('0x3d')][_0x98b2('0x3e')]({'id':_0x158d80['idField'],'value':_0x178ad1[_0x158d80[_0x98b2('0x44')]['name'][_0x98b2('0x45')]()][_0x98b2('0x32')]()});}});}return _0x3eea54;}exports[_0x98b2('0x46')]=function(_0x19dfcf,_0x28234f,_0xa74a8a,_0x53f148,_0x215c36,_0x44633c){var _0x3dd679,_0x2bd1ca;_0x44633c[_0x98b2('0xd')]=intUtil['stripTrailingSlash'](_0x44633c['remoteUri']);_0x44633c[_0x98b2('0x47')]=intUtil[_0x98b2('0x48')](_0x44633c[_0x98b2('0x47')]);if(_0x215c36&&_0x215c36[_0x98b2('0x49')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x28234f[_0x98b2('0x4a')]=util[_0x98b2('0xc')](_0x98b2('0x4b'),_0x44633c[_0x98b2('0x47')],_0x28234f[_0x98b2('0x4c')],md5(_0x28234f[_0x98b2('0x4c')]));}else{_0x28234f[_0x98b2('0x4a')]='';}headers[_0x98b2('0x4d')]=getAuth(_0x44633c);return getUser(_0x44633c,_0x53f148[_0x98b2('0x4e')])['then'](function(_0x321940){_0x3dd679=_0x321940;logger['info'](_0x98b2('0x4f'),_0x3dd679['id']);return getEndUser(_0x44633c,_0x28234f[_0x98b2('0x50')],_0x28234f[_0x98b2('0x51')]);})[_0x98b2('0x17')](function(_0x4be667){_0x2bd1ca=_0x4be667;logger[_0x98b2('0xa')](_0x98b2('0x52'),_0x2bd1ca['id']);return getTicket(_0x44633c,_0x3dd679,_0x2bd1ca,_0xa74a8a,_0x28234f);})[_0x98b2('0x17')](function(_0x1e13b8){if(_0x1e13b8){logger[_0x98b2('0xa')]('The\x20Ticket\x20ID\x20is:',_0x1e13b8['id']);switch(_0x44633c[_0x98b2('0x3c')]){case _0x98b2('0x53'):logger[_0x98b2('0xa')](_0x98b2('0x54'),_0x98b2('0x55'));return request({'uri':util[_0x98b2('0xc')](_0x98b2('0x56'),_0x44633c[_0x98b2('0xd')],_0x3dd679['id'],_0x1e13b8['id']),'method':_0x98b2('0xe')});case _0x98b2('0x57'):logger[_0x98b2('0xa')](_0x98b2('0x54'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x98b2('0xc')](_0x98b2('0x58'),_0x53f148['name']),'trigger:browser:url',{'uri':util[_0x98b2('0xc')]('%s/agent/tickets/%s',_0x44633c[_0x98b2('0xd')],_0x1e13b8['id'])});break;default:logger[_0x98b2('0x59')](_0x98b2('0x54'),_0x98b2('0x5a'));}}})[_0x98b2('0x5b')](function(_0x2b2db5){logger['error'](_0x98b2('0x5c'),util['inspect'](_0x2b2db5,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0xf9da91,_0x27da73,_0x5217e0,_0x12a72e,_0x1253e2,_0x47f99a,_0xcc5547){var _0x466240,_0x14327e;_0x47f99a[_0x98b2('0xd')]=intUtil['stripTrailingSlash'](_0x47f99a['remoteUri']);_0x47f99a[_0x98b2('0x47')]=intUtil[_0x98b2('0x48')](_0x47f99a[_0x98b2('0x47')]);if(_0xcc5547&&_0xcc5547[_0x98b2('0x5d')]&&_0xcc5547[_0x98b2('0x5d')]!=='none'){logger['info'](_0x98b2('0x5e'),'Recording\x20is\x20enabled!');_0x27da73[_0x98b2('0x4a')]=util[_0x98b2('0xc')](_0x98b2('0x4b'),_0x47f99a[_0x98b2('0x47')],_0x27da73[_0x98b2('0x4c')],md5(_0x27da73[_0x98b2('0x4c')]));}headers['Authorization']=getAuth(_0x47f99a);return getUser(_0x47f99a,_0x12a72e[_0x98b2('0x4e')])[_0x98b2('0x17')](function(_0x2984ba){_0x466240=_0x2984ba;logger[_0x98b2('0xa')](_0x98b2('0x4f'),_0x466240['id']);return getEndUser(_0x47f99a,_0x27da73[_0x98b2('0x5f')],_0x27da73['destcalleridnum']);})['then'](function(_0x250df6){_0x14327e=_0x250df6;logger[_0x98b2('0xa')](_0x98b2('0x52'),_0x14327e['id']);return getTicket(_0x47f99a,_0x466240,_0x14327e,_0x5217e0,_0x27da73);})[_0x98b2('0x17')](function(_0x2ec36c){if(_0x2ec36c){logger[_0x98b2('0xa')](_0x98b2('0x60'),_0x2ec36c['id']);switch(_0x47f99a[_0x98b2('0x3c')]){case'integrationTab':logger[_0x98b2('0xa')](_0x98b2('0x5e'),_0x98b2('0x55'));return request({'uri':util['format'](_0x98b2('0x56'),_0x47f99a[_0x98b2('0xd')],_0x466240['id'],_0x2ec36c['id']),'method':_0x98b2('0xe')});case'newTab':logger[_0x98b2('0xa')](_0x98b2('0x5e'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x98b2('0xc')]('user:%s',_0x12a72e['name']),'trigger:browser:url',{'uri':util['format'](_0x98b2('0x61'),_0x47f99a[_0x98b2('0xd')],_0x2ec36c['id'])});break;default:logger[_0x98b2('0x59')]('[OUTBOUND]',_0x98b2('0x5a'));}}})[_0x98b2('0x5b')](function(_0xf84c83){logger[_0x98b2('0x59')](_0x98b2('0x62'),util[_0x98b2('0x63')](_0xf84c83,{'showHidden':!![],'depth':null}));});};exports[_0x98b2('0x64')]=function(_0x5181ee,_0x46b3fb,_0x5d60d9,_0x19c45e,_0x3877ae,_0x2fea4f){var _0x30db52,_0x122e76;_0x2fea4f[_0x98b2('0xd')]=intUtil[_0x98b2('0x48')](_0x2fea4f['remoteUri']);_0x2fea4f['serverUrl']=intUtil[_0x98b2('0x48')](_0x2fea4f[_0x98b2('0x47')]);if(_0x3877ae&&_0x3877ae[_0x98b2('0x49')]){logger[_0x98b2('0xa')]('['+_0x46b3fb['lastevent'][_0x98b2('0x65')]()+']','Recording\x20is\x20enabled!');_0x46b3fb[_0x98b2('0x4a')]=util[_0x98b2('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2fea4f[_0x98b2('0x47')],_0x46b3fb[_0x98b2('0x4c')],md5(_0x46b3fb[_0x98b2('0x4c')]));}else{_0x46b3fb[_0x98b2('0x4a')]='';}headers[_0x98b2('0x4d')]=getAuth(_0x2fea4f);return getUser(_0x2fea4f)[_0x98b2('0x17')](function(_0x4102a4){_0x30db52=_0x4102a4;logger[_0x98b2('0xa')](_0x98b2('0x4f'),_0x30db52['id']);return getEndUser(_0x2fea4f,_0x46b3fb['calleridname'],_0x46b3fb[_0x98b2('0x51')]);})[_0x98b2('0x17')](function(_0x1a9efa){_0x122e76=_0x1a9efa;logger[_0x98b2('0xa')](_0x98b2('0x52'),_0x122e76['id']);return getTicket(_0x2fea4f,_0x30db52,_0x122e76,_0x5d60d9,_0x46b3fb);})[_0x98b2('0x17')](function(_0x381800){if(_0x381800){logger['info'](_0x98b2('0x60'),_0x381800['id']);}})[_0x98b2('0x5b')](function(_0x31ea44){logger[_0x98b2('0x59')]('['+_0x46b3fb[_0x98b2('0x66')]['toUpperCase']()+']'+_0x98b2('0x67'),util['inspect'](_0x31ea44,{'showHidden':!![],'depth':null}));});};