76e13359172117d8dea75e3f228a9fb152a7c62d
[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 _0x2557=['filename','syncReceiveFax','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','.pdf','application/pdf','then','notify','catch','error','stringify','\x20receiveFax\x20','merge','pick','response','reason','update','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','updateStatus','[Fax][Message][NoUpdate1]','finally','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','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','dir','Convert\x20pdf\x20to\x20tif','variablesAction','addVariables','ext','isNil','active','SIP/%s','reachable','unmonitored','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','bluebird','uuid','moment','path','tiff2pdf','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','hangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','info','variable','hasOwnProperty','value','channelstate','channelstatedesc','operation','status'];(function(_0x2f81b9,_0x2022ff){var _0x572165=function(_0x3c2d53){while(--_0x3c2d53){_0x2f81b9['push'](_0x2f81b9['shift']());}};_0x572165(++_0x2022ff);}(_0x2557,0x1b5));var _0x7255=function(_0x528820,_0x4748ee){_0x528820=_0x528820-0x0;var _0x309f12=_0x2557[_0x528820];return _0x309f12;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0x7255('0x0'));var uuid=require(_0x7255('0x1'));var moment=require(_0x7255('0x2'));var path=require(_0x7255('0x3'));var tiff2pdf=require(_0x7255('0x4'));var gs=require('./util/gs');var logger=require(_0x7255('0x5'))(_0x7255('0x6'));var ami=require(_0x7255('0x7'));var rpcDb=require(_0x7255('0x8'));var Channel=require(_0x7255('0x9'));var ut=require(_0x7255('0xa'));var Action=require(_0x7255('0xb'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0x7255('0xc'));var faxMessage=require(_0x7255('0xd'));function Fax(_0x9cfe68){this[_0x7255('0xe')]={};this['faxAccounts']=_0x9cfe68[_0x7255('0xf')];this[_0x7255('0x10')]=_0x9cfe68[_0x7255('0x10')];this[_0x7255('0x11')]={};ami['on']('newchannel',this['syncNewchannel'][_0x7255('0x12')](this));ami['on'](_0x7255('0x13'),this[_0x7255('0x14')][_0x7255('0x12')](this));ami['on'](_0x7255('0x15'),this[_0x7255('0x16')][_0x7255('0x12')](this));ami['on'](_0x7255('0x17'),this[_0x7255('0x18')][_0x7255('0x12')](this));ami['on'](_0x7255('0x19'),this[_0x7255('0x1a')][_0x7255('0x12')](this));ami['on'](_0x7255('0x1b'),this['syncReceiveFax'][_0x7255('0x12')](this));ami['on'](_0x7255('0x1c'),this['syncHangup'][_0x7255('0x12')](this));ami['on'](_0x7255('0x1d'),this[_0x7255('0x1e')]['bind'](this));}Fax[_0x7255('0x1f')]['syncNewchannel']=function(_0x332b85){if(_0x332b85[_0x7255('0x20')]===_0x7255('0x21')){for(var _0xa70121 in this[_0x7255('0xf')]){if(this[_0x7255('0xf')]['hasOwnProperty'](_0xa70121)){if(_0x332b85['exten']===this[_0x7255('0xf')][_0xa70121][_0x7255('0x22')]){this['channels'][_0x332b85['uniqueid']]={};this[_0x7255('0xe')][_0x332b85[_0x7255('0x23')]]['channel']=_0x332b85[_0x7255('0x24')];this['channels'][_0x332b85[_0x7255('0x23')]]['id']=this[_0x7255('0xf')][_0xa70121]['id'];this['channels'][_0x332b85[_0x7255('0x23')]][_0x7255('0x25')]=this[_0x7255('0xf')][_0xa70121][_0x7255('0x25')];logger['info'](_0x332b85[_0x7255('0x23')],_0x7255('0x26'));}}}}if(this[_0x7255('0x11')][_0x332b85[_0x7255('0x23')]]){this['channels'][_0x332b85[_0x7255('0x23')]]={};this[_0x7255('0xe')][_0x332b85['uniqueid']][_0x7255('0x24')]=_0x332b85[_0x7255('0x24')];logger[_0x7255('0x27')](_0x332b85[_0x7255('0x23')],_0x7255('0x26'));}};Fax[_0x7255('0x1f')]['syncVarSet']=function(_0x554cce){if(this[_0x7255('0xe')][_0x554cce[_0x7255('0x23')]]){for(var _0x1ae9d4 in _0x554cce[_0x7255('0x28')]){if(_0x554cce[_0x7255('0x28')][_0x7255('0x29')](_0x1ae9d4)){this[_0x7255('0xe')][_0x554cce[_0x7255('0x23')]][_0x1ae9d4]=_0x554cce[_0x7255('0x2a')];}}}};Fax[_0x7255('0x1f')]['syncNewState']=function(_0x468616){if(this[_0x7255('0xe')][_0x468616[_0x7255('0x23')]]){this['channels'][_0x468616['uniqueid']][_0x7255('0x2b')]=_0x468616['channelstate'];this[_0x7255('0xe')][_0x468616[_0x7255('0x23')]][_0x7255('0x2c')]=_0x468616['channelstatedesc'];}};Fax[_0x7255('0x1f')][_0x7255('0x18')]=function(_0xd57087){if(this[_0x7255('0xe')][_0xd57087[_0x7255('0x23')]]){for(var _0x1a0fe2 in _0xd57087[_0x7255('0x28')]){if(_0xd57087[_0x7255('0x28')][_0x7255('0x29')](_0x1a0fe2)){this[_0x7255('0xe')][_0xd57087[_0x7255('0x23')]][_0x1a0fe2]=_0xd57087[_0x7255('0x2a')];}}}};Fax[_0x7255('0x1f')]['syncFaxStatus']=function(_0x44bf6c){if(this[_0x7255('0xe')][_0x44bf6c['uniqueid']]){this[_0x7255('0xe')][_0x44bf6c[_0x7255('0x23')]][_0x7255('0x2d')]=_0x44bf6c[_0x7255('0x2d')];this[_0x7255('0xe')][_0x44bf6c[_0x7255('0x23')]][_0x7255('0x2e')]=_0x44bf6c[_0x7255('0x2e')];this[_0x7255('0xe')][_0x44bf6c['uniqueid']][_0x7255('0x22')]=_0x44bf6c[_0x7255('0x22')];this[_0x7255('0xe')][_0x44bf6c[_0x7255('0x23')]]['filename']=_0x44bf6c[_0x7255('0x2f')];logger[_0x7255('0x27')](_0x44bf6c[_0x7255('0x23')],'\x20syncFaxStatus\x20');}};Fax[_0x7255('0x1f')][_0x7255('0x30')]=function(_0x46a48e){var _0x7b4d30=this;if(this[_0x7255('0xe')][_0x46a48e[_0x7255('0x23')]]){var _0x46a3ae=this[_0x7255('0xe')][_0x46a48e[_0x7255('0x23')]]['id'];this[_0x7255('0xe')][_0x46a48e[_0x7255('0x23')]]['remotestationid']=_0x46a48e[_0x7255('0x31')];this['channels'][_0x46a48e[_0x7255('0x23')]][_0x7255('0x32')]=_0x46a48e['pagestransferred'];this[_0x7255('0xe')][_0x46a48e['uniqueid']][_0x7255('0x22')]=_0x46a48e[_0x7255('0x22')];this[_0x7255('0xe')][_0x46a48e['uniqueid']]['resolution']=_0x46a48e[_0x7255('0x33')];this[_0x7255('0xe')][_0x46a48e[_0x7255('0x23')]]['transferrate']=_0x46a48e[_0x7255('0x34')];this[_0x7255('0xe')][_0x46a48e[_0x7255('0x23')]][_0x7255('0x2f')]=_0x46a48e['filename'];this[_0x7255('0xe')][_0x46a48e[_0x7255('0x23')]][_0x7255('0x35')]=_0x46a48e['calleridnum'];if(this['channels'][_0x46a48e[_0x7255('0x23')]][_0x7255('0x32')]>0x0){tiff2pdf(_0x46a48e['filename'],_0x7255('0x36'),function(_0x28cd41){logger[_0x7255('0x27')](_0x46a48e[_0x7255('0x23')],_0x7255('0x37'),_0x28cd41[_0x7255('0x38')]);attachment['create']({'name':path[_0x7255('0x39')](_0x46a48e[_0x7255('0x2f')])[_0x7255('0x25')],'basename':path['parse'](_0x46a48e[_0x7255('0x2f')])['name']+_0x7255('0x3a'),'type':_0x7255('0x3b')})[_0x7255('0x3c')](function(_0xbb409){faxAccount[_0x7255('0x3d')](_0x46a3ae,{'from':_0x46a48e[_0x7255('0x35')],'mapKey':'fax','body':path[_0x7255('0x39')](_0x46a48e[_0x7255('0x2f')])['name']+_0x7255('0x3a'),'AttachmentId':_0xbb409['id']})[_0x7255('0x3e')](function(_0x20a158){logger[_0x7255('0x3f')](_0x46a48e[_0x7255('0x23')],'\x20notify\x20',JSON[_0x7255('0x40')](_0x20a158));});})['catch'](function(_0x5e17d3){logger[_0x7255('0x3f')](_0x46a48e['uniqueid'],_0x7255('0x41'),JSON[_0x7255('0x40')](_0x5e17d3));});});}logger[_0x7255('0x27')](_0x46a48e[_0x7255('0x23')],_0x7255('0x41'));}};Fax['prototype'][_0x7255('0x1e')]=function(_0x176cdd){if(this[_0x7255('0x11')][_0x176cdd[_0x7255('0x23')]]){_[_0x7255('0x42')](this['channels'][_0x176cdd[_0x7255('0x23')]],_[_0x7255('0x43')](_0x176cdd,[_0x7255('0x44'),_0x7255('0x45')]));}};function updateStatus(_0x43846c){if(_0x43846c['AttachmentId']){faxMessage[_0x7255('0x46')](_0x43846c[_0x7255('0x47')],{'failMessage':_0x7255('0x48')})[_0x7255('0x3c')](function(_0x57981b){ut[_0x7255('0x49')](_0x7255('0x4a'),_0x57981b);})[_0x7255('0x3e')](function(_0x281854){ut['logger'](_0x7255('0x4b'),_0x281854);});}else{ut[_0x7255('0x49')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0x7255('0x1f')][_0x7255('0x4c')]=function(_0x1e85a3,_0x300339,_0x3cbb61){var _0x7d73e9=this;var _0x5952e6={};if(_0x300339){_0x5952e6={'read':_0x300339};}else{_0x5952e6={'failMessage':_0x3cbb61};}if(this[_0x7255('0x11')][_0x1e85a3][_0x7255('0x47')]){faxMessage[_0x7255('0x46')](this[_0x7255('0x11')][_0x1e85a3][_0x7255('0x47')],_0x5952e6)[_0x7255('0x3c')](function(_0x4f3c2f){ut[_0x7255('0x49')]('[Fax][Message][Updated]',_0x4f3c2f);})[_0x7255('0x3e')](function(_0x16dabd){ut[_0x7255('0x49')](_0x7255('0x4d'),_0x16dabd);})[_0x7255('0x4e')](function(){delete _0x7d73e9[_0x7255('0xe')][_0x1e85a3];delete _0x7d73e9[_0x7255('0x11')][_0x1e85a3];});}else{ut['logger']('[Fax][Message][NoUpdate2]');delete this[_0x7255('0xe')][_0x1e85a3];delete this['actions'][_0x1e85a3];}};Fax[_0x7255('0x1f')][_0x7255('0x4f')]=function(_0x224842){var _0x5907ab=this;if(this[_0x7255('0xe')][_0x224842[_0x7255('0x23')]]){if(this[_0x7255('0x11')][_0x224842['uniqueid']]){this[_0x7255('0xe')][_0x224842['uniqueid']]['id']=this['actions'][_0x224842[_0x7255('0x23')]]['id'];this['channels'][_0x224842[_0x7255('0x23')]]['name']=this['actions'][_0x224842[_0x7255('0x23')]][_0x7255('0x25')];}logger[_0x7255('0x27')](_0x224842[_0x7255('0x23')],this[_0x7255('0x11')][_0x224842[_0x7255('0x23')]]?_0x7255('0x50'):_0x7255('0x51'),JSON[_0x7255('0x40')](this[_0x7255('0xe')][_0x224842[_0x7255('0x23')]]));if(this[_0x7255('0x11')][_0x224842[_0x7255('0x23')]]){if(this['channels'][_0x224842[_0x7255('0x23')]][_0x7255('0x52')]>0x0&&this[_0x7255('0xe')][_0x224842[_0x7255('0x23')]][_0x7255('0x19')]===_0x7255('0x53')){this[_0x7255('0x4c')](_0x224842[_0x7255('0x23')],!![]);}else{this[_0x7255('0x4c')](_0x224842['uniqueid'],![],this[_0x7255('0xe')][_0x224842[_0x7255('0x23')]][_0x7255('0x54')]?_0x7255('0x55')+this[_0x7255('0xe')][_0x224842['uniqueid']][_0x7255('0x54')]:_0x7255('0x56'));}}}};Fax[_0x7255('0x1f')][_0x7255('0x57')]=function(_0x4bf545){var _0x3ad466=this;return new BPromise(function(_0x9db396,_0x25064a){_0x3ad466[_0x7255('0x58')](_0x4bf545,_0x3ad466[_0x7255('0xf')][_0x4bf545[_0x7255('0x59')]])[_0x7255('0x3c')](function(_0x5064a9){ut['logger'](_0x7255('0x5a'),_0x5064a9);_0x9db396(ut[_0x7255('0x38')](_0x7255('0x5b')));})[_0x7255('0x3e')](function(_0x34298d){ut[_0x7255('0x49')](_0x7255('0x5c'),_0x34298d);updateStatus(_0x4bf545);_0x25064a(ut[_0x7255('0x38')](_0x7255('0x5d')));});});};Fax['prototype'][_0x7255('0x5e')]=function(_0x12001a){var _0x166ca4=this;return new BPromise(function(_0x59580f,_0x5740e5){var _0x244689=_0x166ca4[_0x7255('0x5f')](_0x166ca4[_0x7255('0xf')][_0x12001a[_0x7255('0x59')]][_0x7255('0x60')],_0x12001a);if(_0x244689[_0x7255('0x61')]){_0x59580f(ut[_0x7255('0x38')](_0x7255('0x62')));}else{_0x5740e5(ut[_0x7255('0x38')](_0x244689['message']));}});};function originate(_0x3dbfea,_0x5f2718,_0x2ca8d6){return new BPromise(function(_0x4046a1,_0x1f8d1f){if(_0x2ca8d6){var _0x41a10c=util[_0x7255('0x63')](_0x7255('0x64'),path[_0x7255('0x39')](_0x3dbfea['path'])[_0x7255('0x25')],_0x3dbfea['path']);gs[_0x7255('0x65')](_0x41a10c)['then'](function(){_0x3dbfea[_0x7255('0x3')]=util[_0x7255('0x63')]('%s/%s.tif',path['parse'](_0x3dbfea[_0x7255('0x3')])[_0x7255('0x66')],path[_0x7255('0x39')](_0x3dbfea[_0x7255('0x3')])[_0x7255('0x25')]);_0x5f2718['XMF-PATH']=_0x3dbfea[_0x7255('0x3')];ut[_0x7255('0x49')](_0x7255('0x67'),'');ami['Action'](ut[_0x7255('0x68')](_0x3dbfea,_0x5f2718))[_0x7255('0x3c')](function(_0x597004){_0x4046a1(_0x597004);})['catch'](function(_0x536e60){_0x1f8d1f(_0x536e60);});})[_0x7255('0x3e')](function(_0x1564bb){_0x1f8d1f(_0x1564bb);});}else{ami['Action'](ut[_0x7255('0x68')](_0x3dbfea,_0x5f2718))[_0x7255('0x3c')](function(_0x114a05){_0x4046a1(_0x114a05);})[_0x7255('0x3e')](function(_0x43d54c){_0x1f8d1f(_0x43d54c);});}});}Fax[_0x7255('0x1f')][_0x7255('0x58')]=function(_0x3684c4,_0x43e2f4){var _0x360b58=this;return new BPromise(function(_0x40ba67,_0x5320b5){var _0x1ed3b4=uuid['v4']();var _0x4bdcc9=ut[_0x7255('0x69')](_0x3684c4,_0x43e2f4);_0x360b58[_0x7255('0x11')][_0x1ed3b4]=new Action(_0x1ed3b4,_0x43e2f4,_0x3684c4);var _0x27701a=_0x360b58[_0x7255('0x11')][_0x1ed3b4];if(path[_0x7255('0x39')](_0x3684c4[_0x7255('0x3')])[_0x7255('0x6a')]===_0x7255('0x3a')){originate(_0x27701a,_0x4bdcc9,!![])['then'](function(_0x1034ff){_0x40ba67(_0x1034ff);})[_0x7255('0x3e')](function(_0x2e1239){_0x5320b5(_0x2e1239);});}else{originate(_0x27701a,_0x4bdcc9,![])[_0x7255('0x3c')](function(_0x29ac56){_0x40ba67(_0x29ac56);})[_0x7255('0x3e')](function(_0x4658a6){_0x5320b5(_0x4658a6);});}});};Fax[_0x7255('0x1f')]['isTrunkReachable']=function(_0x1071cb){return!_[_0x7255('0x6b')](_0x1071cb)&&!_['isNil'](_0x1071cb['name'])&&!_[_0x7255('0x6b')](_0x1071cb[_0x7255('0x6c')])&&_0x1071cb[_0x7255('0x6c')]&&!_[_0x7255('0x6b')](this['trunks'][util[_0x7255('0x63')](_0x7255('0x6d'),_0x1071cb[_0x7255('0x25')])])&&!_['isNil'](this[_0x7255('0x10')][util[_0x7255('0x63')]('SIP/%s',_0x1071cb[_0x7255('0x25')])][_0x7255('0x2e')])&&(this[_0x7255('0x10')][util[_0x7255('0x63')](_0x7255('0x6d'),_0x1071cb[_0x7255('0x25')])][_0x7255('0x2e')]===_0x7255('0x6e')||this['trunks'][util[_0x7255('0x63')](_0x7255('0x6d'),_0x1071cb[_0x7255('0x25')])][_0x7255('0x2e')]===_0x7255('0x6f'));};Fax['prototype'][_0x7255('0x5f')]=function(_0x7c3a31,_0x5cd0f4){if(!this[_0x7255('0x70')](_0x7c3a31)){ut['logger'](_0x7255('0x71'),_[_0x7255('0x6b')](_0x7c3a31)?'':_0x7c3a31[_0x7255('0x25')]+_0x7255('0x72'));return{'isValid':![],'message':_0x7255('0x73')};}if(_[_0x7255('0x6b')](_0x5cd0f4[_0x7255('0x6')])){ut[_0x7255('0x49')](_0x7255('0x74'),JSON['stringify'](_0x5cd0f4));return{'isValid':![],'message':_0x7255('0x75')};}if(_[_0x7255('0x6b')](_0x5cd0f4[_0x7255('0x3')])){ut[_0x7255('0x49')](_0x7255('0x76'),JSON[_0x7255('0x40')](_0x5cd0f4));return{'isValid':![],'message':_0x7255('0x77')};}return{'isValid':!![],'message':_0x7255('0x78')};};module['exports']=Fax;