Built motion from commit (unavailable).|2.5.8
[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 _0xf01a=['allRequiredParamsPresent','diagnosticInfo','fulfillmentText','intent','languageCode','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','parse','sestekNDA','nda','channelData','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','request-promise','randomstring','google-tts-api','util','./aws','./google','./sestek','../../../config/logger','agi','protocol','host','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','close','unlink','download\x20error','https:','get','data','end','transcode','finish\x20to\x20convert','start','resolve','tmp','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','POST','generate','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','googleTTS','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','stringify','result','resolvedQuery','action','fulfillment','speech','score','status','code','metadata','endConversation','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0xf01a,0x113));var _0xaf01=function(_0x55a370,_0x1af1fb){_0x55a370=_0x55a370-0x0;var _0x33a231=_0xf01a[_0x55a370];return _0x33a231;};'use strict';var apiai=require(_0xaf01('0x0'));var BPromise=require(_0xaf01('0x1'));var dialogflow=require(_0xaf01('0x2'));var fs=require('fs');var http=require(_0xaf01('0x3'));var https=require(_0xaf01('0x4'));var md5=require(_0xaf01('0x5'));var path=require(_0xaf01('0x6'));var querystring=require(_0xaf01('0x7'));var rp=require(_0xaf01('0x8'));var rs=require(_0xaf01('0x9'));var sox=require('sox');var tts=require(_0xaf01('0xa'));var urlParse=require('url')['parse'];var util=require(_0xaf01('0xb'));var aws=require(_0xaf01('0xc'));var google=require(_0xaf01('0xd'));var sestek=require(_0xaf01('0xe'));var tilde=require('./tilde');var logger=require(_0xaf01('0xf'))(_0xaf01('0x10'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x2fcd06,_0x2455b5){return new BPromise(function(_0x593011,_0x4fcc7f){var _0x9cfa7e=urlParse(_0x2fcd06);var _0x16dde1=_0x9cfa7e[_0xaf01('0x11')]==='https:'?https:http;var _0x50d4d0={'host':_0x9cfa7e[_0xaf01('0x12')],'path':_0x9cfa7e['path'],'headers':{'user-agent':_0xaf01('0x13')}};_0x16dde1['get'](_0x50d4d0,function(_0x1e8448){if(_0x1e8448[_0xaf01('0x14')]!==0xc8){logger[_0xaf01('0x15')](_0xaf01('0x16')+_0x2fcd06+_0xaf01('0x17')+_0x1e8448[_0xaf01('0x14')]+'\x20('+_0x1e8448['statusMessage']+')');_0x4fcc7f(new Error(_0xaf01('0x16')+_0x2fcd06+'\x20failed,\x20status\x20code\x20=\x20'+_0x1e8448[_0xaf01('0x14')]+'\x20('+_0x1e8448[_0xaf01('0x18')]+')'));return;}var _0x156afa=fs[_0xaf01('0x19')](_0x2455b5);_0x156afa['on']('finish',function(){logger[_0xaf01('0x1a')]('finish\x20download\x20file');_0x156afa[_0xaf01('0x1b')](_0x593011);});_0x156afa['on']('error',function(_0x2c0242){fs[_0xaf01('0x1c')](_0x2455b5);logger[_0xaf01('0x15')](_0xaf01('0x1d'),_0x2c0242);_0x4fcc7f(_0x2c0242);});_0x1e8448['pipe'](_0x156afa);})['on'](_0xaf01('0x15'),function(_0x9da4da){logger[_0xaf01('0x15')](_0x9da4da);_0x4fcc7f(_0x9da4da);})['end']();});}function uploadFile(_0x364b61){return new BPromise(function(_0x265857,_0x51745d){var _0x51b008=urlParse(_0x364b61);var _0x35e577=_0x51b008[_0xaf01('0x11')]===_0xaf01('0x1e')?https:http;var _0x478cc2={'host':_0x51b008[_0xaf01('0x12')],'path':_0x51b008[_0xaf01('0x6')],'headers':{'user-agent':'WHAT_EVER'}};_0x35e577[_0xaf01('0x1f')](_0x478cc2,function(_0x380efb){if(_0x380efb['statusCode']!==0xc8){_0x51745d(new Error(_0xaf01('0x16')+_0x364b61+_0xaf01('0x17')+_0x380efb['statusCode']+'\x20('+_0x380efb[_0xaf01('0x18')]+')'));return;}var _0x400f94='';_0x380efb['on'](_0xaf01('0x20'),function(_0x28d26b){_0x400f94+=_0x28d26b;});_0x380efb['on'](_0xaf01('0x21'),function(){_0x265857(_0x400f94);});})['on'](_0xaf01('0x15'),function(_0x36465b){_0x51745d(_0x36465b);})[_0xaf01('0x21')]();});}function convertFile(_0x1ed10b,_0x2482bb){return new BPromise(function(_0x2f1ef0,_0x310572){var _0x189fb7=sox[_0xaf01('0x22')](_0x1ed10b,_0x2482bb,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x189fb7['on'](_0xaf01('0x15'),function(_0x2562ab){logger[_0xaf01('0x15')]('error\x20convert',_0x2562ab);_0x310572(_0x2562ab);});_0x189fb7['on']('end',function(){logger['info'](_0xaf01('0x23'));_0x2f1ef0();});_0x189fb7[_0xaf01('0x24')]();});}function base64Decode(_0x1baefb,_0x3606b8){var _0x5c490e=path[_0xaf01('0x25')](__dirname,_0xaf01('0x26'),rs['generate'](0x4)+_0xaf01('0x27'));fs[_0xaf01('0x28')](_0x5c490e,_0x1baefb,_0xaf01('0x29'));return convertFile(_0x5c490e,_0x3606b8)[_0xaf01('0x2a')](function(){try{fs[_0xaf01('0x1c')](_0x5c490e);fs[_0xaf01('0x2b')](_0x3606b8,_0xaf01('0x2c'));}catch(_0x423596){logger[_0xaf01('0x15')](_0x423596);}return _0x3606b8[_0xaf01('0x2d')]('.')[0x0];});}function base64Encode(_0x26907b){var _0x18e615=fs[_0xaf01('0x2e')](_0x26907b);return new Buffer(_0x18e615)[_0xaf01('0x2f')](_0xaf01('0x29'));}exports[_0xaf01('0x30')]=function(_0xac25a2,_0x35c119,_0x3415b1,_0x2890bc,_0x2dc4f7,_0x53ab4a){var _0x46b99a,_0x12f98c;var _0x304ba5=_0xaf01('0x31');var _0x2929ce='?key='+_0xac25a2;var _0x34cd6e={};if(_0x35c119===_0xaf01('0x32')){_0x34cd6e[_0xaf01('0x33')]={'ssml':_0x3415b1};}else{_0x34cd6e['input']={'text':_0x3415b1};};_0x34cd6e[_0xaf01('0x34')]={'languageCode':_0x2890bc,'ssmlGender':_0x2dc4f7};_0x34cd6e['audioConfig']={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x39c263={'url':_0x304ba5+'text:synthesize'+_0x2929ce,'method':_0xaf01('0x35'),'json':!![],'body':_0x34cd6e};return rp(_0x39c263)['then'](function(_0xc323e6){return new BPromise(function(_0x187b93,_0x3409b1){_0x46b99a=path['resolve'](__dirname,_0xaf01('0x26'),rs[_0xaf01('0x36')](0x4)+_0xaf01('0x37'));var _0x11d9c2=Buffer[_0xaf01('0x38')](_0xc323e6[_0xaf01('0x39')],'base64');return fs[_0xaf01('0x3a')](_0x46b99a,_0x11d9c2,function(_0x1c03e3){_0x3409b1(_0x1c03e3);},function(_0x152cd8){fs['chmodSync'](_0x46b99a,_0xaf01('0x2c'));_0x187b93(_0x152cd8);});});})[_0xaf01('0x2a')](function(_0x18f849){_0x12f98c=path[_0xaf01('0x25')](__dirname,'tmp',rs['generate'](0x4)+_0xaf01('0x27'));return convertFile(_0x46b99a,_0x12f98c);})['then'](function(){try{fs['unlink'](_0x46b99a);fs[_0xaf01('0x2b')](_0x12f98c,_0xaf01('0x2c'));}catch(_0x42c70c){logger['error'](_0x42c70c);}logger['info'](_0xaf01('0x3b'),_0x12f98c[_0xaf01('0x2d')]('.')[0x0]);return _0x12f98c[_0xaf01('0x2d')]('.')[0x0];});};exports[_0xaf01('0x3c')]=function(_0x24a1f5,_0xdb8109){var _0x549ba8,_0x25e256;return tts(_0x24a1f5,_0xdb8109||'en',0x1)['then'](function(_0x2abcd7){logger['info'](_0x2abcd7);_0x549ba8=path[_0xaf01('0x25')](__dirname,'tmp',rs[_0xaf01('0x36')](0x4)+_0xaf01('0x37'));return downloadFile(_0x2abcd7,_0x549ba8);})[_0xaf01('0x2a')](function(){_0x25e256=path[_0xaf01('0x25')](__dirname,'tmp',rs[_0xaf01('0x36')](0x4)+_0xaf01('0x27'));return convertFile(_0x549ba8,_0x25e256);})[_0xaf01('0x2a')](function(){try{fs[_0xaf01('0x1c')](_0x549ba8);fs[_0xaf01('0x2b')](_0x25e256,_0xaf01('0x2c'));}catch(_0x1a219c){logger[_0xaf01('0x15')](_0x1a219c);}logger[_0xaf01('0x1a')]('goggleTTS\x20path',_0x25e256[_0xaf01('0x2d')]('.')[0x0]);return _0x25e256['split']('.')[0x0];});};exports[_0xaf01('0x3d')]=function(_0x39c34d,_0x4b7dd4,_0x39e5ba){return google[_0xaf01('0x3e')](_0x39c34d,_0x4b7dd4,_0x39e5ba)[_0xaf01('0x2a')](function(_0x1ee716){logger['info'](_0x1ee716[_0xaf01('0x3f')]);return rp(_0x1ee716);})[_0xaf01('0x2a')](function(_0x219e00){var _0x2fe5a1='';var _0x58e64e=0x0;try{fs[_0xaf01('0x1c')](_0x39c34d);}catch(_0x3d4f9b){logger['error'](_0x3d4f9b);}if(_0x219e00&&_0x219e00[_0xaf01('0x40')]){_0x2fe5a1=_0x219e00[_0xaf01('0x40')][_0xaf01('0x41')](function(_0x2440f3){return _0x2440f3&&_0x2440f3[_0xaf01('0x42')][0x0]&&_0x2440f3[_0xaf01('0x42')][0x0][_0xaf01('0x43')]?_0x2440f3[_0xaf01('0x42')][0x0][_0xaf01('0x43')]:'';})[_0xaf01('0x44')]('\x0a');_0x58e64e=_0x219e00['results'][_0xaf01('0x41')](function(_0x467ae9){return _0x467ae9&&_0x467ae9[_0xaf01('0x42')][0x0]&&_0x467ae9[_0xaf01('0x42')][0x0][_0xaf01('0x45')]?_0x467ae9[_0xaf01('0x42')][0x0][_0xaf01('0x45')]:0x0;})[_0xaf01('0x44')]('\x0a');}logger['info']('googleASR\x20transcription',_0x2fe5a1);logger['info'](_0xaf01('0x46'),_0x58e64e);return{'transcript':_0x2fe5a1,'confidence':_0x58e64e};})[_0xaf01('0x47')](function(_0xf7542b){logger['error'](_0xaf01('0x48'),_0xf7542b['statusCode'],_0xf7542b[_0xaf01('0x49')],_0xf7542b[_0xaf01('0x4a')]);});};exports[_0xaf01('0x4b')]=function(_0x17e18e,_0x4b713a,_0x2f4f43,_0x5f1c60){var _0x38aea1=apiai(_0x4b713a,{'language':_0x5f1c60||'en'});return _0x38aea1['textRequest'](_0x2f4f43,{'sessionId':md5(_0x17e18e)})[_0xaf01('0x2a')](function(_0x191617){logger['info'](JSON[_0xaf01('0x4c')](_0x191617));return{'source':_0x191617[_0xaf01('0x4d')]['source'],'resolvedQuery':_0x191617[_0xaf01('0x4d')][_0xaf01('0x4e')],'action':_0x191617[_0xaf01('0x4d')][_0xaf01('0x4f')],'actionIncomplete':_0x191617['result']['actionIncomplete'],'speech':_0x191617[_0xaf01('0x4d')][_0xaf01('0x50')][_0xaf01('0x51')],'score':_0x191617['result'][_0xaf01('0x52')],'statusCode':_0x191617[_0xaf01('0x53')][_0xaf01('0x54')],'endConversation':_0x191617[_0xaf01('0x4d')][_0xaf01('0x55')][_0xaf01('0x56')]||![],'isFallbackIntent':_0x191617['result'][_0xaf01('0x55')]['isFallbackIntent']};});};exports['googleDialogflowV2']=function(_0x5a4227,_0x23fbcc,_0x1b3b1b,_0x43c82e,_0xa01d4,_0x206b88){var _0x791a0=_0x43c82e[_0xaf01('0x57')](/\\n/g,'\x0a');var _0x2b2784={'credentials':{'private_key':_0x791a0,'client_email':_0x1b3b1b}};var _0x480097=new dialogflow[(_0xaf01('0x58'))](_0x2b2784);var _0x16a3b9=_0x480097[_0xaf01('0x59')](_0x23fbcc,md5(_0x5a4227));var _0x20b40c={'session':_0x16a3b9,'queryInput':{'text':{'text':_0xa01d4,'languageCode':_0x206b88}}};return _0x480097[_0xaf01('0x5a')](_0x20b40c)['then'](function(_0xb70664){if(_0xb70664&&_0xb70664[_0xaf01('0x5b')]){logger[_0xaf01('0x1a')](_0xaf01('0x5c'),JSON['stringify'](_0xb70664));var _0x27046f=_0xb70664[0x0];if(_0x27046f){var _0x2b5c70={'action':_0x27046f[_0xaf01('0x5d')][_0xaf01('0x4f')],'allRequiredParamsPresent':_0x27046f[_0xaf01('0x5d')][_0xaf01('0x5e')],'endConversation':_0x27046f[_0xaf01('0x5d')][_0xaf01('0x5f')]&&_0x27046f['queryResult']['diagnosticInfo']['fields']?_0x27046f[_0xaf01('0x5d')][_0xaf01('0x5f')]['fields']['end_conversation']['boolValue']:![],'fulfillmentText':_0x27046f[_0xaf01('0x5d')][_0xaf01('0x60')],'intentName':_0x27046f['queryResult'][_0xaf01('0x61')][_0xaf01('0x49')],'intentDisplayName':_0x27046f['queryResult'][_0xaf01('0x61')]['displayName'],'isFallbackIntent':_0x27046f[_0xaf01('0x5d')][_0xaf01('0x61')]['isFallback'],'languageCode':_0x27046f[_0xaf01('0x5d')][_0xaf01('0x62')],'queryText':_0x27046f[_0xaf01('0x5d')]['queryText'],'responseId':_0x27046f[_0xaf01('0x63')],'score':_0x27046f['queryResult'][_0xaf01('0x64')],'speech':_0x27046f['queryResult'][_0xaf01('0x60')],'providerResponse':JSON[_0xaf01('0x4c')](_0xb70664)};return _0x2b5c70;}}});};exports[_0xaf01('0x65')]=function(_0x434028,_0x2aecde,_0xe4f9a7,_0x11af74){return tilde[_0xaf01('0x3e')](_0x434028,_0x2aecde,_0xe4f9a7,_0x11af74)[_0xaf01('0x2a')](function(_0x3327b6){try{fs['unlink'](_0x434028);}catch(_0x5a6ebf){logger[_0xaf01('0x15')](_0x5a6ebf);}logger['info'](_0xaf01('0x66'),_0x3327b6[_0xaf01('0x43')]);logger[_0xaf01('0x1a')](_0xaf01('0x67'),_0x3327b6[_0xaf01('0x45')]);return _0x3327b6;});};exports[_0xaf01('0x68')]=function(_0x2fd82b,_0x471d48,_0x4ced0d,_0x5998da,_0x1834f4,_0x35ca9f){var _0x2af65e=path[_0xaf01('0x25')](__dirname,'tmp',rs['generate'](0x4)+'.mp3');var _0x1b939e;return aws[_0xaf01('0x69')](_0x2fd82b,_0x471d48,_0x4ced0d,_0x5998da,_0x1834f4,_0x35ca9f,_0x2af65e)[_0xaf01('0x2a')](function(){_0x1b939e=path[_0xaf01('0x25')](__dirname,_0xaf01('0x26'),rs[_0xaf01('0x36')](0x4)+'.wav');return convertFile(_0x2af65e,_0x1b939e);})[_0xaf01('0x2a')](function(){try{fs[_0xaf01('0x1c')](_0x2af65e);fs[_0xaf01('0x2b')](_0x1b939e,'777');}catch(_0x44998d){logger[_0xaf01('0x15')](_0x44998d);}return _0x1b939e['split']('.')[0x0];});};exports[_0xaf01('0x6a')]=function(_0x2e3a43,_0xc07212,_0x20c364,_0x33a05d,_0x381283,_0x42b08b){return aws[_0xaf01('0x6b')](_0x2e3a43,_0xc07212,_0x20c364,_0x33a05d,_0x381283,_0x42b08b)[_0xaf01('0x2a')](function(_0x5d706d){logger[_0xaf01('0x1a')](JSON[_0xaf01('0x4c')](_0x5d706d));return _0x5d706d;});};exports[_0xaf01('0x6c')]=function(_0x26d353,_0x86e193,_0xff718,_0x158aaf){var _0x31b55b=util[_0xaf01('0x6d')](_0xaf01('0x6e'),ISPEECH_API,_0x26d353,encodeURIComponent(_0x86e193),_0xff718,_0x158aaf);var _0x229bdd=path[_0xaf01('0x25')](__dirname,_0xaf01('0x26'),rs[_0xaf01('0x36')](0x4)+_0xaf01('0x37'));var _0x3c047f;return downloadFile(_0x31b55b,_0x229bdd)[_0xaf01('0x2a')](function(){_0x3c047f=path[_0xaf01('0x25')](__dirname,_0xaf01('0x26'),rs[_0xaf01('0x36')](0x4)+'.wav');return convertFile(_0x229bdd,_0x3c047f);})[_0xaf01('0x2a')](function(){try{fs['unlink'](_0x229bdd);fs[_0xaf01('0x2b')](_0x3c047f,_0xaf01('0x2c'));}catch(_0x416ff1){logger[_0xaf01('0x15')](_0x416ff1);}return _0x3c047f[_0xaf01('0x2d')]('.')[0x0];});};exports[_0xaf01('0x6f')]=function(_0x1ee271,_0x52bf70,_0x507b6a,_0x1009c9){var _0x270a0f=util[_0xaf01('0x6d')](_0xaf01('0x70'),ISPEECH_API,_0x52bf70,_0x507b6a,base64Encode(_0x1ee271),_0x1009c9?util[_0xaf01('0x6d')](_0xaf01('0x71'),encodeURIComponent(_0x1009c9)):_0xaf01('0x72'));return uploadFile(_0x270a0f)[_0xaf01('0x2a')](function(_0x469ad1){return querystring[_0xaf01('0x73')](_0x469ad1);});};exports[_0xaf01('0x74')]=function(_0x59f715,_0x3659ec){return sestek[_0xaf01('0x75')](_0x59f715,_0x3659ec)['then'](function(_0x459cbe){logger['info'](JSON[_0xaf01('0x4c')](_0x459cbe));var _0x142667={'speech':_0x459cbe['text'],'action':_0x459cbe[_0xaf01('0x76')]?_0x459cbe[_0xaf01('0x76')]['CustomAction']:undefined,'actiondata':_0x459cbe[_0xaf01('0x76')]?_0x459cbe['channelData'][_0xaf01('0x77')]:undefined};if(_0x459cbe[_0xaf01('0x76')]&&_0x459cbe[_0xaf01('0x76')][_0xaf01('0x78')]){return base64Decode(_0x459cbe['channelData'][_0xaf01('0x78')][_0xaf01('0x79')],path['resolve'](__dirname,_0xaf01('0x26'),rs[_0xaf01('0x36')](0x4)+_0xaf01('0x27')))[_0xaf01('0x2a')](function(_0x1f8960){_0x142667['audiofile']=_0x1f8960;return _0x142667;});}return _0x142667;});};exports[_0xaf01('0x7a')]=function(){return __dirname;};