f0115f3985880edff4f79c5d259b06f6041ace0c
[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 _0x4c50=['SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','noop','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','agi','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','events','./reply','./error','call','setEncoding','setTimeout','utf8','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','E_AGI_SOCKET_TIMEOUT','destroy','pipe','inherits','sendRequest','command','sync','prototype','answer','ANSWER','getData','beep','format','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority'];(function(_0x4f02f2,_0x1d2619){var _0x22248b=function(_0x33e00c){while(--_0x33e00c){_0x4f02f2['push'](_0x4f02f2['shift']());}};_0x22248b(++_0x1d2619);}(_0x4c50,0x1f2));var _0x04c5=function(_0x4c5db3,_0x2dbdd3){_0x4c5db3=_0x4c5db3-0x0;var _0x59d127=_0x4c50[_0x4c5db3];return _0x59d127;};'use strict';var util=require(_0x04c5('0x0'));var _=require('lodash');var EventEmitter=require(_0x04c5('0x1'))['EventEmitter'];var AGIReply=require(_0x04c5('0x2'));var AGIError=require(_0x04c5('0x3'));function AGIChannel(_0x2a99ac){var _0x38453a=this,_0x42b75b=new AGIReply(),_0x1d2a1d=![],_0x8df41a={};EventEmitter[_0x04c5('0x4')](_0x38453a);_0x2a99ac[_0x04c5('0x5')]('utf8');_0x2a99ac[_0x04c5('0x6')](0x8*0x3c*0x3c*0x3e8);_0x42b75b[_0x04c5('0x5')](_0x04c5('0x7'));_0x42b75b['on'](_0x04c5('0x8'),function(_0xed1e5b){for(var _0x5871ea in _0xed1e5b){_0x38453a[_0x5871ea]=_0xed1e5b[_0x5871ea];}_0x38453a[_0x04c5('0x9')](_0x04c5('0xa'));});_0x42b75b['on'](_0x04c5('0xb'),function(_0x20ffe3){if(_0x20ffe3[_0x04c5('0xc')]()=='hangup'){_0x38453a[_0x04c5('0x9')](_0x04c5('0xd'));return;}if(_0x20ffe3[_0x04c5('0xe')](0x0,0xb)==_0x04c5('0xf')){_0x1d2a1d=!![];}if(_0x1d2a1d){_0x8df41a['rx']+=_0x20ffe3+'\x0a';if(_0x20ffe3[_0x04c5('0x10')]('520\x20End\x20of\x20proper')!=-0x1){_0x1d2a1d=![];}}else{_0x8df41a['rx']=_0x20ffe3;}if(_0x1d2a1d){return;}if(typeof _0x8df41a['cb']==_0x04c5('0x11')){var _0x498e0a=_0x8df41a['rx'][_0x04c5('0xe')](0x0,0x3),_0xa89389=null,_0x5bc321=null;_0x498e0a=parseInt(_0x498e0a);if(isNaN(_0x498e0a)){_0x8df41a['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x04c5('0x12')});return;}if(_0x498e0a!=0xc8){_0x8df41a['cb'](null,{'code':_0x498e0a,'result':-0x1,'extra':'KO'});return;}_0xa89389=_0x8df41a['rx']['substring'](0x4)[_0x04c5('0x13')](_0x04c5('0x14'),'');if(_0xa89389[_0x04c5('0x15')]('\x20')!=-0x1){_0xa89389=_0xa89389[_0x04c5('0x16')](0x0,_0xa89389[_0x04c5('0x15')]('\x20'));}if(_[_0x04c5('0x17')](_0xa89389,'-1')){_0xa89389=parseInt(_0xa89389);}_0x5bc321=_0x8df41a['rx'][_0x04c5('0x18')]('\x20');if(_0x5bc321[_0x04c5('0x19')]==0x3){_0x5bc321=_0x5bc321[0x2][_0x04c5('0xe')](0x1,_0x5bc321[0x2][_0x04c5('0x19')]-0x1);}else if(_0x5bc321[_0x04c5('0x19')]>0x3){var _0x2dfeaa=/\((.+)\)/;var _0x3bb59c=_0x8df41a['rx'][_0x04c5('0x1a')](_0x2dfeaa);if(_0x3bb59c){_0x5bc321=_0x3bb59c[0x1];}else{_0x5bc321=null;}}else{_0x5bc321=null;}_0x8df41a['cb'](null,{'code':_0x498e0a,'result':_0xa89389,'extra':_0x5bc321});}});_0x2a99ac['on'](_0x04c5('0x1b'),function(_0x4d8ae6){_0x38453a[_0x04c5('0x9')](_0x04c5('0x1b'),new AGIError(_0x04c5('0x1c'),_0x4d8ae6[_0x04c5('0x1d')]));});_0x2a99ac['on'](_0x04c5('0x1e'),function(){_0x38453a[_0x04c5('0x9')](_0x04c5('0x1e'),new AGIError(_0x04c5('0x1f')));});_0x2a99ac['on']('timeout',function(){_0x38453a[_0x04c5('0x9')]('timeout',new AGIError(_0x04c5('0x20')));_0x2a99ac[_0x04c5('0x21')]();});_0x2a99ac[_0x04c5('0x22')](_0x42b75b);this['command']=function(_0x383d7e,_0x6b0273){var _0x383d7e=_0x383d7e||'',_0x6b0273=typeof _0x6b0273==_0x04c5('0x11')?_0x6b0273:new Function();_0x8df41a={'tx':_0x383d7e,'rx':'','cb':_0x6b0273};_0x2a99ac['write'](_0x383d7e+'\x0a');},this[_0x04c5('0x1e')]=function(){_0x2a99ac['destroy']();};}util[_0x04c5('0x23')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x04c5('0x24')]=function(_0x2e08e5){return this[_0x04c5('0x25')][_0x04c5('0x26')](this,_0x2e08e5);};AGIChannel[_0x04c5('0x27')][_0x04c5('0x28')]=function(){return this[_0x04c5('0x24')](_0x04c5('0x29'));};AGIChannel['prototype'][_0x04c5('0x2a')]=function(_0x275aa5,_0x3449cc,_0x2185f2){_0x275aa5=_0x275aa5===undefined?_0x04c5('0x2b'):_0x275aa5;_0x3449cc=_0x3449cc===undefined?'5':_0x3449cc;_0x2185f2=_0x2185f2===undefined?'1':_0x2185f2;return this[_0x04c5('0x24')](util[_0x04c5('0x2c')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x275aa5,_0x3449cc*0x3e8,_0x2185f2));};AGIChannel[_0x04c5('0x27')]['noop']=function(_0x4536c1){_0x4536c1=_0x4536c1||_0x04c5('0x2d');return this[_0x04c5('0x24')](util[_0x04c5('0x2c')](_0x04c5('0x2e'),_0x4536c1));};AGIChannel[_0x04c5('0x27')][_0x04c5('0x2f')]=function(_0xbcacd6,_0x122d0c){if(_['isArray'](_0x122d0c)){return this[_0x04c5('0x24')](util[_0x04c5('0x2c')](_0x04c5('0x30'),_0xbcacd6,_0x122d0c[_0x04c5('0x31')](',')));}return this[_0x04c5('0x24')](util[_0x04c5('0x2c')]('EXEC\x20%s\x20%s',_0xbcacd6,_0x122d0c));};AGIChannel['prototype'][_0x04c5('0x32')]=function(_0x5c1e39){return this[_0x04c5('0x24')](util['format'](_0x04c5('0x33'),_0x5c1e39));};AGIChannel[_0x04c5('0x27')][_0x04c5('0x34')]=function(_0x12eb29){return this[_0x04c5('0x24')](util['format'](_0x04c5('0x35'),_0x12eb29));};AGIChannel['prototype'][_0x04c5('0x36')]=function(_0x492867){return this[_0x04c5('0x24')](util['format'](_0x04c5('0x37'),_0x492867));};AGIChannel[_0x04c5('0x27')]['hangup']=function(){return this['sendRequest']('HANGUP');};AGIChannel[_0x04c5('0x27')][_0x04c5('0x38')]=function(_0x21fd4b,_0x3b5d29){var _0x252bff=_[_0x04c5('0x39')](_0x3b5d29)||_[_0x04c5('0x3a')](_0x3b5d29)?_0x3b5d29[_0x04c5('0x3b')]():_0x3b5d29;return this['sendRequest'](util['format'](_0x04c5('0x3c'),_0x21fd4b,_0x252bff?_0x252bff[_0x04c5('0x3b')]()[_0x04c5('0x13')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x04c5('0x3d')]=function(_0x34aaec,_0x4cc0b4){return this[_0x04c5('0x24')](util['format'](_0x04c5('0x3e'),_0x34aaec,_0x4cc0b4));};AGIChannel[_0x04c5('0x27')][_0x04c5('0x3f')]=function(_0x1c6ef6,_0x5c8236){return this[_0x04c5('0x24')](util[_0x04c5('0x2c')](_0x04c5('0x40'),_0x1c6ef6,_0x5c8236));};AGIChannel['prototype']['sayPhonetic']=function(_0x51ef0b,_0xdaa824){return this[_0x04c5('0x24')](util[_0x04c5('0x2c')](_0x04c5('0x41'),_0x51ef0b,_0xdaa824));};AGIChannel['prototype']['continueAt']=function(_0x5a6603,_0x1a8951,_0xb44a09){_0x1a8951=_0x1a8951||this['extension'];_0xb44a09=_0xb44a09||0x1;this[_0x04c5('0x32')](_0x5a6603);this[_0x04c5('0x34')](_0x1a8951);this[_0x04c5('0x36')](_0xb44a09);return this[_0x04c5('0x42')](util[_0x04c5('0x2c')](_0x04c5('0x43'),_0x5a6603,_0x1a8951,_0xb44a09));};AGIChannel['prototype'][_0x04c5('0x44')]=function(_0x3140e4){return this[_0x04c5('0x24')](util[_0x04c5('0x2c')](_0x04c5('0x45'),_0x3140e4));};AGIChannel['prototype']['recordFile']=function(_0x5873c5,_0x2795f2,_0x5aabc0,_0xa8c791,_0x387fc6,_0x86b9b4){_0x2795f2=_0x2795f2||_0x04c5('0x46');_0x5aabc0=_0x5aabc0||'';_0xa8c791=_0xa8c791===undefined?-0x1:_0xa8c791==='-1'?-0x1:_0xa8c791*0x3e8;_0x387fc6=_0x387fc6===undefined?'':'s='+_0x387fc6;_0x86b9b4=_0x86b9b4?'BEEP':'';return this[_0x04c5('0x24')](util['format'](_0x04c5('0x47'),_0x5873c5,_0x2795f2,_0x5aabc0,_0xa8c791,_0x86b9b4,_0x387fc6));};AGIChannel[_0x04c5('0x27')][_0x04c5('0x48')]=function(_0x5ba17c,_0x940325){_0x940325=_0x940325||'';return this['sendRequest'](util['format']('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x5ba17c,_0x940325));};AGIChannel[_0x04c5('0x27')][_0x04c5('0x49')]=function(_0x511c75){return this[_0x04c5('0x2f')]('AGI',_0x511c75);};AGIChannel[_0x04c5('0x27')][_0x04c5('0x4a')]=function(_0x4e54e6){return this[_0x04c5('0x2f')](_0x04c5('0x4b'),_0x4e54e6);};AGIChannel['prototype'][_0x04c5('0x1b')]=function(_0x2f44eb,_0x2e93d2){this['noop'](util['format'](_0x04c5('0x4c'),_0x2f44eb['id'],_0x2f44eb[_0x04c5('0x4d')],_0x2e93d2));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x04c5('0x4e')]=AGIChannel;