cc091c812833d9d85a2d946cb6bd82564d7afe7a
[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 _0x0be0=['Enduser\x20created.','password','%s:%s','username','%s/token:%s','token','toString','base64','debug','[HTTP]','GET','map','forEach','includes','picklist','customField','nameField','toLowerCase','content','custom_fields','idField','type','variable','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','user:%s','%s/agent/tickets/%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','destcalleridname','[OUTBOUND]','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','/api/v2','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','application/json','format','POST','Tags','name','getString','Subjects','Fields','info','Ticket\x20created!','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','then','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s'];(function(_0x248cb3,_0x34e0ba){var _0x100b8f=function(_0x56123c){while(--_0x56123c){_0x248cb3['push'](_0x248cb3['shift']());}};_0x100b8f(++_0x34e0ba);}(_0x0be0,0x1eb));var _0x00be=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x0be0[_0x2b7764];return _0x848dcb;};'use strict';var _=require(_0x00be('0x0'));var rp=require(_0x00be('0x1'));var md5=require(_0x00be('0x2'));var util=require('util');var Redis=require(_0x00be('0x3'));var intUtil=require(_0x00be('0x4'));var config=require(_0x00be('0x5'));var logger=require(_0x00be('0x6'))(_0x00be('0x7'));config['redis']=_[_0x00be('0x8')](config[_0x00be('0x9')],{'host':_0x00be('0xa'),'port':0x18eb});var io=require(_0x00be('0xb'))(new Redis(config['redis']));function emit(_0x2de558,_0x19bf7f,_0x227837){io['to'](_0x2de558)['emit'](_0x19bf7f,_0x227837);}var headers={'Content-Type':_0x00be('0xc'),'Accept':_0x00be('0xc')};function getTicket(_0x7be0b6,_0x448160,_0x7ac76c,_0x2c4985,_0x341bab){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util[_0x00be('0xd')]('%s/tickets.json',_0x7be0b6['remoteUri']),'method':_0x00be('0xe'),'body':{'ticket':_['merge']({'requester_id':_0x7ac76c['id'],'submitter_id':_0x448160?_0x448160['id']:undefined,'assignee_id':_0x448160?_0x448160['id']:undefined,'tags':getTags(_0x2c4985[_0x00be('0xf')],_0x00be('0x10')),'subject':intUtil[_0x00be('0x11')](_0x2c4985[_0x00be('0x12')],_0x341bab,'\x20'),'description':intUtil[_0x00be('0x11')](_0x2c4985['Descriptions'],_0x341bab,'\x0a'),'comment':{'public':![],'body':intUtil[_0x00be('0x11')](_0x2c4985['Descriptions'],_0x341bab,'\x0a')}},getCustomFields(_0x2c4985[_0x00be('0x13')],_0x341bab))}})['then'](function(_0x45df5c){logger[_0x00be('0x14')](_0x00be('0x15'));return _0x45df5c['ticket'];});}function getUser(_0x58ed89,_0x182b3c){if(intUtil['validateEmail'](_0x182b3c)){logger[_0x00be('0x14')](_0x00be('0x16'),_0x182b3c);return request({'uri':util['format'](_0x00be('0x17'),_0x58ed89[_0x00be('0x18')]),'qs':{'query':util[_0x00be('0xd')](_0x00be('0x19'),_0x182b3c)}})['then'](function(_0x465776){if(_0x465776['count']){logger[_0x00be('0x14')](_0x00be('0x1a'));return _[_0x00be('0x1b')](_0x465776[_0x00be('0x1c')],{'email':_0x182b3c,'role':_0x00be('0x1d')});}else{logger['info'](_0x00be('0x1e'));return request({'uri':util[_0x00be('0xd')](_0x00be('0x1f'),_0x58ed89[_0x00be('0x18')])})[_0x00be('0x20')](function(_0x390ef7){logger[_0x00be('0x14')](_0x00be('0x21'));return _0x390ef7[_0x00be('0x22')];});}});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x00be('0xd')]('%s/users/me.json',_0x58ed89['remoteUri'])})['then'](function(_0x144b57){logger[_0x00be('0x14')](_0x00be('0x21'));return _0x144b57[_0x00be('0x22')];});}}function getEndUser(_0x595b89,_0x2d6968,_0x330d27){logger['info'](_0x00be('0x23'),_0x330d27);return request({'uri':util[_0x00be('0xd')](_0x00be('0x17'),_0x595b89['remoteUri']),'qs':{'query':util[_0x00be('0xd')](_0x00be('0x24'),_0x330d27)}})[_0x00be('0x20')](function(_0x2c120e){var _0x4dd7ab;if(_0x2c120e[_0x00be('0x1c')][_0x00be('0x25')]){_0x2c120e['results']=_[_0x00be('0x26')](_0x2c120e[_0x00be('0x1c')],{'suspended':![],'role':_0x00be('0x27')});if(_0x2c120e[_0x00be('0x1c')][_0x00be('0x25')]){_0x4dd7ab=_[_0x00be('0x28')](_0x2c120e[_0x00be('0x1c')]);}}if(_0x4dd7ab){logger[_0x00be('0x14')]('Enduser\x20found!');return _0x4dd7ab;}else{logger[_0x00be('0x14')](_0x00be('0x29'));return request({'uri':util[_0x00be('0xd')](_0x00be('0x2a'),_0x595b89[_0x00be('0x18')]),'method':_0x00be('0xe'),'body':{'user':{'role':'end-user','name':util[_0x00be('0xd')](_0x00be('0x2b'),_0x2d6968||_0x330d27),'phone':_0x330d27}}})[_0x00be('0x20')](function(_0x45452d){logger['info'](_0x00be('0x2c'));return _0x45452d[_0x00be('0x22')];});}});}function getAuth(_0x37d09b){var _0x7a9e54;if(_0x37d09b['authType']===_0x00be('0x2d')){_0x7a9e54=util['format'](_0x00be('0x2e'),_0x37d09b[_0x00be('0x2f')],_0x37d09b[_0x00be('0x2d')]);}else if(_0x37d09b['authType']==='token'){_0x7a9e54=util['format'](_0x00be('0x30'),_0x37d09b[_0x00be('0x2f')],_0x37d09b[_0x00be('0x31')]);}return util[_0x00be('0xd')]('Basic\x20%s',new Buffer(_0x7a9e54)[_0x00be('0x32')](_0x00be('0x33')));}function request(_0x33471f){logger[_0x00be('0x34')](_0x00be('0x35'),JSON['stringify'](_0x33471f));return rp(_[_0x00be('0x8')](_0x33471f,{'method':_0x00be('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x4e5ade,_0x167aeb){var _0x4dfd5b=[];if(_0x4e5ade&&_0x4e5ade[_0x00be('0x25')]>0x0){_0x4dfd5b=_[_0x00be('0x37')](_0x4e5ade,_0x167aeb);}return _0x4dfd5b;}function getCustomFields(_0x49d28d,_0x406a75){var _0x42f70c=[];var _0x3d9eed={'custom_fields':[]};if(_0x49d28d[_0x00be('0x25')]>0x0){_[_0x00be('0x38')](_0x49d28d,function(_0x51f992){if(_[_0x00be('0x39')](['string',_0x00be('0x3a')],_0x51f992['type'])&&_0x51f992['nameField']&&!_0x51f992[_0x00be('0x3b')]){_0x3d9eed[_0x51f992[_0x00be('0x3c')][_0x00be('0x3d')]()]=_0x51f992[_0x00be('0x3e')][_0x00be('0x32')]();}else if(_[_0x00be('0x39')](['string','picklist'],_0x51f992['type'])&&_0x51f992['idField']&&_0x51f992['customField']){_0x3d9eed[_0x00be('0x3f')]['push']({'id':_0x51f992[_0x00be('0x40')],'value':_0x51f992['content'][_0x00be('0x32')]()});}else if(_0x51f992[_0x00be('0x41')]===_0x00be('0x42')&&_0x51f992[_0x00be('0x43')]&&_0x51f992['idField']&&_0x51f992[_0x00be('0x3b')]){_0x406a75[_0x51f992['variableName']]&&_0x3d9eed[_0x00be('0x3f')][_0x00be('0x44')]({'id':_0x51f992['idField'],'value':_0x406a75[_0x51f992[_0x00be('0x43')]][_0x00be('0x32')]()});}else if(_0x51f992[_0x00be('0x41')]===_0x00be('0x45')&&_0x51f992[_0x00be('0x46')]&&_0x51f992['Variable'][_0x00be('0x10')]&&_0x51f992[_0x00be('0x40')]&&_0x51f992[_0x00be('0x3b')]){_0x406a75[_0x51f992['Variable'][_0x00be('0x10')][_0x00be('0x3d')]()]&&_0x3d9eed[_0x00be('0x3f')][_0x00be('0x44')]({'id':_0x51f992[_0x00be('0x40')],'value':_0x406a75[_0x51f992[_0x00be('0x46')][_0x00be('0x10')][_0x00be('0x3d')]()][_0x00be('0x32')]()});}});}return _0x3d9eed;}exports[_0x00be('0x47')]=function(_0x34a4e2,_0x153f3a,_0x2279f8,_0x4e7ca5,_0x3866cf,_0x581a6f){var _0x338b3e,_0x2d1a3d;_0x581a6f[_0x00be('0x18')]=intUtil['stripTrailingSlash'](_0x581a6f[_0x00be('0x18')]);_0x581a6f['serverUrl']=intUtil[_0x00be('0x48')](_0x581a6f[_0x00be('0x49')]);if(_0x3866cf&&_0x3866cf['monitor_format']){logger[_0x00be('0x14')]('[QUEUE]',_0x00be('0x4a'));_0x153f3a[_0x00be('0x4b')]=util[_0x00be('0xd')](_0x00be('0x4c'),_0x581a6f['serverUrl'],_0x153f3a['uniqueid'],md5(_0x153f3a[_0x00be('0x4d')]));}else{_0x153f3a[_0x00be('0x4b')]='';}headers[_0x00be('0x4e')]=getAuth(_0x581a6f);return getUser(_0x581a6f,_0x4e7ca5[_0x00be('0x4f')])[_0x00be('0x20')](function(_0x2d41f7){_0x338b3e=_0x2d41f7;logger['info'](_0x00be('0x50'),_0x338b3e['id']);return getEndUser(_0x581a6f,_0x153f3a['calleridname'],_0x153f3a[_0x00be('0x51')]);})[_0x00be('0x20')](function(_0x38beba){_0x2d1a3d=_0x38beba;logger[_0x00be('0x14')]('The\x20Enduser\x20ID\x20is:',_0x2d1a3d['id']);return getTicket(_0x581a6f,_0x338b3e,_0x2d1a3d,_0x2279f8,_0x153f3a);})[_0x00be('0x20')](function(_0xb176d5){if(_0xb176d5){logger['info'](_0x00be('0x52'),_0xb176d5['id']);switch(_0x581a6f[_0x00be('0x41')]){case _0x00be('0x53'):logger['info'](_0x00be('0x54'),_0x00be('0x55'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x581a6f['remoteUri'],_0x338b3e['id'],_0xb176d5['id']),'method':_0x00be('0xe')});case'newTab':logger[_0x00be('0x14')](_0x00be('0x54'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x00be('0xd')](_0x00be('0x56'),_0x4e7ca5[_0x00be('0x10')]),'trigger:browser:url',{'uri':util['format'](_0x00be('0x57'),_0x581a6f[_0x00be('0x18')][_0x00be('0x58')]('/api/v2',''),_0xb176d5['id'])});break;default:logger[_0x00be('0x59')]('[QUEUE]',_0x00be('0x5a'));}}})['catch'](function(_0x2b65f1){logger[_0x00be('0x59')](_0x00be('0x5b'),util['inspect'](_0x2b65f1,{'showHidden':!![],'depth':null}));});};exports[_0x00be('0x5c')]=function(_0xb1a860,_0x5c97b9,_0x4227f5,_0x205f0a,_0x365d1b,_0x1a9cdd,_0x4d6045){var _0x46a3eb,_0x338449;_0x1a9cdd[_0x00be('0x18')]=intUtil[_0x00be('0x48')](_0x1a9cdd[_0x00be('0x18')]);_0x1a9cdd[_0x00be('0x49')]=intUtil[_0x00be('0x48')](_0x1a9cdd['serverUrl']);if(_0x4d6045&&_0x4d6045[_0x00be('0x5d')]&&_0x4d6045[_0x00be('0x5d')]!==_0x00be('0x5e')){logger[_0x00be('0x14')]('[OUTBOUND]',_0x00be('0x4a'));_0x5c97b9['recordingURL']=util[_0x00be('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1a9cdd['serverUrl'],_0x5c97b9[_0x00be('0x4d')],md5(_0x5c97b9[_0x00be('0x4d')]));}headers['Authorization']=getAuth(_0x1a9cdd);return getUser(_0x1a9cdd,_0x205f0a[_0x00be('0x4f')])[_0x00be('0x20')](function(_0x15e180){_0x46a3eb=_0x15e180;logger[_0x00be('0x14')]('The\x20User\x20ID\x20is:',_0x46a3eb['id']);return getEndUser(_0x1a9cdd,_0x5c97b9[_0x00be('0x5f')],_0x5c97b9['destcalleridnum']);})['then'](function(_0x69b95c){_0x338449=_0x69b95c;logger[_0x00be('0x14')]('The\x20Enduser\x20ID\x20is:',_0x338449['id']);return getTicket(_0x1a9cdd,_0x46a3eb,_0x338449,_0x4227f5,_0x5c97b9);})['then'](function(_0xcc2319){if(_0xcc2319){logger[_0x00be('0x14')](_0x00be('0x52'),_0xcc2319['id']);switch(_0x1a9cdd[_0x00be('0x41')]){case _0x00be('0x53'):logger[_0x00be('0x14')](_0x00be('0x60'),_0x00be('0x55'));return request({'uri':util[_0x00be('0xd')](_0x00be('0x61'),_0x1a9cdd[_0x00be('0x18')],_0x46a3eb['id'],_0xcc2319['id']),'method':_0x00be('0xe')});case'newTab':logger['info'](_0x00be('0x60'),_0x00be('0x62'));emit(util[_0x00be('0xd')](_0x00be('0x56'),_0x205f0a[_0x00be('0x10')]),'trigger:browser:url',{'uri':util['format'](_0x00be('0x57'),_0x1a9cdd[_0x00be('0x18')]['replace'](_0x00be('0x63'),''),_0xcc2319['id'])});break;default:logger[_0x00be('0x59')](_0x00be('0x60'),_0x00be('0x5a'));}}})[_0x00be('0x64')](function(_0x52fc99){logger[_0x00be('0x59')](_0x00be('0x65'),util[_0x00be('0x66')](_0x52fc99,{'showHidden':!![],'depth':null}));});};exports[_0x00be('0x67')]=function(_0x378f2c,_0x3ee276,_0x85be2a,_0x284101,_0xaa8dc2,_0x17680e){var _0x541845,_0x5e75b2;_0x17680e['remoteUri']=intUtil[_0x00be('0x48')](_0x17680e[_0x00be('0x18')]);_0x17680e[_0x00be('0x49')]=intUtil['stripTrailingSlash'](_0x17680e[_0x00be('0x49')]);if(_0xaa8dc2&&_0xaa8dc2['monitor_format']){logger['info']('['+_0x3ee276['lastevent'][_0x00be('0x68')]()+']',_0x00be('0x4a'));_0x3ee276[_0x00be('0x4b')]=util[_0x00be('0xd')](_0x00be('0x4c'),_0x17680e[_0x00be('0x49')],_0x3ee276[_0x00be('0x4d')],md5(_0x3ee276[_0x00be('0x4d')]));}else{_0x3ee276['recordingURL']='';}headers['Authorization']=getAuth(_0x17680e);return getUser(_0x17680e)['then'](function(_0x2bad3e){_0x541845=_0x2bad3e;logger['info']('The\x20User\x20ID\x20is:',_0x541845['id']);return getEndUser(_0x17680e,_0x3ee276[_0x00be('0x69')],_0x3ee276[_0x00be('0x51')]);})['then'](function(_0x1ec835){_0x5e75b2=_0x1ec835;logger['info']('The\x20Enduser\x20ID\x20is:',_0x5e75b2['id']);return getTicket(_0x17680e,_0x541845,_0x5e75b2,_0x85be2a,_0x3ee276);})[_0x00be('0x20')](function(_0x23348b){if(_0x23348b){logger[_0x00be('0x14')](_0x00be('0x52'),_0x23348b['id']);}})[_0x00be('0x64')](function(_0x3fe4e3){logger[_0x00be('0x59')]('['+_0x3ee276['lastevent'][_0x00be('0x68')]()+']'+_0x00be('0x6a'),util[_0x00be('0x66')](_0x3fe4e3,{'showHidden':!![],'depth':null}));});};