680fd387df5f551044003d321cf99caf063c00c4
[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 _0x80c3=['format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','setVariable','isBoolean','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','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','WAIT','error','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','util','EventEmitter','./error','call','setTimeout','setEncoding','utf8','ready','line','toLowerCase','hangup','emit','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','indexOf','startsWith','split','length','match','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sendRequest','getData','beep'];(function(_0x5ad72c,_0x1ec6a6){var _0x2d6ff7=function(_0x123181){while(--_0x123181){_0x5ad72c['push'](_0x5ad72c['shift']());}};_0x2d6ff7(++_0x1ec6a6);}(_0x80c3,0x18f));var _0x380c=function(_0x102ff9,_0x907658){_0x102ff9=_0x102ff9-0x0;var _0x24fa97=_0x80c3[_0x102ff9];return _0x24fa97;};'use strict';var util=require(_0x380c('0x0'));var _=require('lodash');var EventEmitter=require('events')[_0x380c('0x1')];var AGIReply=require('./reply');var AGIError=require(_0x380c('0x2'));function AGIChannel(_0x4202d4){var _0x24728a=this,_0x52fd7e=new AGIReply(),_0x565a08=![],_0x553158={};EventEmitter[_0x380c('0x3')](_0x24728a);_0x4202d4['setEncoding']('utf8');_0x4202d4[_0x380c('0x4')](0x8*0x3c*0x3c*0x3e8);_0x52fd7e[_0x380c('0x5')](_0x380c('0x6'));_0x52fd7e['on']('headers',function(_0x1d853e){for(var _0x170062 in _0x1d853e){_0x24728a[_0x170062]=_0x1d853e[_0x170062];}_0x24728a['emit'](_0x380c('0x7'));});_0x52fd7e['on'](_0x380c('0x8'),function(_0x50be52){if(_0x50be52[_0x380c('0x9')]()==_0x380c('0xa')){_0x24728a[_0x380c('0xb')]('hangup');return;}if(_0x50be52[_0x380c('0xc')](0x0,0xb)==_0x380c('0xd')){_0x565a08=!![];}if(_0x565a08){_0x553158['rx']+=_0x50be52+'\x0a';if(_0x50be52[_0x380c('0xe')](_0x380c('0xf'))!=-0x1){_0x565a08=![];}}else{_0x553158['rx']=_0x50be52;}if(_0x565a08){return;}if(typeof _0x553158['cb']==_0x380c('0x10')){var _0x475148=_0x553158['rx'][_0x380c('0xc')](0x0,0x3),_0x39bd46=null,_0x14793b=null;_0x475148=parseInt(_0x475148);if(isNaN(_0x475148)){_0x553158['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x380c('0x11')});return;}if(_0x475148!=0xc8){_0x553158['cb'](null,{'code':_0x475148,'result':-0x1,'extra':'KO'});return;}_0x39bd46=_0x553158['rx']['substring'](0x4)[_0x380c('0x12')](_0x380c('0x13'),'');if(_0x39bd46['indexOf']('\x20')!=-0x1){_0x39bd46=_0x39bd46[_0x380c('0x14')](0x0,_0x39bd46[_0x380c('0x15')]('\x20'));}if(_[_0x380c('0x16')](_0x39bd46,'-1')){_0x39bd46=parseInt(_0x39bd46);}_0x14793b=_0x553158['rx'][_0x380c('0x17')]('\x20');if(_0x14793b[_0x380c('0x18')]==0x3){_0x14793b=_0x14793b[0x2][_0x380c('0xc')](0x1,_0x14793b[0x2][_0x380c('0x18')]-0x1);}else if(_0x14793b[_0x380c('0x18')]>0x3){var _0x3022e6=/\((.+)\)/;var _0x4829c5=_0x553158['rx'][_0x380c('0x19')](_0x3022e6);if(_0x4829c5){_0x14793b=_0x4829c5[0x1];}else{_0x14793b=null;}}else{_0x14793b=null;}_0x553158['cb'](null,{'code':_0x475148,'result':_0x39bd46,'extra':_0x14793b});}});_0x4202d4['on']('error',function(_0x5b2c5c){_0x24728a[_0x380c('0xb')]('error',new AGIError('E_AGI_SOCKET_ERROR',_0x5b2c5c['code']));});_0x4202d4['on']('close',function(){_0x24728a[_0x380c('0xb')](_0x380c('0x1a'),new AGIError(_0x380c('0x1b')));});_0x4202d4['on'](_0x380c('0x1c'),function(){_0x24728a[_0x380c('0xb')](_0x380c('0x1c'),new AGIError(_0x380c('0x1d')));_0x4202d4[_0x380c('0x1e')]();});_0x4202d4[_0x380c('0x1f')](_0x52fd7e);this[_0x380c('0x20')]=function(_0x22f8f2,_0x16b9ac){var _0x22f8f2=_0x22f8f2||'',_0x16b9ac=typeof _0x16b9ac==_0x380c('0x10')?_0x16b9ac:new Function();_0x553158={'tx':_0x22f8f2,'rx':'','cb':_0x16b9ac};_0x4202d4[_0x380c('0x21')](_0x22f8f2+'\x0a');},this[_0x380c('0x1a')]=function(){_0x4202d4[_0x380c('0x1e')]();};}util[_0x380c('0x22')](AGIChannel,EventEmitter);AGIChannel[_0x380c('0x23')][_0x380c('0x24')]=function(_0x5b5052){return this[_0x380c('0x20')]['sync'](this,_0x5b5052);};AGIChannel[_0x380c('0x23')]['answer']=function(){return this[_0x380c('0x24')]('ANSWER');};AGIChannel['prototype'][_0x380c('0x25')]=function(_0x290f1c,_0x5bce51,_0x24d551){_0x290f1c=_0x290f1c===undefined?_0x380c('0x26'):_0x290f1c;_0x5bce51=_0x5bce51===undefined?'5':_0x5bce51;_0x24d551=_0x24d551===undefined?'1':_0x24d551;return this[_0x380c('0x24')](util[_0x380c('0x27')](_0x380c('0x28'),_0x290f1c,_0x5bce51*0x3e8,_0x24d551));};AGIChannel[_0x380c('0x23')][_0x380c('0x29')]=function(_0x5ac3c2){_0x5ac3c2=_0x5ac3c2||'NO\x20MESSAGE';return this[_0x380c('0x24')](util[_0x380c('0x27')](_0x380c('0x2a'),_0x5ac3c2));};AGIChannel[_0x380c('0x23')][_0x380c('0x2b')]=function(_0x49a51c,_0x5a2e17){if(_['isArray'](_0x5a2e17)){return this[_0x380c('0x24')](util['format'](_0x380c('0x2c'),_0x49a51c,_0x5a2e17[_0x380c('0x2d')](',')));}return this['sendRequest'](util[_0x380c('0x27')](_0x380c('0x2c'),_0x49a51c,_0x5a2e17));};AGIChannel[_0x380c('0x23')][_0x380c('0x2e')]=function(_0x54b933){return this[_0x380c('0x24')](util[_0x380c('0x27')](_0x380c('0x2f'),_0x54b933));};AGIChannel[_0x380c('0x23')][_0x380c('0x30')]=function(_0x239ea8){return this[_0x380c('0x24')](util[_0x380c('0x27')]('SET\x20EXTENSION\x20%s',_0x239ea8));};AGIChannel['prototype']['setPriority']=function(_0x34e358){return this['sendRequest'](util[_0x380c('0x27')]('SET\x20PRIORITY\x20%s',_0x34e358));};AGIChannel[_0x380c('0x23')][_0x380c('0xa')]=function(){return this[_0x380c('0x24')]('HANGUP');};AGIChannel[_0x380c('0x23')][_0x380c('0x31')]=function(_0xf2fce0,_0x3d9a98){var _0x56898c=_[_0x380c('0x32')](_0x3d9a98)||_['isNumber'](_0x3d9a98)?_0x3d9a98[_0x380c('0x33')]():_0x3d9a98;return this['sendRequest'](util['format'](_0x380c('0x34'),_0xf2fce0,_0x56898c?_0x56898c[_0x380c('0x33')]()[_0x380c('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x380c('0x23')][_0x380c('0x35')]=function(_0x72b4ab,_0x48be48){return this[_0x380c('0x24')](util['format'](_0x380c('0x36'),_0x72b4ab,_0x48be48));};AGIChannel[_0x380c('0x23')][_0x380c('0x37')]=function(_0x4c858a,_0x306c61){return this[_0x380c('0x24')](util[_0x380c('0x27')](_0x380c('0x38'),_0x4c858a,_0x306c61));};AGIChannel['prototype'][_0x380c('0x39')]=function(_0x561772,_0x31d880){return this['sendRequest'](util[_0x380c('0x27')](_0x380c('0x3a'),_0x561772,_0x31d880));};AGIChannel[_0x380c('0x23')][_0x380c('0x3b')]=function(_0x502ad9,_0x19bb94,_0x48c339){_0x19bb94=_0x19bb94||this[_0x380c('0x3c')];_0x48c339=_0x48c339||0x1;this[_0x380c('0x2e')](_0x502ad9);this['setExtension'](_0x19bb94);this[_0x380c('0x3d')](_0x48c339);return this[_0x380c('0x29')](util[_0x380c('0x27')](_0x380c('0x3e'),_0x502ad9,_0x19bb94,_0x48c339));};AGIChannel['prototype'][_0x380c('0x3f')]=function(_0x4019fe){return this[_0x380c('0x24')](util[_0x380c('0x27')](_0x380c('0x40'),_0x4019fe));};AGIChannel[_0x380c('0x23')][_0x380c('0x41')]=function(_0x58ebe2,_0x5a5dce,_0x1a63ad,_0x53c0dd,_0x43d1e0,_0x38917b){_0x5a5dce=_0x5a5dce||_0x380c('0x42');_0x1a63ad=_0x1a63ad||'';_0x53c0dd=_0x53c0dd===undefined?-0x1:_0x53c0dd==='-1'?-0x1:_0x53c0dd*0x3e8;_0x43d1e0=_0x43d1e0===undefined?'':'s='+_0x43d1e0;_0x38917b=_0x38917b?'BEEP':'';return this['sendRequest'](util['format'](_0x380c('0x43'),_0x58ebe2,_0x5a5dce,_0x1a63ad,_0x53c0dd,_0x38917b,_0x43d1e0));};AGIChannel['prototype'][_0x380c('0x44')]=function(_0xafeb59,_0x50d6dc){_0x50d6dc=_0x50d6dc||'';return this[_0x380c('0x24')](util[_0x380c('0x27')](_0x380c('0x45'),_0xafeb59,_0x50d6dc));};AGIChannel[_0x380c('0x23')]['agi']=function(_0x2639db){return this[_0x380c('0x2b')]('AGI',_0x2639db);};AGIChannel[_0x380c('0x23')]['wait']=function(_0x5170fd){return this[_0x380c('0x2b')](_0x380c('0x46'),_0x5170fd);};AGIChannel[_0x380c('0x23')][_0x380c('0x47')]=function(_0x4e7176,_0x6b9c8f){this[_0x380c('0x29')](util[_0x380c('0x27')](_0x380c('0x48'),_0x4e7176['id'],_0x4e7176['label'],_0x6b9c8f));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;