Built motion from commit (unavailable).|2.4.4
[motion2.git] / server / services / ami / trigger / integration / sugarcrm.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 _0x6594=['outbound','%s/service/v4_1/rest.php','recordingFormat','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','error','abandoned','[ABANDONED]','calleridname','Ticket\x20created!','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','info','Creating\x20new\x20ticket...','getString','created_by','description','Descriptions','toISOString','slice','duration_minutes','parent_id','parent_type','Contacts','name','direction','length','forEach','idField','set_entry','JSON','format','Basic\x20%s','apiKey','get_server_info','stringify','isNil','Getting\x20agent\x20with\x20name','get_entry_list','user_name','find','entry_list','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','then','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','[HTTP]','merge','map','type','string','nameField','customField','toLowerCase','content','toString','custom_fields','push','variable','variableName','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','Calls','queue','remoteUri','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','calleridnum','Fields','Inbound','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url'];(function(_0x37cd56,_0x49d747){var _0x497e08=function(_0x2deb2d){while(--_0x2deb2d){_0x37cd56['push'](_0x37cd56['shift']());}};_0x497e08(++_0x49d747);}(_0x6594,0xf9));var _0x4659=function(_0x2c2b0f,_0x12cffb){_0x2c2b0f=_0x2c2b0f-0x0;var _0x2ae04d=_0x6594[_0x2c2b0f];return _0x2ae04d;};'use strict';var _=require(_0x4659('0x0'));var rp=require(_0x4659('0x1'));var BPromise=require('bluebird');var md5=require(_0x4659('0x2'));var util=require(_0x4659('0x3'));var Redis=require(_0x4659('0x4'));var intUtil=require('./util');var config=require(_0x4659('0x5'));var logger=require(_0x4659('0x6'))(_0x4659('0x7'));config[_0x4659('0x8')]=_[_0x4659('0x9')](config['redis'],{'host':_0x4659('0xa'),'port':0x18eb});var io=require(_0x4659('0xb'))(new Redis(config['redis']));var def={'method':_0x4659('0xc'),'json':!![]};function emit(_0x351ad8,_0x22f277,_0xabb80e){io['to'](_0x351ad8)['emit'](_0x22f277,_0xabb80e);}function getTicket(_0x1ce7e2,_0x33d130,_0x140d6e,_0x25a25b,_0x3f0970,_0x3977db,_0x3f17b7,_0x1a9968){logger[_0x4659('0xd')](_0x4659('0xe'));var _0x59104f=new Date();var _0x14e5d5=[{'name':'name','value':intUtil[_0x4659('0xf')](_0x25a25b['Subjects'],_0x3f0970,'\x20')},{'name':'assigned_user_id','value':_0x33d130['id']},{'name':_0x4659('0x10'),'value':_0x33d130['id']},{'name':_0x4659('0x11'),'value':intUtil['getString'](_0x25a25b[_0x4659('0x12')],_0x3f0970,'\x0a')},{'name':'date_start','value':_0x59104f[_0x4659('0x13')]()[_0x4659('0x14')](0x0,0x13)['replace']('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0x4659('0x15'),'value':'15'},{'name':_0x4659('0x16'),'value':_0x140d6e['id']},{'name':_0x4659('0x17'),'value':_0x4659('0x18')},{'name':'parent_name','value':_0x140d6e[_0x4659('0x19')]},{'name':_0x4659('0x1a'),'value':_0x1a9968}];if(_0x3977db[_0x4659('0x1b')]){_[_0x4659('0x1c')](_0x3977db,function(_0x1952e5){if(_0x3f0970[_0x1952e5['variableName']]){_0x14e5d5['push']({'name':_0x1952e5[_0x4659('0x1d')],'value':_0x3f0970[_0x1952e5['variableName']]});}});}return request({'form':{'method':_0x4659('0x1e'),'input_type':_0x4659('0x1f'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x3f17b7['id'],'module_name':'Calls','name_value_list':_0x14e5d5})}});}function getAuth(_0x3155eb){return util[_0x4659('0x20')](_0x4659('0x21'),new Buffer(_0x3155eb[_0x4659('0x22')]+':X')['toString']('base64'));}function getServerInfo(_0x288764){return request({'form':{'method':_0x4659('0x23'),'input_type':_0x4659('0x1f'),'response_type':_0x4659('0x1f'),'rest_data':JSON[_0x4659('0x24')]({'session':_0x288764['id']})}});}function getUser(_0x4c37c7,_0x2d9cb1,_0x55d814){if(!_[_0x4659('0x25')](_0x2d9cb1)){logger[_0x4659('0xd')](_0x4659('0x26'),_0x2d9cb1);return request({'form':{'method':_0x4659('0x27'),'input_type':_0x4659('0x1f'),'response_type':_0x4659('0x1f'),'rest_data':JSON[_0x4659('0x24')]({'session':_0x55d814['id'],'module_name':'Employees','query':util['format']('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x2d9cb1),'order_by':'','offset':'0','select_fields':['id','name',_0x4659('0x28')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x25e3ad){if(_0x25e3ad['entry_list'][_0x4659('0x1b')]){var _0x24b91b=_[_0x4659('0x29')](_0x25e3ad[_0x4659('0x2a')],function(_0x4c9ab2){return _0x4c9ab2['name_value_list'][_0x4659('0x28')][_0x4659('0x2b')]===_0x2d9cb1;});if(_0x24b91b){logger[_0x4659('0xd')](_0x4659('0x2c'));return BPromise[_0x4659('0x2d')]({'id':_0x24b91b['name_value_list']['id'][_0x4659('0x2b')],'name':_0x24b91b[_0x4659('0x2e')][_0x4659('0x19')][_0x4659('0x2b')]});}}logger['info'](_0x4659('0x2f'));return BPromise[_0x4659('0x2d')]({'id':_0x55d814['name_value_list']['user_id'][_0x4659('0x2b')],'name':_0x55d814[_0x4659('0x2e')]['user_name'][_0x4659('0x2b')]});});}else{logger['info'](_0x4659('0x30'));return BPromise[_0x4659('0x2d')]({'id':_0x55d814['name_value_list'][_0x4659('0x31')][_0x4659('0x2b')],'name':_0x55d814[_0x4659('0x2e')]['user_name'][_0x4659('0x2b')]});}}function getEndUser(_0x568a41,_0x34419a,_0x1a9d1b,_0x3bcc3e){logger[_0x4659('0xd')](_0x4659('0x32'),_0x1a9d1b);return request({'form':{'method':_0x4659('0x27'),'input_type':_0x4659('0x1f'),'response_type':_0x4659('0x1f'),'rest_data':JSON['stringify']({'session':_0x3bcc3e['id'],'module_name':_0x4659('0x18'),'query':util[_0x4659('0x20')](_0x4659('0x33'),_0x1a9d1b),'order_by':'','offset':'0','select_fields':['id','name','phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x4659('0x34')](function(_0x31640a){if(_0x31640a[_0x4659('0x2a')][_0x4659('0x1b')]){var _0x34dc27=_['find'](_0x31640a[_0x4659('0x2a')],function(_0x4f8f87){return _0x4f8f87['name_value_list'][_0x4659('0x35')]['value']===_0x1a9d1b;});if(_0x34dc27){logger['info'](_0x4659('0x36'));return BPromise['resolve']({'id':_0x34dc27[_0x4659('0x2e')]['id']['value'],'name':_0x34dc27['name_value_list'][_0x4659('0x19')]['value'],'phone':_0x34dc27[_0x4659('0x2e')][_0x4659('0x35')][_0x4659('0x2b')]});}}else{logger[_0x4659('0xd')](_0x4659('0x37'));return request({'form':{'method':_0x4659('0x1e'),'input_type':'JSON','response_type':_0x4659('0x1f'),'rest_data':JSON['stringify']({'session':_0x3bcc3e['id'],'module_name':_0x4659('0x18'),'name_value_list':[{'name':_0x4659('0x38'),'value':_0x34419a!==_0x4659('0x39')?_0x34419a:util[_0x4659('0x20')](_0x4659('0x3a'),_0x1a9d1b)},{'name':_0x4659('0x35'),'value':_0x1a9d1b}]})}})[_0x4659('0x34')](function(_0x3fd54b){logger[_0x4659('0xd')]('Enduser\x20created.');return BPromise[_0x4659('0x2d')]({'id':_0x3fd54b['id'],'name':_0x3fd54b['entry_list'][_0x4659('0x38')][_0x4659('0x2b')],'phone':_0x3fd54b[_0x4659('0x2a')][_0x4659('0x35')][_0x4659('0x2b')]});});}});}function request(_0x555e20){logger['debug'](_0x4659('0x3b'),JSON[_0x4659('0x24')](_0x555e20));return rp(_[_0x4659('0x3c')](def,_0x555e20));}function getTags(_0x7c8b19,_0x4a4cd2){var _0x1ad1e8=[];if(_0x7c8b19&&_0x7c8b19[_0x4659('0x1b')]>0x0){_0x1ad1e8=_[_0x4659('0x3d')](_0x7c8b19,_0x4a4cd2);}return _0x1ad1e8;}function getCustomFields(_0x1a01bc,_0x27fd70){var _0x4dbdf4=[];var _0x4520d9={'custom_fields':[]};if(_0x1a01bc[_0x4659('0x1b')]>0x0){_[_0x4659('0x1c')](_0x1a01bc,function(_0x3c9013){if(_0x3c9013[_0x4659('0x3e')]===_0x4659('0x3f')&&_0x3c9013[_0x4659('0x40')]&&!_0x3c9013[_0x4659('0x41')]){_0x4520d9[_0x3c9013[_0x4659('0x40')][_0x4659('0x42')]()]=_0x3c9013[_0x4659('0x43')][_0x4659('0x44')]();}else if(_0x3c9013[_0x4659('0x3e')]==='string'&&_0x3c9013[_0x4659('0x1d')]&&_0x3c9013[_0x4659('0x41')]){_0x4520d9[_0x4659('0x45')][_0x4659('0x46')]({'id':_0x3c9013[_0x4659('0x1d')],'value':_0x3c9013[_0x4659('0x43')][_0x4659('0x44')]()});}else if(_0x3c9013[_0x4659('0x3e')]===_0x4659('0x47')&&_0x3c9013['variableName']&&_0x3c9013[_0x4659('0x1d')]&&_0x3c9013[_0x4659('0x41')]){_0x27fd70[_0x3c9013[_0x4659('0x48')]]&&_0x4520d9[_0x4659('0x45')][_0x4659('0x46')]({'id':_0x3c9013[_0x4659('0x1d')],'value':_0x27fd70[_0x3c9013[_0x4659('0x48')]][_0x4659('0x44')]()});}else if(_0x3c9013[_0x4659('0x3e')]==='customVariable'&&_0x3c9013['Variable']&&_0x3c9013[_0x4659('0x49')][_0x4659('0x19')]&&_0x3c9013[_0x4659('0x1d')]&&_0x3c9013[_0x4659('0x41')]){_0x27fd70[_0x3c9013['Variable']['name'][_0x4659('0x42')]()]&&_0x4520d9['custom_fields']['push']({'id':_0x3c9013[_0x4659('0x1d')],'value':_0x27fd70[_0x3c9013[_0x4659('0x49')][_0x4659('0x19')][_0x4659('0x42')]()][_0x4659('0x44')]()});}});}return _0x4520d9;}function getConnection(_0x1624e1){return request({'method':_0x4659('0xc'),'form':{'method':_0x4659('0x4a'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x1624e1['username'],'password':_0x1624e1[_0x4659('0x4b')],'encryption':_0x4659('0x4c')},'application':_0x4659('0x4d')})}})[_0x4659('0x34')](function(_0x40c8f6){var _0x1e3ec3=_0x40c8f6;if(_0x1e3ec3['id']){def[_0x4659('0x4e')]=_0x1e3ec3['id'];return BPromise['resolve'](_0x1e3ec3);}else{throw new Error(util[_0x4659('0x20')](_0x4659('0x4f'),_0x1624e1['id']));}});}function setRelationship(_0xa653c3,_0x5d2636,_0x35901f,_0xdbb4b7){return request({'form':{'method':'set_relationship','input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x4659('0x24')]({'session':_0xa653c3['id'],'module_name':_0x4659('0x50'),'module_id':_0x35901f['id'],'link_field_name':_0xdbb4b7,'related_ids':[_0x5d2636['id']]})}});}exports[_0x4659('0x51')]=function(_0x1d4361,_0x440bbc,_0xf0ce4a,_0x199fff,_0x426b3f,_0x355468){var _0x4a9942,_0x4e6057,_0x2ef4c5,_0x50991f;_0x355468[_0x4659('0x52')]=intUtil[_0x4659('0x53')](_0x355468[_0x4659('0x52')]);_0x355468[_0x4659('0x54')]=intUtil[_0x4659('0x53')](_0x355468[_0x4659('0x54')]);def['uri']=util[_0x4659('0x20')]('%s/service/v4_1/rest.php',_0x355468[_0x4659('0x52')]);if(_0x426b3f&&_0x426b3f[_0x4659('0x55')]){logger[_0x4659('0xd')](_0x4659('0x56'),_0x4659('0x57'));_0x440bbc[_0x4659('0x58')]=util[_0x4659('0x20')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x355468['serverUrl'],_0x440bbc['uniqueid'],md5(_0x440bbc[_0x4659('0x59')]));}else{_0x440bbc[_0x4659('0x58')]='';}return getConnection(_0x355468)['then'](function(_0x327231){_0x50991f=_0x327231;return getUser(_0x355468,_0x199fff[_0x4659('0x19')],_0x50991f);})['then'](function(_0x42b6c0){_0x4a9942=_0x42b6c0;logger[_0x4659('0xd')]('The\x20User\x20ID\x20is:',_0x4a9942['id']);return getEndUser(_0x355468,_0x440bbc['calleridname'],_0x440bbc[_0x4659('0x5a')],_0x50991f);})[_0x4659('0x34')](function(_0x13426b){_0x4e6057=_0x13426b;logger['info']('The\x20Enduser\x20ID\x20is:',_0x4e6057['id']);return getTicket(_0x355468,_0x4a9942,_0x4e6057,_0xf0ce4a,_0x440bbc,_0xf0ce4a[_0x4659('0x5b')],_0x50991f,_0x4659('0x5c'));})[_0x4659('0x34')](function(_0x3e3213){_0x2ef4c5=_0x3e3213;logger[_0x4659('0xd')]('Ticket\x20created!');logger[_0x4659('0xd')](_0x4659('0x5d'),_0x2ef4c5['id']);return setRelationship(_0x50991f,_0x4a9942,_0x2ef4c5,_0x4659('0x5e'));})[_0x4659('0x34')](function(){return setRelationship(_0x50991f,_0x4e6057,_0x2ef4c5,_0x4659('0x5f'));})['then'](function(){return getServerInfo(_0x50991f);})[_0x4659('0x34')](function(_0x5487cd){var _0x4e955b=parseInt(_0x5487cd[_0x4659('0x60')][_0x4659('0x61')](0x0));var _0x28b002=util['format'](_0x4659('0x62'),_0x355468[_0x4659('0x52')],_0x2ef4c5['id']);if(_0x4e955b>0x6){_0x28b002=util[_0x4659('0x20')](_0x4659('0x63'),_0x355468['remoteUri'],_0x2ef4c5['id']);}logger[_0x4659('0xd')](_0x4659('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x4659('0x20')](_0x4659('0x64'),_0x199fff['name']),_0x4659('0x65'),{'uri':_0x28b002});})['catch'](function(_0x37edc3){logger['error'](_0x4659('0x56'),JSON[_0x4659('0x24')](_0x37edc3));});};exports[_0x4659('0x66')]=function(_0x3b71d4,_0x7d5e61,_0x45a4b2,_0x113648,_0x2fece8,_0x3a51d2,_0x107a55){var _0x176a40,_0x479a8c,_0x586cf5,_0xef8380;_0x3a51d2[_0x4659('0x52')]=intUtil[_0x4659('0x53')](_0x3a51d2[_0x4659('0x52')]);_0x3a51d2[_0x4659('0x54')]=intUtil[_0x4659('0x53')](_0x3a51d2[_0x4659('0x54')]);def['uri']=util['format'](_0x4659('0x67'),_0x3a51d2[_0x4659('0x52')]);if(_0x107a55&&_0x107a55[_0x4659('0x68')]&&_0x107a55[_0x4659('0x68')]!=='none'){logger[_0x4659('0xd')]('[OUTBOUND]',_0x4659('0x57'));_0x7d5e61[_0x4659('0x58')]=util[_0x4659('0x20')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3a51d2['serverUrl'],_0x7d5e61[_0x4659('0x59')],md5(_0x7d5e61['uniqueid']));}return getConnection(_0x3a51d2)[_0x4659('0x34')](function(_0x455ad3){_0xef8380=_0x455ad3;return getUser(_0x3a51d2,_0x113648['name'],_0xef8380);})[_0x4659('0x34')](function(_0xb7bfe4){_0x176a40=_0xb7bfe4;logger[_0x4659('0xd')](_0x4659('0x69'),_0x176a40['id']);return getEndUser(_0x3a51d2,_0x7d5e61[_0x4659('0x6a')],_0x7d5e61[_0x4659('0x6b')],_0xef8380);})[_0x4659('0x34')](function(_0x5ae7a5){_0x479a8c=_0x5ae7a5;logger[_0x4659('0xd')](_0x4659('0x6c'),_0x479a8c['id']);return getTicket(_0x3a51d2,_0x176a40,_0x479a8c,_0x45a4b2,_0x7d5e61,_0x45a4b2[_0x4659('0x5b')],_0xef8380,'Outbound');})['then'](function(_0x429c8c){_0x586cf5=_0x429c8c;logger['info']('Ticket\x20created!');logger[_0x4659('0xd')](_0x4659('0x5d'),_0x586cf5['id']);return setRelationship(_0xef8380,_0x176a40,_0x586cf5,_0x4659('0x5e'));})[_0x4659('0x34')](function(){return setRelationship(_0xef8380,_0x479a8c,_0x586cf5,_0x4659('0x5f'));})[_0x4659('0x34')](function(){return getServerInfo(_0xef8380);})[_0x4659('0x34')](function(_0x5b45be){var _0xe0f459=parseInt(_0x5b45be['version']['charAt'](0x0));var _0x439a7f=util[_0x4659('0x20')](_0x4659('0x62'),_0x3a51d2['remoteUri'],_0x586cf5['id']);if(_0xe0f459>0x6){_0x439a7f=util[_0x4659('0x20')](_0x4659('0x63'),_0x3a51d2['remoteUri'],_0x586cf5['id']);}logger[_0x4659('0xd')](_0x4659('0x6d'),_0x4659('0x6e'));emit(util['format'](_0x4659('0x64'),_0x113648[_0x4659('0x19')]),_0x4659('0x65'),{'uri':_0x439a7f});})[_0x4659('0x6f')](function(_0x1286c9){logger[_0x4659('0x70')](_0x4659('0x6d'),JSON[_0x4659('0x24')](_0x1286c9));});};exports[_0x4659('0x71')]=function(_0x22ae55,_0x3c44b0,_0x220cb0,_0x4e52fb,_0x5ba424,_0x4c458d){var _0x157c54,_0x5100fc,_0x1bac29,_0x2c8675;_0x4c458d['remoteUri']=intUtil[_0x4659('0x53')](_0x4c458d['remoteUri']);_0x4c458d[_0x4659('0x54')]=intUtil[_0x4659('0x53')](_0x4c458d[_0x4659('0x54')]);def['uri']=util['format'](_0x4659('0x67'),_0x4c458d[_0x4659('0x52')]);if(_0x5ba424&&_0x5ba424[_0x4659('0x55')]){logger[_0x4659('0xd')](_0x4659('0x72'),_0x4659('0x57'));_0x3c44b0['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4c458d['serverUrl'],_0x3c44b0[_0x4659('0x59')],md5(_0x3c44b0[_0x4659('0x59')]));}else{_0x3c44b0[_0x4659('0x58')]='';}return getConnection(_0x4c458d)[_0x4659('0x34')](function(_0x13c8eb){_0x2c8675=_0x13c8eb;if(!_[_0x4659('0x25')](_0x4e52fb)){return getUser(_0x4c458d,_0x4e52fb[_0x4659('0x19')],_0x2c8675);}else{return getUser(_0x4c458d,null,_0x2c8675);}})[_0x4659('0x34')](function(_0x245666){_0x157c54=_0x245666;logger['info'](_0x4659('0x69'),_0x157c54['id']);return getEndUser(_0x4c458d,_0x3c44b0[_0x4659('0x73')],_0x3c44b0[_0x4659('0x5a')],_0x2c8675);})[_0x4659('0x34')](function(_0x506298){_0x5100fc=_0x506298;logger[_0x4659('0xd')](_0x4659('0x6c'),_0x5100fc['id']);return getTicket(_0x4c458d,_0x157c54,_0x5100fc,_0x220cb0,_0x3c44b0,_0x220cb0[_0x4659('0x5b')],_0x2c8675,_0x4659('0x5c'));})[_0x4659('0x34')](function(_0x4dc477){_0x1bac29=_0x4dc477;logger[_0x4659('0xd')](_0x4659('0x74'));logger[_0x4659('0xd')](_0x4659('0x5d'),_0x1bac29['id']);return setRelationship(_0x2c8675,_0x157c54,_0x1bac29,'users');})[_0x4659('0x34')](function(){return setRelationship(_0x2c8675,_0x5100fc,_0x1bac29,_0x4659('0x5f'));})[_0x4659('0x34')](function(){return getServerInfo(_0x2c8675);})['catch'](function(_0x47b6f7){logger['error'](_0x4659('0x72'),JSON[_0x4659('0x24')](_0x47b6f7));});};