b301cfa4e20ef4a40add774a1c92431bb9f5c626
[motion2.git] / server / services / agi / channel.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 _0xa4a9=['E_AGI_SOCKET_ERROR','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','write','inherits','prototype','sendRequest','command','sync','answer','ANSWER','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','VERBOSE\x20\x22%s\x22','isArray','join','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','HANGUP','isBoolean','isNumber','toString','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','exec','AGI','wait','WAIT','noop','label','lodash','events','EventEmitter','./reply','call','utf8','setEncoding','headers','emit','ready','line','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','replace','substr','indexOf','startsWith','split','length','match','error'];(function(_0x1d0aee,_0x2c4454){var _0x34ee2c=function(_0x6e3b9d){while(--_0x6e3b9d){_0x1d0aee['push'](_0x1d0aee['shift']());}};_0x34ee2c(++_0x2c4454);}(_0xa4a9,0x7a));var _0x9a4a=function(_0x31a576,_0x424419){_0x31a576=_0x31a576-0x0;var _0x30b1d3=_0xa4a9[_0x31a576];return _0x30b1d3;};'use strict';var util=require('util');var _=require(_0x9a4a('0x0'));var EventEmitter=require(_0x9a4a('0x1'))[_0x9a4a('0x2')];var AGIReply=require(_0x9a4a('0x3'));var AGIError=require('./error');function AGIChannel(_0xc1397f){var _0x5c0388=this,_0x2cee09=new AGIReply(),_0xbe5cb7=![],_0x2ef3ba={};EventEmitter[_0x9a4a('0x4')](_0x5c0388);_0xc1397f['setEncoding'](_0x9a4a('0x5'));_0xc1397f['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x2cee09[_0x9a4a('0x6')](_0x9a4a('0x5'));_0x2cee09['on'](_0x9a4a('0x7'),function(_0x43b571){for(var _0x2976d6 in _0x43b571){_0x5c0388[_0x2976d6]=_0x43b571[_0x2976d6];}_0x5c0388[_0x9a4a('0x8')](_0x9a4a('0x9'));});_0x2cee09['on'](_0x9a4a('0xa'),function(_0xd67dce){if(_0xd67dce['toLowerCase']()==_0x9a4a('0xb')){_0x5c0388[_0x9a4a('0x8')]('hangup');return;}if(_0xd67dce['substring'](0x0,0xb)==_0x9a4a('0xc')){_0xbe5cb7=!![];}if(_0xbe5cb7){_0x2ef3ba['rx']+=_0xd67dce+'\x0a';if(_0xd67dce[_0x9a4a('0xd')](_0x9a4a('0xe'))!=-0x1){_0xbe5cb7=![];}}else{_0x2ef3ba['rx']=_0xd67dce;}if(_0xbe5cb7){return;}if(typeof _0x2ef3ba['cb']==_0x9a4a('0xf')){var _0xc75743=_0x2ef3ba['rx'][_0x9a4a('0x10')](0x0,0x3),_0x2733ec=null,_0x124297=null;_0xc75743=parseInt(_0xc75743);if(isNaN(_0xc75743)){_0x2ef3ba['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x9a4a('0x11')});return;}if(_0xc75743!=0xc8){_0x2ef3ba['cb'](null,{'code':_0xc75743,'result':-0x1,'extra':'KO'});return;}_0x2733ec=_0x2ef3ba['rx'][_0x9a4a('0x10')](0x4)[_0x9a4a('0x12')]('result=','');if(_0x2733ec['indexOf']('\x20')!=-0x1){_0x2733ec=_0x2733ec[_0x9a4a('0x13')](0x0,_0x2733ec[_0x9a4a('0x14')]('\x20'));}if(_[_0x9a4a('0x15')](_0x2733ec,'-1')){_0x2733ec=parseInt(_0x2733ec);}_0x124297=_0x2ef3ba['rx'][_0x9a4a('0x16')]('\x20');if(_0x124297[_0x9a4a('0x17')]==0x3){_0x124297=_0x124297[0x2][_0x9a4a('0x10')](0x1,_0x124297[0x2][_0x9a4a('0x17')]-0x1);}else if(_0x124297[_0x9a4a('0x17')]>0x3){var _0x4d0827=/\((.+)\)/;var _0x4581d9=_0x2ef3ba['rx'][_0x9a4a('0x18')](_0x4d0827);if(_0x4581d9){_0x124297=_0x4581d9[0x1];}else{_0x124297=null;}}else{_0x124297=null;}_0x2ef3ba['cb'](null,{'code':_0xc75743,'result':_0x2733ec,'extra':_0x124297});}});_0xc1397f['on']('error',function(_0x2951fa){_0x5c0388[_0x9a4a('0x8')](_0x9a4a('0x19'),new AGIError(_0x9a4a('0x1a'),_0x2951fa['code']));});_0xc1397f['on']('close',function(){_0x5c0388[_0x9a4a('0x8')](_0x9a4a('0x1b'),new AGIError(_0x9a4a('0x1c')));});_0xc1397f['on']('timeout',function(){_0x5c0388['emit'](_0x9a4a('0x1d'),new AGIError(_0x9a4a('0x1e')));_0xc1397f[_0x9a4a('0x1f')]();});_0xc1397f[_0x9a4a('0x20')](_0x2cee09);this['command']=function(_0xbf41e9,_0xaea8af){var _0xbf41e9=_0xbf41e9||'',_0xaea8af=typeof _0xaea8af==_0x9a4a('0xf')?_0xaea8af:new Function();_0x2ef3ba={'tx':_0xbf41e9,'rx':'','cb':_0xaea8af};_0xc1397f[_0x9a4a('0x21')](_0xbf41e9+'\x0a');},this[_0x9a4a('0x1b')]=function(){_0xc1397f['destroy']();};}util[_0x9a4a('0x22')](AGIChannel,EventEmitter);AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x24')]=function(_0x49b20e){return this[_0x9a4a('0x25')][_0x9a4a('0x26')](this,_0x49b20e);};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x27')]=function(){return this[_0x9a4a('0x24')](_0x9a4a('0x28'));};AGIChannel[_0x9a4a('0x23')]['getData']=function(_0x240ed0,_0x1fced1,_0x2632b6){_0x240ed0=_0x240ed0===undefined?'beep':_0x240ed0;_0x1fced1=_0x1fced1===undefined?'5':_0x1fced1;_0x2632b6=_0x2632b6===undefined?'1':_0x2632b6;return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')](_0x9a4a('0x2a'),_0x240ed0,_0x1fced1*0x3e8,_0x2632b6));};AGIChannel[_0x9a4a('0x23')]['noop']=function(_0x5adccc){_0x5adccc=_0x5adccc||'NO\x20MESSAGE';return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')](_0x9a4a('0x2b'),_0x5adccc));};AGIChannel[_0x9a4a('0x23')]['exec']=function(_0x4eee71,_0x18a170){if(_[_0x9a4a('0x2c')](_0x18a170)){return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')]('EXEC\x20%s\x20%s',_0x4eee71,_0x18a170[_0x9a4a('0x2d')](',')));}return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')](_0x9a4a('0x2e'),_0x4eee71,_0x18a170));};AGIChannel['prototype'][_0x9a4a('0x2f')]=function(_0x33395f){return this['sendRequest'](util[_0x9a4a('0x29')](_0x9a4a('0x30'),_0x33395f));};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x31')]=function(_0x49dd52){return this['sendRequest'](util[_0x9a4a('0x29')](_0x9a4a('0x32'),_0x49dd52));};AGIChannel[_0x9a4a('0x23')]['setPriority']=function(_0x2cec9){return this['sendRequest'](util[_0x9a4a('0x29')]('SET\x20PRIORITY\x20%s',_0x2cec9));};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0xb')]=function(){return this[_0x9a4a('0x24')](_0x9a4a('0x33'));};AGIChannel['prototype']['setVariable']=function(_0x3ea2e2,_0x260fcd){var _0x40b0f6=_[_0x9a4a('0x34')](_0x260fcd)||_[_0x9a4a('0x35')](_0x260fcd)?_0x260fcd['toString']():_0x260fcd;return this['sendRequest'](util[_0x9a4a('0x29')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x3ea2e2,_0x40b0f6?_0x40b0f6[_0x9a4a('0x36')]()[_0x9a4a('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x9a4a('0x23')]['sayNumber']=function(_0x5a0822,_0x5236bd){return this['sendRequest'](util[_0x9a4a('0x29')]('SAY\x20NUMBER\x20%s\x20%s',_0x5a0822,_0x5236bd));};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x37')]=function(_0x55afb8,_0x500a69){return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')](_0x9a4a('0x38'),_0x55afb8,_0x500a69));};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x39')]=function(_0x5311b6,_0x1ddd73){return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')](_0x9a4a('0x3a'),_0x5311b6,_0x1ddd73));};AGIChannel['prototype'][_0x9a4a('0x3b')]=function(_0x25e254,_0x1ae3a7,_0x50c792){_0x1ae3a7=_0x1ae3a7||this['extension'];_0x50c792=_0x50c792||0x1;this[_0x9a4a('0x2f')](_0x25e254);this[_0x9a4a('0x31')](_0x1ae3a7);this[_0x9a4a('0x3c')](_0x50c792);return this['noop'](util[_0x9a4a('0x29')](_0x9a4a('0x3d'),_0x25e254,_0x1ae3a7,_0x50c792));};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x3e')]=function(_0x3236ff){return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')](_0x9a4a('0x3f'),_0x3236ff));};AGIChannel['prototype']['recordFile']=function(_0x1f36d3,_0x5e5f69,_0x392b46,_0x54d955,_0x2f35c9,_0x1bd11e){_0x5e5f69=_0x5e5f69||'wav';_0x392b46=_0x392b46||'';_0x54d955=_0x54d955===undefined?-0x1:_0x54d955==='-1'?-0x1:_0x54d955*0x3e8;_0x2f35c9=_0x2f35c9===undefined?'':'s='+_0x2f35c9;_0x1bd11e=_0x1bd11e?_0x9a4a('0x40'):'';return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')](_0x9a4a('0x41'),_0x1f36d3,_0x5e5f69,_0x392b46,_0x54d955,_0x1bd11e,_0x2f35c9));};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x42')]=function(_0x3cac7e,_0x1015a4){_0x1015a4=_0x1015a4||'';return this[_0x9a4a('0x24')](util[_0x9a4a('0x29')](_0x9a4a('0x43'),_0x3cac7e,_0x1015a4));};AGIChannel[_0x9a4a('0x23')]['agi']=function(_0x176e8d){return this[_0x9a4a('0x44')](_0x9a4a('0x45'),_0x176e8d);};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x46')]=function(_0x5dd6fe){return this[_0x9a4a('0x44')](_0x9a4a('0x47'),_0x5dd6fe);};AGIChannel[_0x9a4a('0x23')][_0x9a4a('0x19')]=function(_0x347da3,_0x48b6cb){this[_0x9a4a('0x48')](util[_0x9a4a('0x29')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x347da3['id'],_0x347da3[_0x9a4a('0x49')],_0x48b6cb));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;