8a8b7f977df0192b7ef196773daa6c02a8058923
[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 _0x6113=['ready','line','hangup','emit','520-Invalid','search','function','substring','replace','result=','indexOf','startsWith','split','length','error','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','prototype','sendRequest','command','answer','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','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','recordFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','label','exports','util','lodash','events','./reply','./error','call','setEncoding','setTimeout','utf8','headers'];(function(_0x375325,_0x57a850){var _0x228f57=function(_0x2ad744){while(--_0x2ad744){_0x375325['push'](_0x375325['shift']());}};_0x228f57(++_0x57a850);}(_0x6113,0x1b2));var _0x3611=function(_0x3145a2,_0x54bc1e){_0x3145a2=_0x3145a2-0x0;var _0x19794f=_0x6113[_0x3145a2];return _0x19794f;};'use strict';var util=require(_0x3611('0x0'));var _=require(_0x3611('0x1'));var EventEmitter=require(_0x3611('0x2'))['EventEmitter'];var AGIReply=require(_0x3611('0x3'));var AGIError=require(_0x3611('0x4'));function AGIChannel(_0x1b3944){var _0x247ef6=this,_0x56ed03=new AGIReply(),_0x25fd6f=![],_0x6d751a={};EventEmitter[_0x3611('0x5')](_0x247ef6);_0x1b3944[_0x3611('0x6')]('utf8');_0x1b3944[_0x3611('0x7')](0x8*0x3c*0x3c*0x3e8);_0x56ed03[_0x3611('0x6')](_0x3611('0x8'));_0x56ed03['on'](_0x3611('0x9'),function(_0x1c205c){for(var _0x450266 in _0x1c205c){_0x247ef6[_0x450266]=_0x1c205c[_0x450266];}_0x247ef6['emit'](_0x3611('0xa'));});_0x56ed03['on'](_0x3611('0xb'),function(_0x4a2407){if(_0x4a2407['toLowerCase']()==_0x3611('0xc')){_0x247ef6[_0x3611('0xd')]('hangup');return;}if(_0x4a2407['substring'](0x0,0xb)==_0x3611('0xe')){_0x25fd6f=!![];}if(_0x25fd6f){_0x6d751a['rx']+=_0x4a2407+'\x0a';if(_0x4a2407[_0x3611('0xf')]('520\x20End\x20of\x20proper')!=-0x1){_0x25fd6f=![];}}else{_0x6d751a['rx']=_0x4a2407;}if(_0x25fd6f){return;}if(typeof _0x6d751a['cb']==_0x3611('0x10')){var _0x3217f7=_0x6d751a['rx']['substring'](0x0,0x3),_0x527a02=null,_0x242a69=null;_0x3217f7=parseInt(_0x3217f7);if(isNaN(_0x3217f7)){_0x6d751a['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x3217f7!=0xc8){_0x6d751a['cb'](null,{'code':_0x3217f7,'result':-0x1,'extra':'KO'});return;}_0x527a02=_0x6d751a['rx'][_0x3611('0x11')](0x4)[_0x3611('0x12')](_0x3611('0x13'),'');if(_0x527a02[_0x3611('0x14')]('\x20')!=-0x1){_0x527a02=_0x527a02['substr'](0x0,_0x527a02[_0x3611('0x14')]('\x20'));}if(_[_0x3611('0x15')](_0x527a02,'-1')){_0x527a02=parseInt(_0x527a02);}_0x242a69=_0x6d751a['rx'][_0x3611('0x16')]('\x20');if(_0x242a69[_0x3611('0x17')]==0x3){_0x242a69=_0x242a69[0x2][_0x3611('0x11')](0x1,_0x242a69[0x2][_0x3611('0x17')]-0x1);}else if(_0x242a69[_0x3611('0x17')]>0x3){var _0x6e30e3=/\((.+)\)/;var _0x51847e=_0x6d751a['rx']['match'](_0x6e30e3);if(_0x51847e){_0x242a69=_0x51847e[0x1];}else{_0x242a69=null;}}else{_0x242a69=null;}_0x6d751a['cb'](null,{'code':_0x3217f7,'result':_0x527a02,'extra':_0x242a69});}});_0x1b3944['on'](_0x3611('0x18'),function(_0x48173f){_0x247ef6['emit'](_0x3611('0x18'),new AGIError('E_AGI_SOCKET_ERROR',_0x48173f[_0x3611('0x19')]));});_0x1b3944['on'](_0x3611('0x1a'),function(){_0x247ef6[_0x3611('0xd')](_0x3611('0x1a'),new AGIError(_0x3611('0x1b')));});_0x1b3944['on'](_0x3611('0x1c'),function(){_0x247ef6[_0x3611('0xd')](_0x3611('0x1c'),new AGIError(_0x3611('0x1d')));_0x1b3944[_0x3611('0x1e')]();});_0x1b3944['pipe'](_0x56ed03);this['command']=function(_0x3a577d,_0x3d449b){var _0x3a577d=_0x3a577d||'',_0x3d449b=typeof _0x3d449b=='function'?_0x3d449b:new Function();_0x6d751a={'tx':_0x3a577d,'rx':'','cb':_0x3d449b};_0x1b3944['write'](_0x3a577d+'\x0a');},this['close']=function(){_0x1b3944['destroy']();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x3611('0x1f')][_0x3611('0x20')]=function(_0xd1b4d5){return this[_0x3611('0x21')]['sync'](this,_0xd1b4d5);};AGIChannel[_0x3611('0x1f')][_0x3611('0x22')]=function(){return this[_0x3611('0x20')]('ANSWER');};AGIChannel['prototype'][_0x3611('0x23')]=function(_0x34cbe4,_0x2fdaf7,_0x387a65){_0x34cbe4=_0x34cbe4===undefined?_0x3611('0x24'):_0x34cbe4;_0x2fdaf7=_0x2fdaf7===undefined?'5':_0x2fdaf7;_0x387a65=_0x387a65===undefined?'1':_0x387a65;return this[_0x3611('0x20')](util['format'](_0x3611('0x25'),_0x34cbe4,_0x2fdaf7*0x3e8,_0x387a65));};AGIChannel[_0x3611('0x1f')][_0x3611('0x26')]=function(_0x1fece6){_0x1fece6=_0x1fece6||_0x3611('0x27');return this[_0x3611('0x20')](util[_0x3611('0x28')](_0x3611('0x29'),_0x1fece6));};AGIChannel[_0x3611('0x1f')][_0x3611('0x2a')]=function(_0x341e83,_0x8608e7){if(_[_0x3611('0x2b')](_0x8608e7)){return this['sendRequest'](util[_0x3611('0x28')](_0x3611('0x2c'),_0x341e83,_0x8608e7[_0x3611('0x2d')](',')));}return this[_0x3611('0x20')](util[_0x3611('0x28')]('EXEC\x20%s\x20%s',_0x341e83,_0x8608e7));};AGIChannel[_0x3611('0x1f')]['setContext']=function(_0x374464){return this[_0x3611('0x20')](util[_0x3611('0x28')](_0x3611('0x2e'),_0x374464));};AGIChannel[_0x3611('0x1f')][_0x3611('0x2f')]=function(_0x996b0b){return this[_0x3611('0x20')](util['format'](_0x3611('0x30'),_0x996b0b));};AGIChannel['prototype'][_0x3611('0x31')]=function(_0xeb724f){return this['sendRequest'](util[_0x3611('0x28')](_0x3611('0x32'),_0xeb724f));};AGIChannel[_0x3611('0x1f')]['hangup']=function(){return this[_0x3611('0x20')](_0x3611('0x33'));};AGIChannel[_0x3611('0x1f')][_0x3611('0x34')]=function(_0x3703f6,_0x4d4cf6){var _0x560784=_[_0x3611('0x35')](_0x4d4cf6)||_[_0x3611('0x36')](_0x4d4cf6)?_0x4d4cf6[_0x3611('0x37')]():_0x4d4cf6;return this['sendRequest'](util[_0x3611('0x28')](_0x3611('0x38'),_0x3703f6,_0x560784?_0x560784[_0x3611('0x37')]()[_0x3611('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x3611('0x1f')][_0x3611('0x39')]=function(_0x69478c,_0x2afe94){return this['sendRequest'](util[_0x3611('0x28')](_0x3611('0x3a'),_0x69478c,_0x2afe94));};AGIChannel[_0x3611('0x1f')][_0x3611('0x3b')]=function(_0x46c151,_0x1334a7){return this[_0x3611('0x20')](util['format']('SAY\x20DIGITS\x20%s\x20%s',_0x46c151,_0x1334a7));};AGIChannel[_0x3611('0x1f')][_0x3611('0x3c')]=function(_0x1f9e97,_0x32f804){return this['sendRequest'](util['format'](_0x3611('0x3d'),_0x1f9e97,_0x32f804));};AGIChannel[_0x3611('0x1f')][_0x3611('0x3e')]=function(_0x2b12c9,_0x378746,_0x45f1f7){_0x378746=_0x378746||this['extension'];_0x45f1f7=_0x45f1f7||0x1;this['setContext'](_0x2b12c9);this[_0x3611('0x2f')](_0x378746);this['setPriority'](_0x45f1f7);return this[_0x3611('0x26')](util[_0x3611('0x28')](_0x3611('0x3f'),_0x2b12c9,_0x378746,_0x45f1f7));};AGIChannel[_0x3611('0x1f')][_0x3611('0x40')]=function(_0x208eeb){return this['sendRequest'](util[_0x3611('0x28')](_0x3611('0x41'),_0x208eeb));};AGIChannel['prototype'][_0x3611('0x42')]=function(_0xaf1784,_0x558270,_0x2c9fa1,_0x52f58d,_0xc7ffe0,_0xb3e0b2){_0x558270=_0x558270||'wav';_0x2c9fa1=_0x2c9fa1||'';_0x52f58d=_0x52f58d===undefined?-0x1:_0x52f58d==='-1'?-0x1:_0x52f58d*0x3e8;_0xc7ffe0=_0xc7ffe0===undefined?'':'s='+_0xc7ffe0;_0xb3e0b2=_0xb3e0b2?'BEEP':'';return this[_0x3611('0x20')](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0xaf1784,_0x558270,_0x2c9fa1,_0x52f58d,_0xb3e0b2,_0xc7ffe0));};AGIChannel[_0x3611('0x1f')]['streamFile']=function(_0x625962,_0x19a34c){_0x19a34c=_0x19a34c||'';return this[_0x3611('0x20')](util[_0x3611('0x28')](_0x3611('0x43'),_0x625962,_0x19a34c));};AGIChannel[_0x3611('0x1f')][_0x3611('0x44')]=function(_0xe603c8){return this[_0x3611('0x2a')](_0x3611('0x45'),_0xe603c8);};AGIChannel[_0x3611('0x1f')][_0x3611('0x46')]=function(_0x5ba297){return this['exec'](_0x3611('0x47'),_0x5ba297);};AGIChannel['prototype']['error']=function(_0x3c97ba,_0x11aee6){this[_0x3611('0x26')](util[_0x3611('0x28')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x3c97ba['id'],_0x3c97ba[_0x3611('0x48')],_0x11aee6));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x3611('0x49')]=AGIChannel;