993a678fde793ba9d5035f5ba827a716b78826a2
[motion2.git] / server / services / ami / fax / index.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 _0xb2a1=['transferrate','calleridnum','\x20result\x20conversion\x20file\x20','message','create','parse','application/pdf','notify','.pdf','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','execOriginate','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','exports','util','lodash','bluebird','uuid','moment','path','tiff2pdf','../../../config/logger','fax','../ami','./rpcDb','./channel','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','faxstatus','syncReceiveFax','syncHangup','originateresponse','syncOriginateResponse','context','from-voip-provider','hasOwnProperty','exten','channel','uniqueid','name','info','\x20syncNewchannel\x20','prototype','variable','value','channelstate','channelstatedesc','syncNewExten','syncFaxStatus','operation','status','filename','remotestationid','pagestransferred','resolution'];(function(_0x614626,_0xba1a54){var _0x4fb999=function(_0xae4934){while(--_0xae4934){_0x614626['push'](_0x614626['shift']());}};_0x4fb999(++_0xba1a54);}(_0xb2a1,0xb9));var _0x1b2a=function(_0x222c76,_0x2a472e){_0x222c76=_0x222c76-0x0;var _0xd7ff8d=_0xb2a1[_0x222c76];return _0xd7ff8d;};'use strict';var util=require(_0x1b2a('0x0'));var _=require(_0x1b2a('0x1'));var BPromise=require(_0x1b2a('0x2'));var uuid=require(_0x1b2a('0x3'));var moment=require(_0x1b2a('0x4'));var path=require(_0x1b2a('0x5'));var tiff2pdf=require(_0x1b2a('0x6'));var gs=require('./util/gs');var logger=require(_0x1b2a('0x7'))(_0x1b2a('0x8'));var ami=require(_0x1b2a('0x9'));var rpcDb=require(_0x1b2a('0xa'));var Channel=require(_0x1b2a('0xb'));var ut=require('./util/util');var Action=require(_0x1b2a('0xc'));var faxAccount=require(_0x1b2a('0xd'));var attachment=require(_0x1b2a('0xe'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x491d2b){this[_0x1b2a('0xf')]={};this[_0x1b2a('0x10')]=_0x491d2b[_0x1b2a('0x10')];this[_0x1b2a('0x11')]=_0x491d2b['trunks'];this[_0x1b2a('0x12')]={};ami['on'](_0x1b2a('0x13'),this[_0x1b2a('0x14')][_0x1b2a('0x15')](this));ami['on'](_0x1b2a('0x16'),this[_0x1b2a('0x17')][_0x1b2a('0x15')](this));ami['on'](_0x1b2a('0x18'),this[_0x1b2a('0x19')][_0x1b2a('0x15')](this));ami['on']('newexten',this['syncNewExten'][_0x1b2a('0x15')](this));ami['on'](_0x1b2a('0x1a'),this['syncFaxStatus'][_0x1b2a('0x15')](this));ami['on']('receivefax',this[_0x1b2a('0x1b')][_0x1b2a('0x15')](this));ami['on']('hangup',this[_0x1b2a('0x1c')][_0x1b2a('0x15')](this));ami['on'](_0x1b2a('0x1d'),this[_0x1b2a('0x1e')][_0x1b2a('0x15')](this));}Fax['prototype']['syncNewchannel']=function(_0x1da0d9){if(_0x1da0d9[_0x1b2a('0x1f')]===_0x1b2a('0x20')){for(var _0x1d72a7 in this[_0x1b2a('0x10')]){if(this[_0x1b2a('0x10')][_0x1b2a('0x21')](_0x1d72a7)){if(_0x1da0d9[_0x1b2a('0x22')]===this[_0x1b2a('0x10')][_0x1d72a7]['localstationid']){this[_0x1b2a('0xf')][_0x1da0d9['uniqueid']]={};this['channels'][_0x1da0d9['uniqueid']][_0x1b2a('0x23')]=_0x1da0d9['channel'];this[_0x1b2a('0xf')][_0x1da0d9[_0x1b2a('0x24')]]['id']=this[_0x1b2a('0x10')][_0x1d72a7]['id'];this['channels'][_0x1da0d9[_0x1b2a('0x24')]][_0x1b2a('0x25')]=this['faxAccounts'][_0x1d72a7]['name'];logger[_0x1b2a('0x26')](_0x1da0d9[_0x1b2a('0x24')],_0x1b2a('0x27'));}}}}if(this[_0x1b2a('0x12')][_0x1da0d9[_0x1b2a('0x24')]]){this[_0x1b2a('0xf')][_0x1da0d9[_0x1b2a('0x24')]]={};this[_0x1b2a('0xf')][_0x1da0d9[_0x1b2a('0x24')]]['channel']=_0x1da0d9[_0x1b2a('0x23')];logger[_0x1b2a('0x26')](_0x1da0d9[_0x1b2a('0x24')],'\x20syncNewchannel\x20');}};Fax[_0x1b2a('0x28')]['syncVarSet']=function(_0x21166a){if(this[_0x1b2a('0xf')][_0x21166a[_0x1b2a('0x24')]]){for(var _0x34093f in _0x21166a[_0x1b2a('0x29')]){if(_0x21166a[_0x1b2a('0x29')]['hasOwnProperty'](_0x34093f)){this[_0x1b2a('0xf')][_0x21166a[_0x1b2a('0x24')]][_0x34093f]=_0x21166a[_0x1b2a('0x2a')];}}}};Fax[_0x1b2a('0x28')]['syncNewState']=function(_0x3b7d25){if(this['channels'][_0x3b7d25[_0x1b2a('0x24')]]){this[_0x1b2a('0xf')][_0x3b7d25[_0x1b2a('0x24')]][_0x1b2a('0x2b')]=_0x3b7d25[_0x1b2a('0x2b')];this[_0x1b2a('0xf')][_0x3b7d25['uniqueid']][_0x1b2a('0x2c')]=_0x3b7d25[_0x1b2a('0x2c')];}};Fax[_0x1b2a('0x28')][_0x1b2a('0x2d')]=function(_0x5013d9){if(this['channels'][_0x5013d9[_0x1b2a('0x24')]]){for(var _0x581fe6 in _0x5013d9[_0x1b2a('0x29')]){if(_0x5013d9[_0x1b2a('0x29')][_0x1b2a('0x21')](_0x581fe6)){this[_0x1b2a('0xf')][_0x5013d9[_0x1b2a('0x24')]][_0x581fe6]=_0x5013d9[_0x1b2a('0x2a')];}}}};Fax['prototype'][_0x1b2a('0x2e')]=function(_0x4f69c8){if(this[_0x1b2a('0xf')][_0x4f69c8[_0x1b2a('0x24')]]){this[_0x1b2a('0xf')][_0x4f69c8[_0x1b2a('0x24')]][_0x1b2a('0x2f')]=_0x4f69c8['operation'];this[_0x1b2a('0xf')][_0x4f69c8[_0x1b2a('0x24')]][_0x1b2a('0x30')]=_0x4f69c8[_0x1b2a('0x30')];this[_0x1b2a('0xf')][_0x4f69c8['uniqueid']]['localstationid']=_0x4f69c8['localstationid'];this['channels'][_0x4f69c8[_0x1b2a('0x24')]][_0x1b2a('0x31')]=_0x4f69c8['filename'];logger[_0x1b2a('0x26')](_0x4f69c8[_0x1b2a('0x24')],'\x20syncFaxStatus\x20');}};Fax[_0x1b2a('0x28')]['syncReceiveFax']=function(_0x44ea1f){var _0x2c22ac=this;if(this[_0x1b2a('0xf')][_0x44ea1f[_0x1b2a('0x24')]]){var _0x4aa8e4=this[_0x1b2a('0xf')][_0x44ea1f[_0x1b2a('0x24')]]['id'];this[_0x1b2a('0xf')][_0x44ea1f['uniqueid']][_0x1b2a('0x32')]=_0x44ea1f[_0x1b2a('0x32')];this[_0x1b2a('0xf')][_0x44ea1f[_0x1b2a('0x24')]][_0x1b2a('0x33')]=_0x44ea1f[_0x1b2a('0x33')];this[_0x1b2a('0xf')][_0x44ea1f[_0x1b2a('0x24')]]['localstationid']=_0x44ea1f['localstationid'];this['channels'][_0x44ea1f[_0x1b2a('0x24')]][_0x1b2a('0x34')]=_0x44ea1f[_0x1b2a('0x34')];this[_0x1b2a('0xf')][_0x44ea1f['uniqueid']][_0x1b2a('0x35')]=_0x44ea1f[_0x1b2a('0x35')];this['channels'][_0x44ea1f[_0x1b2a('0x24')]][_0x1b2a('0x31')]=_0x44ea1f[_0x1b2a('0x31')];this['channels'][_0x44ea1f[_0x1b2a('0x24')]][_0x1b2a('0x36')]=_0x44ea1f[_0x1b2a('0x36')];if(this['channels'][_0x44ea1f[_0x1b2a('0x24')]][_0x1b2a('0x33')]>0x0){tiff2pdf(_0x44ea1f[_0x1b2a('0x31')],'/var/opt/motion2/server/files/attachments/',function(_0x575562){logger[_0x1b2a('0x26')](_0x44ea1f['uniqueid'],_0x1b2a('0x37'),_0x575562[_0x1b2a('0x38')]);attachment[_0x1b2a('0x39')]({'name':path[_0x1b2a('0x3a')](_0x44ea1f[_0x1b2a('0x31')])[_0x1b2a('0x25')],'basename':path[_0x1b2a('0x3a')](_0x44ea1f[_0x1b2a('0x31')])[_0x1b2a('0x25')]+'.pdf','type':_0x1b2a('0x3b')})['then'](function(_0x281f1b){faxAccount[_0x1b2a('0x3c')](_0x4aa8e4,{'from':_0x44ea1f[_0x1b2a('0x36')],'mapKey':_0x1b2a('0x8'),'body':path[_0x1b2a('0x3a')](_0x44ea1f[_0x1b2a('0x31')])[_0x1b2a('0x25')]+_0x1b2a('0x3d'),'AttachmentId':_0x281f1b['id']})[_0x1b2a('0x3e')](function(_0x3e16c9){logger[_0x1b2a('0x3f')](_0x44ea1f[_0x1b2a('0x24')],_0x1b2a('0x40'),JSON[_0x1b2a('0x41')](_0x3e16c9));});})[_0x1b2a('0x3e')](function(_0x5cced6){logger['error'](_0x44ea1f[_0x1b2a('0x24')],'\x20receiveFax\x20',JSON['stringify'](_0x5cced6));});});}logger[_0x1b2a('0x26')](_0x44ea1f[_0x1b2a('0x24')],_0x1b2a('0x42'));}};Fax['prototype'][_0x1b2a('0x1e')]=function(_0x26abe7){if(this[_0x1b2a('0x12')][_0x26abe7[_0x1b2a('0x24')]]){_[_0x1b2a('0x43')](this[_0x1b2a('0xf')][_0x26abe7[_0x1b2a('0x24')]],_['pick'](_0x26abe7,[_0x1b2a('0x44'),_0x1b2a('0x45')]));}};function updateStatus(_0x28e584){if(_0x28e584[_0x1b2a('0x46')]){faxMessage[_0x1b2a('0x47')](_0x28e584[_0x1b2a('0x46')],{'failMessage':_0x1b2a('0x48')})[_0x1b2a('0x49')](function(_0x1f2bbe){ut[_0x1b2a('0x4a')](_0x1b2a('0x4b'),_0x1f2bbe);})[_0x1b2a('0x3e')](function(_0x27bcad){ut['logger'](_0x1b2a('0x4c'),_0x27bcad);});}else{ut[_0x1b2a('0x4a')](_0x1b2a('0x4d'));}}Fax[_0x1b2a('0x28')][_0x1b2a('0x4e')]=function(_0x58053a,_0x1773ef,_0x671080){var _0x5b2d47=this;var _0xda35e={};if(_0x1773ef){_0xda35e={'read':_0x1773ef};}else{_0xda35e={'failMessage':_0x671080};}if(this[_0x1b2a('0x12')][_0x58053a]['AttachmentId']){faxMessage[_0x1b2a('0x47')](this[_0x1b2a('0x12')][_0x58053a]['AttachmentId'],_0xda35e)[_0x1b2a('0x49')](function(_0x3cdd3b){ut[_0x1b2a('0x4a')]('[Fax][Message][Updated]',_0x3cdd3b);})[_0x1b2a('0x3e')](function(_0x477e83){ut[_0x1b2a('0x4a')](_0x1b2a('0x4f'),_0x477e83);})['finally'](function(){delete _0x5b2d47[_0x1b2a('0xf')][_0x58053a];delete _0x5b2d47[_0x1b2a('0x12')][_0x58053a];});}else{ut[_0x1b2a('0x4a')](_0x1b2a('0x50'));delete this[_0x1b2a('0xf')][_0x58053a];delete this[_0x1b2a('0x12')][_0x58053a];}};Fax[_0x1b2a('0x28')][_0x1b2a('0x1c')]=function(_0x980297){var _0x3b1298=this;if(this['channels'][_0x980297['uniqueid']]){if(this[_0x1b2a('0x12')][_0x980297[_0x1b2a('0x24')]]){this[_0x1b2a('0xf')][_0x980297[_0x1b2a('0x24')]]['id']=this[_0x1b2a('0x12')][_0x980297[_0x1b2a('0x24')]]['id'];this[_0x1b2a('0xf')][_0x980297[_0x1b2a('0x24')]][_0x1b2a('0x25')]=this[_0x1b2a('0x12')][_0x980297[_0x1b2a('0x24')]][_0x1b2a('0x25')];}logger[_0x1b2a('0x26')](_0x980297[_0x1b2a('0x24')],this[_0x1b2a('0x12')][_0x980297[_0x1b2a('0x24')]]?_0x1b2a('0x51'):_0x1b2a('0x52'),JSON[_0x1b2a('0x41')](this['channels'][_0x980297['uniqueid']]));if(this[_0x1b2a('0x12')][_0x980297[_0x1b2a('0x24')]]){if(this[_0x1b2a('0xf')][_0x980297[_0x1b2a('0x24')]][_0x1b2a('0x53')]>0x0&&this['channels'][_0x980297['uniqueid']][_0x1b2a('0x1a')]===_0x1b2a('0x54')){this[_0x1b2a('0x4e')](_0x980297[_0x1b2a('0x24')],!![]);}else{this['updateStatus'](_0x980297[_0x1b2a('0x24')],![],this[_0x1b2a('0xf')][_0x980297[_0x1b2a('0x24')]][_0x1b2a('0x55')]?_0x1b2a('0x56')+this[_0x1b2a('0xf')][_0x980297[_0x1b2a('0x24')]]['faxstatusstring']:'SENDING\x20FAILED');}}}};Fax[_0x1b2a('0x28')]['send']=function(_0x5ec92f){var _0x7f3042=this;return new BPromise(function(_0x4184d8,_0x1796ce){_0x7f3042[_0x1b2a('0x57')](_0x5ec92f,_0x7f3042['faxAccounts'][_0x5ec92f[_0x1b2a('0x58')]])[_0x1b2a('0x49')](function(_0x488542){ut[_0x1b2a('0x4a')]('[Fax][execOriginate][success]',_0x488542);_0x4184d8(ut[_0x1b2a('0x38')](_0x1b2a('0x59')));})[_0x1b2a('0x3e')](function(_0x4465a6){ut[_0x1b2a('0x4a')](_0x1b2a('0x5a'),_0x4465a6);updateStatus(_0x5ec92f);_0x1796ce(ut[_0x1b2a('0x38')](_0x1b2a('0x5b')));});});};Fax[_0x1b2a('0x28')][_0x1b2a('0x5c')]=function(_0x354a27){var _0x3b657f=this;return new BPromise(function(_0x55c1a2,_0x39ed71){var _0x1bd634=_0x3b657f[_0x1b2a('0x5d')](_0x3b657f[_0x1b2a('0x10')][_0x354a27[_0x1b2a('0x58')]]['Trunk'],_0x354a27);if(_0x1bd634[_0x1b2a('0x5e')]){_0x55c1a2(ut['message'](_0x1b2a('0x5f')));}else{_0x39ed71(ut[_0x1b2a('0x38')](_0x1bd634['message']));}});};function originate(_0x49a336,_0x49c671,_0x1f5899){return new BPromise(function(_0x2f116f,_0x68a62){if(_0x1f5899){var _0x521cb0=util[_0x1b2a('0x60')](_0x1b2a('0x61'),path[_0x1b2a('0x3a')](_0x49a336[_0x1b2a('0x5')])[_0x1b2a('0x25')],_0x49a336[_0x1b2a('0x5')]);gs[_0x1b2a('0x62')](_0x521cb0)['then'](function(){_0x49a336[_0x1b2a('0x5')]=util[_0x1b2a('0x60')](_0x1b2a('0x63'),path['parse'](_0x49a336[_0x1b2a('0x5')])['dir'],path['parse'](_0x49a336[_0x1b2a('0x5')])['name']);_0x49c671[_0x1b2a('0x64')]=_0x49a336[_0x1b2a('0x5')];ut[_0x1b2a('0x4a')](_0x1b2a('0x65'),'');ami['Action'](ut['variablesAction'](_0x49a336,_0x49c671))[_0x1b2a('0x49')](function(_0x192ef8){_0x2f116f(_0x192ef8);})['catch'](function(_0x57a393){_0x68a62(_0x57a393);});})[_0x1b2a('0x3e')](function(_0x225de2){_0x68a62(_0x225de2);});}else{ami[_0x1b2a('0x66')](ut[_0x1b2a('0x67')](_0x49a336,_0x49c671))['then'](function(_0x4674a7){_0x2f116f(_0x4674a7);})['catch'](function(_0x3a9930){_0x68a62(_0x3a9930);});}});}Fax[_0x1b2a('0x28')][_0x1b2a('0x57')]=function(_0x4f7ac4,_0x2a773a){var _0x487198=this;return new BPromise(function(_0x3f51ae,_0x4ef6f2){var _0x1d7f48=uuid['v4']();var _0x174359=ut[_0x1b2a('0x68')](_0x4f7ac4,_0x2a773a);_0x487198[_0x1b2a('0x12')][_0x1d7f48]=new Action(_0x1d7f48,_0x2a773a,_0x4f7ac4);var _0xa0dfbb=_0x487198[_0x1b2a('0x12')][_0x1d7f48];if(path[_0x1b2a('0x3a')](_0x4f7ac4[_0x1b2a('0x5')])[_0x1b2a('0x69')]===_0x1b2a('0x3d')){originate(_0xa0dfbb,_0x174359,!![])['then'](function(_0x813f41){_0x3f51ae(_0x813f41);})[_0x1b2a('0x3e')](function(_0x123e3d){_0x4ef6f2(_0x123e3d);});}else{originate(_0xa0dfbb,_0x174359,![])[_0x1b2a('0x49')](function(_0x41da73){_0x3f51ae(_0x41da73);})['catch'](function(_0x400f45){_0x4ef6f2(_0x400f45);});}});};Fax['prototype'][_0x1b2a('0x6a')]=function(_0x2a0da0){return!_['isNil'](_0x2a0da0)&&!_[_0x1b2a('0x6b')](_0x2a0da0[_0x1b2a('0x25')])&&!_[_0x1b2a('0x6b')](_0x2a0da0[_0x1b2a('0x6c')])&&_0x2a0da0[_0x1b2a('0x6c')]&&!_[_0x1b2a('0x6b')](this['trunks'][util['format'](_0x1b2a('0x6d'),_0x2a0da0[_0x1b2a('0x25')])])&&!_[_0x1b2a('0x6b')](this[_0x1b2a('0x11')][util[_0x1b2a('0x60')](_0x1b2a('0x6d'),_0x2a0da0[_0x1b2a('0x25')])]['status'])&&(this[_0x1b2a('0x11')][util[_0x1b2a('0x60')](_0x1b2a('0x6d'),_0x2a0da0['name'])][_0x1b2a('0x30')]===_0x1b2a('0x6e')||this[_0x1b2a('0x11')][util[_0x1b2a('0x60')](_0x1b2a('0x6d'),_0x2a0da0['name'])]['status']==='unmonitored');};Fax[_0x1b2a('0x28')][_0x1b2a('0x5d')]=function(_0x41ed60,_0xa4de6d){if(!this['isTrunkReachable'](_0x41ed60)){ut[_0x1b2a('0x4a')](_0x1b2a('0x6f'),_['isNil'](_0x41ed60)?'':_0x41ed60[_0x1b2a('0x25')]+_0x1b2a('0x70'));return{'isValid':![],'message':_0x1b2a('0x71')};}if(_[_0x1b2a('0x6b')](_0xa4de6d[_0x1b2a('0x8')])){ut['logger'](_0x1b2a('0x72'),JSON[_0x1b2a('0x41')](_0xa4de6d));return{'isValid':![],'message':_0x1b2a('0x73')};}if(_[_0x1b2a('0x6b')](_0xa4de6d[_0x1b2a('0x5')])){ut[_0x1b2a('0x4a')](_0x1b2a('0x74'),JSON['stringify'](_0xa4de6d));return{'isValid':![],'message':_0x1b2a('0x75')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0x1b2a('0x76')]=Fax;