Built motion from commit (unavailable).|2.3.9
[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 _0x3fb7=['defaults','localhost','socket.io-emitter','emit','length','forEach','type','string','idField','toString','variable','variableName','customVariable','Variable','name','info','merge','Normal','Open','getString','Subjects','Descriptions','POST','remoteUri','create','sessionName','HelpDesk','stringify','then','success','resolve','result','format','error','catch','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','username','getUser','query','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!','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','user:%s','[ABANDONED]','Recording\x20is\x20enabled!','request-promise','md5','util','./util','../../../../config/logger','vTiger','redis'];(function(_0x5d8292,_0x11825e){var _0x315553=function(_0x96baf4){while(--_0x96baf4){_0x5d8292['push'](_0x5d8292['shift']());}};_0x315553(++_0x11825e);}(_0x3fb7,0x189));var _0x73fb=function(_0x541dbb,_0x381d96){_0x541dbb=_0x541dbb-0x0;var _0x215666=_0x3fb7[_0x541dbb];return _0x215666;};'use strict';var _=require('lodash');var rp=require(_0x73fb('0x0'));var BPromise=require('bluebird');var md5=require(_0x73fb('0x1'));var util=require(_0x73fb('0x2'));var Redis=require('ioredis');var intUtil=require(_0x73fb('0x3'));var config=require('../../../../config/environment');var logger=require(_0x73fb('0x4'))(_0x73fb('0x5'));config[_0x73fb('0x6')]=_[_0x73fb('0x7')](config[_0x73fb('0x6')],{'host':_0x73fb('0x8'),'port':0x18eb});var io=require(_0x73fb('0x9'))(new Redis(config[_0x73fb('0x6')]));function emit(_0x1455de,_0x2413ee,_0x2c0bd5){io['to'](_0x1455de)[_0x73fb('0xa')](_0x2413ee,_0x2c0bd5);}function getCustomFields(_0x2bf509,_0x312912){var _0x435d63={};if(_0x2bf509[_0x73fb('0xb')]>0x0){_[_0x73fb('0xc')](_0x2bf509,function(_0x1052e1){if(_0x1052e1[_0x73fb('0xd')]===_0x73fb('0xe')&&_0x1052e1[_0x73fb('0xf')]){_0x435d63[_0x1052e1[_0x73fb('0xf')]]=_0x1052e1['content'][_0x73fb('0x10')]();}else if(_0x1052e1['type']===_0x73fb('0x11')&&_0x1052e1[_0x73fb('0x12')]&&_0x1052e1[_0x73fb('0xf')]&&_0x312912[_0x1052e1[_0x73fb('0x12')]]){_0x435d63[_0x1052e1[_0x73fb('0xf')]]=_0x312912[_0x1052e1[_0x73fb('0x12')]][_0x73fb('0x10')]();}else if(_0x1052e1[_0x73fb('0xd')]===_0x73fb('0x13')&&_0x1052e1[_0x73fb('0x14')]&&_0x1052e1[_0x73fb('0x14')][_0x73fb('0x15')]&&_0x1052e1[_0x73fb('0xf')]&&_0x312912[_0x1052e1['Variable'][_0x73fb('0x15')]['toLowerCase']()]){_0x435d63[_0x1052e1['idField']]=_0x312912[_0x1052e1[_0x73fb('0x14')][_0x73fb('0x15')]['toLowerCase']()][_0x73fb('0x10')]();}});}return _0x435d63;}function createTicket(_0x1c9fa3,_0x2de617,_0x3ea9dd,_0x4ee169,_0x518d53,_0x70cc00,_0x460ae9){logger[_0x73fb('0x16')]('Creating\x20new\x20ticket...');var _0x2de79f=_[_0x73fb('0x17')]({'parent_id':'','assigned_user_id':_0x2de617['id'],'ticketpriorities':_0x73fb('0x18'),'ticketstatus':_0x73fb('0x19'),'ticket_title':intUtil[_0x73fb('0x1a')](_0x4ee169[_0x73fb('0x1b')],_0x518d53,'\x20'),'description':intUtil['getString'](_0x4ee169[_0x73fb('0x1c')],_0x518d53,'\x0a'),'contact_id':_0x3ea9dd['id']},getCustomFields(_0x70cc00,_0x518d53));var _0x474aaa={'method':_0x73fb('0x1d'),'uri':util['format']('%s/webservice.php',_0x1c9fa3[_0x73fb('0x1e')]),'form':{'operation':_0x73fb('0x1f'),'username':'admin','sessionName':_0x460ae9[_0x73fb('0x20')],'elementType':_0x73fb('0x21'),'element':JSON[_0x73fb('0x22')](_0x2de79f)},'json':!![]};return request(_0x474aaa)[_0x73fb('0x23')](function(_0x3695bd){if(_0x3695bd[_0x73fb('0x24')]){return BPromise[_0x73fb('0x25')]({'id':_0x3695bd[_0x73fb('0x26')]['id']});}else{throw new Error(util[_0x73fb('0x27')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON['stringify'](_0x3695bd[_0x73fb('0x28')])));}})[_0x73fb('0x29')](function(_0x3fa7f0){var _0x302bdb=_0x3fa7f0[_0x73fb('0x2a')]||0x1f4;logger[_0x73fb('0x28')](_0x73fb('0x2b'),'createTicket',_0x302bdb,JSON[_0x73fb('0x22')](_0x3fa7f0));});}function getUser(_0x281449,_0x1bba66,_0x46034e){if(intUtil[_0x73fb('0x2c')](_0x1bba66)){logger[_0x73fb('0x16')](_0x73fb('0x2d'),_0x1bba66);return request({'method':_0x73fb('0x2e'),'uri':util['format'](_0x73fb('0x2f'),_0x281449[_0x73fb('0x1e')]),'qs':{'operation':'query','username':'admin','sessionName':_0x46034e[_0x73fb('0x20')],'query':util[_0x73fb('0x27')](_0x73fb('0x30'),_0x1bba66)},'json':!![]})[_0x73fb('0x23')](function(_0x81b2f3){if(_0x81b2f3['success']&&_0x81b2f3[_0x73fb('0x26')][_0x73fb('0xb')]){logger[_0x73fb('0x16')](_0x73fb('0x31'));return BPromise[_0x73fb('0x25')]({'id':_0x81b2f3[_0x73fb('0x26')][0x0]['id'],'email':_0x81b2f3[_0x73fb('0x26')][0x0][_0x73fb('0x32')],'name':_0x81b2f3[_0x73fb('0x26')][0x0][_0x73fb('0x33')]+'\x20'+_0x81b2f3['result'][_0x73fb('0x34')]});}else{logger[_0x73fb('0x16')](_0x73fb('0x35'));return BPromise[_0x73fb('0x25')]({'id':_0x46034e[_0x73fb('0x36')],'email':_0x281449['username'],'name':_0x73fb('0x37')});}})[_0x73fb('0x29')](function(_0x4e1dde){var _0x41e3fc=_0x4e1dde['statusCode']||0x1f4;logger[_0x73fb('0x28')]('[vTiger],\x20%s,\x20%s,\x20%s','getUser',_0x41e3fc,JSON[_0x73fb('0x22')](_0x4e1dde));});}else{logger[_0x73fb('0x16')](_0x73fb('0x35'));return BPromise['resolve']({'id':_0x46034e[_0x73fb('0x36')],'email':_0x281449[_0x73fb('0x38')],'name':_0x73fb('0x37')})[_0x73fb('0x29')](function(_0x3901a9){var _0x787d37=_0x3901a9['statusCode']||0x1f4;logger['error'](_0x73fb('0x2b'),_0x73fb('0x39'),_0x787d37,JSON[_0x73fb('0x22')](_0x3901a9));});}}function getEndUser(_0x2ec4ca,_0x41659d,_0xe38a72,_0x57d24b){logger[_0x73fb('0x16')]('Searching\x20end\x20user\x20with\x20phone',_0xe38a72);return request({'method':_0x73fb('0x2e'),'uri':util[_0x73fb('0x27')](_0x73fb('0x2f'),_0x2ec4ca['remoteUri']),'qs':{'operation':_0x73fb('0x3a'),'username':_0x73fb('0x37'),'sessionName':_0x57d24b['sessionName'],'query':util[_0x73fb('0x27')](_0x73fb('0x3b'),_0xe38a72,_0xe38a72,_0xe38a72,_0xe38a72,_0xe38a72)},'json':!![]})[_0x73fb('0x23')](function(_0x417636){if(_0x417636[_0x73fb('0x24')]&&_0x417636[_0x73fb('0x26')][_0x73fb('0xb')]){logger[_0x73fb('0x16')](_0x73fb('0x3c'));return BPromise[_0x73fb('0x25')]({'id':_0x417636[_0x73fb('0x26')][0x0]['id'],'name':_0x417636[_0x73fb('0x26')][0x0]['firstname']+'\x20'+_0x417636['result'][0x0][_0x73fb('0x3d')],'phone':_0xe38a72});}else{logger['info'](_0x73fb('0x3e'));return request({'method':_0x73fb('0x1d'),'uri':util[_0x73fb('0x27')](_0x73fb('0x2f'),_0x2ec4ca[_0x73fb('0x1e')]),'form':{'operation':_0x73fb('0x1f'),'sessionName':_0x57d24b[_0x73fb('0x20')],'elementType':_0x73fb('0x3f'),'element':JSON['stringify']({'lastname':_0x41659d,'phone':_0xe38a72,'assigned_user_id':'\x20'})},'json':!![]})[_0x73fb('0x23')](function(_0x58353f){logger['info']('Enduser\x20created.');return BPromise[_0x73fb('0x25')]({'id':_0x58353f['result']['id'],'name':_0x58353f[_0x73fb('0x26')][_0x73fb('0x3d')],'phone':_0x58353f[_0x73fb('0x26')]['phone']});})[_0x73fb('0x29')](function(_0x43f930){var _0x314a83=_0x43f930['statusCode']||0x1f4;logger[_0x73fb('0x28')](_0x73fb('0x2b'),'getEndUser',_0x314a83,JSON[_0x73fb('0x22')](_0x43f930));});}});}function getConnection(_0x2d1ed2){var _0x545093=_0x2d1ed2[_0x73fb('0x38')];var _0x204ce5=_0x2d1ed2[_0x73fb('0x40')];return request({'method':'GET','uri':util[_0x73fb('0x27')]('%s/webservice.php',_0x2d1ed2[_0x73fb('0x1e')]),'qs':{'operation':_0x73fb('0x41'),'username':_0x545093},'json':!![]})[_0x73fb('0x23')](function(_0x522e2a){if(_0x522e2a[_0x73fb('0x24')]){return request({'method':_0x73fb('0x1d'),'uri':util[_0x73fb('0x27')](_0x73fb('0x2f'),_0x2d1ed2[_0x73fb('0x1e')]),'form':{'operation':_0x73fb('0x42'),'username':_0x73fb('0x37'),'accessKey':md5(_0x522e2a[_0x73fb('0x26')][_0x73fb('0x43')]+_0x204ce5)},'json':!![]});}})['then'](function(_0x54d979){if(_0x54d979[_0x73fb('0x24')]){return BPromise[_0x73fb('0x25')](_0x54d979[_0x73fb('0x26')]);}else{throw new Error(util[_0x73fb('0x27')](_0x73fb('0x44'),_0x2d1ed2['id']));}})['catch'](function(_0x68d1a1){var _0x2007b3=_0x68d1a1[_0x73fb('0x2a')]||0x1f4;logger[_0x73fb('0x28')](_0x73fb('0x2b'),_0x73fb('0x45'),_0x2007b3,JSON[_0x73fb('0x22')](_0x68d1a1));});}function request(_0x14f3df){logger['info'](_0x73fb('0x46'),JSON['stringify'](_0x14f3df));return rp(_0x14f3df);}exports[_0x73fb('0x47')]=function(_0x2bcbc9,_0x49824e,_0x21987e,_0x57d838,_0x363b50,_0x115c18){var _0x348fea,_0x36d311,_0x3bf689,_0x290529;_0x115c18[_0x73fb('0x1e')]=intUtil[_0x73fb('0x48')](_0x115c18[_0x73fb('0x1e')]);if(_0x363b50&&_0x363b50[_0x73fb('0x49')]){logger[_0x73fb('0x16')](_0x73fb('0x4a'),'Recording\x20is\x20enabled!');_0x49824e[_0x73fb('0x4b')]=util['format'](_0x73fb('0x4c'),_0x115c18[_0x73fb('0x4d')],_0x49824e['uniqueid'],md5(_0x49824e[_0x73fb('0x4e')]));}else{_0x49824e['recordingURL']='';}return getConnection(_0x115c18)[_0x73fb('0x23')](function(_0x18df9f){_0x290529=_0x18df9f;return getUser(_0x115c18,_0x57d838[_0x73fb('0x4f')],_0x290529);})[_0x73fb('0x23')](function(_0x34c32b){_0x348fea=_0x34c32b;logger[_0x73fb('0x16')](_0x73fb('0x50'),_0x348fea['id']);return getEndUser(_0x115c18,_0x49824e[_0x73fb('0x51')],_0x49824e[_0x73fb('0x52')],_0x290529);})[_0x73fb('0x23')](function(_0x34ce3e){_0x36d311=_0x34ce3e;logger[_0x73fb('0x16')](_0x73fb('0x53'),_0x36d311['id']);return createTicket(_0x115c18,_0x348fea,_0x36d311,_0x21987e,_0x49824e,_0x21987e['Fields'],_0x290529);})[_0x73fb('0x23')](function(_0x4d9330){_0x3bf689=_0x4d9330;logger[_0x73fb('0x16')](_0x73fb('0x54'));logger[_0x73fb('0x16')](_0x73fb('0x55'),_0x3bf689['id']);var _0x4b4961=util[_0x73fb('0x27')](_0x73fb('0x56'),_0x115c18[_0x73fb('0x1e')],_[_0x73fb('0x57')](_0x3bf689['id'],'x')[0x1]);logger['info'](_0x73fb('0x4a'),_0x73fb('0x58'));emit(util[_0x73fb('0x27')]('user:%s',_0x57d838[_0x73fb('0x15')]),_0x73fb('0x59'),{'uri':_0x4b4961});})[_0x73fb('0x29')](function(_0x57640d){logger[_0x73fb('0x28')](_0x73fb('0x4a'),JSON[_0x73fb('0x22')](_0x57640d));});};exports[_0x73fb('0x5a')]=function(_0x1e0a0e,_0x50fbda,_0x5c478d,_0x5e025c,_0x33fc5d,_0x2fefce,_0x175e83){var _0x25b5fb,_0x2c61a4,_0x25f6b7,_0x59759d;_0x2fefce['remoteUri']=intUtil[_0x73fb('0x48')](_0x2fefce['remoteUri']);_0x2fefce['serverUrl']=intUtil[_0x73fb('0x48')](_0x2fefce[_0x73fb('0x4d')]);if(_0x175e83&&_0x175e83[_0x73fb('0x5b')]&&_0x175e83['recordingFormat']!==_0x73fb('0x5c')){logger[_0x73fb('0x16')](_0x73fb('0x5d'),'Recording\x20is\x20enabled!');_0x50fbda[_0x73fb('0x4b')]=util[_0x73fb('0x27')](_0x73fb('0x4c'),_0x2fefce[_0x73fb('0x4d')],_0x50fbda[_0x73fb('0x4e')],md5(_0x50fbda[_0x73fb('0x4e')]));}return getConnection(_0x2fefce)[_0x73fb('0x23')](function(_0x31a3d0){_0x59759d=_0x31a3d0;return getUser(_0x2fefce,_0x5e025c['email'],_0x59759d);})[_0x73fb('0x23')](function(_0xd29611){_0x25b5fb=_0xd29611;logger['info'](_0x73fb('0x50'),_0x25b5fb['id']);return getEndUser(_0x2fefce,_0x50fbda[_0x73fb('0x5e')],_0x50fbda[_0x73fb('0x5f')],_0x59759d);})[_0x73fb('0x23')](function(_0x4472ee){_0x2c61a4=_0x4472ee;logger[_0x73fb('0x16')](_0x73fb('0x53'),_0x2c61a4['id']);return createTicket(_0x2fefce,_0x25b5fb,_0x2c61a4,_0x5c478d,_0x50fbda,_0x5c478d[_0x73fb('0x60')],_0x59759d);})[_0x73fb('0x23')](function(_0x397f07){_0x25f6b7=_0x397f07;logger[_0x73fb('0x16')]('Ticket\x20created!');logger['info'](_0x73fb('0x55'),_0x25f6b7['id']);var _0x3e6905=util[_0x73fb('0x27')](_0x73fb('0x56'),_0x2fefce[_0x73fb('0x1e')],_['split'](_0x25f6b7['id'],'x')[0x1]);logger[_0x73fb('0x16')](_0x73fb('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x73fb('0x27')](_0x73fb('0x61'),_0x5e025c['name']),_0x73fb('0x59'),{'uri':_0x3e6905});})[_0x73fb('0x29')](function(_0x301c92){logger['error'](_0x73fb('0x5d'),JSON[_0x73fb('0x22')](_0x301c92));});};exports['abandoned']=function(_0x190b9f,_0x244244,_0x776cb0,_0x11bef5,_0x5a09dc,_0x5b413b){var _0x46c2e9,_0x20b003,_0x474e5d,_0x31a285;_0x5b413b[_0x73fb('0x1e')]=intUtil['stripTrailingSlash'](_0x5b413b['remoteUri']);_0x5b413b[_0x73fb('0x4d')]=intUtil[_0x73fb('0x48')](_0x5b413b[_0x73fb('0x4d')]);if(_0x5a09dc&&_0x5a09dc[_0x73fb('0x49')]){logger[_0x73fb('0x16')](_0x73fb('0x62'),_0x73fb('0x63'));_0x244244[_0x73fb('0x4b')]=util[_0x73fb('0x27')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b413b[_0x73fb('0x4d')],_0x244244[_0x73fb('0x4e')],md5(_0x244244['uniqueid']));}else{_0x244244[_0x73fb('0x4b')]='';}return getConnection(_0x5b413b)['then'](function(_0x5ce936){_0x31a285=_0x5ce936;return getUser(_0x5b413b,'',_0x31a285);})[_0x73fb('0x23')](function(_0x4cbf89){_0x46c2e9=_0x4cbf89;logger[_0x73fb('0x16')](_0x73fb('0x50'),_0x46c2e9['id']);return getEndUser(_0x5b413b,_0x244244[_0x73fb('0x51')],_0x244244[_0x73fb('0x52')],_0x31a285);})[_0x73fb('0x23')](function(_0x1d9327){_0x20b003=_0x1d9327;logger[_0x73fb('0x16')](_0x73fb('0x53'),_0x20b003['id']);return createTicket(_0x5b413b,_0x46c2e9,_0x20b003,_0x776cb0,_0x244244,_0x776cb0['Fields'],_0x31a285);})[_0x73fb('0x23')](function(_0x2239bc){_0x474e5d=_0x2239bc;logger[_0x73fb('0x16')](_0x73fb('0x54'));logger[_0x73fb('0x16')](_0x73fb('0x55'),_0x474e5d['id']);})[_0x73fb('0x29')](function(_0x4cfaed){logger[_0x73fb('0x28')](_0x73fb('0x62'),JSON[_0x73fb('0x22')](_0x4cfaed));});};