Built motion from commit (unavailable).|2.5.4
[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 _0x3e5c=['variableName','idField','customVariable','Variable','toLowerCase','custom_fields','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','[QUEUE]','%s/channels/voice/agents/%d/tickets/%d/display.json','user:%s','trigger:browser:url','%s/agent/tickets/%s','Zendesk\x20account\x20type\x20not\x20recognized','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','destcalleridnum','The\x20Ticket\x20ID\x20is:','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','unmanaged','lastevent','toUpperCase','recordingURL','calleridname','\x20Error\x20running\x20Zendesk\x20integration','inspect','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','POST','merge','Tags','name','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','%s/users/me.json','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','username','authType','%s/token:%s','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','length','map','forEach','type','string','nameField','customField','push','content','variable'];(function(_0x33d4a5,_0x514a52){var _0x5a5e9d=function(_0x23bcc1){while(--_0x23bcc1){_0x33d4a5['push'](_0x33d4a5['shift']());}};_0x5a5e9d(++_0x514a52);}(_0x3e5c,0x9a));var _0xc3e5=function(_0xa517d,_0x3a90cc){_0xa517d=_0xa517d-0x0;var _0x2c6f44=_0x3e5c[_0xa517d];return _0x2c6f44;};'use strict';var _=require(_0xc3e5('0x0'));var rp=require(_0xc3e5('0x1'));var md5=require(_0xc3e5('0x2'));var util=require(_0xc3e5('0x3'));var Redis=require('ioredis');var intUtil=require(_0xc3e5('0x4'));var config=require(_0xc3e5('0x5'));var logger=require(_0xc3e5('0x6'))(_0xc3e5('0x7'));config[_0xc3e5('0x8')]=_[_0xc3e5('0x9')](config['redis'],{'host':_0xc3e5('0xa'),'port':0x18eb});var io=require(_0xc3e5('0xb'))(new Redis(config[_0xc3e5('0x8')]));function emit(_0xcbbec0,_0x2d580e,_0x4864a2){io['to'](_0xcbbec0)[_0xc3e5('0xc')](_0x2d580e,_0x4864a2);}var headers={'Content-Type':_0xc3e5('0xd'),'Accept':_0xc3e5('0xd')};function getTicket(_0x19813b,_0x448454,_0x644286,_0xd1ef16,_0x55bece){logger[_0xc3e5('0xe')](_0xc3e5('0xf'));return request({'uri':util[_0xc3e5('0x10')](_0xc3e5('0x11'),_0x19813b['remoteUri']),'method':_0xc3e5('0x12'),'body':{'ticket':_[_0xc3e5('0x13')]({'requester_id':_0x644286['id'],'submitter_id':_0x448454?_0x448454['id']:undefined,'assignee_id':_0x448454?_0x448454['id']:undefined,'tags':getTags(_0xd1ef16[_0xc3e5('0x14')],_0xc3e5('0x15')),'subject':intUtil[_0xc3e5('0x16')](_0xd1ef16[_0xc3e5('0x17')],_0x55bece,'\x20'),'description':intUtil['getString'](_0xd1ef16['Descriptions'],_0x55bece,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0xd1ef16[_0xc3e5('0x18')],_0x55bece,'\x0a')}},getCustomFields(_0xd1ef16['Fields'],_0x55bece))}})[_0xc3e5('0x19')](function(_0x3fb3ab){logger['info'](_0xc3e5('0x1a'));return _0x3fb3ab[_0xc3e5('0x1b')];});}function getUser(_0x2cc476,_0x1829f9){if(intUtil[_0xc3e5('0x1c')](_0x1829f9)){logger['info'](_0xc3e5('0x1d'),_0x1829f9);return request({'uri':util[_0xc3e5('0x10')](_0xc3e5('0x1e'),_0x2cc476[_0xc3e5('0x1f')]),'qs':{'query':util[_0xc3e5('0x10')](_0xc3e5('0x20'),_0x1829f9)}})['then'](function(_0x13d709){if(_0x13d709[_0xc3e5('0x21')]){logger['info'](_0xc3e5('0x22'));return _['find'](_0x13d709[_0xc3e5('0x23')],{'email':_0x1829f9,'role':_0xc3e5('0x24')});}else{logger[_0xc3e5('0xe')](_0xc3e5('0x25'));return request({'uri':util[_0xc3e5('0x10')]('%s/users/me.json',_0x2cc476[_0xc3e5('0x1f')])})[_0xc3e5('0x19')](function(_0x2d8c6f){logger[_0xc3e5('0xe')](_0xc3e5('0x26'));return _0x2d8c6f[_0xc3e5('0x27')];});}});}else{logger[_0xc3e5('0xe')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xc3e5('0x10')](_0xc3e5('0x28'),_0x2cc476[_0xc3e5('0x1f')])})[_0xc3e5('0x19')](function(_0x29c158){logger[_0xc3e5('0xe')](_0xc3e5('0x26'));return _0x29c158[_0xc3e5('0x27')];});}}function getEndUser(_0x564748,_0x25d3a3,_0x4c33d9){logger['info'](_0xc3e5('0x29'),_0x4c33d9);return request({'uri':util[_0xc3e5('0x10')](_0xc3e5('0x1e'),_0x564748['remoteUri']),'qs':{'query':util[_0xc3e5('0x10')](_0xc3e5('0x2a'),_0x4c33d9)}})[_0xc3e5('0x19')](function(_0x3ad580){var _0x591262;if(_0x3ad580[_0xc3e5('0x23')]['length']){_0x3ad580[_0xc3e5('0x23')]=_[_0xc3e5('0x2b')](_0x3ad580[_0xc3e5('0x23')],{'suspended':![],'role':'end-user'});if(_0x3ad580['results']['length']){_0x591262=_[_0xc3e5('0x2c')](_0x3ad580[_0xc3e5('0x23')]);}}if(_0x591262){logger[_0xc3e5('0xe')](_0xc3e5('0x2d'));return _0x591262;}else{logger[_0xc3e5('0xe')](_0xc3e5('0x2e'));return request({'uri':util['format'](_0xc3e5('0x2f'),_0x564748[_0xc3e5('0x1f')]),'method':_0xc3e5('0x12'),'body':{'user':{'role':_0xc3e5('0x30'),'name':util[_0xc3e5('0x10')](_0xc3e5('0x31'),_0x25d3a3||_0x4c33d9),'phone':_0x4c33d9}}})[_0xc3e5('0x19')](function(_0x133a46){logger[_0xc3e5('0xe')](_0xc3e5('0x32'));return _0x133a46[_0xc3e5('0x27')];});}});}function getAuth(_0x5d4297){var _0x3d7b87;if(_0x5d4297['authType']===_0xc3e5('0x33')){_0x3d7b87=util[_0xc3e5('0x10')](_0xc3e5('0x34'),_0x5d4297[_0xc3e5('0x35')],_0x5d4297['password']);}else if(_0x5d4297[_0xc3e5('0x36')]==='token'){_0x3d7b87=util['format'](_0xc3e5('0x37'),_0x5d4297['username'],_0x5d4297[_0xc3e5('0x38')]);}return util[_0xc3e5('0x10')](_0xc3e5('0x39'),new Buffer(_0x3d7b87)[_0xc3e5('0x3a')](_0xc3e5('0x3b')));}function request(_0x554b57){logger[_0xc3e5('0x3c')](_0xc3e5('0x3d'),JSON[_0xc3e5('0x3e')](_0x554b57));return rp(_[_0xc3e5('0x9')](_0x554b57,{'method':_0xc3e5('0x3f'),'headers':headers,'json':!![]}));}function getTags(_0x57a919,_0x3ab3be){var _0x484e21=[];if(_0x57a919&&_0x57a919[_0xc3e5('0x40')]>0x0){_0x484e21=_[_0xc3e5('0x41')](_0x57a919,_0x3ab3be);}return _0x484e21;}function getCustomFields(_0x4c9997,_0x30538f){var _0x565d93=[];var _0xd2b224={'custom_fields':[]};if(_0x4c9997[_0xc3e5('0x40')]>0x0){_[_0xc3e5('0x42')](_0x4c9997,function(_0x4a2c6b){if(_0x4a2c6b[_0xc3e5('0x43')]===_0xc3e5('0x44')&&_0x4a2c6b[_0xc3e5('0x45')]&&!_0x4a2c6b[_0xc3e5('0x46')]){_0xd2b224[_0x4a2c6b[_0xc3e5('0x45')]['toLowerCase']()]=_0x4a2c6b['content']['toString']();}else if(_0x4a2c6b[_0xc3e5('0x43')]===_0xc3e5('0x44')&&_0x4a2c6b['idField']&&_0x4a2c6b[_0xc3e5('0x46')]){_0xd2b224['custom_fields'][_0xc3e5('0x47')]({'id':_0x4a2c6b['idField'],'value':_0x4a2c6b[_0xc3e5('0x48')]['toString']()});}else if(_0x4a2c6b[_0xc3e5('0x43')]===_0xc3e5('0x49')&&_0x4a2c6b[_0xc3e5('0x4a')]&&_0x4a2c6b[_0xc3e5('0x4b')]&&_0x4a2c6b[_0xc3e5('0x46')]){_0x30538f[_0x4a2c6b[_0xc3e5('0x4a')]]&&_0xd2b224['custom_fields']['push']({'id':_0x4a2c6b[_0xc3e5('0x4b')],'value':_0x30538f[_0x4a2c6b['variableName']][_0xc3e5('0x3a')]()});}else if(_0x4a2c6b[_0xc3e5('0x43')]===_0xc3e5('0x4c')&&_0x4a2c6b[_0xc3e5('0x4d')]&&_0x4a2c6b[_0xc3e5('0x4d')][_0xc3e5('0x15')]&&_0x4a2c6b['idField']&&_0x4a2c6b[_0xc3e5('0x46')]){_0x30538f[_0x4a2c6b[_0xc3e5('0x4d')][_0xc3e5('0x15')][_0xc3e5('0x4e')]()]&&_0xd2b224[_0xc3e5('0x4f')][_0xc3e5('0x47')]({'id':_0x4a2c6b[_0xc3e5('0x4b')],'value':_0x30538f[_0x4a2c6b[_0xc3e5('0x4d')][_0xc3e5('0x15')][_0xc3e5('0x4e')]()]['toString']()});}});}return _0xd2b224;}exports['queue']=function(_0x5b5569,_0x3c7119,_0x5785e0,_0x2ca8cb,_0x48661e,_0x31587d){var _0x3b24c4,_0x49d5d9;_0x31587d[_0xc3e5('0x1f')]=intUtil[_0xc3e5('0x50')](_0x31587d[_0xc3e5('0x1f')]);_0x31587d[_0xc3e5('0x51')]=intUtil['stripTrailingSlash'](_0x31587d['serverUrl']);if(_0x48661e&&_0x48661e[_0xc3e5('0x52')]){logger[_0xc3e5('0xe')]('[QUEUE]',_0xc3e5('0x53'));_0x3c7119['recordingURL']=util[_0xc3e5('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x31587d[_0xc3e5('0x51')],_0x3c7119['uniqueid'],md5(_0x3c7119['uniqueid']));}else{_0x3c7119['recordingURL']='';}headers[_0xc3e5('0x54')]=getAuth(_0x31587d);return getUser(_0x31587d,_0x2ca8cb[_0xc3e5('0x55')])[_0xc3e5('0x19')](function(_0x5adc21){_0x3b24c4=_0x5adc21;logger['info'](_0xc3e5('0x56'),_0x3b24c4['id']);return getEndUser(_0x31587d,_0x3c7119['calleridname'],_0x3c7119[_0xc3e5('0x57')]);})[_0xc3e5('0x19')](function(_0x364297){_0x49d5d9=_0x364297;logger[_0xc3e5('0xe')](_0xc3e5('0x58'),_0x49d5d9['id']);return getTicket(_0x31587d,_0x3b24c4,_0x49d5d9,_0x5785e0,_0x3c7119);})[_0xc3e5('0x19')](function(_0x5cd31c){if(_0x5cd31c){logger[_0xc3e5('0xe')]('The\x20Ticket\x20ID\x20is:',_0x5cd31c['id']);switch(_0x31587d['type']){case _0xc3e5('0x59'):logger['info'](_0xc3e5('0x5a'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format'](_0xc3e5('0x5b'),_0x31587d[_0xc3e5('0x1f')],_0x3b24c4['id'],_0x5cd31c['id']),'method':'POST'});case'newTab':logger[_0xc3e5('0xe')](_0xc3e5('0x5a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc3e5('0x10')](_0xc3e5('0x5c'),_0x2ca8cb[_0xc3e5('0x15')]),_0xc3e5('0x5d'),{'uri':util[_0xc3e5('0x10')](_0xc3e5('0x5e'),_0x31587d[_0xc3e5('0x1f')],_0x5cd31c['id'])});break;default:logger['error'](_0xc3e5('0x5a'),_0xc3e5('0x5f'));}}})['catch'](function(_0x4b33e1){logger[_0xc3e5('0x60')](_0xc3e5('0x61'),util['inspect'](_0x4b33e1,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x566ed0,_0x4ada0d,_0x44152a,_0x232e57,_0x474891,_0x694a5d,_0x1cb207){var _0x4bb735,_0x14ad81;_0x694a5d[_0xc3e5('0x1f')]=intUtil[_0xc3e5('0x50')](_0x694a5d['remoteUri']);_0x694a5d[_0xc3e5('0x51')]=intUtil[_0xc3e5('0x50')](_0x694a5d[_0xc3e5('0x51')]);if(_0x1cb207&&_0x1cb207[_0xc3e5('0x62')]&&_0x1cb207[_0xc3e5('0x62')]!=='none'){logger['info'](_0xc3e5('0x63'),_0xc3e5('0x53'));_0x4ada0d['recordingURL']=util[_0xc3e5('0x10')](_0xc3e5('0x64'),_0x694a5d['serverUrl'],_0x4ada0d[_0xc3e5('0x65')],md5(_0x4ada0d[_0xc3e5('0x65')]));}headers[_0xc3e5('0x54')]=getAuth(_0x694a5d);return getUser(_0x694a5d,_0x232e57[_0xc3e5('0x55')])[_0xc3e5('0x19')](function(_0x3364d3){_0x4bb735=_0x3364d3;logger[_0xc3e5('0xe')](_0xc3e5('0x56'),_0x4bb735['id']);return getEndUser(_0x694a5d,_0x4ada0d['destcalleridname'],_0x4ada0d[_0xc3e5('0x66')]);})[_0xc3e5('0x19')](function(_0x3db9ac){_0x14ad81=_0x3db9ac;logger['info']('The\x20Enduser\x20ID\x20is:',_0x14ad81['id']);return getTicket(_0x694a5d,_0x4bb735,_0x14ad81,_0x44152a,_0x4ada0d);})[_0xc3e5('0x19')](function(_0x470b8d){if(_0x470b8d){logger[_0xc3e5('0xe')](_0xc3e5('0x67'),_0x470b8d['id']);switch(_0x694a5d[_0xc3e5('0x43')]){case _0xc3e5('0x59'):logger['info'](_0xc3e5('0x63'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xc3e5('0x10')](_0xc3e5('0x5b'),_0x694a5d[_0xc3e5('0x1f')],_0x4bb735['id'],_0x470b8d['id']),'method':_0xc3e5('0x12')});case _0xc3e5('0x68'):logger[_0xc3e5('0xe')](_0xc3e5('0x63'),_0xc3e5('0x69'));emit(util[_0xc3e5('0x10')](_0xc3e5('0x5c'),_0x232e57['name']),'trigger:browser:url',{'uri':util[_0xc3e5('0x10')](_0xc3e5('0x5e'),_0x694a5d[_0xc3e5('0x1f')],_0x470b8d['id'])});break;default:logger[_0xc3e5('0x60')](_0xc3e5('0x63'),_0xc3e5('0x5f'));}}})[_0xc3e5('0x6a')](function(_0x95db72){logger[_0xc3e5('0x60')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x95db72,{'showHidden':!![],'depth':null}));});};exports[_0xc3e5('0x6b')]=function(_0x1a8d1c,_0x44bf4f,_0x2f480b,_0x58d33a,_0x2d184a,_0x182a6d){var _0x5ae5bf,_0x1cf94c;_0x182a6d[_0xc3e5('0x1f')]=intUtil[_0xc3e5('0x50')](_0x182a6d[_0xc3e5('0x1f')]);_0x182a6d['serverUrl']=intUtil[_0xc3e5('0x50')](_0x182a6d[_0xc3e5('0x51')]);if(_0x2d184a&&_0x2d184a['monitor_format']){logger[_0xc3e5('0xe')]('['+_0x44bf4f[_0xc3e5('0x6c')][_0xc3e5('0x6d')]()+']',_0xc3e5('0x53'));_0x44bf4f[_0xc3e5('0x6e')]=util[_0xc3e5('0x10')](_0xc3e5('0x64'),_0x182a6d[_0xc3e5('0x51')],_0x44bf4f[_0xc3e5('0x65')],md5(_0x44bf4f[_0xc3e5('0x65')]));}else{_0x44bf4f['recordingURL']='';}headers[_0xc3e5('0x54')]=getAuth(_0x182a6d);return getUser(_0x182a6d)[_0xc3e5('0x19')](function(_0x65c755){_0x5ae5bf=_0x65c755;logger[_0xc3e5('0xe')](_0xc3e5('0x56'),_0x5ae5bf['id']);return getEndUser(_0x182a6d,_0x44bf4f[_0xc3e5('0x6f')],_0x44bf4f[_0xc3e5('0x57')]);})['then'](function(_0xe68131){_0x1cf94c=_0xe68131;logger[_0xc3e5('0xe')](_0xc3e5('0x58'),_0x1cf94c['id']);return getTicket(_0x182a6d,_0x5ae5bf,_0x1cf94c,_0x2f480b,_0x44bf4f);})[_0xc3e5('0x19')](function(_0xca1b8a){if(_0xca1b8a){logger[_0xc3e5('0xe')](_0xc3e5('0x67'),_0xca1b8a['id']);}})[_0xc3e5('0x6a')](function(_0x5aa68c){logger['error']('['+_0x44bf4f[_0xc3e5('0x6c')][_0xc3e5('0x6d')]()+']'+_0xc3e5('0x70'),util[_0xc3e5('0x71')](_0x5aa68c,{'showHidden':!![],'depth':null}));});};