Built motion from commit 47436d59.|2.6.7
[motion2.git] / server / services / ami / trigger / integration / freshdesk.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 _0x034d=['calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','unmanaged','monitor_format','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','getString','Descriptions','<br>','name','Fields','mapValues','value','%s/api/v2/tickets','POST','then','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','remoteUri','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','string','picklist','type','nameField','customField','toLowerCase','content','includes','custom_fields','variable','variableName','idField','customVariable','Variable','push','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:'];(function(_0x36b666,_0xd70acf){var _0x2a9355=function(_0x5755a1){while(--_0x5755a1){_0x36b666['push'](_0x36b666['shift']());}};_0x2a9355(++_0xd70acf);}(_0x034d,0x133));var _0xd034=function(_0x3cb967,_0x50b948){_0x3cb967=_0x3cb967-0x0;var _0x49be82=_0x034d[_0x3cb967];return _0x49be82;};'use strict';var _=require(_0xd034('0x0'));var rp=require(_0xd034('0x1'));var md5=require(_0xd034('0x2'));var util=require(_0xd034('0x3'));var Redis=require(_0xd034('0x4'));var intUtil=require(_0xd034('0x5'));var config=require(_0xd034('0x6'));var logger=require(_0xd034('0x7'))(_0xd034('0x8'));config[_0xd034('0x9')]=_[_0xd034('0xa')](config[_0xd034('0x9')],{'host':_0xd034('0xb'),'port':0x18eb});var io=require(_0xd034('0xc'))(new Redis(config[_0xd034('0x9')]));var headers={'Content-Type':_0xd034('0xd'),'Accept':_0xd034('0xd')};function emit(_0xa64b86,_0x267d0f,_0x53bfa1){io['to'](_0xa64b86)['emit'](_0x267d0f,_0x53bfa1);}function getTicket(_0x2ba501,_0x3bf106,_0x5e93a4,_0x52de7e,_0x1682a1){logger[_0xd034('0xe')](_0xd034('0xf'));var _0x2be51a=_['merge']({'responder_id':_0x3bf106['id'],'requester_id':_0x5e93a4['id'],'name':util[_0xd034('0x10')](_0xd034('0x11'),_0x1682a1[_0xd034('0x12')]),'phone':_0x1682a1['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xd034('0x13')](_0x52de7e['Subjects'],_0x1682a1,'\x20'),'description':intUtil[_0xd034('0x13')](_0x52de7e[_0xd034('0x14')],_0x1682a1,_0xd034('0x15')),'tags':getTags(_0x52de7e['Tags'],_0xd034('0x16'))},getCustomFields(_0x52de7e[_0xd034('0x17')],_0x1682a1));_0x2be51a['custom_fields']=_[_0xd034('0x18')](_['keyBy'](_0x2be51a['custom_fields'],'id'),_0xd034('0x19'));return request({'uri':util[_0xd034('0x10')](_0xd034('0x1a'),_0x2ba501['remoteUri']),'method':_0xd034('0x1b'),'body':_0x2be51a})[_0xd034('0x1c')](function(_0x283364){logger['info']('Ticket\x20created!');return _0x283364;});}function getUser(_0x13c715,_0x54d7c7){if(intUtil['validateEmail'](_0x54d7c7)){return request({'uri':util[_0xd034('0x10')]('%s/api/v2/agents',_0x13c715['remoteUri']),'qs':{'email':_0x54d7c7}})[_0xd034('0x1c')](function(_0x435a17){if(_0x435a17['length']){logger[_0xd034('0xe')](_0xd034('0x1d'));return _[_0xd034('0x1e')](_0x435a17,function(_0x5cb404){return _0x5cb404[_0xd034('0x1f')]['email']===_0x54d7c7;});}else{logger[_0xd034('0xe')](_0xd034('0x20'));return request({'uri':util[_0xd034('0x10')](_0xd034('0x21'),_0x13c715[_0xd034('0x22')])})[_0xd034('0x1c')](function(_0x6c8047){logger['info'](_0xd034('0x23'));return _0x6c8047;});}});}else{logger[_0xd034('0xe')](_0xd034('0x24'));return request({'uri':util['format'](_0xd034('0x21'),_0x13c715[_0xd034('0x22')])})[_0xd034('0x1c')](function(_0x2bf5dd){logger['info'](_0xd034('0x23'));return _0x2bf5dd;});}}function getEndUser(_0x48118d,_0x1d0a43,_0x54d029){logger[_0xd034('0xe')]('Searching\x20enduser\x20with\x20phone',_0x54d029);return request({'uri':util[_0xd034('0x10')](_0xd034('0x25'),_0x48118d[_0xd034('0x22')]),'qs':{'phone':_0x54d029}})[_0xd034('0x1c')](function(_0x12c1d0){if(_0x12c1d0[_0xd034('0x26')]){logger[_0xd034('0xe')](_0xd034('0x27'));return _[_0xd034('0x1e')](_0x12c1d0,{'phone':_0x54d029});}else{logger[_0xd034('0xe')](_0xd034('0x28'));return request({'uri':util[_0xd034('0x10')](_0xd034('0x25'),_0x48118d['remoteUri']),'method':_0xd034('0x1b'),'body':{'name':_0x1d0a43,'phone':_0x54d029}})['then'](function(_0x30a761){logger[_0xd034('0xe')](_0xd034('0x29'));return _0x30a761;});}});}function getAuth(_0x1c3f5a){return util[_0xd034('0x10')](_0xd034('0x2a'),new Buffer(_0x1c3f5a[_0xd034('0x2b')]+':X')[_0xd034('0x2c')](_0xd034('0x2d')));}function request(_0x5f33f6){logger[_0xd034('0x2e')](_0xd034('0x2f'),JSON[_0xd034('0x30')](_0x5f33f6));return rp(_['defaults'](_0x5f33f6,{'method':_0xd034('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x1a3fa2,_0xf7cf6d){var _0x25f2f5=[];if(_0x1a3fa2&&_0x1a3fa2['length']>0x0){_0x25f2f5=_[_0xd034('0x32')](_0x1a3fa2,_0xf7cf6d);}return _0x25f2f5;}function getCustomFields(_0x25894e,_0x4f4306){var _0x2abf94=[];var _0x866c3a={'custom_fields':[]};if(_0x25894e['length']>0x0){_[_0xd034('0x33')](_0x25894e,function(_0x12c90c){if(_['includes']([_0xd034('0x34'),_0xd034('0x35')],_0x12c90c[_0xd034('0x36')])&&_0x12c90c[_0xd034('0x37')]&&!_0x12c90c[_0xd034('0x38')]){_0x866c3a[_0x12c90c[_0xd034('0x37')][_0xd034('0x39')]()]=_0x12c90c[_0xd034('0x3a')][_0xd034('0x2c')]();}else if(_[_0xd034('0x3b')]([_0xd034('0x34'),_0xd034('0x35')],_0x12c90c[_0xd034('0x36')])&&_0x12c90c['idField']&&_0x12c90c[_0xd034('0x38')]){_0x866c3a[_0xd034('0x3c')]['push']({'id':_0x12c90c['idField'],'value':_0x12c90c[_0xd034('0x3a')][_0xd034('0x2c')]()});}else if(_0x12c90c['type']===_0xd034('0x3d')&&_0x12c90c[_0xd034('0x3e')]&&_0x12c90c['idField']&&_0x12c90c[_0xd034('0x38')]){_0x4f4306[_0x12c90c['variableName']]&&_0x866c3a[_0xd034('0x3c')]['push']({'id':_0x12c90c[_0xd034('0x3f')],'value':_0x4f4306[_0x12c90c[_0xd034('0x3e')]][_0xd034('0x2c')]()});}else if(_0x12c90c[_0xd034('0x36')]===_0xd034('0x40')&&_0x12c90c[_0xd034('0x41')]&&_0x12c90c[_0xd034('0x41')][_0xd034('0x16')]&&_0x12c90c['idField']&&_0x12c90c['customField']){_0x4f4306[_0x12c90c[_0xd034('0x41')][_0xd034('0x16')][_0xd034('0x39')]()]&&_0x866c3a[_0xd034('0x3c')][_0xd034('0x42')]({'id':_0x12c90c[_0xd034('0x3f')],'value':_0x4f4306[_0x12c90c[_0xd034('0x41')][_0xd034('0x16')][_0xd034('0x39')]()][_0xd034('0x2c')]()});}});}return _0x866c3a;}exports[_0xd034('0x43')]=function(_0x4eac3d,_0x1ffbb2,_0x1e26d1,_0x191a72,_0x1d5ac3,_0x1ff193){var _0x3f5f11,_0x44fb7b;_0x1ff193[_0xd034('0x22')]=intUtil[_0xd034('0x44')](_0x1ff193[_0xd034('0x22')]);_0x1ff193[_0xd034('0x45')]=intUtil['stripTrailingSlash'](_0x1ff193[_0xd034('0x45')]);if(_0x1d5ac3&&_0x1d5ac3['monitor_format']){logger[_0xd034('0xe')](_0xd034('0x46'),_0xd034('0x47'));_0x1ffbb2[_0xd034('0x48')]=util[_0xd034('0x10')](_0xd034('0x49'),_0x1ff193[_0xd034('0x45')],_0x1ffbb2[_0xd034('0x4a')],md5(_0x1ffbb2['uniqueid']));}else{_0x1ffbb2['recordingURL']='';}headers['Authorization']=getAuth(_0x1ff193);return getUser(_0x1ff193,_0x191a72[_0xd034('0x4b')])[_0xd034('0x1c')](function(_0xc1e27a){_0x3f5f11=_0xc1e27a;logger[_0xd034('0xe')](_0xd034('0x4c'),_0x3f5f11['id']);return getEndUser(_0x1ff193,_0x1ffbb2[_0xd034('0x12')],_0x1ffbb2[_0xd034('0x4d')]);})['then'](function(_0x3817fe){_0x44fb7b=_0x3817fe;logger[_0xd034('0xe')](_0xd034('0x4e'),_0x44fb7b['id']);return getTicket(_0x1ff193,_0x3f5f11,_0x44fb7b,_0x1e26d1,_0x1ffbb2);})[_0xd034('0x1c')](function(_0x41e9c5){if(_0x41e9c5&&_0x41e9c5['id']){logger['info'](_0xd034('0x4f'));logger[_0xd034('0xe')](_0xd034('0x50'),_0x41e9c5['id']);logger[_0xd034('0xe')](_0xd034('0x46'),_0xd034('0x51'));emit(util[_0xd034('0x10')]('user:%s',_0x191a72['name']),_0xd034('0x52'),{'uri':util['format'](_0xd034('0x53'),_0x1ff193['remoteUri'],_0x41e9c5['id'])});}})[_0xd034('0x54')](function(_0xbec508){logger[_0xd034('0x55')](_0xd034('0x46'),JSON[_0xd034('0x30')](_0xbec508));});};exports[_0xd034('0x56')]=function(_0x467d41,_0x7cebe8,_0x18779c,_0x4c3b7f,_0x17925d,_0x50b310,_0x38d457){var _0x157e8b,_0x4860df;_0x50b310[_0xd034('0x22')]=intUtil[_0xd034('0x44')](_0x50b310[_0xd034('0x22')]);_0x50b310[_0xd034('0x45')]=intUtil[_0xd034('0x44')](_0x50b310[_0xd034('0x45')]);if(_0x38d457&&_0x38d457[_0xd034('0x57')]&&_0x38d457[_0xd034('0x57')]!==_0xd034('0x58')){logger[_0xd034('0xe')](_0xd034('0x59'),_0xd034('0x47'));_0x7cebe8[_0xd034('0x48')]=util['format'](_0xd034('0x49'),_0x50b310[_0xd034('0x45')],_0x7cebe8[_0xd034('0x4a')],md5(_0x7cebe8[_0xd034('0x4a')]));}headers[_0xd034('0x5a')]=getAuth(_0x50b310);return getUser(_0x50b310,_0x4c3b7f[_0xd034('0x4b')])[_0xd034('0x1c')](function(_0xce5d16){_0x157e8b=_0xce5d16;logger['info'](_0xd034('0x4c'),_0x157e8b['id']);return getEndUser(_0x50b310,_0x7cebe8[_0xd034('0x5b')],_0x7cebe8['destcalleridnum']);})['then'](function(_0xa6fd70){_0x4860df=_0xa6fd70;logger[_0xd034('0xe')](_0xd034('0x4e'),_0x4860df['id']);return getTicket(_0x50b310,_0x157e8b,_0x4860df,_0x18779c,_0x7cebe8);})['then'](function(_0x2ef2c3){if(_0x2ef2c3&&_0x2ef2c3['id']){logger[_0xd034('0xe')]('Ticket\x20created!');logger['info'](_0xd034('0x50'),_0x2ef2c3['id']);logger[_0xd034('0xe')](_0xd034('0x59'),_0xd034('0x51'));emit(util[_0xd034('0x10')]('user:%s',_0x4c3b7f[_0xd034('0x16')]),'trigger:browser:url',{'uri':util['format'](_0xd034('0x53'),_0x50b310['remoteUri'],_0x2ef2c3['id'])});}})['catch'](function(_0x60cf29){logger['error'](_0xd034('0x59'),JSON[_0xd034('0x30')](_0x60cf29));});};exports[_0xd034('0x5c')]=function(_0x48655d,_0x57af97,_0x966058,_0x1c1117,_0x45a72c,_0x516742){var _0x8e9fed,_0x49ba85;_0x516742[_0xd034('0x22')]=intUtil[_0xd034('0x44')](_0x516742['remoteUri']);_0x516742[_0xd034('0x45')]=intUtil[_0xd034('0x44')](_0x516742['serverUrl']);if(_0x45a72c&&_0x45a72c[_0xd034('0x5d')]){logger['info']('['+_0x57af97[_0xd034('0x5e')][_0xd034('0x5f')]()+']',_0xd034('0x47'));_0x57af97[_0xd034('0x48')]=util[_0xd034('0x10')](_0xd034('0x49'),_0x516742[_0xd034('0x45')],_0x57af97[_0xd034('0x4a')],md5(_0x57af97[_0xd034('0x4a')]));}else{_0x57af97[_0xd034('0x48')]='';}headers[_0xd034('0x5a')]=getAuth(_0x516742);return getUser(_0x516742,'')['then'](function(_0x1e991c){_0x8e9fed=_0x1e991c;logger[_0xd034('0xe')](_0xd034('0x4c'),_0x8e9fed['id']);return getEndUser(_0x516742,_0x57af97[_0xd034('0x12')],_0x57af97['calleridnum']);})['then'](function(_0x20e3da){_0x49ba85=_0x20e3da;logger['info'](_0xd034('0x4e'),_0x49ba85['id']);return getTicket(_0x516742,_0x8e9fed,_0x49ba85,_0x966058,_0x57af97);})[_0xd034('0x1c')](function(_0x2a15ef){if(_0x2a15ef){logger[_0xd034('0xe')](_0xd034('0x4f'));logger[_0xd034('0xe')]('The\x20Ticket\x20ID\x20is:',_0x2a15ef['id']);}})[_0xd034('0x54')](function(_0x3614ed){logger['error']('['+_0x57af97[_0xd034('0x5e')][_0xd034('0x5f')]()+']',JSON['stringify'](_0x3614ed));});};