71f7fb5db12eddafaec301f86902026d7eb820bb
[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 _0xb016=['extension','setExtension','GOTO\x20%s\x20%s\x20%s','GET\x20VARIABLE\x20\x22%s\x22','wav','BEEP','streamFile','agi','AGI','noop','util','lodash','./reply','call','setEncoding','utf8','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','520\x20End\x20of\x20proper','no\x20code','replace','indexOf','length','match','error','code','close','E_AGI_SOCKET_CLOSE','timeout','destroy','pipe','command','write','prototype','sendRequest','sync','answer','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','join','setContext','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt'];(function(_0x1e69e5,_0x31c9d7){var _0x54927a=function(_0xa539ff){while(--_0xa539ff){_0x1e69e5['push'](_0x1e69e5['shift']());}};_0x54927a(++_0x31c9d7);}(_0xb016,0x159));var _0x6b01=function(_0x2c4598,_0x4dc58e){_0x2c4598=_0x2c4598-0x0;var _0x13c71c=_0xb016[_0x2c4598];return _0x13c71c;};'use strict';var util=require(_0x6b01('0x0'));var _=require(_0x6b01('0x1'));var EventEmitter=require('events')['EventEmitter'];var AGIReply=require(_0x6b01('0x2'));var AGIError=require('./error');function AGIChannel(_0x160a7d){var _0x464e83=this,_0x161b59=new AGIReply(),_0x3b9de1=![],_0x5964ca={};EventEmitter[_0x6b01('0x3')](_0x464e83);_0x160a7d[_0x6b01('0x4')](_0x6b01('0x5'));_0x160a7d['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x161b59['setEncoding'](_0x6b01('0x5'));_0x161b59['on'](_0x6b01('0x6'),function(_0x526a7d){for(var _0x5f4636 in _0x526a7d){_0x464e83[_0x5f4636]=_0x526a7d[_0x5f4636];}_0x464e83[_0x6b01('0x7')](_0x6b01('0x8'));});_0x161b59['on'](_0x6b01('0x9'),function(_0x242394){if(_0x242394[_0x6b01('0xa')]()=='hangup'){_0x464e83['emit'](_0x6b01('0xb'));return;}if(_0x242394[_0x6b01('0xc')](0x0,0xb)==_0x6b01('0xd')){_0x3b9de1=!![];}if(_0x3b9de1){_0x5964ca['rx']+=_0x242394+'\x0a';if(_0x242394['search'](_0x6b01('0xe'))!=-0x1){_0x3b9de1=![];}}else{_0x5964ca['rx']=_0x242394;}if(_0x3b9de1){return;}if(typeof _0x5964ca['cb']=='function'){var _0x51f976=_0x5964ca['rx'][_0x6b01('0xc')](0x0,0x3),_0x26f2a0=null,_0x4fa826=null;_0x51f976=parseInt(_0x51f976);if(isNaN(_0x51f976)){_0x5964ca['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x6b01('0xf')});return;}if(_0x51f976!=0xc8){_0x5964ca['cb'](null,{'code':_0x51f976,'result':-0x1,'extra':'KO'});return;}_0x26f2a0=_0x5964ca['rx']['substring'](0x4)[_0x6b01('0x10')]('result=','');if(_0x26f2a0['indexOf']('\x20')!=-0x1){_0x26f2a0=_0x26f2a0['substr'](0x0,_0x26f2a0[_0x6b01('0x11')]('\x20'));}if(_['startsWith'](_0x26f2a0,'-1')){_0x26f2a0=parseInt(_0x26f2a0);}_0x4fa826=_0x5964ca['rx']['split']('\x20');if(_0x4fa826[_0x6b01('0x12')]==0x3){_0x4fa826=_0x4fa826[0x2][_0x6b01('0xc')](0x1,_0x4fa826[0x2][_0x6b01('0x12')]-0x1);}else if(_0x4fa826[_0x6b01('0x12')]>0x3){var _0x3d7045=/\((.+)\)/;var _0x2d077f=_0x5964ca['rx'][_0x6b01('0x13')](_0x3d7045);if(_0x2d077f){_0x4fa826=_0x2d077f[0x1];}else{_0x4fa826=null;}}else{_0x4fa826=null;}_0x5964ca['cb'](null,{'code':_0x51f976,'result':_0x26f2a0,'extra':_0x4fa826});}});_0x160a7d['on'](_0x6b01('0x14'),function(_0x9c6571){_0x464e83[_0x6b01('0x7')](_0x6b01('0x14'),new AGIError('E_AGI_SOCKET_ERROR',_0x9c6571[_0x6b01('0x15')]));});_0x160a7d['on'](_0x6b01('0x16'),function(){_0x464e83[_0x6b01('0x7')](_0x6b01('0x16'),new AGIError(_0x6b01('0x17')));});_0x160a7d['on'](_0x6b01('0x18'),function(){_0x464e83[_0x6b01('0x7')](_0x6b01('0x18'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x160a7d[_0x6b01('0x19')]();});_0x160a7d[_0x6b01('0x1a')](_0x161b59);this[_0x6b01('0x1b')]=function(_0x2551b0,_0x1fced4){var _0x2551b0=_0x2551b0||'',_0x1fced4=typeof _0x1fced4=='function'?_0x1fced4:new Function();_0x5964ca={'tx':_0x2551b0,'rx':'','cb':_0x1fced4};_0x160a7d[_0x6b01('0x1c')](_0x2551b0+'\x0a');},this[_0x6b01('0x16')]=function(){_0x160a7d[_0x6b01('0x19')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x6b01('0x1d')][_0x6b01('0x1e')]=function(_0x304393){return this[_0x6b01('0x1b')][_0x6b01('0x1f')](this,_0x304393);};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x20')]=function(){return this[_0x6b01('0x1e')](_0x6b01('0x21'));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x22')]=function(_0xa846d8,_0x154dfc,_0x55ca4b){_0xa846d8=_0xa846d8===undefined?_0x6b01('0x23'):_0xa846d8;_0x154dfc=_0x154dfc===undefined?'5':_0x154dfc;_0x55ca4b=_0x55ca4b===undefined?'1':_0x55ca4b;return this[_0x6b01('0x1e')](util[_0x6b01('0x24')](_0x6b01('0x25'),_0xa846d8,_0x154dfc*0x3e8,_0x55ca4b));};AGIChannel[_0x6b01('0x1d')]['noop']=function(_0x54f030){_0x54f030=_0x54f030||_0x6b01('0x26');return this[_0x6b01('0x1e')](util[_0x6b01('0x24')](_0x6b01('0x27'),_0x54f030));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x28')]=function(_0x542ca0,_0x39f193){if(_['isArray'](_0x39f193)){return this[_0x6b01('0x1e')](util['format'](_0x6b01('0x29'),_0x542ca0,_0x39f193[_0x6b01('0x2a')](',')));}return this[_0x6b01('0x1e')](util[_0x6b01('0x24')](_0x6b01('0x29'),_0x542ca0,_0x39f193));};AGIChannel['prototype'][_0x6b01('0x2b')]=function(_0x2b4a20){return this[_0x6b01('0x1e')](util['format']('SET\x20CONTEXT\x20%s',_0x2b4a20));};AGIChannel[_0x6b01('0x1d')]['setExtension']=function(_0x279850){return this[_0x6b01('0x1e')](util[_0x6b01('0x24')]('SET\x20EXTENSION\x20%s',_0x279850));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x2c')]=function(_0x186a6d){return this['sendRequest'](util[_0x6b01('0x24')](_0x6b01('0x2d'),_0x186a6d));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0xb')]=function(){return this[_0x6b01('0x1e')]('HANGUP');};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x2e')]=function(_0x1c9744,_0x5269c7){var _0xce4545=_[_0x6b01('0x2f')](_0x5269c7)||_[_0x6b01('0x30')](_0x5269c7)?_0x5269c7[_0x6b01('0x31')]():_0x5269c7;return this['sendRequest'](util[_0x6b01('0x24')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x1c9744,_0xce4545?_0xce4545[_0x6b01('0x31')]()[_0x6b01('0x10')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x32')]=function(_0x167d08,_0x457c93){return this[_0x6b01('0x1e')](util['format'](_0x6b01('0x33'),_0x167d08,_0x457c93));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x34')]=function(_0x42ecc6,_0x1ca3aa){return this[_0x6b01('0x1e')](util[_0x6b01('0x24')](_0x6b01('0x35'),_0x42ecc6,_0x1ca3aa));};AGIChannel['prototype'][_0x6b01('0x36')]=function(_0x55907f,_0x336a67){return this[_0x6b01('0x1e')](util['format'](_0x6b01('0x37'),_0x55907f,_0x336a67));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x38')]=function(_0x45952a,_0x2d4125,_0x33a9ea){_0x2d4125=_0x2d4125||this[_0x6b01('0x39')];_0x33a9ea=_0x33a9ea||0x1;this[_0x6b01('0x2b')](_0x45952a);this[_0x6b01('0x3a')](_0x2d4125);this[_0x6b01('0x2c')](_0x33a9ea);return this['noop'](util[_0x6b01('0x24')](_0x6b01('0x3b'),_0x45952a,_0x2d4125,_0x33a9ea));};AGIChannel['prototype']['getVariable']=function(_0x32b9ec){return this[_0x6b01('0x1e')](util['format'](_0x6b01('0x3c'),_0x32b9ec));};AGIChannel[_0x6b01('0x1d')]['recordFile']=function(_0x95fd25,_0x5e6f28,_0x2ab117,_0x1c6eba,_0xf52992,_0x50b13d){_0x5e6f28=_0x5e6f28||_0x6b01('0x3d');_0x2ab117=_0x2ab117||'';_0x1c6eba=_0x1c6eba===undefined?-0x1:_0x1c6eba==='-1'?-0x1:_0x1c6eba*0x3e8;_0xf52992=_0xf52992===undefined?'':'s='+_0xf52992;_0x50b13d=_0x50b13d?_0x6b01('0x3e'):'';return this['sendRequest'](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x95fd25,_0x5e6f28,_0x2ab117,_0x1c6eba,_0x50b13d,_0xf52992));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x3f')]=function(_0x23d1b7,_0x2cb4de){_0x2cb4de=_0x2cb4de||'';return this[_0x6b01('0x1e')](util[_0x6b01('0x24')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x23d1b7,_0x2cb4de));};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x40')]=function(_0x38cb74){return this[_0x6b01('0x28')](_0x6b01('0x41'),_0x38cb74);};AGIChannel[_0x6b01('0x1d')]['wait']=function(_0x1fd975){return this['exec']('WAIT',_0x1fd975);};AGIChannel[_0x6b01('0x1d')][_0x6b01('0x14')]=function(_0x50397b,_0x408bb0){this[_0x6b01('0x42')](util[_0x6b01('0x24')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x50397b['id'],_0x50397b['label'],_0x408bb0));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;