a0117eee5498e8df9c69810129ae4d11d2454bc2
[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 _0x49fc=['match','error','emit','code','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','close','destroy','prototype','sendRequest','sync','answer','ANSWER','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','isArray','EXEC\x20%s\x20%s','join','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','setContext','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','exec','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8','headers','ready','line','toLowerCase','hangup','substring','search','function','no\x20code','replace','result=','substr','indexOf','startsWith','length'];(function(_0xf31a,_0x5f5b89){var _0x4df458=function(_0x1ceeaf){while(--_0x1ceeaf){_0xf31a['push'](_0xf31a['shift']());}};_0x4df458(++_0x5f5b89);}(_0x49fc,0xca));var _0xc49f=function(_0x3930e2,_0x5223b7){_0x3930e2=_0x3930e2-0x0;var _0x9ea0c5=_0x49fc[_0x3930e2];return _0x9ea0c5;};'use strict';var util=require('util');var _=require(_0xc49f('0x0'));var EventEmitter=require(_0xc49f('0x1'))[_0xc49f('0x2')];var AGIReply=require(_0xc49f('0x3'));var AGIError=require(_0xc49f('0x4'));function AGIChannel(_0x22a3e8){var _0x55f447=this,_0x1a02b0=new AGIReply(),_0x14dedc=![],_0x3ac7dc={};EventEmitter[_0xc49f('0x5')](_0x55f447);_0x22a3e8[_0xc49f('0x6')](_0xc49f('0x7'));_0x22a3e8['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x1a02b0[_0xc49f('0x6')](_0xc49f('0x7'));_0x1a02b0['on'](_0xc49f('0x8'),function(_0x5a5a0c){for(var _0x2d561c in _0x5a5a0c){_0x55f447[_0x2d561c]=_0x5a5a0c[_0x2d561c];}_0x55f447['emit'](_0xc49f('0x9'));});_0x1a02b0['on'](_0xc49f('0xa'),function(_0x2f92dc){if(_0x2f92dc[_0xc49f('0xb')]()==_0xc49f('0xc')){_0x55f447['emit'](_0xc49f('0xc'));return;}if(_0x2f92dc[_0xc49f('0xd')](0x0,0xb)=='520-Invalid'){_0x14dedc=!![];}if(_0x14dedc){_0x3ac7dc['rx']+=_0x2f92dc+'\x0a';if(_0x2f92dc[_0xc49f('0xe')]('520\x20End\x20of\x20proper')!=-0x1){_0x14dedc=![];}}else{_0x3ac7dc['rx']=_0x2f92dc;}if(_0x14dedc){return;}if(typeof _0x3ac7dc['cb']==_0xc49f('0xf')){var _0x39cd1d=_0x3ac7dc['rx'][_0xc49f('0xd')](0x0,0x3),_0x4d7b72=null,_0x4e7817=null;_0x39cd1d=parseInt(_0x39cd1d);if(isNaN(_0x39cd1d)){_0x3ac7dc['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xc49f('0x10')});return;}if(_0x39cd1d!=0xc8){_0x3ac7dc['cb'](null,{'code':_0x39cd1d,'result':-0x1,'extra':'KO'});return;}_0x4d7b72=_0x3ac7dc['rx'][_0xc49f('0xd')](0x4)[_0xc49f('0x11')](_0xc49f('0x12'),'');if(_0x4d7b72['indexOf']('\x20')!=-0x1){_0x4d7b72=_0x4d7b72[_0xc49f('0x13')](0x0,_0x4d7b72[_0xc49f('0x14')]('\x20'));}if(_[_0xc49f('0x15')](_0x4d7b72,'-1')){_0x4d7b72=parseInt(_0x4d7b72);}_0x4e7817=_0x3ac7dc['rx']['split']('\x20');if(_0x4e7817[_0xc49f('0x16')]==0x3){_0x4e7817=_0x4e7817[0x2][_0xc49f('0xd')](0x1,_0x4e7817[0x2]['length']-0x1);}else if(_0x4e7817[_0xc49f('0x16')]>0x3){var _0x527563=/\((.+)\)/;var _0x432470=_0x3ac7dc['rx'][_0xc49f('0x17')](_0x527563);if(_0x432470){_0x4e7817=_0x432470[0x1];}else{_0x4e7817=null;}}else{_0x4e7817=null;}_0x3ac7dc['cb'](null,{'code':_0x39cd1d,'result':_0x4d7b72,'extra':_0x4e7817});}});_0x22a3e8['on'](_0xc49f('0x18'),function(_0x36bac2){_0x55f447[_0xc49f('0x19')](_0xc49f('0x18'),new AGIError('E_AGI_SOCKET_ERROR',_0x36bac2[_0xc49f('0x1a')]));});_0x22a3e8['on']('close',function(){_0x55f447[_0xc49f('0x19')]('close',new AGIError(_0xc49f('0x1b')));});_0x22a3e8['on'](_0xc49f('0x1c'),function(){_0x55f447[_0xc49f('0x19')]('timeout',new AGIError(_0xc49f('0x1d')));_0x22a3e8['destroy']();});_0x22a3e8[_0xc49f('0x1e')](_0x1a02b0);this[_0xc49f('0x1f')]=function(_0x4877df,_0xe3130d){var _0x4877df=_0x4877df||'',_0xe3130d=typeof _0xe3130d=='function'?_0xe3130d:new Function();_0x3ac7dc={'tx':_0x4877df,'rx':'','cb':_0xe3130d};_0x22a3e8['write'](_0x4877df+'\x0a');},this[_0xc49f('0x20')]=function(){_0x22a3e8[_0xc49f('0x21')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0xc49f('0x22')][_0xc49f('0x23')]=function(_0xdb51a0){return this[_0xc49f('0x1f')][_0xc49f('0x24')](this,_0xdb51a0);};AGIChannel[_0xc49f('0x22')][_0xc49f('0x25')]=function(){return this['sendRequest'](_0xc49f('0x26'));};AGIChannel[_0xc49f('0x22')][_0xc49f('0x27')]=function(_0x3f96cd,_0x387a79,_0x4a2883){_0x3f96cd=_0x3f96cd===undefined?'beep':_0x3f96cd;_0x387a79=_0x387a79===undefined?'5':_0x387a79;_0x4a2883=_0x4a2883===undefined?'1':_0x4a2883;return this[_0xc49f('0x23')](util[_0xc49f('0x28')](_0xc49f('0x29'),_0x3f96cd,_0x387a79*0x3e8,_0x4a2883));};AGIChannel[_0xc49f('0x22')][_0xc49f('0x2a')]=function(_0x1c32dd){_0x1c32dd=_0x1c32dd||'NO\x20MESSAGE';return this['sendRequest'](util[_0xc49f('0x28')]('VERBOSE\x20\x22%s\x22',_0x1c32dd));};AGIChannel['prototype']['exec']=function(_0x1b60d5,_0xdfa7ca){if(_[_0xc49f('0x2b')](_0xdfa7ca)){return this['sendRequest'](util[_0xc49f('0x28')](_0xc49f('0x2c'),_0x1b60d5,_0xdfa7ca[_0xc49f('0x2d')](',')));}return this['sendRequest'](util[_0xc49f('0x28')](_0xc49f('0x2c'),_0x1b60d5,_0xdfa7ca));};AGIChannel[_0xc49f('0x22')]['setContext']=function(_0x1b9d0b){return this[_0xc49f('0x23')](util[_0xc49f('0x28')](_0xc49f('0x2e'),_0x1b9d0b));};AGIChannel[_0xc49f('0x22')][_0xc49f('0x2f')]=function(_0x2d96dd){return this['sendRequest'](util[_0xc49f('0x28')](_0xc49f('0x30'),_0x2d96dd));};AGIChannel[_0xc49f('0x22')][_0xc49f('0x31')]=function(_0x38d0d1){return this[_0xc49f('0x23')](util[_0xc49f('0x28')](_0xc49f('0x32'),_0x38d0d1));};AGIChannel[_0xc49f('0x22')][_0xc49f('0xc')]=function(){return this['sendRequest']('HANGUP');};AGIChannel[_0xc49f('0x22')]['setVariable']=function(_0x33699e,_0x5e48cc){var _0x48886b=_[_0xc49f('0x33')](_0x5e48cc)||_[_0xc49f('0x34')](_0x5e48cc)?_0x5e48cc[_0xc49f('0x35')]():_0x5e48cc;return this[_0xc49f('0x23')](util[_0xc49f('0x28')](_0xc49f('0x36'),_0x33699e,_0x48886b?_0x48886b[_0xc49f('0x35')]()[_0xc49f('0x11')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xc49f('0x22')][_0xc49f('0x37')]=function(_0x2b604d,_0x44d748){return this[_0xc49f('0x23')](util['format'](_0xc49f('0x38'),_0x2b604d,_0x44d748));};AGIChannel[_0xc49f('0x22')]['sayDigits']=function(_0x31af06,_0x860b96){return this[_0xc49f('0x23')](util[_0xc49f('0x28')](_0xc49f('0x39'),_0x31af06,_0x860b96));};AGIChannel[_0xc49f('0x22')]['sayPhonetic']=function(_0x26ad8a,_0x1c433e){return this[_0xc49f('0x23')](util[_0xc49f('0x28')](_0xc49f('0x3a'),_0x26ad8a,_0x1c433e));};AGIChannel[_0xc49f('0x22')]['continueAt']=function(_0x2b044d,_0x3a3052,_0x4e2b5c){_0x3a3052=_0x3a3052||this[_0xc49f('0x3b')];_0x4e2b5c=_0x4e2b5c||0x1;this[_0xc49f('0x3c')](_0x2b044d);this['setExtension'](_0x3a3052);this[_0xc49f('0x31')](_0x4e2b5c);return this['noop'](util[_0xc49f('0x28')](_0xc49f('0x3d'),_0x2b044d,_0x3a3052,_0x4e2b5c));};AGIChannel[_0xc49f('0x22')][_0xc49f('0x3e')]=function(_0x48ee7e){return this[_0xc49f('0x23')](util[_0xc49f('0x28')](_0xc49f('0x3f'),_0x48ee7e));};AGIChannel[_0xc49f('0x22')][_0xc49f('0x40')]=function(_0x1e5377,_0x4558e7,_0xdd5273,_0x3b80bb,_0xd89bda,_0x29ad94){_0x4558e7=_0x4558e7||_0xc49f('0x41');_0xdd5273=_0xdd5273||'';_0x3b80bb=_0x3b80bb===undefined?-0x1:_0x3b80bb==='-1'?-0x1:_0x3b80bb*0x3e8;_0xd89bda=_0xd89bda===undefined?'':'s='+_0xd89bda;_0x29ad94=_0x29ad94?_0xc49f('0x42'):'';return this[_0xc49f('0x23')](util[_0xc49f('0x28')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x1e5377,_0x4558e7,_0xdd5273,_0x3b80bb,_0x29ad94,_0xd89bda));};AGIChannel[_0xc49f('0x22')][_0xc49f('0x43')]=function(_0x2f2c51,_0x54f25f){_0x54f25f=_0x54f25f||'';return this[_0xc49f('0x23')](util[_0xc49f('0x28')](_0xc49f('0x44'),_0x2f2c51,_0x54f25f));};AGIChannel[_0xc49f('0x22')]['agi']=function(_0x43ce39){return this[_0xc49f('0x45')](_0xc49f('0x46'),_0x43ce39);};AGIChannel['prototype'][_0xc49f('0x47')]=function(_0x4391d3){return this[_0xc49f('0x45')](_0xc49f('0x48'),_0x4391d3);};AGIChannel[_0xc49f('0x22')][_0xc49f('0x18')]=function(_0x4a2a7c,_0x3dd1d1){this[_0xc49f('0x2a')](util[_0xc49f('0x28')](_0xc49f('0x49'),_0x4a2a7c['id'],_0x4a2a7c[_0xc49f('0x4a')],_0x3dd1d1));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;