Built motion from commit (unavailable).|2.4.18
[motion2.git] / server / services / agi / scripts / index.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 _0x79c8=['tmp','generate','writeFileSync','then','chmodSync','777','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','audioConfig','from','audioContent','writeFile','.wav','googleCloudTTS\x20path','googleTTS','.mp3','goggleTTS\x20path','split','asr','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','stringify','result','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','metadata','tildeASR','awsPolly','polly','awsLex','lex','ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','text','channelData','CustomAction','CustomActionData','Data','audiofile','dirName','path','http','url','parse','randomstring','sox','request-promise','util','querystring','apiai-promise','./google','./aws','./tilde','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','info','finish\x20download\x20file','unlink','download\x20error','end','get','data','wav','error\x20convert','finish\x20to\x20convert','start','resolve'];(function(_0xe94bca,_0x2927f6){var _0x39cec3=function(_0x567d13){while(--_0x567d13){_0xe94bca['push'](_0xe94bca['shift']());}};_0x39cec3(++_0x2927f6);}(_0x79c8,0x10c));var _0x879c=function(_0xe0cab6,_0x57da73){_0xe0cab6=_0xe0cab6-0x0;var _0x2bd9c2=_0x79c8[_0xe0cab6];return _0x2bd9c2;};'use strict';var fs=require('fs');var path=require(_0x879c('0x0'));var http=require(_0x879c('0x1'));var https=require('https');var urlParse=require(_0x879c('0x2'))[_0x879c('0x3')];var BPromise=require('bluebird');var rs=require(_0x879c('0x4'));var sox=require(_0x879c('0x5'));var rp=require(_0x879c('0x6'));var util=require(_0x879c('0x7'));var querystring=require(_0x879c('0x8'));var tts=require('google-tts-api');var apiai=require(_0x879c('0x9'));var md5=require('md5');var google=require(_0x879c('0xa'));var aws=require(_0x879c('0xb'));var tilde=require(_0x879c('0xc'));var sestek=require(_0x879c('0xd'));var logger=require(_0x879c('0xe'))(_0x879c('0xf'));var ISPEECH_API=_0x879c('0x10');function downloadFile(_0x405c5a,_0x4a7f9e){return new BPromise(function(_0x614e51,_0x4314f5){var _0x5c95fa=urlParse(_0x405c5a);var _0x529eb4=_0x5c95fa[_0x879c('0x11')]===_0x879c('0x12')?https:http;var _0xae434f={'host':_0x5c95fa[_0x879c('0x13')],'path':_0x5c95fa[_0x879c('0x0')],'headers':{'user-agent':_0x879c('0x14')}};_0x529eb4['get'](_0xae434f,function(_0x356dd4){if(_0x356dd4['statusCode']!==0xc8){logger[_0x879c('0x15')](_0x879c('0x16')+_0x405c5a+_0x879c('0x17')+_0x356dd4['statusCode']+'\x20('+_0x356dd4['statusMessage']+')');_0x4314f5(new Error('request\x20to\x20'+_0x405c5a+_0x879c('0x17')+_0x356dd4[_0x879c('0x18')]+'\x20('+_0x356dd4[_0x879c('0x19')]+')'));return;}var _0x3e0a83=fs['createWriteStream'](_0x4a7f9e);_0x3e0a83['on']('finish',function(){logger[_0x879c('0x1a')](_0x879c('0x1b'));_0x3e0a83['close'](_0x614e51);});_0x3e0a83['on'](_0x879c('0x15'),function(_0x10165a){fs[_0x879c('0x1c')](_0x4a7f9e);logger[_0x879c('0x15')](_0x879c('0x1d'),_0x10165a);_0x4314f5(_0x10165a);});_0x356dd4['pipe'](_0x3e0a83);})['on'](_0x879c('0x15'),function(_0x1e71f7){logger[_0x879c('0x15')](_0x1e71f7);_0x4314f5(_0x1e71f7);})[_0x879c('0x1e')]();});}function uploadFile(_0x2a31f4){return new BPromise(function(_0x379b6f,_0x20e1d5){var _0x32535c=urlParse(_0x2a31f4);var _0x133d3a=_0x32535c[_0x879c('0x11')]===_0x879c('0x12')?https:http;var _0x19bccd={'host':_0x32535c[_0x879c('0x13')],'path':_0x32535c[_0x879c('0x0')],'headers':{'user-agent':_0x879c('0x14')}};_0x133d3a[_0x879c('0x1f')](_0x19bccd,function(_0x2e5026){if(_0x2e5026[_0x879c('0x18')]!==0xc8){_0x20e1d5(new Error(_0x879c('0x16')+_0x2a31f4+_0x879c('0x17')+_0x2e5026[_0x879c('0x18')]+'\x20('+_0x2e5026[_0x879c('0x19')]+')'));return;}var _0x2616a8='';_0x2e5026['on'](_0x879c('0x20'),function(_0x590c3e){_0x2616a8+=_0x590c3e;});_0x2e5026['on']('end',function(){_0x379b6f(_0x2616a8);});})['on'](_0x879c('0x15'),function(_0x4e6743){_0x20e1d5(_0x4e6743);})[_0x879c('0x1e')]();});}function convertFile(_0x1c2025,_0x50e961){return new BPromise(function(_0x2091c7,_0x697522){var _0x3c6c87=sox['transcode'](_0x1c2025,_0x50e961,{'sampleRate':0x1f40,'format':_0x879c('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3c6c87['on'](_0x879c('0x15'),function(_0x17740e){logger['error'](_0x879c('0x22'),_0x17740e);_0x697522(_0x17740e);});_0x3c6c87['on'](_0x879c('0x1e'),function(){logger[_0x879c('0x1a')](_0x879c('0x23'));_0x2091c7();});_0x3c6c87[_0x879c('0x24')]();});}function base64Decode(_0x57013f,_0x5e5a29){var _0x1ff1d6=path[_0x879c('0x25')](__dirname,_0x879c('0x26'),rs[_0x879c('0x27')](0x4)+'.wav');fs[_0x879c('0x28')](_0x1ff1d6,_0x57013f,'base64');return convertFile(_0x1ff1d6,_0x5e5a29)[_0x879c('0x29')](function(){try{fs[_0x879c('0x1c')](_0x1ff1d6);fs[_0x879c('0x2a')](_0x5e5a29,_0x879c('0x2b'));}catch(_0x2dc98f){logger[_0x879c('0x15')](_0x2dc98f);}return _0x5e5a29['split']('.')[0x0];});}function base64Encode(_0x1b5e1b){var _0x41f582=fs[_0x879c('0x2c')](_0x1b5e1b);return new Buffer(_0x41f582)[_0x879c('0x2d')](_0x879c('0x2e'));}exports[_0x879c('0x2f')]=function(_0x278942,_0x4e2119,_0x1267b5,_0x2cb653,_0x9228a1,_0x2fec6c){var _0x19ee76,_0x4aa748;var _0x2682f5=_0x879c('0x30');var _0x2d446e='?key='+_0x278942;var _0x1206cc={};if(_0x4e2119===_0x879c('0x31')){_0x1206cc[_0x879c('0x32')]={'ssml':_0x1267b5};}else{_0x1206cc[_0x879c('0x32')]={'text':_0x1267b5};};_0x1206cc['voice']={'languageCode':_0x2cb653,'ssmlGender':_0x9228a1};_0x1206cc[_0x879c('0x33')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x2c18d3={'url':_0x2682f5+'text:synthesize'+_0x2d446e,'method':'POST','json':!![],'body':_0x1206cc};return rp(_0x2c18d3)[_0x879c('0x29')](function(_0x483ed6){return new BPromise(function(_0x5933e0,_0x52df8d){_0x19ee76=path[_0x879c('0x25')](__dirname,_0x879c('0x26'),rs['generate'](0x4)+'.mp3');var _0x3827e3=Buffer[_0x879c('0x34')](_0x483ed6[_0x879c('0x35')],_0x879c('0x2e'));return fs[_0x879c('0x36')](_0x19ee76,_0x3827e3,function(_0x2822cc){_0x52df8d(_0x2822cc);},function(_0x413810){fs[_0x879c('0x2a')](_0x19ee76,_0x879c('0x2b'));_0x5933e0(_0x413810);});});})[_0x879c('0x29')](function(_0x4abd57){_0x4aa748=path['resolve'](__dirname,_0x879c('0x26'),rs[_0x879c('0x27')](0x4)+_0x879c('0x37'));return convertFile(_0x19ee76,_0x4aa748);})['then'](function(){try{fs[_0x879c('0x1c')](_0x19ee76);fs['chmodSync'](_0x4aa748,_0x879c('0x2b'));}catch(_0x5572c7){logger[_0x879c('0x15')](_0x5572c7);}logger['info'](_0x879c('0x38'),_0x4aa748['split']('.')[0x0]);return _0x4aa748['split']('.')[0x0];});};exports[_0x879c('0x39')]=function(_0x21b355,_0x242728){var _0xa24559,_0x7c37a9;return tts(_0x21b355,_0x242728||'en',0x1)[_0x879c('0x29')](function(_0x1f3131){logger[_0x879c('0x1a')](_0x1f3131);_0xa24559=path[_0x879c('0x25')](__dirname,_0x879c('0x26'),rs[_0x879c('0x27')](0x4)+_0x879c('0x3a'));return downloadFile(_0x1f3131,_0xa24559);})['then'](function(){_0x7c37a9=path[_0x879c('0x25')](__dirname,'tmp',rs['generate'](0x4)+_0x879c('0x37'));return convertFile(_0xa24559,_0x7c37a9);})[_0x879c('0x29')](function(){try{fs[_0x879c('0x1c')](_0xa24559);fs[_0x879c('0x2a')](_0x7c37a9,_0x879c('0x2b'));}catch(_0x5e05aa){logger['error'](_0x5e05aa);}logger[_0x879c('0x1a')](_0x879c('0x3b'),_0x7c37a9[_0x879c('0x3c')]('.')[0x0]);return _0x7c37a9[_0x879c('0x3c')]('.')[0x0];});};exports['googleASR']=function(_0x394bdf,_0x3f7785,_0x1dbb8d){return google[_0x879c('0x3d')](_0x394bdf,_0x3f7785,_0x1dbb8d)[_0x879c('0x29')](function(_0x4a9882){logger[_0x879c('0x1a')](_0x4a9882['uri']);return rp(_0x4a9882);})['then'](function(_0x16d3b7){var _0x13e846='';var _0x4a2abd=0x0;try{fs[_0x879c('0x1c')](_0x394bdf);}catch(_0x48ee3d){logger['error'](_0x48ee3d);}if(_0x16d3b7&&_0x16d3b7['results']){_0x13e846=_0x16d3b7[_0x879c('0x3e')]['map'](function(_0x2dbb02){return _0x2dbb02&&_0x2dbb02[_0x879c('0x3f')][0x0]&&_0x2dbb02['alternatives'][0x0]['transcript']?_0x2dbb02[_0x879c('0x3f')][0x0][_0x879c('0x40')]:'';})[_0x879c('0x41')]('\x0a');_0x4a2abd=_0x16d3b7[_0x879c('0x3e')][_0x879c('0x42')](function(_0x3475bf){return _0x3475bf&&_0x3475bf[_0x879c('0x3f')][0x0]&&_0x3475bf[_0x879c('0x3f')][0x0][_0x879c('0x43')]?_0x3475bf[_0x879c('0x3f')][0x0][_0x879c('0x43')]:0x0;})[_0x879c('0x41')]('\x0a');}logger[_0x879c('0x1a')](_0x879c('0x44'),_0x13e846);logger[_0x879c('0x1a')](_0x879c('0x45'),_0x4a2abd);return{'transcript':_0x13e846,'confidence':_0x4a2abd};})['catch'](function(_0x1000ab){logger['error'](_0x879c('0x46'),_0x1000ab[_0x879c('0x18')],_0x1000ab[_0x879c('0x47')],_0x1000ab[_0x879c('0x48')]);});};exports[_0x879c('0x49')]=function(_0x35d7bf,_0x3a021c,_0x36a8fd,_0x2f5f23){var _0xaa48af=apiai(_0x3a021c,{'language':_0x2f5f23||'en'});return _0xaa48af['textRequest'](_0x36a8fd,{'sessionId':md5(_0x35d7bf)})[_0x879c('0x29')](function(_0x169ea9){logger[_0x879c('0x1a')](JSON[_0x879c('0x4a')](_0x169ea9));return{'source':_0x169ea9[_0x879c('0x4b')]['source'],'resolvedQuery':_0x169ea9[_0x879c('0x4b')][_0x879c('0x4c')],'action':_0x169ea9[_0x879c('0x4b')][_0x879c('0x4d')],'actionIncomplete':_0x169ea9[_0x879c('0x4b')][_0x879c('0x4e')],'speech':_0x169ea9['result'][_0x879c('0x4f')]['speech'],'score':_0x169ea9[_0x879c('0x4b')][_0x879c('0x50')],'statusCode':_0x169ea9[_0x879c('0x51')][_0x879c('0x52')],'endConversation':_0x169ea9['result'][_0x879c('0x53')]['endConversation']||![],'isFallbackIntent':_0x169ea9[_0x879c('0x4b')][_0x879c('0x53')]['isFallbackIntent']};});};exports[_0x879c('0x54')]=function(_0x4b6485,_0xf499eb,_0x525f38,_0x50a7b7){return tilde['asr'](_0x4b6485,_0xf499eb,_0x525f38,_0x50a7b7)[_0x879c('0x29')](function(_0x2868c1){try{fs[_0x879c('0x1c')](_0x4b6485);}catch(_0x34a024){logger[_0x879c('0x15')](_0x34a024);}logger[_0x879c('0x1a')]('Tilde\x20ASR\x20transcription',_0x2868c1[_0x879c('0x40')]);logger[_0x879c('0x1a')]('Tilde\x20ASR\x20confidence',_0x2868c1[_0x879c('0x43')]);return _0x2868c1;});};exports[_0x879c('0x55')]=function(_0x452bde,_0x1bce5d,_0x132a50,_0x124db9,_0x4f63ad,_0x2126c7){var _0x110d6e=path[_0x879c('0x25')](__dirname,_0x879c('0x26'),rs[_0x879c('0x27')](0x4)+_0x879c('0x3a'));var _0x4d4cf8;return aws[_0x879c('0x56')](_0x452bde,_0x1bce5d,_0x132a50,_0x124db9,_0x4f63ad,_0x2126c7,_0x110d6e)[_0x879c('0x29')](function(){_0x4d4cf8=path['resolve'](__dirname,_0x879c('0x26'),rs[_0x879c('0x27')](0x4)+_0x879c('0x37'));return convertFile(_0x110d6e,_0x4d4cf8);})['then'](function(){try{fs[_0x879c('0x1c')](_0x110d6e);fs[_0x879c('0x2a')](_0x4d4cf8,_0x879c('0x2b'));}catch(_0x5d8709){logger['error'](_0x5d8709);}return _0x4d4cf8[_0x879c('0x3c')]('.')[0x0];});};exports[_0x879c('0x57')]=function(_0x29aa73,_0x2a7fa6,_0x6b8835,_0x4fa590,_0x7ea160,_0x22578e){return aws[_0x879c('0x58')](_0x29aa73,_0x2a7fa6,_0x6b8835,_0x4fa590,_0x7ea160,_0x22578e)['then'](function(_0x1256ff){logger[_0x879c('0x1a')](JSON[_0x879c('0x4a')](_0x1256ff));return _0x1256ff;});};exports[_0x879c('0x59')]=function(_0x1dc244,_0x770f46,_0x20b68a,_0x4315b3){var _0x2775a9=util[_0x879c('0x5a')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x1dc244,encodeURIComponent(_0x770f46),_0x20b68a,_0x4315b3);var _0x24d607=path['resolve'](__dirname,_0x879c('0x26'),rs[_0x879c('0x27')](0x4)+_0x879c('0x3a'));var _0x52529d;return downloadFile(_0x2775a9,_0x24d607)['then'](function(){_0x52529d=path[_0x879c('0x25')](__dirname,_0x879c('0x26'),rs[_0x879c('0x27')](0x4)+_0x879c('0x37'));return convertFile(_0x24d607,_0x52529d);})['then'](function(){try{fs['unlink'](_0x24d607);fs['chmodSync'](_0x52529d,_0x879c('0x2b'));}catch(_0x5d7270){logger[_0x879c('0x15')](_0x5d7270);}return _0x52529d[_0x879c('0x3c')]('.')[0x0];});};exports[_0x879c('0x5b')]=function(_0xebf99d,_0x536e50,_0x1d383f,_0xd9f02e){var _0x3cdeba=util[_0x879c('0x5a')](_0x879c('0x5c'),ISPEECH_API,_0x536e50,_0x1d383f,base64Encode(_0xebf99d),_0xd9f02e?util['format']('model=%s',encodeURIComponent(_0xd9f02e)):_0x879c('0x5d'));return uploadFile(_0x3cdeba)[_0x879c('0x29')](function(_0x3de330){return querystring[_0x879c('0x3')](_0x3de330);});};exports[_0x879c('0x5e')]=function(_0x29a1f9,_0x31e897){return sestek['nda'](_0x29a1f9,_0x31e897)['then'](function(_0x4d46fc){logger['info'](JSON['stringify'](_0x4d46fc));var _0x343c2e={'speech':_0x4d46fc[_0x879c('0x5f')],'action':_0x4d46fc[_0x879c('0x60')]?_0x4d46fc['channelData'][_0x879c('0x61')]:undefined,'actiondata':_0x4d46fc['channelData']?_0x4d46fc['channelData'][_0x879c('0x62')]:undefined};if(_0x4d46fc[_0x879c('0x60')]&&_0x4d46fc[_0x879c('0x60')]['AudioFromTts']){return base64Decode(_0x4d46fc[_0x879c('0x60')]['AudioFromTts'][_0x879c('0x63')],path[_0x879c('0x25')](__dirname,_0x879c('0x26'),rs[_0x879c('0x27')](0x4)+_0x879c('0x37')))[_0x879c('0x29')](function(_0x42ebaf){_0x343c2e[_0x879c('0x64')]=_0x42ebaf;return _0x343c2e;});}return _0x343c2e;});};exports[_0x879c('0x65')]=function(){return __dirname;};