e7d01a7ccaceb506fc9553975af81c50b09f842a
[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 _0xb7d6=['no\x20code','replace','result=','indexOf','substr','startsWith','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','write','inherits','prototype','sendRequest','command','answer','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','VERBOSE\x20\x22%s\x22','exec','join','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','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','agi','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','exports','EventEmitter','./reply','./error','setEncoding','utf8','setTimeout','headers','emit','ready','hangup','520-Invalid','search','function','substring'];(function(_0x5ac8ee,_0x5a888e){var _0x2afd32=function(_0x14a52d){while(--_0x14a52d){_0x5ac8ee['push'](_0x5ac8ee['shift']());}};_0x2afd32(++_0x5a888e);}(_0xb7d6,0xca));var _0x6b7d=function(_0xf2628e,_0x521bf7){_0xf2628e=_0xf2628e-0x0;var _0x13863a=_0xb7d6[_0xf2628e];return _0x13863a;};'use strict';var util=require('util');var _=require('lodash');var EventEmitter=require('events')[_0x6b7d('0x0')];var AGIReply=require(_0x6b7d('0x1'));var AGIError=require(_0x6b7d('0x2'));function AGIChannel(_0x526235){var _0x2de1cf=this,_0x29782c=new AGIReply(),_0xe6c580=![],_0x1835f4={};EventEmitter['call'](_0x2de1cf);_0x526235[_0x6b7d('0x3')](_0x6b7d('0x4'));_0x526235[_0x6b7d('0x5')](0x8*0x3c*0x3c*0x3e8);_0x29782c[_0x6b7d('0x3')](_0x6b7d('0x4'));_0x29782c['on'](_0x6b7d('0x6'),function(_0x4c1bce){for(var _0x121c76 in _0x4c1bce){_0x2de1cf[_0x121c76]=_0x4c1bce[_0x121c76];}_0x2de1cf[_0x6b7d('0x7')](_0x6b7d('0x8'));});_0x29782c['on']('line',function(_0x4efbb2){if(_0x4efbb2['toLowerCase']()==_0x6b7d('0x9')){_0x2de1cf[_0x6b7d('0x7')]('hangup');return;}if(_0x4efbb2['substring'](0x0,0xb)==_0x6b7d('0xa')){_0xe6c580=!![];}if(_0xe6c580){_0x1835f4['rx']+=_0x4efbb2+'\x0a';if(_0x4efbb2[_0x6b7d('0xb')]('520\x20End\x20of\x20proper')!=-0x1){_0xe6c580=![];}}else{_0x1835f4['rx']=_0x4efbb2;}if(_0xe6c580){return;}if(typeof _0x1835f4['cb']==_0x6b7d('0xc')){var _0x136ea4=_0x1835f4['rx'][_0x6b7d('0xd')](0x0,0x3),_0x502606=null,_0x54c4ca=null;_0x136ea4=parseInt(_0x136ea4);if(isNaN(_0x136ea4)){_0x1835f4['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x6b7d('0xe')});return;}if(_0x136ea4!=0xc8){_0x1835f4['cb'](null,{'code':_0x136ea4,'result':-0x1,'extra':'KO'});return;}_0x502606=_0x1835f4['rx'][_0x6b7d('0xd')](0x4)[_0x6b7d('0xf')](_0x6b7d('0x10'),'');if(_0x502606[_0x6b7d('0x11')]('\x20')!=-0x1){_0x502606=_0x502606[_0x6b7d('0x12')](0x0,_0x502606[_0x6b7d('0x11')]('\x20'));}if(_[_0x6b7d('0x13')](_0x502606,'-1')){_0x502606=parseInt(_0x502606);}_0x54c4ca=_0x1835f4['rx']['split']('\x20');if(_0x54c4ca[_0x6b7d('0x14')]==0x3){_0x54c4ca=_0x54c4ca[0x2]['substring'](0x1,_0x54c4ca[0x2][_0x6b7d('0x14')]-0x1);}else if(_0x54c4ca[_0x6b7d('0x14')]>0x3){var _0x2386c4=/\((.+)\)/;var _0x4979bd=_0x1835f4['rx'][_0x6b7d('0x15')](_0x2386c4);if(_0x4979bd){_0x54c4ca=_0x4979bd[0x1];}else{_0x54c4ca=null;}}else{_0x54c4ca=null;}_0x1835f4['cb'](null,{'code':_0x136ea4,'result':_0x502606,'extra':_0x54c4ca});}});_0x526235['on'](_0x6b7d('0x16'),function(_0xd6d3e9){_0x2de1cf[_0x6b7d('0x7')](_0x6b7d('0x16'),new AGIError(_0x6b7d('0x17'),_0xd6d3e9[_0x6b7d('0x18')]));});_0x526235['on'](_0x6b7d('0x19'),function(){_0x2de1cf[_0x6b7d('0x7')](_0x6b7d('0x19'),new AGIError(_0x6b7d('0x1a')));});_0x526235['on'](_0x6b7d('0x1b'),function(){_0x2de1cf[_0x6b7d('0x7')](_0x6b7d('0x1b'),new AGIError(_0x6b7d('0x1c')));_0x526235[_0x6b7d('0x1d')]();});_0x526235['pipe'](_0x29782c);this['command']=function(_0xebfa71,_0x4f47fb){var _0xebfa71=_0xebfa71||'',_0x4f47fb=typeof _0x4f47fb==_0x6b7d('0xc')?_0x4f47fb:new Function();_0x1835f4={'tx':_0xebfa71,'rx':'','cb':_0x4f47fb};_0x526235[_0x6b7d('0x1e')](_0xebfa71+'\x0a');},this['close']=function(){_0x526235[_0x6b7d('0x1d')]();};}util[_0x6b7d('0x1f')](AGIChannel,EventEmitter);AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x21')]=function(_0x2d1447){return this[_0x6b7d('0x22')]['sync'](this,_0x2d1447);};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x23')]=function(){return this[_0x6b7d('0x21')]('ANSWER');};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x24')]=function(_0xb370e7,_0x3882f7,_0x19f9c5){_0xb370e7=_0xb370e7===undefined?'beep':_0xb370e7;_0x3882f7=_0x3882f7===undefined?'5':_0x3882f7;_0x19f9c5=_0x19f9c5===undefined?'1':_0x19f9c5;return this[_0x6b7d('0x21')](util[_0x6b7d('0x25')](_0x6b7d('0x26'),_0xb370e7,_0x3882f7*0x3e8,_0x19f9c5));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x27')]=function(_0x2058e9){_0x2058e9=_0x2058e9||'NO\x20MESSAGE';return this[_0x6b7d('0x21')](util[_0x6b7d('0x25')](_0x6b7d('0x28'),_0x2058e9));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x29')]=function(_0x55d341,_0x26fbd2){if(_['isArray'](_0x26fbd2)){return this[_0x6b7d('0x21')](util[_0x6b7d('0x25')]('EXEC\x20%s\x20%s',_0x55d341,_0x26fbd2[_0x6b7d('0x2a')](',')));}return this['sendRequest'](util[_0x6b7d('0x25')](_0x6b7d('0x2b'),_0x55d341,_0x26fbd2));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x2c')]=function(_0x2dbe2d){return this['sendRequest'](util[_0x6b7d('0x25')](_0x6b7d('0x2d'),_0x2dbe2d));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x2e')]=function(_0x5b0d3b){return this[_0x6b7d('0x21')](util[_0x6b7d('0x25')]('SET\x20EXTENSION\x20%s',_0x5b0d3b));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x2f')]=function(_0x36fdeb){return this[_0x6b7d('0x21')](util['format'](_0x6b7d('0x30'),_0x36fdeb));};AGIChannel[_0x6b7d('0x20')]['hangup']=function(){return this['sendRequest'](_0x6b7d('0x31'));};AGIChannel['prototype'][_0x6b7d('0x32')]=function(_0x24e303,_0x4e5e42){var _0x337af8=_[_0x6b7d('0x33')](_0x4e5e42)||_[_0x6b7d('0x34')](_0x4e5e42)?_0x4e5e42[_0x6b7d('0x35')]():_0x4e5e42;return this[_0x6b7d('0x21')](util['format'](_0x6b7d('0x36'),_0x24e303,_0x337af8?_0x337af8[_0x6b7d('0x35')]()[_0x6b7d('0xf')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x6b7d('0x37')]=function(_0x2bf83d,_0x148a9f){return this['sendRequest'](util[_0x6b7d('0x25')](_0x6b7d('0x38'),_0x2bf83d,_0x148a9f));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x39')]=function(_0x5d7df1,_0x10a9eb){return this[_0x6b7d('0x21')](util['format']('SAY\x20DIGITS\x20%s\x20%s',_0x5d7df1,_0x10a9eb));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x3a')]=function(_0x38e9e0,_0x232a79){return this['sendRequest'](util[_0x6b7d('0x25')](_0x6b7d('0x3b'),_0x38e9e0,_0x232a79));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x3c')]=function(_0x657d24,_0x5dfd0e,_0x366d34){_0x5dfd0e=_0x5dfd0e||this['extension'];_0x366d34=_0x366d34||0x1;this['setContext'](_0x657d24);this[_0x6b7d('0x2e')](_0x5dfd0e);this[_0x6b7d('0x2f')](_0x366d34);return this['noop'](util[_0x6b7d('0x25')](_0x6b7d('0x3d'),_0x657d24,_0x5dfd0e,_0x366d34));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x3e')]=function(_0x3dca61){return this['sendRequest'](util['format'](_0x6b7d('0x3f'),_0x3dca61));};AGIChannel[_0x6b7d('0x20')]['recordFile']=function(_0x2e90f9,_0x318240,_0xab6c08,_0x6d4c6c,_0x58fe98,_0x106294){_0x318240=_0x318240||'wav';_0xab6c08=_0xab6c08||'';_0x6d4c6c=_0x6d4c6c===undefined?-0x1:_0x6d4c6c==='-1'?-0x1:_0x6d4c6c*0x3e8;_0x58fe98=_0x58fe98===undefined?'':'s='+_0x58fe98;_0x106294=_0x106294?'BEEP':'';return this['sendRequest'](util[_0x6b7d('0x25')](_0x6b7d('0x40'),_0x2e90f9,_0x318240,_0xab6c08,_0x6d4c6c,_0x106294,_0x58fe98));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x41')]=function(_0x4fdc28,_0x1b1122){_0x1b1122=_0x1b1122||'';return this[_0x6b7d('0x21')](util[_0x6b7d('0x25')](_0x6b7d('0x42'),_0x4fdc28,_0x1b1122));};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x43')]=function(_0xcf3aaf){return this[_0x6b7d('0x29')]('AGI',_0xcf3aaf);};AGIChannel[_0x6b7d('0x20')][_0x6b7d('0x44')]=function(_0x103286){return this[_0x6b7d('0x29')](_0x6b7d('0x45'),_0x103286);};AGIChannel['prototype'][_0x6b7d('0x16')]=function(_0x2985d0,_0x2a1579){this['noop'](util[_0x6b7d('0x25')](_0x6b7d('0x46'),_0x2985d0['id'],_0x2985d0['label'],_0x2a1579));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x6b7d('0x47')]=AGIChannel;