Built motion from commit db94841.|2.5.3
[motion2.git] / server / services / ami / trigger / integration / vtiger.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 _0xcec6=['getchallenge','login','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','stripTrailingSlash','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','trigger:browser:url','unmanaged','lastevent','toUpperCase','request-promise','bluebird','md5','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','length','forEach','string','idField','content','type','variable','variableName','toString','customVariable','Variable','name','info','Creating\x20new\x20ticket...','merge','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','HelpDesk','stringify','then','success','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','catch','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','remoteUri','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','Agent\x20found!','resolve','result','email1','first_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','username','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','phone','getEndUser','accessKey'];(function(_0x500785,_0x15e5ff){var _0x1f8bcc=function(_0x406983){while(--_0x406983){_0x500785['push'](_0x500785['shift']());}};_0x1f8bcc(++_0x15e5ff);}(_0xcec6,0x1b8));var _0x6cec=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xcec6[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var rp=require(_0x6cec('0x0'));var BPromise=require(_0x6cec('0x1'));var md5=require(_0x6cec('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x6cec('0x3'));var config=require(_0x6cec('0x4'));var logger=require(_0x6cec('0x5'))(_0x6cec('0x6'));config[_0x6cec('0x7')]=_[_0x6cec('0x8')](config['redis'],{'host':_0x6cec('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6cec('0x7')]));function emit(_0xe07769,_0xc7d752,_0x2dbcaf){io['to'](_0xe07769)['emit'](_0xc7d752,_0x2dbcaf);}function getCustomFields(_0x446d5c,_0x3ccc74){var _0x4ab46a={};if(_0x446d5c[_0x6cec('0xa')]>0x0){_[_0x6cec('0xb')](_0x446d5c,function(_0x504a66){if(_0x504a66['type']===_0x6cec('0xc')&&_0x504a66[_0x6cec('0xd')]){_0x4ab46a[_0x504a66[_0x6cec('0xd')]]=_0x504a66[_0x6cec('0xe')]['toString']();}else if(_0x504a66[_0x6cec('0xf')]===_0x6cec('0x10')&&_0x504a66[_0x6cec('0x11')]&&_0x504a66[_0x6cec('0xd')]&&_0x3ccc74[_0x504a66['variableName']]){_0x4ab46a[_0x504a66[_0x6cec('0xd')]]=_0x3ccc74[_0x504a66[_0x6cec('0x11')]][_0x6cec('0x12')]();}else if(_0x504a66[_0x6cec('0xf')]===_0x6cec('0x13')&&_0x504a66[_0x6cec('0x14')]&&_0x504a66[_0x6cec('0x14')][_0x6cec('0x15')]&&_0x504a66['idField']&&_0x3ccc74[_0x504a66[_0x6cec('0x14')][_0x6cec('0x15')]['toLowerCase']()]){_0x4ab46a[_0x504a66[_0x6cec('0xd')]]=_0x3ccc74[_0x504a66[_0x6cec('0x14')][_0x6cec('0x15')]['toLowerCase']()][_0x6cec('0x12')]();}});}return _0x4ab46a;}function createTicket(_0x58c9d9,_0x510618,_0x234323,_0x5cc050,_0x41fef7,_0x5c347d,_0x251352){logger[_0x6cec('0x16')](_0x6cec('0x17'));var _0x308d87=_[_0x6cec('0x18')]({'parent_id':'','assigned_user_id':_0x510618['id'],'ticketpriorities':'Normal','ticketstatus':_0x6cec('0x19'),'ticket_title':intUtil['getString'](_0x5cc050[_0x6cec('0x1a')],_0x41fef7,'\x20'),'description':intUtil[_0x6cec('0x1b')](_0x5cc050[_0x6cec('0x1c')],_0x41fef7,'\x0a'),'contact_id':_0x234323['id']},getCustomFields(_0x5c347d,_0x41fef7));var _0xf1b9f4={'method':_0x6cec('0x1d'),'uri':util[_0x6cec('0x1e')](_0x6cec('0x1f'),_0x58c9d9['remoteUri']),'form':{'operation':_0x6cec('0x20'),'username':_0x58c9d9['username'],'sessionName':_0x251352['sessionName'],'elementType':_0x6cec('0x21'),'element':JSON[_0x6cec('0x22')](_0x308d87)},'json':!![]};return request(_0xf1b9f4)[_0x6cec('0x23')](function(_0x3c34c5){if(_0x3c34c5[_0x6cec('0x24')]){return BPromise['resolve']({'id':_0x3c34c5['result']['id']});}else{throw new Error(util[_0x6cec('0x1e')](_0x6cec('0x25'),JSON[_0x6cec('0x22')](_0x3c34c5[_0x6cec('0x26')])));}})[_0x6cec('0x27')](function(_0x2c604){var _0x1443cd=_0x2c604[_0x6cec('0x28')]||0x1f4;logger[_0x6cec('0x26')](_0x6cec('0x29'),_0x6cec('0x2a'),_0x1443cd,JSON[_0x6cec('0x22')](_0x2c604));});}function getUser(_0x1252ef,_0x1226d5,_0x417e6f){if(intUtil[_0x6cec('0x2b')](_0x1226d5)){logger['info'](_0x6cec('0x2c'),_0x1226d5);return request({'method':_0x6cec('0x2d'),'uri':util['format']('%s/webservice.php',_0x1252ef[_0x6cec('0x2e')]),'qs':{'operation':_0x6cec('0x2f'),'username':_0x1252ef['username'],'sessionName':_0x417e6f[_0x6cec('0x30')],'query':util[_0x6cec('0x1e')](_0x6cec('0x31'),_0x1226d5)},'json':!![]})[_0x6cec('0x23')](function(_0x5a3980){if(_0x5a3980[_0x6cec('0x24')]&&_0x5a3980['result'][_0x6cec('0xa')]){logger[_0x6cec('0x16')](_0x6cec('0x32'));return BPromise[_0x6cec('0x33')]({'id':_0x5a3980[_0x6cec('0x34')][0x0]['id'],'email':_0x5a3980[_0x6cec('0x34')][0x0][_0x6cec('0x35')],'name':_0x5a3980[_0x6cec('0x34')][0x0][_0x6cec('0x36')]+'\x20'+_0x5a3980[_0x6cec('0x34')]['last_name']});}else{logger[_0x6cec('0x16')](_0x6cec('0x37'));return BPromise['resolve']({'id':_0x417e6f[_0x6cec('0x38')],'email':_0x1252ef[_0x6cec('0x39')],'name':'admin'});}})[_0x6cec('0x27')](function(_0x38a81a){var _0x56211c=_0x38a81a[_0x6cec('0x28')]||0x1f4;logger[_0x6cec('0x26')](_0x6cec('0x29'),_0x6cec('0x3a'),_0x56211c,JSON[_0x6cec('0x22')](_0x38a81a));});}else{logger[_0x6cec('0x16')](_0x6cec('0x37'));return BPromise[_0x6cec('0x33')]({'id':_0x417e6f[_0x6cec('0x38')],'email':_0x1252ef[_0x6cec('0x39')],'name':_0x6cec('0x3b')})['catch'](function(_0x34b377){var _0x26bbf1=_0x34b377['statusCode']||0x1f4;logger[_0x6cec('0x26')](_0x6cec('0x29'),_0x6cec('0x3a'),_0x26bbf1,JSON[_0x6cec('0x22')](_0x34b377));});}}function getEndUser(_0x275058,_0x2212dd,_0x42beb4,_0x5cd37e){logger[_0x6cec('0x16')](_0x6cec('0x3c'),_0x42beb4);return request({'method':_0x6cec('0x2d'),'uri':util[_0x6cec('0x1e')](_0x6cec('0x1f'),_0x275058[_0x6cec('0x2e')]),'qs':{'operation':_0x6cec('0x2f'),'username':_0x275058['username'],'sessionName':_0x5cd37e[_0x6cec('0x30')],'query':util[_0x6cec('0x1e')](_0x6cec('0x3d'),_0x42beb4,_0x42beb4,_0x42beb4,_0x42beb4,_0x42beb4)},'json':!![]})[_0x6cec('0x23')](function(_0xc8ce1a){if(_0xc8ce1a['success']&&_0xc8ce1a[_0x6cec('0x34')]['length']){logger[_0x6cec('0x16')](_0x6cec('0x3e'));return BPromise[_0x6cec('0x33')]({'id':_0xc8ce1a['result'][0x0]['id'],'name':_0xc8ce1a['result'][0x0][_0x6cec('0x3f')]+'\x20'+_0xc8ce1a[_0x6cec('0x34')][0x0][_0x6cec('0x40')],'phone':_0x42beb4});}else{logger[_0x6cec('0x16')](_0x6cec('0x41'));return request({'method':_0x6cec('0x1d'),'uri':util[_0x6cec('0x1e')](_0x6cec('0x1f'),_0x275058[_0x6cec('0x2e')]),'form':{'operation':_0x6cec('0x20'),'sessionName':_0x5cd37e['sessionName'],'elementType':'Contacts','element':JSON['stringify']({'lastname':_0x2212dd,'phone':_0x42beb4,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0xb7c2f1){logger[_0x6cec('0x16')](_0x6cec('0x42'));return BPromise[_0x6cec('0x33')]({'id':_0xb7c2f1[_0x6cec('0x34')]['id'],'name':_0xb7c2f1[_0x6cec('0x34')][_0x6cec('0x40')],'phone':_0xb7c2f1[_0x6cec('0x34')][_0x6cec('0x43')]});})[_0x6cec('0x27')](function(_0x313e41){var _0x5248ec=_0x313e41['statusCode']||0x1f4;logger[_0x6cec('0x26')](_0x6cec('0x29'),_0x6cec('0x44'),_0x5248ec,JSON['stringify'](_0x313e41));});}});}function getConnection(_0x234d9a){var _0x43f30f=_0x234d9a['username'];var _0x5ee397=_0x234d9a[_0x6cec('0x45')];return request({'method':'GET','uri':util['format']('%s/webservice.php',_0x234d9a[_0x6cec('0x2e')]),'qs':{'operation':_0x6cec('0x46'),'username':_0x43f30f},'json':!![]})[_0x6cec('0x23')](function(_0x1b6fd1){if(_0x1b6fd1[_0x6cec('0x24')]){return request({'method':_0x6cec('0x1d'),'uri':util[_0x6cec('0x1e')](_0x6cec('0x1f'),_0x234d9a['remoteUri']),'form':{'operation':_0x6cec('0x47'),'username':_0x43f30f,'accessKey':md5(_0x1b6fd1[_0x6cec('0x34')]['token']+_0x5ee397)},'json':!![]});}})['then'](function(_0x415c04){if(_0x415c04['success']){return BPromise['resolve'](_0x415c04[_0x6cec('0x34')]);}else{throw new Error(util[_0x6cec('0x1e')](_0x6cec('0x48'),_0x234d9a['id']));}})[_0x6cec('0x27')](function(_0x2e66eb){var _0x2102ff=_0x2e66eb[_0x6cec('0x28')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s',_0x6cec('0x49'),_0x2102ff,JSON[_0x6cec('0x22')](_0x2e66eb));});}function request(_0x4ddb62){logger['info']('[HTTP]',JSON['stringify'](_0x4ddb62));return rp(_0x4ddb62);}exports[_0x6cec('0x4a')]=function(_0x11b9ff,_0x113fe0,_0x4737b6,_0x5c9266,_0x423d3f,_0x10e552){var _0xd43a6c,_0x143024,_0xd1c26d,_0x20484b;_0x10e552[_0x6cec('0x2e')]=intUtil['stripTrailingSlash'](_0x10e552[_0x6cec('0x2e')]);if(_0x423d3f&&_0x423d3f[_0x6cec('0x4b')]){logger[_0x6cec('0x16')](_0x6cec('0x4c'),_0x6cec('0x4d'));_0x113fe0[_0x6cec('0x4e')]=util['format'](_0x6cec('0x4f'),_0x10e552[_0x6cec('0x50')],_0x113fe0['uniqueid'],md5(_0x113fe0[_0x6cec('0x51')]));}else{_0x113fe0[_0x6cec('0x4e')]='';}return getConnection(_0x10e552)[_0x6cec('0x23')](function(_0x4342d2){_0x20484b=_0x4342d2;return getUser(_0x10e552,_0x5c9266[_0x6cec('0x52')],_0x20484b);})['then'](function(_0x206a50){_0xd43a6c=_0x206a50;logger[_0x6cec('0x16')](_0x6cec('0x53'),_0xd43a6c['id']);return getEndUser(_0x10e552,_0x113fe0[_0x6cec('0x54')],_0x113fe0['calleridnum'],_0x20484b);})[_0x6cec('0x23')](function(_0x1ab0c2){_0x143024=_0x1ab0c2;logger[_0x6cec('0x16')](_0x6cec('0x55'),_0x143024['id']);return createTicket(_0x10e552,_0xd43a6c,_0x143024,_0x4737b6,_0x113fe0,_0x4737b6[_0x6cec('0x56')],_0x20484b);})[_0x6cec('0x23')](function(_0x3925f6){_0xd1c26d=_0x3925f6;logger[_0x6cec('0x16')](_0x6cec('0x57'));logger[_0x6cec('0x16')](_0x6cec('0x58'),_0xd1c26d['id']);var _0x35871e=util[_0x6cec('0x1e')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x10e552[_0x6cec('0x2e')],_['split'](_0xd1c26d['id'],'x')[0x1]);logger[_0x6cec('0x16')](_0x6cec('0x4c'),_0x6cec('0x59'));emit(util[_0x6cec('0x1e')](_0x6cec('0x5a'),_0x5c9266[_0x6cec('0x15')]),'trigger:browser:url',{'uri':_0x35871e});})[_0x6cec('0x27')](function(_0x20d564){logger[_0x6cec('0x26')]('[QUEUE]',JSON[_0x6cec('0x22')](_0x20d564));});};exports['outbound']=function(_0x38ef6c,_0x49cd0c,_0x32e897,_0x17e6b5,_0x4fb165,_0x154890,_0x5c473b){var _0x2e1ff2,_0x21f549,_0x3e2daa,_0x27418d;_0x154890['remoteUri']=intUtil['stripTrailingSlash'](_0x154890[_0x6cec('0x2e')]);_0x154890[_0x6cec('0x50')]=intUtil[_0x6cec('0x5b')](_0x154890['serverUrl']);if(_0x5c473b&&_0x5c473b[_0x6cec('0x5c')]&&_0x5c473b[_0x6cec('0x5c')]!=='none'){logger[_0x6cec('0x16')](_0x6cec('0x5d'),_0x6cec('0x4d'));_0x49cd0c[_0x6cec('0x4e')]=util[_0x6cec('0x1e')](_0x6cec('0x4f'),_0x154890[_0x6cec('0x50')],_0x49cd0c[_0x6cec('0x51')],md5(_0x49cd0c[_0x6cec('0x51')]));}return getConnection(_0x154890)[_0x6cec('0x23')](function(_0x3f8432){_0x27418d=_0x3f8432;return getUser(_0x154890,_0x17e6b5[_0x6cec('0x52')],_0x27418d);})[_0x6cec('0x23')](function(_0x5d69cb){_0x2e1ff2=_0x5d69cb;logger['info']('The\x20User\x20ID\x20is:',_0x2e1ff2['id']);return getEndUser(_0x154890,_0x49cd0c[_0x6cec('0x5e')],_0x49cd0c[_0x6cec('0x5f')],_0x27418d);})[_0x6cec('0x23')](function(_0x57dc22){_0x21f549=_0x57dc22;logger[_0x6cec('0x16')](_0x6cec('0x55'),_0x21f549['id']);return createTicket(_0x154890,_0x2e1ff2,_0x21f549,_0x32e897,_0x49cd0c,_0x32e897[_0x6cec('0x56')],_0x27418d);})[_0x6cec('0x23')](function(_0x5766c0){_0x3e2daa=_0x5766c0;logger[_0x6cec('0x16')]('Ticket\x20created!');logger['info'](_0x6cec('0x58'),_0x3e2daa['id']);var _0x592e22=util['format'](_0x6cec('0x60'),_0x154890[_0x6cec('0x2e')],_[_0x6cec('0x61')](_0x3e2daa['id'],'x')[0x1]);logger['info']('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x6cec('0x1e')](_0x6cec('0x5a'),_0x17e6b5[_0x6cec('0x15')]),_0x6cec('0x62'),{'uri':_0x592e22});})[_0x6cec('0x27')](function(_0x3ec9b3){logger[_0x6cec('0x26')](_0x6cec('0x5d'),JSON[_0x6cec('0x22')](_0x3ec9b3));});};exports[_0x6cec('0x63')]=function(_0x1c054d,_0x53de92,_0x2c9ffd,_0x552ed2,_0xb08ed7,_0x4227e4){var _0x4b88d2,_0x29d836,_0x378141,_0x35f73f;_0x4227e4[_0x6cec('0x2e')]=intUtil[_0x6cec('0x5b')](_0x4227e4[_0x6cec('0x2e')]);_0x4227e4[_0x6cec('0x50')]=intUtil[_0x6cec('0x5b')](_0x4227e4[_0x6cec('0x50')]);if(_0xb08ed7&&_0xb08ed7[_0x6cec('0x4b')]){logger['info']('['+_0x53de92[_0x6cec('0x64')][_0x6cec('0x65')]()+']',_0x6cec('0x4d'));_0x53de92['recordingURL']=util[_0x6cec('0x1e')](_0x6cec('0x4f'),_0x4227e4[_0x6cec('0x50')],_0x53de92[_0x6cec('0x51')],md5(_0x53de92[_0x6cec('0x51')]));}else{_0x53de92[_0x6cec('0x4e')]='';}return getConnection(_0x4227e4)[_0x6cec('0x23')](function(_0x4243fd){_0x35f73f=_0x4243fd;return getUser(_0x4227e4,'',_0x35f73f);})[_0x6cec('0x23')](function(_0x28a814){_0x4b88d2=_0x28a814;logger[_0x6cec('0x16')](_0x6cec('0x53'),_0x4b88d2['id']);return getEndUser(_0x4227e4,_0x53de92['calleridname'],_0x53de92['calleridnum'],_0x35f73f);})['then'](function(_0x345ead){_0x29d836=_0x345ead;logger[_0x6cec('0x16')](_0x6cec('0x55'),_0x29d836['id']);return createTicket(_0x4227e4,_0x4b88d2,_0x29d836,_0x2c9ffd,_0x53de92,_0x2c9ffd['Fields'],_0x35f73f);})[_0x6cec('0x23')](function(_0x442a08){_0x378141=_0x442a08;logger[_0x6cec('0x16')](_0x6cec('0x57'));logger['info'](_0x6cec('0x58'),_0x378141['id']);})['catch'](function(_0x1bc686){logger[_0x6cec('0x26')]('['+_0x53de92[_0x6cec('0x64')][_0x6cec('0x65')]()+']',JSON['stringify'](_0x1bc686));});};