Built motion from commit (unavailable).|2.5.14
[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 _0x055c=['content','idField','custom_fields','push','variableName','customVariable','Variable','name','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','/api/v2','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','trigger:browser:url','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','format','%s/tickets.json','remoteUri','POST','Tags','Subjects','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','length','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','username','token','%s/token:%s','Basic\x20%s','toString','base64','[HTTP]','defaults','GET','forEach','type','string','nameField','customField','toLowerCase'];(function(_0x2afb44,_0x249a57){var _0x15ccc2=function(_0x180748){while(--_0x180748){_0x2afb44['push'](_0x2afb44['shift']());}};_0x15ccc2(++_0x249a57);}(_0x055c,0x1ee));var _0xc055=function(_0x25a0b9,_0x86e28f){_0x25a0b9=_0x25a0b9-0x0;var _0x30b9ab=_0x055c[_0x25a0b9];return _0x30b9ab;};'use strict';var _=require('lodash');var rp=require(_0xc055('0x0'));var md5=require(_0xc055('0x1'));var util=require(_0xc055('0x2'));var Redis=require(_0xc055('0x3'));var intUtil=require('./util');var config=require(_0xc055('0x4'));var logger=require(_0xc055('0x5'))(_0xc055('0x6'));config[_0xc055('0x7')]=_['defaults'](config[_0xc055('0x7')],{'host':_0xc055('0x8'),'port':0x18eb});var io=require(_0xc055('0x9'))(new Redis(config['redis']));function emit(_0xe8d9c1,_0x2b7eb3,_0xf809af){io['to'](_0xe8d9c1)[_0xc055('0xa')](_0x2b7eb3,_0xf809af);}var headers={'Content-Type':_0xc055('0xb'),'Accept':_0xc055('0xb')};function getTicket(_0x80236e,_0x4ba522,_0x4a11c7,_0x3ff5a4,_0x5c2d4a){logger[_0xc055('0xc')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xc055('0xd')](_0xc055('0xe'),_0x80236e[_0xc055('0xf')]),'method':_0xc055('0x10'),'body':{'ticket':_['merge']({'requester_id':_0x4a11c7['id'],'submitter_id':_0x4ba522?_0x4ba522['id']:undefined,'assignee_id':_0x4ba522?_0x4ba522['id']:undefined,'tags':getTags(_0x3ff5a4[_0xc055('0x11')],'name'),'subject':intUtil['getString'](_0x3ff5a4[_0xc055('0x12')],_0x5c2d4a,'\x20'),'description':intUtil[_0xc055('0x13')](_0x3ff5a4[_0xc055('0x14')],_0x5c2d4a,'\x0a'),'comment':{'public':![],'body':intUtil[_0xc055('0x13')](_0x3ff5a4[_0xc055('0x14')],_0x5c2d4a,'\x0a')}},getCustomFields(_0x3ff5a4[_0xc055('0x15')],_0x5c2d4a))}})[_0xc055('0x16')](function(_0x297ba5){logger[_0xc055('0xc')](_0xc055('0x17'));return _0x297ba5[_0xc055('0x18')];});}function getUser(_0x2920fd,_0x3ff256){if(intUtil[_0xc055('0x19')](_0x3ff256)){logger[_0xc055('0xc')]('Getting\x20agent\x20with\x20email',_0x3ff256);return request({'uri':util[_0xc055('0xd')](_0xc055('0x1a'),_0x2920fd[_0xc055('0xf')]),'qs':{'query':util['format'](_0xc055('0x1b'),_0x3ff256)}})[_0xc055('0x16')](function(_0x557e52){if(_0x557e52[_0xc055('0x1c')]){logger[_0xc055('0xc')](_0xc055('0x1d'));return _[_0xc055('0x1e')](_0x557e52[_0xc055('0x1f')],{'email':_0x3ff256,'role':'agent'});}else{logger[_0xc055('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xc055('0xd')]('%s/users/me.json',_0x2920fd['remoteUri'])})['then'](function(_0x57838e){logger[_0xc055('0xc')](_0xc055('0x20'));return _0x57838e[_0xc055('0x21')];});}});}else{logger[_0xc055('0xc')](_0xc055('0x22'));return request({'uri':util[_0xc055('0xd')](_0xc055('0x23'),_0x2920fd[_0xc055('0xf')])})[_0xc055('0x16')](function(_0x599cfa){logger['info']('Admin\x20account\x20selected.');return _0x599cfa[_0xc055('0x21')];});}}function getEndUser(_0x2d6679,_0xdec75b,_0x31b2bb){logger[_0xc055('0xc')]('Searching\x20enduser\x20with\x20phone',_0x31b2bb);return request({'uri':util[_0xc055('0xd')](_0xc055('0x1a'),_0x2d6679['remoteUri']),'qs':{'query':util[_0xc055('0xd')]('type:user\x20role:end-user\x20phone:%s',_0x31b2bb)}})[_0xc055('0x16')](function(_0x3e56ba){var _0x5c77c6;if(_0x3e56ba[_0xc055('0x1f')][_0xc055('0x24')]){_0x3e56ba[_0xc055('0x1f')]=_[_0xc055('0x25')](_0x3e56ba['results'],{'suspended':![],'role':_0xc055('0x26')});if(_0x3e56ba['results'][_0xc055('0x24')]){_0x5c77c6=_[_0xc055('0x27')](_0x3e56ba[_0xc055('0x1f')]);}}if(_0x5c77c6){logger[_0xc055('0xc')]('Enduser\x20found!');return _0x5c77c6;}else{logger[_0xc055('0xc')](_0xc055('0x28'));return request({'uri':util['format'](_0xc055('0x29'),_0x2d6679[_0xc055('0xf')]),'method':_0xc055('0x10'),'body':{'user':{'role':_0xc055('0x26'),'name':util[_0xc055('0xd')](_0xc055('0x2a'),_0xdec75b||_0x31b2bb),'phone':_0x31b2bb}}})[_0xc055('0x16')](function(_0x874047){logger['info'](_0xc055('0x2b'));return _0x874047[_0xc055('0x21')];});}});}function getAuth(_0x14ab71){var _0x198ef3;if(_0x14ab71[_0xc055('0x2c')]===_0xc055('0x2d')){_0x198ef3=util['format']('%s:%s',_0x14ab71[_0xc055('0x2e')],_0x14ab71[_0xc055('0x2d')]);}else if(_0x14ab71[_0xc055('0x2c')]===_0xc055('0x2f')){_0x198ef3=util['format'](_0xc055('0x30'),_0x14ab71[_0xc055('0x2e')],_0x14ab71[_0xc055('0x2f')]);}return util[_0xc055('0xd')](_0xc055('0x31'),new Buffer(_0x198ef3)[_0xc055('0x32')](_0xc055('0x33')));}function request(_0x1514b3){logger['debug'](_0xc055('0x34'),JSON['stringify'](_0x1514b3));return rp(_[_0xc055('0x35')](_0x1514b3,{'method':_0xc055('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x40a84e,_0x38a51f){var _0x539435=[];if(_0x40a84e&&_0x40a84e[_0xc055('0x24')]>0x0){_0x539435=_['map'](_0x40a84e,_0x38a51f);}return _0x539435;}function getCustomFields(_0x15852e,_0x206759){var _0x375a85=[];var _0x436705={'custom_fields':[]};if(_0x15852e[_0xc055('0x24')]>0x0){_[_0xc055('0x37')](_0x15852e,function(_0x335848){if(_0x335848[_0xc055('0x38')]===_0xc055('0x39')&&_0x335848[_0xc055('0x3a')]&&!_0x335848[_0xc055('0x3b')]){_0x436705[_0x335848['nameField'][_0xc055('0x3c')]()]=_0x335848[_0xc055('0x3d')][_0xc055('0x32')]();}else if(_0x335848[_0xc055('0x38')]==='string'&&_0x335848[_0xc055('0x3e')]&&_0x335848[_0xc055('0x3b')]){_0x436705[_0xc055('0x3f')]['push']({'id':_0x335848[_0xc055('0x3e')],'value':_0x335848['content']['toString']()});}else if(_0x335848[_0xc055('0x38')]==='variable'&&_0x335848['variableName']&&_0x335848[_0xc055('0x3e')]&&_0x335848['customField']){_0x206759[_0x335848['variableName']]&&_0x436705[_0xc055('0x3f')][_0xc055('0x40')]({'id':_0x335848[_0xc055('0x3e')],'value':_0x206759[_0x335848[_0xc055('0x41')]]['toString']()});}else if(_0x335848[_0xc055('0x38')]===_0xc055('0x42')&&_0x335848[_0xc055('0x43')]&&_0x335848[_0xc055('0x43')][_0xc055('0x44')]&&_0x335848['idField']&&_0x335848[_0xc055('0x3b')]){_0x206759[_0x335848[_0xc055('0x43')][_0xc055('0x44')][_0xc055('0x3c')]()]&&_0x436705[_0xc055('0x3f')][_0xc055('0x40')]({'id':_0x335848['idField'],'value':_0x206759[_0x335848['Variable']['name'][_0xc055('0x3c')]()][_0xc055('0x32')]()});}});}return _0x436705;}exports[_0xc055('0x45')]=function(_0x31dc1e,_0x3b9cb0,_0x53fd55,_0x46cde7,_0x4e0b0c,_0x3de08b){var _0x42379e,_0x1817a4;_0x3de08b[_0xc055('0xf')]=intUtil['stripTrailingSlash'](_0x3de08b[_0xc055('0xf')]);_0x3de08b[_0xc055('0x46')]=intUtil[_0xc055('0x47')](_0x3de08b[_0xc055('0x46')]);if(_0x4e0b0c&&_0x4e0b0c[_0xc055('0x48')]){logger[_0xc055('0xc')](_0xc055('0x49'),_0xc055('0x4a'));_0x3b9cb0[_0xc055('0x4b')]=util[_0xc055('0xd')](_0xc055('0x4c'),_0x3de08b[_0xc055('0x46')],_0x3b9cb0['uniqueid'],md5(_0x3b9cb0[_0xc055('0x4d')]));}else{_0x3b9cb0['recordingURL']='';}headers[_0xc055('0x4e')]=getAuth(_0x3de08b);return getUser(_0x3de08b,_0x46cde7[_0xc055('0x4f')])[_0xc055('0x16')](function(_0x17f7c1){_0x42379e=_0x17f7c1;logger[_0xc055('0xc')](_0xc055('0x50'),_0x42379e['id']);return getEndUser(_0x3de08b,_0x3b9cb0[_0xc055('0x51')],_0x3b9cb0[_0xc055('0x52')]);})['then'](function(_0x87f471){_0x1817a4=_0x87f471;logger['info'](_0xc055('0x53'),_0x1817a4['id']);return getTicket(_0x3de08b,_0x42379e,_0x1817a4,_0x53fd55,_0x3b9cb0);})[_0xc055('0x16')](function(_0x3688f4){if(_0x3688f4){logger[_0xc055('0xc')](_0xc055('0x54'),_0x3688f4['id']);switch(_0x3de08b['type']){case _0xc055('0x55'):logger['info'](_0xc055('0x49'),_0xc055('0x56'));return request({'uri':util[_0xc055('0xd')](_0xc055('0x57'),_0x3de08b[_0xc055('0xf')],_0x42379e['id'],_0x3688f4['id']),'method':_0xc055('0x10')});case _0xc055('0x58'):logger[_0xc055('0xc')](_0xc055('0x49'),_0xc055('0x59'));emit(util[_0xc055('0xd')](_0xc055('0x5a'),_0x46cde7[_0xc055('0x44')]),'trigger:browser:url',{'uri':util['format'](_0xc055('0x5b'),_0x3de08b[_0xc055('0xf')][_0xc055('0x5c')](_0xc055('0x5d'),''),_0x3688f4['id'])});break;default:logger[_0xc055('0x5e')](_0xc055('0x49'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xc055('0x5f')](function(_0x851750){logger[_0xc055('0x5e')](_0xc055('0x60'),util['inspect'](_0x851750,{'showHidden':!![],'depth':null}));});};exports[_0xc055('0x61')]=function(_0x57ff0c,_0x1c71fe,_0x229063,_0x1bf858,_0x1ef4d9,_0x3b18d3,_0xc39f84){var _0x593911,_0x5073ca;_0x3b18d3['remoteUri']=intUtil[_0xc055('0x47')](_0x3b18d3[_0xc055('0xf')]);_0x3b18d3[_0xc055('0x46')]=intUtil['stripTrailingSlash'](_0x3b18d3[_0xc055('0x46')]);if(_0xc39f84&&_0xc39f84[_0xc055('0x62')]&&_0xc39f84[_0xc055('0x62')]!==_0xc055('0x63')){logger['info'](_0xc055('0x64'),'Recording\x20is\x20enabled!');_0x1c71fe[_0xc055('0x4b')]=util[_0xc055('0xd')](_0xc055('0x4c'),_0x3b18d3[_0xc055('0x46')],_0x1c71fe[_0xc055('0x4d')],md5(_0x1c71fe[_0xc055('0x4d')]));}headers[_0xc055('0x4e')]=getAuth(_0x3b18d3);return getUser(_0x3b18d3,_0x1bf858[_0xc055('0x4f')])[_0xc055('0x16')](function(_0x1d53f0){_0x593911=_0x1d53f0;logger[_0xc055('0xc')](_0xc055('0x50'),_0x593911['id']);return getEndUser(_0x3b18d3,_0x1c71fe[_0xc055('0x65')],_0x1c71fe[_0xc055('0x66')]);})['then'](function(_0x6a402f){_0x5073ca=_0x6a402f;logger[_0xc055('0xc')](_0xc055('0x53'),_0x5073ca['id']);return getTicket(_0x3b18d3,_0x593911,_0x5073ca,_0x229063,_0x1c71fe);})['then'](function(_0x1fc116){if(_0x1fc116){logger[_0xc055('0xc')](_0xc055('0x54'),_0x1fc116['id']);switch(_0x3b18d3[_0xc055('0x38')]){case _0xc055('0x55'):logger['info']('[OUTBOUND]',_0xc055('0x56'));return request({'uri':util['format'](_0xc055('0x57'),_0x3b18d3['remoteUri'],_0x593911['id'],_0x1fc116['id']),'method':_0xc055('0x10')});case _0xc055('0x58'):logger[_0xc055('0xc')](_0xc055('0x64'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc055('0xd')]('user:%s',_0x1bf858[_0xc055('0x44')]),_0xc055('0x67'),{'uri':util[_0xc055('0xd')](_0xc055('0x5b'),_0x3b18d3[_0xc055('0xf')]['replace'](_0xc055('0x5d'),''),_0x1fc116['id'])});break;default:logger[_0xc055('0x5e')](_0xc055('0x64'),_0xc055('0x68'));}}})[_0xc055('0x5f')](function(_0x11577d){logger[_0xc055('0x5e')](_0xc055('0x69'),util[_0xc055('0x6a')](_0x11577d,{'showHidden':!![],'depth':null}));});};exports[_0xc055('0x6b')]=function(_0x241f92,_0x10642e,_0x31f815,_0x478846,_0x45cfbc,_0x50922d){var _0x50a273,_0x3b4d3b;_0x50922d['remoteUri']=intUtil['stripTrailingSlash'](_0x50922d[_0xc055('0xf')]);_0x50922d['serverUrl']=intUtil[_0xc055('0x47')](_0x50922d[_0xc055('0x46')]);if(_0x45cfbc&&_0x45cfbc[_0xc055('0x48')]){logger[_0xc055('0xc')]('['+_0x10642e[_0xc055('0x6c')]['toUpperCase']()+']',_0xc055('0x4a'));_0x10642e['recordingURL']=util['format'](_0xc055('0x4c'),_0x50922d[_0xc055('0x46')],_0x10642e[_0xc055('0x4d')],md5(_0x10642e['uniqueid']));}else{_0x10642e[_0xc055('0x4b')]='';}headers[_0xc055('0x4e')]=getAuth(_0x50922d);return getUser(_0x50922d)['then'](function(_0x5c39a0){_0x50a273=_0x5c39a0;logger['info']('The\x20User\x20ID\x20is:',_0x50a273['id']);return getEndUser(_0x50922d,_0x10642e[_0xc055('0x51')],_0x10642e[_0xc055('0x52')]);})['then'](function(_0x25beda){_0x3b4d3b=_0x25beda;logger[_0xc055('0xc')](_0xc055('0x53'),_0x3b4d3b['id']);return getTicket(_0x50922d,_0x50a273,_0x3b4d3b,_0x31f815,_0x10642e);})[_0xc055('0x16')](function(_0x246194){if(_0x246194){logger['info'](_0xc055('0x54'),_0x246194['id']);}})[_0xc055('0x5f')](function(_0x5731c3){logger[_0xc055('0x5e')]('['+_0x10642e[_0xc055('0x6c')][_0xc055('0x6d')]()+']'+_0xc055('0x6e'),util[_0xc055('0x6a')](_0x5731c3,{'showHidden':!![],'depth':null}));});};