Built motion from commit (unavailable).|2.5.5
[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 _0xfb02=['model=%s','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','path','http','url','parse','randomstring','request-promise','querystring','google-tts-api','apiai-promise','./google','./aws','./tilde','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','finish\x20download\x20file','close','unlink','pipe','end','data','transcode','wav','error\x20convert','info','finish\x20to\x20convert','start','resolve','tmp','writeFileSync','then','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','voice','MP3','text:synthesize','POST','generate','writeFile','chmodSync','777','googleCloudTTS\x20path','split','googleTTS','.mp3','.wav','goggleTTS\x20path','googleASR','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','stringify','result','source','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','endConversation','isFallbackIntent','tildeASR','asr','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s'];(function(_0x561f23,_0x29ba17){var _0x5ee9b9=function(_0x4f8819){while(--_0x4f8819){_0x561f23['push'](_0x561f23['shift']());}};_0x5ee9b9(++_0x29ba17);}(_0xfb02,0x154));var _0x2fb0=function(_0xd839e7,_0x4209e9){_0xd839e7=_0xd839e7-0x0;var _0xc3cf23=_0xfb02[_0xd839e7];return _0xc3cf23;};'use strict';var fs=require('fs');var path=require(_0x2fb0('0x0'));var http=require(_0x2fb0('0x1'));var https=require('https');var urlParse=require(_0x2fb0('0x2'))[_0x2fb0('0x3')];var BPromise=require('bluebird');var rs=require(_0x2fb0('0x4'));var sox=require('sox');var rp=require(_0x2fb0('0x5'));var util=require('util');var querystring=require(_0x2fb0('0x6'));var tts=require(_0x2fb0('0x7'));var apiai=require(_0x2fb0('0x8'));var md5=require('md5');var google=require(_0x2fb0('0x9'));var aws=require(_0x2fb0('0xa'));var tilde=require(_0x2fb0('0xb'));var sestek=require(_0x2fb0('0xc'));var logger=require(_0x2fb0('0xd'))(_0x2fb0('0xe'));var ISPEECH_API=_0x2fb0('0xf');function downloadFile(_0x3794f2,_0x32d968){return new BPromise(function(_0x30a989,_0x399604){var _0xb6705f=urlParse(_0x3794f2);var _0x54611d=_0xb6705f['protocol']===_0x2fb0('0x10')?https:http;var _0x250af1={'host':_0xb6705f[_0x2fb0('0x11')],'path':_0xb6705f[_0x2fb0('0x0')],'headers':{'user-agent':_0x2fb0('0x12')}};_0x54611d[_0x2fb0('0x13')](_0x250af1,function(_0x2ee880){if(_0x2ee880[_0x2fb0('0x14')]!==0xc8){logger[_0x2fb0('0x15')](_0x2fb0('0x16')+_0x3794f2+_0x2fb0('0x17')+_0x2ee880[_0x2fb0('0x14')]+'\x20('+_0x2ee880[_0x2fb0('0x18')]+')');_0x399604(new Error(_0x2fb0('0x16')+_0x3794f2+_0x2fb0('0x17')+_0x2ee880['statusCode']+'\x20('+_0x2ee880[_0x2fb0('0x18')]+')'));return;}var _0x560e82=fs[_0x2fb0('0x19')](_0x32d968);_0x560e82['on'](_0x2fb0('0x1a'),function(){logger['info'](_0x2fb0('0x1b'));_0x560e82[_0x2fb0('0x1c')](_0x30a989);});_0x560e82['on']('error',function(_0x1869cc){fs[_0x2fb0('0x1d')](_0x32d968);logger[_0x2fb0('0x15')]('download\x20error',_0x1869cc);_0x399604(_0x1869cc);});_0x2ee880[_0x2fb0('0x1e')](_0x560e82);})['on'](_0x2fb0('0x15'),function(_0x1de2ab){logger[_0x2fb0('0x15')](_0x1de2ab);_0x399604(_0x1de2ab);})[_0x2fb0('0x1f')]();});}function uploadFile(_0x2adf74){return new BPromise(function(_0x4f12a4,_0x9232da){var _0x4f747b=urlParse(_0x2adf74);var _0x402852=_0x4f747b['protocol']===_0x2fb0('0x10')?https:http;var _0x17d5be={'host':_0x4f747b[_0x2fb0('0x11')],'path':_0x4f747b[_0x2fb0('0x0')],'headers':{'user-agent':_0x2fb0('0x12')}};_0x402852[_0x2fb0('0x13')](_0x17d5be,function(_0x1147fb){if(_0x1147fb[_0x2fb0('0x14')]!==0xc8){_0x9232da(new Error(_0x2fb0('0x16')+_0x2adf74+_0x2fb0('0x17')+_0x1147fb[_0x2fb0('0x14')]+'\x20('+_0x1147fb[_0x2fb0('0x18')]+')'));return;}var _0x2d62e7='';_0x1147fb['on'](_0x2fb0('0x20'),function(_0x3f66af){_0x2d62e7+=_0x3f66af;});_0x1147fb['on'](_0x2fb0('0x1f'),function(){_0x4f12a4(_0x2d62e7);});})['on'](_0x2fb0('0x15'),function(_0x1ee9c8){_0x9232da(_0x1ee9c8);})[_0x2fb0('0x1f')]();});}function convertFile(_0x183f4b,_0x3d5554){return new BPromise(function(_0x27d68d,_0x433a36){var _0x48725a=sox[_0x2fb0('0x21')](_0x183f4b,_0x3d5554,{'sampleRate':0x1f40,'format':_0x2fb0('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x48725a['on'](_0x2fb0('0x15'),function(_0x1dca53){logger[_0x2fb0('0x15')](_0x2fb0('0x23'),_0x1dca53);_0x433a36(_0x1dca53);});_0x48725a['on']('end',function(){logger[_0x2fb0('0x24')](_0x2fb0('0x25'));_0x27d68d();});_0x48725a[_0x2fb0('0x26')]();});}function base64Decode(_0x3c1497,_0x2c37d9){var _0x4af1c8=path[_0x2fb0('0x27')](__dirname,_0x2fb0('0x28'),rs['generate'](0x4)+'.wav');fs[_0x2fb0('0x29')](_0x4af1c8,_0x3c1497,'base64');return convertFile(_0x4af1c8,_0x2c37d9)[_0x2fb0('0x2a')](function(){try{fs[_0x2fb0('0x1d')](_0x4af1c8);fs['chmodSync'](_0x2c37d9,'777');}catch(_0x42695e){logger[_0x2fb0('0x15')](_0x42695e);}return _0x2c37d9['split']('.')[0x0];});}function base64Encode(_0x272513){var _0x3c3280=fs[_0x2fb0('0x2b')](_0x272513);return new Buffer(_0x3c3280)[_0x2fb0('0x2c')](_0x2fb0('0x2d'));}exports[_0x2fb0('0x2e')]=function(_0x4b0f21,_0xd6c25c,_0x225262,_0x5f3cea,_0x455971,_0x24f48d){var _0x155591,_0x5405de;var _0x98da68=_0x2fb0('0x2f');var _0x429db8='?key='+_0x4b0f21;var _0x1c122d={};if(_0xd6c25c===_0x2fb0('0x30')){_0x1c122d['input']={'ssml':_0x225262};}else{_0x1c122d['input']={'text':_0x225262};};_0x1c122d[_0x2fb0('0x31')]={'languageCode':_0x5f3cea,'ssmlGender':_0x455971};_0x1c122d['audioConfig']={'audioEncoding':_0x2fb0('0x32'),'sampleRateHertz':0x1f40};var _0x4f6ea7={'url':_0x98da68+_0x2fb0('0x33')+_0x429db8,'method':_0x2fb0('0x34'),'json':!![],'body':_0x1c122d};return rp(_0x4f6ea7)[_0x2fb0('0x2a')](function(_0x260360){return new BPromise(function(_0x185b14,_0x3e5eea){_0x155591=path[_0x2fb0('0x27')](__dirname,_0x2fb0('0x28'),rs[_0x2fb0('0x35')](0x4)+'.mp3');var _0x3ad362=Buffer['from'](_0x260360['audioContent'],'base64');return fs[_0x2fb0('0x36')](_0x155591,_0x3ad362,function(_0x39f4ea){_0x3e5eea(_0x39f4ea);},function(_0x3b7d9c){fs[_0x2fb0('0x37')](_0x155591,_0x2fb0('0x38'));_0x185b14(_0x3b7d9c);});});})[_0x2fb0('0x2a')](function(_0x280f03){_0x5405de=path[_0x2fb0('0x27')](__dirname,_0x2fb0('0x28'),rs['generate'](0x4)+'.wav');return convertFile(_0x155591,_0x5405de);})[_0x2fb0('0x2a')](function(){try{fs['unlink'](_0x155591);fs[_0x2fb0('0x37')](_0x5405de,_0x2fb0('0x38'));}catch(_0x3d1062){logger[_0x2fb0('0x15')](_0x3d1062);}logger[_0x2fb0('0x24')](_0x2fb0('0x39'),_0x5405de[_0x2fb0('0x3a')]('.')[0x0]);return _0x5405de['split']('.')[0x0];});};exports[_0x2fb0('0x3b')]=function(_0x14d3c4,_0x47c677){var _0x3fa6bf,_0x3caff5;return tts(_0x14d3c4,_0x47c677||'en',0x1)[_0x2fb0('0x2a')](function(_0x4f56f1){logger[_0x2fb0('0x24')](_0x4f56f1);_0x3fa6bf=path[_0x2fb0('0x27')](__dirname,'tmp',rs[_0x2fb0('0x35')](0x4)+_0x2fb0('0x3c'));return downloadFile(_0x4f56f1,_0x3fa6bf);})[_0x2fb0('0x2a')](function(){_0x3caff5=path['resolve'](__dirname,_0x2fb0('0x28'),rs[_0x2fb0('0x35')](0x4)+_0x2fb0('0x3d'));return convertFile(_0x3fa6bf,_0x3caff5);})['then'](function(){try{fs['unlink'](_0x3fa6bf);fs[_0x2fb0('0x37')](_0x3caff5,_0x2fb0('0x38'));}catch(_0x3d7cbe){logger[_0x2fb0('0x15')](_0x3d7cbe);}logger[_0x2fb0('0x24')](_0x2fb0('0x3e'),_0x3caff5[_0x2fb0('0x3a')]('.')[0x0]);return _0x3caff5[_0x2fb0('0x3a')]('.')[0x0];});};exports[_0x2fb0('0x3f')]=function(_0x3045ab,_0xe8d72e,_0x5a7233){return google['asr'](_0x3045ab,_0xe8d72e,_0x5a7233)[_0x2fb0('0x2a')](function(_0x151a87){logger[_0x2fb0('0x24')](_0x151a87[_0x2fb0('0x40')]);return rp(_0x151a87);})[_0x2fb0('0x2a')](function(_0x31bc54){var _0x427b1b='';var _0xf8ef0a=0x0;try{fs[_0x2fb0('0x1d')](_0x3045ab);}catch(_0x261c42){logger[_0x2fb0('0x15')](_0x261c42);}if(_0x31bc54&&_0x31bc54[_0x2fb0('0x41')]){_0x427b1b=_0x31bc54['results'][_0x2fb0('0x42')](function(_0x1af43d){return _0x1af43d&&_0x1af43d[_0x2fb0('0x43')][0x0]&&_0x1af43d['alternatives'][0x0][_0x2fb0('0x44')]?_0x1af43d[_0x2fb0('0x43')][0x0][_0x2fb0('0x44')]:'';})[_0x2fb0('0x45')]('\x0a');_0xf8ef0a=_0x31bc54[_0x2fb0('0x41')][_0x2fb0('0x42')](function(_0x2f21f9){return _0x2f21f9&&_0x2f21f9['alternatives'][0x0]&&_0x2f21f9[_0x2fb0('0x43')][0x0][_0x2fb0('0x46')]?_0x2f21f9[_0x2fb0('0x43')][0x0][_0x2fb0('0x46')]:0x0;})['join']('\x0a');}logger['info'](_0x2fb0('0x47'),_0x427b1b);logger['info'](_0x2fb0('0x48'),_0xf8ef0a);return{'transcript':_0x427b1b,'confidence':_0xf8ef0a};})['catch'](function(_0x121d2b){logger['error'](_0x2fb0('0x49'),_0x121d2b[_0x2fb0('0x14')],_0x121d2b[_0x2fb0('0x4a')],_0x121d2b[_0x2fb0('0x4b')]);});};exports[_0x2fb0('0x4c')]=function(_0x58af9f,_0x3801b,_0x28b4f5,_0x49700f){var _0x49603c=apiai(_0x3801b,{'language':_0x49700f||'en'});return _0x49603c['textRequest'](_0x28b4f5,{'sessionId':md5(_0x58af9f)})['then'](function(_0x12cf26){logger[_0x2fb0('0x24')](JSON[_0x2fb0('0x4d')](_0x12cf26));return{'source':_0x12cf26[_0x2fb0('0x4e')][_0x2fb0('0x4f')],'resolvedQuery':_0x12cf26[_0x2fb0('0x4e')][_0x2fb0('0x50')],'action':_0x12cf26[_0x2fb0('0x4e')][_0x2fb0('0x51')],'actionIncomplete':_0x12cf26[_0x2fb0('0x4e')][_0x2fb0('0x52')],'speech':_0x12cf26[_0x2fb0('0x4e')][_0x2fb0('0x53')]['speech'],'score':_0x12cf26[_0x2fb0('0x4e')][_0x2fb0('0x54')],'statusCode':_0x12cf26[_0x2fb0('0x55')][_0x2fb0('0x56')],'endConversation':_0x12cf26[_0x2fb0('0x4e')]['metadata'][_0x2fb0('0x57')]||![],'isFallbackIntent':_0x12cf26['result']['metadata'][_0x2fb0('0x58')]};});};exports[_0x2fb0('0x59')]=function(_0x1e38cf,_0x5acd1f,_0x17be0b,_0x3146ff){return tilde[_0x2fb0('0x5a')](_0x1e38cf,_0x5acd1f,_0x17be0b,_0x3146ff)['then'](function(_0x231da5){try{fs[_0x2fb0('0x1d')](_0x1e38cf);}catch(_0x45ea65){logger[_0x2fb0('0x15')](_0x45ea65);}logger[_0x2fb0('0x24')](_0x2fb0('0x5b'),_0x231da5['transcript']);logger['info']('Tilde\x20ASR\x20confidence',_0x231da5['confidence']);return _0x231da5;});};exports[_0x2fb0('0x5c')]=function(_0x447b54,_0x3303da,_0x3366c8,_0x143a55,_0x19f00b,_0x3c6596){var _0x3dfff4=path[_0x2fb0('0x27')](__dirname,_0x2fb0('0x28'),rs[_0x2fb0('0x35')](0x4)+_0x2fb0('0x3c'));var _0x5bd711;return aws[_0x2fb0('0x5d')](_0x447b54,_0x3303da,_0x3366c8,_0x143a55,_0x19f00b,_0x3c6596,_0x3dfff4)[_0x2fb0('0x2a')](function(){_0x5bd711=path[_0x2fb0('0x27')](__dirname,_0x2fb0('0x28'),rs['generate'](0x4)+_0x2fb0('0x3d'));return convertFile(_0x3dfff4,_0x5bd711);})['then'](function(){try{fs[_0x2fb0('0x1d')](_0x3dfff4);fs[_0x2fb0('0x37')](_0x5bd711,_0x2fb0('0x38'));}catch(_0x43e754){logger['error'](_0x43e754);}return _0x5bd711[_0x2fb0('0x3a')]('.')[0x0];});};exports[_0x2fb0('0x5e')]=function(_0x24917a,_0x4eeff7,_0x1c837d,_0x266a57,_0xf29633,_0x2b8cc3){return aws[_0x2fb0('0x5f')](_0x24917a,_0x4eeff7,_0x1c837d,_0x266a57,_0xf29633,_0x2b8cc3)['then'](function(_0x5fe0e7){logger[_0x2fb0('0x24')](JSON[_0x2fb0('0x4d')](_0x5fe0e7));return _0x5fe0e7;});};exports[_0x2fb0('0x60')]=function(_0x4c2809,_0x2ad301,_0x3a8b2c,_0x5e324e){var _0x4e0bb7=util[_0x2fb0('0x61')](_0x2fb0('0x62'),ISPEECH_API,_0x4c2809,encodeURIComponent(_0x2ad301),_0x3a8b2c,_0x5e324e);var _0x314a2d=path[_0x2fb0('0x27')](__dirname,_0x2fb0('0x28'),rs[_0x2fb0('0x35')](0x4)+'.mp3');var _0x107bb3;return downloadFile(_0x4e0bb7,_0x314a2d)[_0x2fb0('0x2a')](function(){_0x107bb3=path[_0x2fb0('0x27')](__dirname,_0x2fb0('0x28'),rs['generate'](0x4)+_0x2fb0('0x3d'));return convertFile(_0x314a2d,_0x107bb3);})[_0x2fb0('0x2a')](function(){try{fs['unlink'](_0x314a2d);fs[_0x2fb0('0x37')](_0x107bb3,'777');}catch(_0x114686){logger[_0x2fb0('0x15')](_0x114686);}return _0x107bb3[_0x2fb0('0x3a')]('.')[0x0];});};exports['ispeechASR']=function(_0x44a9d4,_0x2585f6,_0x51f8c3,_0x251011){var _0xe93224=util[_0x2fb0('0x61')](_0x2fb0('0x63'),ISPEECH_API,_0x2585f6,_0x51f8c3,base64Encode(_0x44a9d4),_0x251011?util['format'](_0x2fb0('0x64'),encodeURIComponent(_0x251011)):'freeform=3');return uploadFile(_0xe93224)[_0x2fb0('0x2a')](function(_0x25e62c){return querystring[_0x2fb0('0x3')](_0x25e62c);});};exports[_0x2fb0('0x65')]=function(_0x4a3d7a,_0x4d810e){return sestek[_0x2fb0('0x66')](_0x4a3d7a,_0x4d810e)[_0x2fb0('0x2a')](function(_0x392dcc){logger[_0x2fb0('0x24')](JSON[_0x2fb0('0x4d')](_0x392dcc));var _0x40f5b9={'speech':_0x392dcc[_0x2fb0('0x67')],'action':_0x392dcc[_0x2fb0('0x68')]?_0x392dcc['channelData'][_0x2fb0('0x69')]:undefined,'actiondata':_0x392dcc[_0x2fb0('0x68')]?_0x392dcc[_0x2fb0('0x68')][_0x2fb0('0x6a')]:undefined};if(_0x392dcc[_0x2fb0('0x68')]&&_0x392dcc[_0x2fb0('0x68')][_0x2fb0('0x6b')]){return base64Decode(_0x392dcc[_0x2fb0('0x68')][_0x2fb0('0x6b')]['Data'],path['resolve'](__dirname,_0x2fb0('0x28'),rs[_0x2fb0('0x35')](0x4)+_0x2fb0('0x3d')))['then'](function(_0x2590b1){_0x40f5b9[_0x2fb0('0x6c')]=_0x2590b1;return _0x40f5b9;});}return _0x40f5b9;});};exports[_0x2fb0('0x6d')]=function(){return __dirname;};