Built motion from commit da24aabd.|2.6.20
[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 _0xb3a4=['startsWith','length','error','E_AGI_SOCKET_ERROR','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sendRequest','answer','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isNumber','toString','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setExtension','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','BEEP','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','events','EventEmitter','./error','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','replace','result=','indexOf','substr'];(function(_0x45b034,_0x3a57dd){var _0x509cb0=function(_0x3a89d5){while(--_0x3a89d5){_0x45b034['push'](_0x45b034['shift']());}};_0x509cb0(++_0x3a57dd);}(_0xb3a4,0x77));var _0x4b3a=function(_0x211f75,_0x4ba6ae){_0x211f75=_0x211f75-0x0;var _0x51f5b6=_0xb3a4[_0x211f75];return _0x51f5b6;};'use strict';var util=require('util');var _=require('lodash');var EventEmitter=require(_0x4b3a('0x0'))[_0x4b3a('0x1')];var AGIReply=require('./reply');var AGIError=require(_0x4b3a('0x2'));function AGIChannel(_0x229ab0){var _0x44d691=this,_0x11a96e=new AGIReply(),_0x51814a=![],_0x29eb4d={};EventEmitter['call'](_0x44d691);_0x229ab0[_0x4b3a('0x3')](_0x4b3a('0x4'));_0x229ab0[_0x4b3a('0x5')](0x8*0x3c*0x3c*0x3e8);_0x11a96e['setEncoding'](_0x4b3a('0x4'));_0x11a96e['on'](_0x4b3a('0x6'),function(_0x39f1cf){for(var _0x3688f2 in _0x39f1cf){_0x44d691[_0x3688f2]=_0x39f1cf[_0x3688f2];}_0x44d691[_0x4b3a('0x7')](_0x4b3a('0x8'));});_0x11a96e['on'](_0x4b3a('0x9'),function(_0x27962b){if(_0x27962b[_0x4b3a('0xa')]()==_0x4b3a('0xb')){_0x44d691['emit'](_0x4b3a('0xb'));return;}if(_0x27962b[_0x4b3a('0xc')](0x0,0xb)==_0x4b3a('0xd')){_0x51814a=!![];}if(_0x51814a){_0x29eb4d['rx']+=_0x27962b+'\x0a';if(_0x27962b[_0x4b3a('0xe')](_0x4b3a('0xf'))!=-0x1){_0x51814a=![];}}else{_0x29eb4d['rx']=_0x27962b;}if(_0x51814a){return;}if(typeof _0x29eb4d['cb']==_0x4b3a('0x10')){var _0x247ddf=_0x29eb4d['rx'][_0x4b3a('0xc')](0x0,0x3),_0x34b950=null,_0x446cb7=null;_0x247ddf=parseInt(_0x247ddf);if(isNaN(_0x247ddf)){_0x29eb4d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x247ddf!=0xc8){_0x29eb4d['cb'](null,{'code':_0x247ddf,'result':-0x1,'extra':'KO'});return;}_0x34b950=_0x29eb4d['rx']['substring'](0x4)[_0x4b3a('0x11')](_0x4b3a('0x12'),'');if(_0x34b950[_0x4b3a('0x13')]('\x20')!=-0x1){_0x34b950=_0x34b950[_0x4b3a('0x14')](0x0,_0x34b950[_0x4b3a('0x13')]('\x20'));}if(_[_0x4b3a('0x15')](_0x34b950,'-1')){_0x34b950=parseInt(_0x34b950);}_0x446cb7=_0x29eb4d['rx']['split']('\x20');if(_0x446cb7[_0x4b3a('0x16')]==0x3){_0x446cb7=_0x446cb7[0x2]['substring'](0x1,_0x446cb7[0x2]['length']-0x1);}else if(_0x446cb7[_0x4b3a('0x16')]>0x3){var _0x40c443=/\((.+)\)/;var _0x403d05=_0x29eb4d['rx']['match'](_0x40c443);if(_0x403d05){_0x446cb7=_0x403d05[0x1];}else{_0x446cb7=null;}}else{_0x446cb7=null;}_0x29eb4d['cb'](null,{'code':_0x247ddf,'result':_0x34b950,'extra':_0x446cb7});}});_0x229ab0['on'](_0x4b3a('0x17'),function(_0x59d1b2){_0x44d691[_0x4b3a('0x7')](_0x4b3a('0x17'),new AGIError(_0x4b3a('0x18'),_0x59d1b2['code']));});_0x229ab0['on']('close',function(){_0x44d691['emit']('close',new AGIError(_0x4b3a('0x19')));});_0x229ab0['on'](_0x4b3a('0x1a'),function(){_0x44d691[_0x4b3a('0x7')]('timeout',new AGIError(_0x4b3a('0x1b')));_0x229ab0[_0x4b3a('0x1c')]();});_0x229ab0[_0x4b3a('0x1d')](_0x11a96e);this[_0x4b3a('0x1e')]=function(_0x2ae9c2,_0x30d794){var _0x2ae9c2=_0x2ae9c2||'',_0x30d794=typeof _0x30d794=='function'?_0x30d794:new Function();_0x29eb4d={'tx':_0x2ae9c2,'rx':'','cb':_0x30d794};_0x229ab0[_0x4b3a('0x1f')](_0x2ae9c2+'\x0a');},this['close']=function(){_0x229ab0[_0x4b3a('0x1c')]();};}util[_0x4b3a('0x20')](AGIChannel,EventEmitter);AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x22')]=function(_0x5dfacf){return this[_0x4b3a('0x1e')]['sync'](this,_0x5dfacf);};AGIChannel['prototype'][_0x4b3a('0x23')]=function(){return this[_0x4b3a('0x22')]('ANSWER');};AGIChannel['prototype']['getData']=function(_0x4ab600,_0x504858,_0x4892ea){_0x4ab600=_0x4ab600===undefined?_0x4b3a('0x24'):_0x4ab600;_0x504858=_0x504858===undefined?'5':_0x504858;_0x4892ea=_0x4892ea===undefined?'1':_0x4892ea;return this['sendRequest'](util[_0x4b3a('0x25')](_0x4b3a('0x26'),_0x4ab600,_0x504858*0x3e8,_0x4892ea));};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x27')]=function(_0x538f6b){_0x538f6b=_0x538f6b||_0x4b3a('0x28');return this[_0x4b3a('0x22')](util[_0x4b3a('0x25')](_0x4b3a('0x29'),_0x538f6b));};AGIChannel['prototype'][_0x4b3a('0x2a')]=function(_0x50e31b,_0x174424){if(_[_0x4b3a('0x2b')](_0x174424)){return this[_0x4b3a('0x22')](util[_0x4b3a('0x25')](_0x4b3a('0x2c'),_0x50e31b,_0x174424[_0x4b3a('0x2d')](',')));}return this[_0x4b3a('0x22')](util['format'](_0x4b3a('0x2c'),_0x50e31b,_0x174424));};AGIChannel['prototype'][_0x4b3a('0x2e')]=function(_0x37b54a){return this[_0x4b3a('0x22')](util['format']('SET\x20CONTEXT\x20%s',_0x37b54a));};AGIChannel[_0x4b3a('0x21')]['setExtension']=function(_0x2b4ab1){return this[_0x4b3a('0x22')](util['format'](_0x4b3a('0x2f'),_0x2b4ab1));};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x30')]=function(_0x2afcab){return this[_0x4b3a('0x22')](util[_0x4b3a('0x25')](_0x4b3a('0x31'),_0x2afcab));};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0xb')]=function(){return this[_0x4b3a('0x22')](_0x4b3a('0x32'));};AGIChannel['prototype'][_0x4b3a('0x33')]=function(_0x1967d4,_0x1f3180){var _0x32f8d8=_['isBoolean'](_0x1f3180)||_[_0x4b3a('0x34')](_0x1f3180)?_0x1f3180[_0x4b3a('0x35')]():_0x1f3180;return this[_0x4b3a('0x22')](util[_0x4b3a('0x25')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x1967d4,_0x32f8d8?_0x32f8d8[_0x4b3a('0x35')]()[_0x4b3a('0x11')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype']['sayNumber']=function(_0x57db3e,_0x125fda){return this['sendRequest'](util[_0x4b3a('0x25')]('SAY\x20NUMBER\x20%s\x20%s',_0x57db3e,_0x125fda));};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x36')]=function(_0x497995,_0x275429){return this['sendRequest'](util[_0x4b3a('0x25')](_0x4b3a('0x37'),_0x497995,_0x275429));};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x38')]=function(_0x9c3dd,_0x3bc552){return this[_0x4b3a('0x22')](util[_0x4b3a('0x25')](_0x4b3a('0x39'),_0x9c3dd,_0x3bc552));};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x3a')]=function(_0x1af7bf,_0x306beb,_0x1d44bd){_0x306beb=_0x306beb||this['extension'];_0x1d44bd=_0x1d44bd||0x1;this[_0x4b3a('0x2e')](_0x1af7bf);this[_0x4b3a('0x3b')](_0x306beb);this[_0x4b3a('0x30')](_0x1d44bd);return this[_0x4b3a('0x27')](util[_0x4b3a('0x25')]('GOTO\x20%s\x20%s\x20%s',_0x1af7bf,_0x306beb,_0x1d44bd));};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x3c')]=function(_0x532d7c){return this['sendRequest'](util[_0x4b3a('0x25')](_0x4b3a('0x3d'),_0x532d7c));};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x3e')]=function(_0x208436,_0x1f7d10,_0x1db2f4,_0x273eb0,_0x461a73,_0x4b1e42){_0x1f7d10=_0x1f7d10||'wav';_0x1db2f4=_0x1db2f4||'';_0x273eb0=_0x273eb0===undefined?-0x1:_0x273eb0==='-1'?-0x1:_0x273eb0*0x3e8;_0x461a73=_0x461a73===undefined?'':'s='+_0x461a73;_0x4b1e42=_0x4b1e42?_0x4b3a('0x3f'):'';return this[_0x4b3a('0x22')](util[_0x4b3a('0x25')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x208436,_0x1f7d10,_0x1db2f4,_0x273eb0,_0x4b1e42,_0x461a73));};AGIChannel[_0x4b3a('0x21')]['streamFile']=function(_0x797572,_0x17125c){_0x17125c=_0x17125c||'';return this['sendRequest'](util[_0x4b3a('0x25')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x797572,_0x17125c));};AGIChannel['prototype']['agi']=function(_0x2a6d3a){return this['exec'](_0x4b3a('0x40'),_0x2a6d3a);};AGIChannel[_0x4b3a('0x21')][_0x4b3a('0x41')]=function(_0x236402){return this[_0x4b3a('0x2a')](_0x4b3a('0x42'),_0x236402);};AGIChannel[_0x4b3a('0x21')]['error']=function(_0x2399fe,_0x42003e){this[_0x4b3a('0x27')](util[_0x4b3a('0x25')](_0x4b3a('0x43'),_0x2399fe['id'],_0x2399fe[_0x4b3a('0x44')],_0x42003e));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x4b3a('0x45')]=AGIChannel;