Built motion from commit 10af8726.|2.6.34
[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 _0x6675=['../../../../config/logger','freshdesk','defaults','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridnum','Subjects','getString','Descriptions','<br>','name','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','base64','debug','[HTTP]','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','toString','idField','push','content','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','stringify','outbound','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]','unmanaged','lastevent','catch','toUpperCase','lodash','request-promise','ioredis','./util'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x6675,0x16c));var _0x5667=function(_0x28f2f8,_0x575e5c){_0x28f2f8=_0x28f2f8-0x0;var _0xb8d48=_0x6675[_0x28f2f8];return _0xb8d48;};'use strict';var _=require(_0x5667('0x0'));var rp=require(_0x5667('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0x5667('0x2'));var intUtil=require(_0x5667('0x3'));var config=require('../../../../config/environment');var logger=require(_0x5667('0x4'))(_0x5667('0x5'));config['redis']=_[_0x5667('0x6')](config[_0x5667('0x7')],{'host':_0x5667('0x8'),'port':0x18eb});var io=require(_0x5667('0x9'))(new Redis(config[_0x5667('0x7')]));var headers={'Content-Type':'application/json','Accept':_0x5667('0xa')};function emit(_0x4496b4,_0xd00a66,_0x597777){io['to'](_0x4496b4)[_0x5667('0xb')](_0xd00a66,_0x597777);}function getTicket(_0x4f73a6,_0x45a146,_0x24a913,_0x4286ed,_0x47c4b8){logger[_0x5667('0xc')](_0x5667('0xd'));var _0x5781af=_['merge']({'responder_id':_0x45a146['id'],'requester_id':_0x24a913['id'],'name':util[_0x5667('0xe')](_0x5667('0xf'),_0x47c4b8['calleridname']),'phone':_0x47c4b8[_0x5667('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x4286ed[_0x5667('0x11')],_0x47c4b8,'\x20'),'description':intUtil[_0x5667('0x12')](_0x4286ed[_0x5667('0x13')],_0x47c4b8,_0x5667('0x14')),'tags':getTags(_0x4286ed['Tags'],_0x5667('0x15'))},getCustomFields(_0x4286ed['Fields'],_0x47c4b8));_0x5781af[_0x5667('0x16')]=_[_0x5667('0x17')](_[_0x5667('0x18')](_0x5781af['custom_fields'],'id'),_0x5667('0x19'));return request({'uri':util[_0x5667('0xe')](_0x5667('0x1a'),_0x4f73a6[_0x5667('0x1b')]),'method':_0x5667('0x1c'),'body':_0x5781af})[_0x5667('0x1d')](function(_0xbf799){logger['info'](_0x5667('0x1e'));return _0xbf799;});}function getUser(_0x36b4f9,_0x151527){if(intUtil[_0x5667('0x1f')](_0x151527)){return request({'uri':util[_0x5667('0xe')](_0x5667('0x20'),_0x36b4f9[_0x5667('0x1b')]),'qs':{'email':_0x151527}})[_0x5667('0x1d')](function(_0x103edc){if(_0x103edc[_0x5667('0x21')]){logger['info']('Agent\x20found!');return _['find'](_0x103edc,function(_0x2af17b){return _0x2af17b[_0x5667('0x22')][_0x5667('0x23')]===_0x151527;});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x5667('0xe')](_0x5667('0x24'),_0x36b4f9[_0x5667('0x1b')])})[_0x5667('0x1d')](function(_0x35196b){logger[_0x5667('0xc')](_0x5667('0x25'));return _0x35196b;});}});}else{logger[_0x5667('0xc')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x5667('0xe')](_0x5667('0x24'),_0x36b4f9['remoteUri'])})['then'](function(_0x19cb96){logger[_0x5667('0xc')](_0x5667('0x25'));return _0x19cb96;});}}function getEndUser(_0x3b6de4,_0x426abb,_0x40440d){logger[_0x5667('0xc')]('Searching\x20enduser\x20with\x20phone',_0x40440d);return request({'uri':util[_0x5667('0xe')]('%s/api/v2/contacts',_0x3b6de4[_0x5667('0x1b')]),'qs':{'phone':_0x40440d}})['then'](function(_0x285003){if(_0x285003[_0x5667('0x21')]){logger[_0x5667('0xc')](_0x5667('0x26'));return _[_0x5667('0x27')](_0x285003,{'phone':_0x40440d});}else{logger['info'](_0x5667('0x28'));return request({'uri':util[_0x5667('0xe')](_0x5667('0x29'),_0x3b6de4[_0x5667('0x1b')]),'method':_0x5667('0x1c'),'body':{'name':_0x426abb,'phone':_0x40440d}})[_0x5667('0x1d')](function(_0x1ca85a){logger[_0x5667('0xc')](_0x5667('0x2a'));return _0x1ca85a;});}});}function getAuth(_0x329f79){return util[_0x5667('0xe')]('Basic\x20%s',new Buffer(_0x329f79['apiKey']+':X')['toString'](_0x5667('0x2b')));}function request(_0x1a1dda){logger[_0x5667('0x2c')](_0x5667('0x2d'),JSON['stringify'](_0x1a1dda));return rp(_[_0x5667('0x6')](_0x1a1dda,{'method':_0x5667('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x1293d8,_0x1fbfea){var _0x5f3f82=[];if(_0x1293d8&&_0x1293d8['length']>0x0){_0x5f3f82=_[_0x5667('0x2f')](_0x1293d8,_0x1fbfea);}return _0x5f3f82;}function getCustomFields(_0x557604,_0x3a2e3a){var _0x50b7eb=[];var _0x1e99dd={'custom_fields':[]};if(_0x557604['length']>0x0){_[_0x5667('0x30')](_0x557604,function(_0x29087d){if(_[_0x5667('0x31')]([_0x5667('0x32'),_0x5667('0x33')],_0x29087d[_0x5667('0x34')])&&_0x29087d[_0x5667('0x35')]&&!_0x29087d[_0x5667('0x36')]){_0x1e99dd[_0x29087d['nameField'][_0x5667('0x37')]()]=_0x29087d['content'][_0x5667('0x38')]();}else if(_[_0x5667('0x31')]([_0x5667('0x32'),'picklist'],_0x29087d['type'])&&_0x29087d[_0x5667('0x39')]&&_0x29087d[_0x5667('0x36')]){_0x1e99dd['custom_fields'][_0x5667('0x3a')]({'id':_0x29087d[_0x5667('0x39')],'value':_0x29087d[_0x5667('0x3b')][_0x5667('0x38')]()});}else if(_0x29087d[_0x5667('0x34')]===_0x5667('0x3c')&&_0x29087d[_0x5667('0x3d')]&&_0x29087d[_0x5667('0x39')]&&_0x29087d[_0x5667('0x36')]){_0x3a2e3a[_0x29087d[_0x5667('0x3d')]]&&_0x1e99dd[_0x5667('0x16')][_0x5667('0x3a')]({'id':_0x29087d[_0x5667('0x39')],'value':_0x3a2e3a[_0x29087d[_0x5667('0x3d')]][_0x5667('0x38')]()});}else if(_0x29087d['type']===_0x5667('0x3e')&&_0x29087d['Variable']&&_0x29087d[_0x5667('0x3f')]['name']&&_0x29087d[_0x5667('0x39')]&&_0x29087d[_0x5667('0x36')]){_0x3a2e3a[_0x29087d[_0x5667('0x3f')][_0x5667('0x15')][_0x5667('0x37')]()]&&_0x1e99dd[_0x5667('0x16')][_0x5667('0x3a')]({'id':_0x29087d[_0x5667('0x39')],'value':_0x3a2e3a[_0x29087d[_0x5667('0x3f')][_0x5667('0x15')][_0x5667('0x37')]()][_0x5667('0x38')]()});}});}return _0x1e99dd;}exports[_0x5667('0x40')]=function(_0x1ac7d6,_0x28d639,_0x3dcb87,_0x78e165,_0x588999,_0x5f59bd){var _0x5a4f90,_0x5d2e5d;_0x5f59bd['remoteUri']=intUtil[_0x5667('0x41')](_0x5f59bd[_0x5667('0x1b')]);_0x5f59bd[_0x5667('0x42')]=intUtil['stripTrailingSlash'](_0x5f59bd[_0x5667('0x42')]);if(_0x588999&&_0x588999[_0x5667('0x43')]){logger[_0x5667('0xc')](_0x5667('0x44'),_0x5667('0x45'));_0x28d639[_0x5667('0x46')]=util[_0x5667('0xe')](_0x5667('0x47'),_0x5f59bd[_0x5667('0x42')],_0x28d639[_0x5667('0x48')],md5(_0x28d639[_0x5667('0x48')]));}else{_0x28d639[_0x5667('0x46')]='';}headers[_0x5667('0x49')]=getAuth(_0x5f59bd);return getUser(_0x5f59bd,_0x78e165[_0x5667('0x23')])[_0x5667('0x1d')](function(_0x2eb064){_0x5a4f90=_0x2eb064;logger['info'](_0x5667('0x4a'),_0x5a4f90['id']);return getEndUser(_0x5f59bd,_0x28d639[_0x5667('0x4b')],_0x28d639[_0x5667('0x10')]);})[_0x5667('0x1d')](function(_0x51c597){_0x5d2e5d=_0x51c597;logger[_0x5667('0xc')](_0x5667('0x4c'),_0x5d2e5d['id']);return getTicket(_0x5f59bd,_0x5a4f90,_0x5d2e5d,_0x3dcb87,_0x28d639);})['then'](function(_0x5a791f){if(_0x5a791f&&_0x5a791f['id']){logger['info'](_0x5667('0x1e'));logger[_0x5667('0xc')]('The\x20Ticket\x20ID\x20is:',_0x5a791f['id']);logger[_0x5667('0xc')]('[QUEUE]',_0x5667('0x4d'));emit(util[_0x5667('0xe')](_0x5667('0x4e'),_0x78e165[_0x5667('0x15')]),_0x5667('0x4f'),{'uri':util['format'](_0x5667('0x50'),_0x5f59bd[_0x5667('0x1b')],_0x5a791f['id'])});}})['catch'](function(_0x595e7b){logger['error'](_0x5667('0x44'),JSON[_0x5667('0x51')](_0x595e7b));});};exports[_0x5667('0x52')]=function(_0x41f4e4,_0x355b26,_0x58c26f,_0x5eba65,_0xff0c14,_0x1a80ab,_0x1ab241){var _0x2998d2,_0x8676a2;_0x1a80ab['remoteUri']=intUtil[_0x5667('0x41')](_0x1a80ab[_0x5667('0x1b')]);_0x1a80ab[_0x5667('0x42')]=intUtil[_0x5667('0x41')](_0x1a80ab['serverUrl']);if(_0x1ab241&&_0x1ab241['recordingFormat']&&_0x1ab241[_0x5667('0x53')]!==_0x5667('0x54')){logger[_0x5667('0xc')]('[OUTBOUND]',_0x5667('0x45'));_0x355b26[_0x5667('0x46')]=util[_0x5667('0xe')](_0x5667('0x47'),_0x1a80ab['serverUrl'],_0x355b26[_0x5667('0x48')],md5(_0x355b26[_0x5667('0x48')]));}headers[_0x5667('0x49')]=getAuth(_0x1a80ab);return getUser(_0x1a80ab,_0x5eba65['email'])[_0x5667('0x1d')](function(_0x5935b){_0x2998d2=_0x5935b;logger['info'](_0x5667('0x4a'),_0x2998d2['id']);return getEndUser(_0x1a80ab,_0x355b26[_0x5667('0x55')],_0x355b26[_0x5667('0x56')]);})[_0x5667('0x1d')](function(_0x23428e){_0x8676a2=_0x23428e;logger[_0x5667('0xc')](_0x5667('0x4c'),_0x8676a2['id']);return getTicket(_0x1a80ab,_0x2998d2,_0x8676a2,_0x58c26f,_0x355b26);})['then'](function(_0x4b02b2){if(_0x4b02b2&&_0x4b02b2['id']){logger[_0x5667('0xc')](_0x5667('0x1e'));logger[_0x5667('0xc')]('The\x20Ticket\x20ID\x20is:',_0x4b02b2['id']);logger[_0x5667('0xc')](_0x5667('0x57'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x5667('0xe')](_0x5667('0x4e'),_0x5eba65[_0x5667('0x15')]),_0x5667('0x4f'),{'uri':util[_0x5667('0xe')](_0x5667('0x50'),_0x1a80ab[_0x5667('0x1b')],_0x4b02b2['id'])});}})['catch'](function(_0x520a51){logger['error'](_0x5667('0x57'),JSON[_0x5667('0x51')](_0x520a51));});};exports[_0x5667('0x58')]=function(_0x545edd,_0x120c4d,_0xe5c3a,_0x5a49ea,_0x3812c4,_0x2eb152){var _0x348bb6,_0x38e40c;_0x2eb152['remoteUri']=intUtil[_0x5667('0x41')](_0x2eb152[_0x5667('0x1b')]);_0x2eb152[_0x5667('0x42')]=intUtil[_0x5667('0x41')](_0x2eb152[_0x5667('0x42')]);if(_0x3812c4&&_0x3812c4[_0x5667('0x43')]){logger[_0x5667('0xc')]('['+_0x120c4d[_0x5667('0x59')]['toUpperCase']()+']',_0x5667('0x45'));_0x120c4d[_0x5667('0x46')]=util[_0x5667('0xe')](_0x5667('0x47'),_0x2eb152['serverUrl'],_0x120c4d['uniqueid'],md5(_0x120c4d[_0x5667('0x48')]));}else{_0x120c4d[_0x5667('0x46')]='';}headers[_0x5667('0x49')]=getAuth(_0x2eb152);return getUser(_0x2eb152,'')[_0x5667('0x1d')](function(_0x3de59c){_0x348bb6=_0x3de59c;logger['info'](_0x5667('0x4a'),_0x348bb6['id']);return getEndUser(_0x2eb152,_0x120c4d[_0x5667('0x4b')],_0x120c4d[_0x5667('0x10')]);})['then'](function(_0x5eccfa){_0x38e40c=_0x5eccfa;logger[_0x5667('0xc')](_0x5667('0x4c'),_0x38e40c['id']);return getTicket(_0x2eb152,_0x348bb6,_0x38e40c,_0xe5c3a,_0x120c4d);})[_0x5667('0x1d')](function(_0x5eaa8b){if(_0x5eaa8b){logger[_0x5667('0xc')](_0x5667('0x1e'));logger[_0x5667('0xc')]('The\x20Ticket\x20ID\x20is:',_0x5eaa8b['id']);}})[_0x5667('0x5a')](function(_0x1a9eba){logger['error']('['+_0x120c4d[_0x5667('0x59')][_0x5667('0x5b')]()+']',JSON[_0x5667('0x51')](_0x1a9eba));});};