21957d3d05e4a512c1c94f8da80d5ab5dd7ddada
[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 _0xaeba=['getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','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','label','util','lodash','events','./error','setEncoding','utf8','setTimeout','emit','ready','line','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','replace','result=','indexOf','startsWith','split','length','error','code','close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','write','inherits','prototype','command','sync','sendRequest','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','format','join','EXEC\x20%s\x20%s','setContext','setExtension','SET\x20EXTENSION\x20%s','HANGUP','setVariable','isBoolean','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','setPriority'];(function(_0x231058,_0x3a1958){var _0x1eb7d0=function(_0x4716aa){while(--_0x4716aa){_0x231058['push'](_0x231058['shift']());}};_0x1eb7d0(++_0x3a1958);}(_0xaeba,0x1cf));var _0xaaeb=function(_0x354cc7,_0x387dce){_0x354cc7=_0x354cc7-0x0;var _0x39f38b=_0xaeba[_0x354cc7];return _0x39f38b;};'use strict';var util=require(_0xaaeb('0x0'));var _=require(_0xaaeb('0x1'));var EventEmitter=require(_0xaaeb('0x2'))['EventEmitter'];var AGIReply=require('./reply');var AGIError=require(_0xaaeb('0x3'));function AGIChannel(_0x3fa49d){var _0x398800=this,_0x491014=new AGIReply(),_0x3132df=![],_0x1f9314={};EventEmitter['call'](_0x398800);_0x3fa49d[_0xaaeb('0x4')](_0xaaeb('0x5'));_0x3fa49d[_0xaaeb('0x6')](0x8*0x3c*0x3c*0x3e8);_0x491014[_0xaaeb('0x4')]('utf8');_0x491014['on']('headers',function(_0x5c3021){for(var _0x13ae1b in _0x5c3021){_0x398800[_0x13ae1b]=_0x5c3021[_0x13ae1b];}_0x398800[_0xaaeb('0x7')](_0xaaeb('0x8'));});_0x491014['on'](_0xaaeb('0x9'),function(_0x3cb604){if(_0x3cb604['toLowerCase']()=='hangup'){_0x398800[_0xaaeb('0x7')](_0xaaeb('0xa'));return;}if(_0x3cb604['substring'](0x0,0xb)==_0xaaeb('0xb')){_0x3132df=!![];}if(_0x3132df){_0x1f9314['rx']+=_0x3cb604+'\x0a';if(_0x3cb604[_0xaaeb('0xc')](_0xaaeb('0xd'))!=-0x1){_0x3132df=![];}}else{_0x1f9314['rx']=_0x3cb604;}if(_0x3132df){return;}if(typeof _0x1f9314['cb']==_0xaaeb('0xe')){var _0x132881=_0x1f9314['rx'][_0xaaeb('0xf')](0x0,0x3),_0x4eab06=null,_0x2a4cda=null;_0x132881=parseInt(_0x132881);if(isNaN(_0x132881)){_0x1f9314['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xaaeb('0x10')});return;}if(_0x132881!=0xc8){_0x1f9314['cb'](null,{'code':_0x132881,'result':-0x1,'extra':'KO'});return;}_0x4eab06=_0x1f9314['rx'][_0xaaeb('0xf')](0x4)[_0xaaeb('0x11')](_0xaaeb('0x12'),'');if(_0x4eab06[_0xaaeb('0x13')]('\x20')!=-0x1){_0x4eab06=_0x4eab06['substr'](0x0,_0x4eab06[_0xaaeb('0x13')]('\x20'));}if(_[_0xaaeb('0x14')](_0x4eab06,'-1')){_0x4eab06=parseInt(_0x4eab06);}_0x2a4cda=_0x1f9314['rx'][_0xaaeb('0x15')]('\x20');if(_0x2a4cda[_0xaaeb('0x16')]==0x3){_0x2a4cda=_0x2a4cda[0x2][_0xaaeb('0xf')](0x1,_0x2a4cda[0x2]['length']-0x1);}else if(_0x2a4cda['length']>0x3){var _0x4add51=/\((.+)\)/;var _0x1bafab=_0x1f9314['rx']['match'](_0x4add51);if(_0x1bafab){_0x2a4cda=_0x1bafab[0x1];}else{_0x2a4cda=null;}}else{_0x2a4cda=null;}_0x1f9314['cb'](null,{'code':_0x132881,'result':_0x4eab06,'extra':_0x2a4cda});}});_0x3fa49d['on'](_0xaaeb('0x17'),function(_0x4707d1){_0x398800['emit'](_0xaaeb('0x17'),new AGIError('E_AGI_SOCKET_ERROR',_0x4707d1[_0xaaeb('0x18')]));});_0x3fa49d['on'](_0xaaeb('0x19'),function(){_0x398800['emit'](_0xaaeb('0x19'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x3fa49d['on'](_0xaaeb('0x1a'),function(){_0x398800[_0xaaeb('0x7')]('timeout',new AGIError(_0xaaeb('0x1b')));_0x3fa49d[_0xaaeb('0x1c')]();});_0x3fa49d[_0xaaeb('0x1d')](_0x491014);this['command']=function(_0x4ff3c8,_0x248729){var _0x4ff3c8=_0x4ff3c8||'',_0x248729=typeof _0x248729=='function'?_0x248729:new Function();_0x1f9314={'tx':_0x4ff3c8,'rx':'','cb':_0x248729};_0x3fa49d[_0xaaeb('0x1e')](_0x4ff3c8+'\x0a');},this[_0xaaeb('0x19')]=function(){_0x3fa49d[_0xaaeb('0x1c')]();};}util[_0xaaeb('0x1f')](AGIChannel,EventEmitter);AGIChannel[_0xaaeb('0x20')]['sendRequest']=function(_0xf18c5c){return this[_0xaaeb('0x21')][_0xaaeb('0x22')](this,_0xf18c5c);};AGIChannel[_0xaaeb('0x20')]['answer']=function(){return this[_0xaaeb('0x23')]('ANSWER');};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x24')]=function(_0x3edb8c,_0x59fb62,_0x1de1be){_0x3edb8c=_0x3edb8c===undefined?_0xaaeb('0x25'):_0x3edb8c;_0x59fb62=_0x59fb62===undefined?'5':_0x59fb62;_0x1de1be=_0x1de1be===undefined?'1':_0x1de1be;return this['sendRequest'](util['format'](_0xaaeb('0x26'),_0x3edb8c,_0x59fb62*0x3e8,_0x1de1be));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x27')]=function(_0xbc2054){_0xbc2054=_0xbc2054||_0xaaeb('0x28');return this[_0xaaeb('0x23')](util['format'](_0xaaeb('0x29'),_0xbc2054));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x2a')]=function(_0x3ca400,_0x167f31){if(_[_0xaaeb('0x2b')](_0x167f31)){return this[_0xaaeb('0x23')](util[_0xaaeb('0x2c')]('EXEC\x20%s\x20%s',_0x3ca400,_0x167f31[_0xaaeb('0x2d')](',')));}return this['sendRequest'](util[_0xaaeb('0x2c')](_0xaaeb('0x2e'),_0x3ca400,_0x167f31));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x2f')]=function(_0x4b3fff){return this[_0xaaeb('0x23')](util['format']('SET\x20CONTEXT\x20%s',_0x4b3fff));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x30')]=function(_0x5610b5){return this['sendRequest'](util[_0xaaeb('0x2c')](_0xaaeb('0x31'),_0x5610b5));};AGIChannel['prototype']['setPriority']=function(_0x754482){return this[_0xaaeb('0x23')](util[_0xaaeb('0x2c')]('SET\x20PRIORITY\x20%s',_0x754482));};AGIChannel['prototype']['hangup']=function(){return this[_0xaaeb('0x23')](_0xaaeb('0x32'));};AGIChannel['prototype'][_0xaaeb('0x33')]=function(_0x1ec563,_0x500819){var _0x3fe255=_[_0xaaeb('0x34')](_0x500819)||_[_0xaaeb('0x35')](_0x500819)?_0x500819['toString']():_0x500819;return this[_0xaaeb('0x23')](util[_0xaaeb('0x2c')](_0xaaeb('0x36'),_0x1ec563,_0x3fe255?_0x3fe255['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x37')]=function(_0x1faf49,_0x5041a4){return this[_0xaaeb('0x23')](util[_0xaaeb('0x2c')]('SAY\x20NUMBER\x20%s\x20%s',_0x1faf49,_0x5041a4));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x38')]=function(_0x3288b7,_0x5e47a8){return this['sendRequest'](util[_0xaaeb('0x2c')](_0xaaeb('0x39'),_0x3288b7,_0x5e47a8));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x3a')]=function(_0x5be89f,_0x5ee8b9){return this['sendRequest'](util[_0xaaeb('0x2c')](_0xaaeb('0x3b'),_0x5be89f,_0x5ee8b9));};AGIChannel['prototype']['continueAt']=function(_0x31e7ad,_0x5be881,_0x44db91){_0x5be881=_0x5be881||this[_0xaaeb('0x3c')];_0x44db91=_0x44db91||0x1;this[_0xaaeb('0x2f')](_0x31e7ad);this['setExtension'](_0x5be881);this[_0xaaeb('0x3d')](_0x44db91);return this[_0xaaeb('0x27')](util[_0xaaeb('0x2c')]('GOTO\x20%s\x20%s\x20%s',_0x31e7ad,_0x5be881,_0x44db91));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x3e')]=function(_0x1dd3f7){return this[_0xaaeb('0x23')](util[_0xaaeb('0x2c')](_0xaaeb('0x3f'),_0x1dd3f7));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x40')]=function(_0x586daf,_0x436829,_0x302fb5,_0x30de59,_0xc9e64c,_0x50fffb){_0x436829=_0x436829||_0xaaeb('0x41');_0x302fb5=_0x302fb5||'';_0x30de59=_0x30de59===undefined?-0x1:_0x30de59==='-1'?-0x1:_0x30de59*0x3e8;_0xc9e64c=_0xc9e64c===undefined?'':'s='+_0xc9e64c;_0x50fffb=_0x50fffb?_0xaaeb('0x42'):'';return this['sendRequest'](util[_0xaaeb('0x2c')](_0xaaeb('0x43'),_0x586daf,_0x436829,_0x302fb5,_0x30de59,_0x50fffb,_0xc9e64c));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x44')]=function(_0x9153db,_0x22989f){_0x22989f=_0x22989f||'';return this[_0xaaeb('0x23')](util[_0xaaeb('0x2c')](_0xaaeb('0x45'),_0x9153db,_0x22989f));};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x46')]=function(_0x373d31){return this[_0xaaeb('0x2a')]('AGI',_0x373d31);};AGIChannel['prototype'][_0xaaeb('0x47')]=function(_0x3a48c6){return this['exec'](_0xaaeb('0x48'),_0x3a48c6);};AGIChannel[_0xaaeb('0x20')][_0xaaeb('0x17')]=function(_0x2ff428,_0x337374){this[_0xaaeb('0x27')](util[_0xaaeb('0x2c')](_0xaaeb('0x49'),_0x2ff428['id'],_0x2ff428[_0xaaeb('0x4a')],_0x337374));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;