f00f4bb87e38fd52a00e0607972a0188066f57ba
[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 _0x5d3b=['request-promise','util','querystring','google-tts-api','md5','./aws','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish\x20download\x20file','close','unlink','pipe','end','protocol','get','statusCode','transcode','wav','info','finish\x20to\x20convert','resolve','tmp','generate','.wav','then','chmodSync','777','split','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize','audioContent','writeFile','googleTTS','.mp3','goggleTTS\x20path','asr','uri','results','alternatives','transcript','map','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','googleDialogflow','stringify','result','action','actionIncomplete','fulfillment','speech','score','code','metadata','endConversation','isFallbackIntent','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','model=%s','freeform=3','parse','sestekNDA','nda','text','channelData','AudioFromTts','path','http','bluebird','sox'];(function(_0x15de61,_0x23027e){var _0x58896c=function(_0x1307a9){while(--_0x1307a9){_0x15de61['push'](_0x15de61['shift']());}};_0x58896c(++_0x23027e);}(_0x5d3b,0x184));var _0xb5d3=function(_0x4e57ae,_0x18fd92){_0x4e57ae=_0x4e57ae-0x0;var _0xe22f92=_0x5d3b[_0x4e57ae];return _0xe22f92;};'use strict';var fs=require('fs');var path=require(_0xb5d3('0x0'));var http=require(_0xb5d3('0x1'));var https=require('https');var urlParse=require('url')['parse'];var BPromise=require(_0xb5d3('0x2'));var rs=require('randomstring');var sox=require(_0xb5d3('0x3'));var rp=require(_0xb5d3('0x4'));var util=require(_0xb5d3('0x5'));var querystring=require(_0xb5d3('0x6'));var tts=require(_0xb5d3('0x7'));var apiai=require('apiai-promise');var md5=require(_0xb5d3('0x8'));var google=require('./google');var aws=require(_0xb5d3('0x9'));var tilde=require('./tilde');var sestek=require(_0xb5d3('0xa'));var logger=require(_0xb5d3('0xb'))(_0xb5d3('0xc'));var ISPEECH_API=_0xb5d3('0xd');function downloadFile(_0x3c0796,_0x3c5433){return new BPromise(function(_0x30d4a3,_0x2cc20e){var _0x5d8539=urlParse(_0x3c0796);var _0x345957=_0x5d8539['protocol']===_0xb5d3('0xe')?https:http;var _0x17997e={'host':_0x5d8539[_0xb5d3('0xf')],'path':_0x5d8539[_0xb5d3('0x0')],'headers':{'user-agent':_0xb5d3('0x10')}};_0x345957['get'](_0x17997e,function(_0x5a92b5){if(_0x5a92b5['statusCode']!==0xc8){logger[_0xb5d3('0x11')](_0xb5d3('0x12')+_0x3c0796+_0xb5d3('0x13')+_0x5a92b5['statusCode']+'\x20('+_0x5a92b5[_0xb5d3('0x14')]+')');_0x2cc20e(new Error(_0xb5d3('0x12')+_0x3c0796+'\x20failed,\x20status\x20code\x20=\x20'+_0x5a92b5['statusCode']+'\x20('+_0x5a92b5[_0xb5d3('0x14')]+')'));return;}var _0x3874e2=fs[_0xb5d3('0x15')](_0x3c5433);_0x3874e2['on']('finish',function(){logger['info'](_0xb5d3('0x16'));_0x3874e2[_0xb5d3('0x17')](_0x30d4a3);});_0x3874e2['on'](_0xb5d3('0x11'),function(_0x5596aa){fs[_0xb5d3('0x18')](_0x3c5433);logger[_0xb5d3('0x11')]('download\x20error',_0x5596aa);_0x2cc20e(_0x5596aa);});_0x5a92b5[_0xb5d3('0x19')](_0x3874e2);})['on'](_0xb5d3('0x11'),function(_0x486f5b){logger[_0xb5d3('0x11')](_0x486f5b);_0x2cc20e(_0x486f5b);})[_0xb5d3('0x1a')]();});}function uploadFile(_0x1b9be2){return new BPromise(function(_0x243681,_0x595562){var _0x36cf9f=urlParse(_0x1b9be2);var _0x2c0373=_0x36cf9f[_0xb5d3('0x1b')]===_0xb5d3('0xe')?https:http;var _0x190e03={'host':_0x36cf9f['host'],'path':_0x36cf9f['path'],'headers':{'user-agent':_0xb5d3('0x10')}};_0x2c0373[_0xb5d3('0x1c')](_0x190e03,function(_0x31179d){if(_0x31179d[_0xb5d3('0x1d')]!==0xc8){_0x595562(new Error(_0xb5d3('0x12')+_0x1b9be2+_0xb5d3('0x13')+_0x31179d['statusCode']+'\x20('+_0x31179d['statusMessage']+')'));return;}var _0x4f86fa='';_0x31179d['on']('data',function(_0x52fc06){_0x4f86fa+=_0x52fc06;});_0x31179d['on'](_0xb5d3('0x1a'),function(){_0x243681(_0x4f86fa);});})['on'](_0xb5d3('0x11'),function(_0x20f945){_0x595562(_0x20f945);})[_0xb5d3('0x1a')]();});}function convertFile(_0x30d32f,_0x2bdc02){return new BPromise(function(_0x106d4a,_0x32831e){var _0x293aa2=sox[_0xb5d3('0x1e')](_0x30d32f,_0x2bdc02,{'sampleRate':0x1f40,'format':_0xb5d3('0x1f'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x293aa2['on'](_0xb5d3('0x11'),function(_0x46f6e3){logger[_0xb5d3('0x11')]('error\x20convert',_0x46f6e3);_0x32831e(_0x46f6e3);});_0x293aa2['on'](_0xb5d3('0x1a'),function(){logger[_0xb5d3('0x20')](_0xb5d3('0x21'));_0x106d4a();});_0x293aa2['start']();});}function base64Decode(_0x41d773,_0x543d5b){var _0x3e504b=path[_0xb5d3('0x22')](__dirname,_0xb5d3('0x23'),rs[_0xb5d3('0x24')](0x4)+_0xb5d3('0x25'));fs['writeFileSync'](_0x3e504b,_0x41d773,'base64');return convertFile(_0x3e504b,_0x543d5b)[_0xb5d3('0x26')](function(){try{fs['unlink'](_0x3e504b);fs[_0xb5d3('0x27')](_0x543d5b,_0xb5d3('0x28'));}catch(_0x15332d){logger[_0xb5d3('0x11')](_0x15332d);}return _0x543d5b[_0xb5d3('0x29')]('.')[0x0];});}function base64Encode(_0x32bba6){var _0x26fb49=fs[_0xb5d3('0x2a')](_0x32bba6);return new Buffer(_0x26fb49)[_0xb5d3('0x2b')](_0xb5d3('0x2c'));}exports[_0xb5d3('0x2d')]=function(_0x56df43,_0x41a1d8,_0x1e90b3,_0x2dffeb,_0x1f2d44,_0x194789){var _0x1559e6,_0x5c42dc;var _0x112460=_0xb5d3('0x2e');var _0x3c5e5c=_0xb5d3('0x2f')+_0x56df43;var _0x3ad80c={};if(_0x41a1d8===_0xb5d3('0x30')){_0x3ad80c[_0xb5d3('0x31')]={'ssml':_0x1e90b3};}else{_0x3ad80c['input']={'text':_0x1e90b3};};_0x3ad80c[_0xb5d3('0x32')]={'languageCode':_0x2dffeb,'ssmlGender':_0x1f2d44};_0x3ad80c['audioConfig']={'audioEncoding':_0xb5d3('0x33'),'sampleRateHertz':0x1f40};var _0x19a505={'url':_0x112460+_0xb5d3('0x34')+_0x3c5e5c,'method':'POST','json':!![],'body':_0x3ad80c};return rp(_0x19a505)[_0xb5d3('0x26')](function(_0x35c0e9){return new BPromise(function(_0xff0bda,_0x4eb037){_0x1559e6=path['resolve'](__dirname,_0xb5d3('0x23'),rs[_0xb5d3('0x24')](0x4)+'.mp3');var _0x2bb1fb=Buffer['from'](_0x35c0e9[_0xb5d3('0x35')],_0xb5d3('0x2c'));return fs[_0xb5d3('0x36')](_0x1559e6,_0x2bb1fb,function(_0x1ef326){_0x4eb037(_0x1ef326);},function(_0x599905){fs['chmodSync'](_0x1559e6,'777');_0xff0bda(_0x599905);});});})[_0xb5d3('0x26')](function(_0x2fde32){_0x5c42dc=path[_0xb5d3('0x22')](__dirname,_0xb5d3('0x23'),rs[_0xb5d3('0x24')](0x4)+_0xb5d3('0x25'));return convertFile(_0x1559e6,_0x5c42dc);})[_0xb5d3('0x26')](function(){try{fs[_0xb5d3('0x18')](_0x1559e6);fs['chmodSync'](_0x5c42dc,_0xb5d3('0x28'));}catch(_0x1402f8){logger[_0xb5d3('0x11')](_0x1402f8);}logger[_0xb5d3('0x20')]('googleCloudTTS\x20path',_0x5c42dc[_0xb5d3('0x29')]('.')[0x0]);return _0x5c42dc[_0xb5d3('0x29')]('.')[0x0];});};exports[_0xb5d3('0x37')]=function(_0x504ef5,_0x21d558){var _0x2aadaa,_0x391140;return tts(_0x504ef5,_0x21d558||'en',0x1)[_0xb5d3('0x26')](function(_0x1b4384){logger['info'](_0x1b4384);_0x2aadaa=path['resolve'](__dirname,_0xb5d3('0x23'),rs['generate'](0x4)+_0xb5d3('0x38'));return downloadFile(_0x1b4384,_0x2aadaa);})[_0xb5d3('0x26')](function(){_0x391140=path['resolve'](__dirname,_0xb5d3('0x23'),rs['generate'](0x4)+'.wav');return convertFile(_0x2aadaa,_0x391140);})[_0xb5d3('0x26')](function(){try{fs[_0xb5d3('0x18')](_0x2aadaa);fs[_0xb5d3('0x27')](_0x391140,'777');}catch(_0x59ca39){logger[_0xb5d3('0x11')](_0x59ca39);}logger[_0xb5d3('0x20')](_0xb5d3('0x39'),_0x391140[_0xb5d3('0x29')]('.')[0x0]);return _0x391140[_0xb5d3('0x29')]('.')[0x0];});};exports['googleASR']=function(_0x2dad21,_0x11aab4,_0x51a892){return google[_0xb5d3('0x3a')](_0x2dad21,_0x11aab4,_0x51a892)['then'](function(_0x119cab){logger[_0xb5d3('0x20')](_0x119cab[_0xb5d3('0x3b')]);return rp(_0x119cab);})[_0xb5d3('0x26')](function(_0x203fcf){var _0x10f13b='';var _0x298f64=0x0;try{fs[_0xb5d3('0x18')](_0x2dad21);}catch(_0x9f3d34){logger[_0xb5d3('0x11')](_0x9f3d34);}if(_0x203fcf&&_0x203fcf['results']){_0x10f13b=_0x203fcf[_0xb5d3('0x3c')]['map'](function(_0x1d6d9d){return _0x1d6d9d&&_0x1d6d9d[_0xb5d3('0x3d')][0x0]&&_0x1d6d9d[_0xb5d3('0x3d')][0x0][_0xb5d3('0x3e')]?_0x1d6d9d['alternatives'][0x0]['transcript']:'';})['join']('\x0a');_0x298f64=_0x203fcf['results'][_0xb5d3('0x3f')](function(_0x5e38b4){return _0x5e38b4&&_0x5e38b4[_0xb5d3('0x3d')][0x0]&&_0x5e38b4[_0xb5d3('0x3d')][0x0][_0xb5d3('0x40')]?_0x5e38b4[_0xb5d3('0x3d')][0x0][_0xb5d3('0x40')]:0x0;})[_0xb5d3('0x41')]('\x0a');}logger[_0xb5d3('0x20')](_0xb5d3('0x42'),_0x10f13b);logger['info'](_0xb5d3('0x43'),_0x298f64);return{'transcript':_0x10f13b,'confidence':_0x298f64};})[_0xb5d3('0x44')](function(_0x3bf470){logger['error'](_0xb5d3('0x45'),_0x3bf470[_0xb5d3('0x1d')],_0x3bf470['name'],_0x3bf470['message']);});};exports[_0xb5d3('0x46')]=function(_0x41c51b,_0x9cb090,_0x30585e,_0x9d1b20){var _0x2f372b=apiai(_0x9cb090,{'language':_0x9d1b20||'en'});return _0x2f372b['textRequest'](_0x30585e,{'sessionId':md5(_0x41c51b)})[_0xb5d3('0x26')](function(_0x2804b9){logger[_0xb5d3('0x20')](JSON[_0xb5d3('0x47')](_0x2804b9));return{'source':_0x2804b9[_0xb5d3('0x48')]['source'],'resolvedQuery':_0x2804b9[_0xb5d3('0x48')]['resolvedQuery'],'action':_0x2804b9[_0xb5d3('0x48')][_0xb5d3('0x49')],'actionIncomplete':_0x2804b9[_0xb5d3('0x48')][_0xb5d3('0x4a')],'speech':_0x2804b9[_0xb5d3('0x48')][_0xb5d3('0x4b')][_0xb5d3('0x4c')],'score':_0x2804b9['result'][_0xb5d3('0x4d')],'statusCode':_0x2804b9['status'][_0xb5d3('0x4e')],'endConversation':_0x2804b9[_0xb5d3('0x48')][_0xb5d3('0x4f')][_0xb5d3('0x50')]||![],'isFallbackIntent':_0x2804b9[_0xb5d3('0x48')]['metadata'][_0xb5d3('0x51')]};});};exports['tildeASR']=function(_0x2da5eb,_0x13a1df,_0x58bb69,_0x6d06ee){return tilde[_0xb5d3('0x3a')](_0x2da5eb,_0x13a1df,_0x58bb69,_0x6d06ee)[_0xb5d3('0x26')](function(_0x18af49){try{fs[_0xb5d3('0x18')](_0x2da5eb);}catch(_0x39ff39){logger[_0xb5d3('0x11')](_0x39ff39);}logger['info'](_0xb5d3('0x52'),_0x18af49[_0xb5d3('0x3e')]);logger[_0xb5d3('0x20')](_0xb5d3('0x53'),_0x18af49[_0xb5d3('0x40')]);return _0x18af49;});};exports['awsPolly']=function(_0x483c98,_0x143113,_0x5ef9a3,_0x9b066c,_0x20465b,_0x27ce72){var _0x2bb725=path[_0xb5d3('0x22')](__dirname,_0xb5d3('0x23'),rs[_0xb5d3('0x24')](0x4)+_0xb5d3('0x38'));var _0xb5a9b3;return aws[_0xb5d3('0x54')](_0x483c98,_0x143113,_0x5ef9a3,_0x9b066c,_0x20465b,_0x27ce72,_0x2bb725)[_0xb5d3('0x26')](function(){_0xb5a9b3=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0x2bb725,_0xb5a9b3);})[_0xb5d3('0x26')](function(){try{fs[_0xb5d3('0x18')](_0x2bb725);fs[_0xb5d3('0x27')](_0xb5a9b3,_0xb5d3('0x28'));}catch(_0x1e75f7){logger[_0xb5d3('0x11')](_0x1e75f7);}return _0xb5a9b3[_0xb5d3('0x29')]('.')[0x0];});};exports[_0xb5d3('0x55')]=function(_0x366fc2,_0x41c5bb,_0x254b33,_0x5cacde,_0x1e1119,_0x30dcf0){return aws[_0xb5d3('0x56')](_0x366fc2,_0x41c5bb,_0x254b33,_0x5cacde,_0x1e1119,_0x30dcf0)[_0xb5d3('0x26')](function(_0x27932d){logger[_0xb5d3('0x20')](JSON[_0xb5d3('0x47')](_0x27932d));return _0x27932d;});};exports[_0xb5d3('0x57')]=function(_0x5a5b02,_0xa67835,_0x251435,_0x1720a8){var _0x561507=util[_0xb5d3('0x58')](_0xb5d3('0x59'),ISPEECH_API,_0x5a5b02,encodeURIComponent(_0xa67835),_0x251435,_0x1720a8);var _0x6ddcc9=path[_0xb5d3('0x22')](__dirname,_0xb5d3('0x23'),rs['generate'](0x4)+_0xb5d3('0x38'));var _0x580c21;return downloadFile(_0x561507,_0x6ddcc9)[_0xb5d3('0x26')](function(){_0x580c21=path[_0xb5d3('0x22')](__dirname,'tmp',rs[_0xb5d3('0x24')](0x4)+_0xb5d3('0x25'));return convertFile(_0x6ddcc9,_0x580c21);})[_0xb5d3('0x26')](function(){try{fs[_0xb5d3('0x18')](_0x6ddcc9);fs[_0xb5d3('0x27')](_0x580c21,_0xb5d3('0x28'));}catch(_0x32d642){logger[_0xb5d3('0x11')](_0x32d642);}return _0x580c21[_0xb5d3('0x29')]('.')[0x0];});};exports['ispeechASR']=function(_0x739be7,_0x1c7828,_0x1ec1de,_0x5b9747){var _0x2ecf3e=util[_0xb5d3('0x58')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x1c7828,_0x1ec1de,base64Encode(_0x739be7),_0x5b9747?util[_0xb5d3('0x58')](_0xb5d3('0x5a'),encodeURIComponent(_0x5b9747)):_0xb5d3('0x5b'));return uploadFile(_0x2ecf3e)['then'](function(_0x510aa6){return querystring[_0xb5d3('0x5c')](_0x510aa6);});};exports[_0xb5d3('0x5d')]=function(_0x5ce333,_0x3a85d2){return sestek[_0xb5d3('0x5e')](_0x5ce333,_0x3a85d2)[_0xb5d3('0x26')](function(_0x20d6b8){logger[_0xb5d3('0x20')](JSON[_0xb5d3('0x47')](_0x20d6b8));var _0x4c929d={'speech':_0x20d6b8[_0xb5d3('0x5f')],'action':_0x20d6b8[_0xb5d3('0x60')]?_0x20d6b8['channelData']['CustomAction']:undefined,'actiondata':_0x20d6b8['channelData']?_0x20d6b8[_0xb5d3('0x60')]['CustomActionData']:undefined};if(_0x20d6b8[_0xb5d3('0x60')]&&_0x20d6b8['channelData'][_0xb5d3('0x61')]){return base64Decode(_0x20d6b8[_0xb5d3('0x60')][_0xb5d3('0x61')]['Data'],path[_0xb5d3('0x22')](__dirname,_0xb5d3('0x23'),rs['generate'](0x4)+'.wav'))[_0xb5d3('0x26')](function(_0x45da39){_0x4c929d['audiofile']=_0x45da39;return _0x4c929d;});}return _0x4c929d;});};exports['dirName']=function(){return __dirname;};