Built motion from commit (unavailable).|2.5.2
[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 _0x984b=['name','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','[OUTBOUND]','destcalleridnum','The\x20Ticket\x20ID\x20is:','%s/agent/tickets/%s','error','unmanaged','lastevent','The\x20User\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','util','ioredis','./util','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','Tags','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','toString','debug','stringify','GET','map','forEach','type','string','customField','nameField','toLowerCase','content','idField','custom_fields','variable','variableName','push','customVariable','Variable'];(function(_0x59c7a1,_0x3e489f){var _0x582b7f=function(_0x91d373){while(--_0x91d373){_0x59c7a1['push'](_0x59c7a1['shift']());}};_0x582b7f(++_0x3e489f);}(_0x984b,0xee));var _0xb984=function(_0x4b5bc5,_0x3d2264){_0x4b5bc5=_0x4b5bc5-0x0;var _0x17ad5b=_0x984b[_0x4b5bc5];return _0x17ad5b;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require(_0xb984('0x0'));var Redis=require(_0xb984('0x1'));var intUtil=require(_0xb984('0x2'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xb984('0x3'));config[_0xb984('0x4')]=_['defaults'](config['redis'],{'host':_0xb984('0x5'),'port':0x18eb});var io=require(_0xb984('0x6'))(new Redis(config['redis']));function emit(_0x7405cd,_0x1a00d6,_0x4d72b7){io['to'](_0x7405cd)[_0xb984('0x7')](_0x1a00d6,_0x4d72b7);}var headers={'Content-Type':'application/json','Accept':_0xb984('0x8')};function getTicket(_0x42dfd9,_0x124143,_0x2f4e77,_0xf66bad,_0x382f2b){logger[_0xb984('0x9')](_0xb984('0xa'));return request({'uri':util[_0xb984('0xb')](_0xb984('0xc'),_0x42dfd9[_0xb984('0xd')]),'method':_0xb984('0xe'),'body':{'ticket':_['merge']({'requester_id':_0x2f4e77['id'],'submitter_id':_0x124143?_0x124143['id']:undefined,'assignee_id':_0x124143?_0x124143['id']:undefined,'tags':getTags(_0xf66bad[_0xb984('0xf')],'name'),'subject':intUtil[_0xb984('0x10')](_0xf66bad[_0xb984('0x11')],_0x382f2b,'\x20'),'description':intUtil['getString'](_0xf66bad[_0xb984('0x12')],_0x382f2b,'\x0a'),'comment':{'public':![],'body':intUtil[_0xb984('0x10')](_0xf66bad['Descriptions'],_0x382f2b,'\x0a')}},getCustomFields(_0xf66bad[_0xb984('0x13')],_0x382f2b))}})[_0xb984('0x14')](function(_0x549791){logger[_0xb984('0x9')](_0xb984('0x15'));return _0x549791['ticket'];});}function getUser(_0x6fae41,_0x5cd1aa){if(intUtil[_0xb984('0x16')](_0x5cd1aa)){logger[_0xb984('0x9')](_0xb984('0x17'),_0x5cd1aa);return request({'uri':util[_0xb984('0xb')]('%s/search.json',_0x6fae41[_0xb984('0xd')]),'qs':{'query':util[_0xb984('0xb')](_0xb984('0x18'),_0x5cd1aa)}})[_0xb984('0x14')](function(_0x229a40){if(_0x229a40[_0xb984('0x19')]){logger['info'](_0xb984('0x1a'));return _[_0xb984('0x1b')](_0x229a40[_0xb984('0x1c')],{'email':_0x5cd1aa,'role':_0xb984('0x1d')});}else{logger[_0xb984('0x9')](_0xb984('0x1e'));return request({'uri':util['format'](_0xb984('0x1f'),_0x6fae41[_0xb984('0xd')])})['then'](function(_0x44b570){logger[_0xb984('0x9')](_0xb984('0x20'));return _0x44b570[_0xb984('0x21')];});}});}else{logger[_0xb984('0x9')](_0xb984('0x1e'));return request({'uri':util[_0xb984('0xb')]('%s/users/me.json',_0x6fae41[_0xb984('0xd')])})[_0xb984('0x14')](function(_0x1b6be3){logger['info'](_0xb984('0x20'));return _0x1b6be3[_0xb984('0x21')];});}}function getEndUser(_0x1cb2c2,_0x2d0450,_0x1f7b62){logger[_0xb984('0x9')](_0xb984('0x22'),_0x1f7b62);return request({'uri':util[_0xb984('0xb')]('%s/search.json',_0x1cb2c2[_0xb984('0xd')]),'qs':{'query':util[_0xb984('0xb')](_0xb984('0x23'),_0x1f7b62)}})[_0xb984('0x14')](function(_0x4fb896){var _0xa44895;if(_0x4fb896[_0xb984('0x1c')][_0xb984('0x24')]){_0x4fb896['results']=_[_0xb984('0x25')](_0x4fb896[_0xb984('0x1c')],{'suspended':![],'role':_0xb984('0x26')});if(_0x4fb896[_0xb984('0x1c')]['length']){_0xa44895=_['first'](_0x4fb896['results']);}}if(_0xa44895){logger[_0xb984('0x9')](_0xb984('0x27'));return _0xa44895;}else{logger['info'](_0xb984('0x28'));return request({'uri':util[_0xb984('0xb')](_0xb984('0x29'),_0x1cb2c2[_0xb984('0xd')]),'method':'POST','body':{'user':{'role':'end-user','name':util[_0xb984('0xb')](_0xb984('0x2a'),_0x2d0450||_0x1f7b62),'phone':_0x1f7b62}}})[_0xb984('0x14')](function(_0x135435){logger['info'](_0xb984('0x2b'));return _0x135435[_0xb984('0x21')];});}});}function getAuth(_0x1805e4){var _0x3c4687;if(_0x1805e4[_0xb984('0x2c')]===_0xb984('0x2d')){_0x3c4687=util['format'](_0xb984('0x2e'),_0x1805e4[_0xb984('0x2f')],_0x1805e4[_0xb984('0x2d')]);}else if(_0x1805e4[_0xb984('0x2c')]===_0xb984('0x30')){_0x3c4687=util[_0xb984('0xb')]('%s/token:%s',_0x1805e4[_0xb984('0x2f')],_0x1805e4[_0xb984('0x30')]);}return util['format']('Basic\x20%s',new Buffer(_0x3c4687)[_0xb984('0x31')]('base64'));}function request(_0xad9e0c){logger[_0xb984('0x32')]('[HTTP]',JSON[_0xb984('0x33')](_0xad9e0c));return rp(_['defaults'](_0xad9e0c,{'method':_0xb984('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x5c25a9,_0x19bd91){var _0x557302=[];if(_0x5c25a9&&_0x5c25a9['length']>0x0){_0x557302=_[_0xb984('0x35')](_0x5c25a9,_0x19bd91);}return _0x557302;}function getCustomFields(_0x4b0438,_0x4dac3f){var _0x26b36c=[];var _0x1fd248={'custom_fields':[]};if(_0x4b0438['length']>0x0){_[_0xb984('0x36')](_0x4b0438,function(_0x446f45){if(_0x446f45[_0xb984('0x37')]===_0xb984('0x38')&&_0x446f45['nameField']&&!_0x446f45[_0xb984('0x39')]){_0x1fd248[_0x446f45[_0xb984('0x3a')][_0xb984('0x3b')]()]=_0x446f45[_0xb984('0x3c')][_0xb984('0x31')]();}else if(_0x446f45[_0xb984('0x37')]===_0xb984('0x38')&&_0x446f45[_0xb984('0x3d')]&&_0x446f45[_0xb984('0x39')]){_0x1fd248[_0xb984('0x3e')]['push']({'id':_0x446f45[_0xb984('0x3d')],'value':_0x446f45[_0xb984('0x3c')][_0xb984('0x31')]()});}else if(_0x446f45[_0xb984('0x37')]===_0xb984('0x3f')&&_0x446f45[_0xb984('0x40')]&&_0x446f45[_0xb984('0x3d')]&&_0x446f45[_0xb984('0x39')]){_0x4dac3f[_0x446f45['variableName']]&&_0x1fd248['custom_fields'][_0xb984('0x41')]({'id':_0x446f45['idField'],'value':_0x4dac3f[_0x446f45[_0xb984('0x40')]][_0xb984('0x31')]()});}else if(_0x446f45[_0xb984('0x37')]===_0xb984('0x42')&&_0x446f45['Variable']&&_0x446f45[_0xb984('0x43')][_0xb984('0x44')]&&_0x446f45['idField']&&_0x446f45[_0xb984('0x39')]){_0x4dac3f[_0x446f45[_0xb984('0x43')][_0xb984('0x44')][_0xb984('0x3b')]()]&&_0x1fd248[_0xb984('0x3e')][_0xb984('0x41')]({'id':_0x446f45[_0xb984('0x3d')],'value':_0x4dac3f[_0x446f45['Variable'][_0xb984('0x44')][_0xb984('0x3b')]()]['toString']()});}});}return _0x1fd248;}exports['queue']=function(_0x1ddb47,_0x6396b5,_0x3f1ea9,_0x248800,_0x1acc7a,_0x56a3bf){var _0x664cb1,_0x40666f;_0x56a3bf[_0xb984('0xd')]=intUtil[_0xb984('0x45')](_0x56a3bf[_0xb984('0xd')]);_0x56a3bf[_0xb984('0x46')]=intUtil[_0xb984('0x45')](_0x56a3bf[_0xb984('0x46')]);if(_0x1acc7a&&_0x1acc7a[_0xb984('0x47')]){logger[_0xb984('0x9')]('[QUEUE]',_0xb984('0x48'));_0x6396b5[_0xb984('0x49')]=util['format'](_0xb984('0x4a'),_0x56a3bf[_0xb984('0x46')],_0x6396b5[_0xb984('0x4b')],md5(_0x6396b5[_0xb984('0x4b')]));}else{_0x6396b5[_0xb984('0x49')]='';}headers[_0xb984('0x4c')]=getAuth(_0x56a3bf);return getUser(_0x56a3bf,_0x248800[_0xb984('0x4d')])[_0xb984('0x14')](function(_0x2989f3){_0x664cb1=_0x2989f3;logger[_0xb984('0x9')]('The\x20User\x20ID\x20is:',_0x664cb1['id']);return getEndUser(_0x56a3bf,_0x6396b5[_0xb984('0x4e')],_0x6396b5[_0xb984('0x4f')]);})[_0xb984('0x14')](function(_0x2ae0d8){_0x40666f=_0x2ae0d8;logger[_0xb984('0x9')](_0xb984('0x50'),_0x40666f['id']);return getTicket(_0x56a3bf,_0x664cb1,_0x40666f,_0x3f1ea9,_0x6396b5);})[_0xb984('0x14')](function(_0x445f90){if(_0x445f90){logger[_0xb984('0x9')]('The\x20Ticket\x20ID\x20is:',_0x445f90['id']);switch(_0x56a3bf[_0xb984('0x37')]){case _0xb984('0x51'):logger[_0xb984('0x9')]('[QUEUE]',_0xb984('0x52'));return request({'uri':util[_0xb984('0xb')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x56a3bf[_0xb984('0xd')],_0x664cb1['id'],_0x445f90['id']),'method':'POST'});case _0xb984('0x53'):logger[_0xb984('0x9')]('[QUEUE]',_0xb984('0x54'));emit(util[_0xb984('0xb')](_0xb984('0x55'),_0x248800[_0xb984('0x44')]),_0xb984('0x56'),{'uri':util[_0xb984('0xb')]('%s/agent/tickets/%s',_0x56a3bf[_0xb984('0xd')],_0x445f90['id'])});break;default:logger['error'](_0xb984('0x57'),_0xb984('0x58'));}}})[_0xb984('0x59')](function(_0x5cf038){logger['error'](_0xb984('0x5a'),util[_0xb984('0x5b')](_0x5cf038,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x493a8b,_0x1e8847,_0x30c135,_0x38cca4,_0x3daaa0,_0x404c4a,_0x3369b1){var _0x5b4c3c,_0x502480;_0x404c4a[_0xb984('0xd')]=intUtil[_0xb984('0x45')](_0x404c4a['remoteUri']);_0x404c4a[_0xb984('0x46')]=intUtil[_0xb984('0x45')](_0x404c4a[_0xb984('0x46')]);if(_0x3369b1&&_0x3369b1[_0xb984('0x5c')]&&_0x3369b1['recordingFormat']!=='none'){logger[_0xb984('0x9')](_0xb984('0x5d'),_0xb984('0x48'));_0x1e8847[_0xb984('0x49')]=util[_0xb984('0xb')](_0xb984('0x4a'),_0x404c4a['serverUrl'],_0x1e8847[_0xb984('0x4b')],md5(_0x1e8847[_0xb984('0x4b')]));}headers[_0xb984('0x4c')]=getAuth(_0x404c4a);return getUser(_0x404c4a,_0x38cca4[_0xb984('0x4d')])[_0xb984('0x14')](function(_0xdb7a50){_0x5b4c3c=_0xdb7a50;logger['info']('The\x20User\x20ID\x20is:',_0x5b4c3c['id']);return getEndUser(_0x404c4a,_0x1e8847['destcalleridname'],_0x1e8847[_0xb984('0x5e')]);})[_0xb984('0x14')](function(_0x36ca94){_0x502480=_0x36ca94;logger[_0xb984('0x9')](_0xb984('0x50'),_0x502480['id']);return getTicket(_0x404c4a,_0x5b4c3c,_0x502480,_0x30c135,_0x1e8847);})['then'](function(_0x434bca){if(_0x434bca){logger[_0xb984('0x9')](_0xb984('0x5f'),_0x434bca['id']);switch(_0x404c4a['type']){case _0xb984('0x51'):logger[_0xb984('0x9')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xb984('0xb')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x404c4a['remoteUri'],_0x5b4c3c['id'],_0x434bca['id']),'method':_0xb984('0xe')});case'newTab':logger[_0xb984('0x9')](_0xb984('0x5d'),_0xb984('0x54'));emit(util[_0xb984('0xb')](_0xb984('0x55'),_0x38cca4[_0xb984('0x44')]),_0xb984('0x56'),{'uri':util[_0xb984('0xb')](_0xb984('0x60'),_0x404c4a[_0xb984('0xd')],_0x434bca['id'])});break;default:logger[_0xb984('0x61')](_0xb984('0x5d'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xb984('0x59')](function(_0x5f126e){logger[_0xb984('0x61')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x5f126e,{'showHidden':!![],'depth':null}));});};exports[_0xb984('0x62')]=function(_0x285e1e,_0x74fc95,_0x531c9f,_0x284f41,_0x35132b,_0x323d6b){var _0x3508cb,_0x434c5c;_0x323d6b[_0xb984('0xd')]=intUtil[_0xb984('0x45')](_0x323d6b[_0xb984('0xd')]);_0x323d6b[_0xb984('0x46')]=intUtil[_0xb984('0x45')](_0x323d6b[_0xb984('0x46')]);if(_0x35132b&&_0x35132b[_0xb984('0x47')]){logger[_0xb984('0x9')]('['+_0x74fc95[_0xb984('0x63')]['toUpperCase']()+']',_0xb984('0x48'));_0x74fc95['recordingURL']=util[_0xb984('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x323d6b[_0xb984('0x46')],_0x74fc95[_0xb984('0x4b')],md5(_0x74fc95[_0xb984('0x4b')]));}else{_0x74fc95[_0xb984('0x49')]='';}headers[_0xb984('0x4c')]=getAuth(_0x323d6b);return getUser(_0x323d6b)[_0xb984('0x14')](function(_0x2eb8bf){_0x3508cb=_0x2eb8bf;logger[_0xb984('0x9')](_0xb984('0x64'),_0x3508cb['id']);return getEndUser(_0x323d6b,_0x74fc95[_0xb984('0x4e')],_0x74fc95[_0xb984('0x4f')]);})[_0xb984('0x14')](function(_0x23c3d5){_0x434c5c=_0x23c3d5;logger['info']('The\x20Enduser\x20ID\x20is:',_0x434c5c['id']);return getTicket(_0x323d6b,_0x3508cb,_0x434c5c,_0x531c9f,_0x74fc95);})[_0xb984('0x14')](function(_0x441166){if(_0x441166){logger[_0xb984('0x9')]('The\x20Ticket\x20ID\x20is:',_0x441166['id']);}})[_0xb984('0x59')](function(_0x45a7ff){logger['error']('['+_0x74fc95['lastevent']['toUpperCase']()+']'+_0xb984('0x65'),util['inspect'](_0x45a7ff,{'showHidden':!![],'depth':null}));});};