22e02efde16a106fcd0192d027e08496ea0937a2
[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 _0x566d=['freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','dialogflow','http','https','md5','querystring','randomstring','sox','url','parse','./aws','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','path','WHAT_EVER','get','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish','finish\x20download\x20file','unlink','download\x20error','pipe','end','transcode','error\x20convert','info','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','chmodSync','777','toString','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','from','audioContent','then','split','googleTTS','goggleTTS\x20path','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','textRequest','stringify','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','status','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','asr','Tilde\x20ASR\x20confidence','awsPolly','polly','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'];(function(_0x5525bf,_0x165203){var _0xcf3ce8=function(_0x26cc97){while(--_0x26cc97){_0x5525bf['push'](_0x5525bf['shift']());}};_0xcf3ce8(++_0x165203);}(_0x566d,0x85));var _0xd566=function(_0x58194c,_0x51eca2){_0x58194c=_0x58194c-0x0;var _0x3c16b3=_0x566d[_0x58194c];return _0x3c16b3;};'use strict';var apiai=require(_0xd566('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0xd566('0x1'));var fs=require('fs');var http=require(_0xd566('0x2'));var https=require(_0xd566('0x3'));var md5=require(_0xd566('0x4'));var path=require('path');var querystring=require(_0xd566('0x5'));var rp=require('request-promise');var rs=require(_0xd566('0x6'));var sox=require(_0xd566('0x7'));var tts=require('google-tts-api');var urlParse=require(_0xd566('0x8'))[_0xd566('0x9')];var util=require('util');var aws=require(_0xd566('0xa'));var google=require('./google');var sestek=require('./sestek');var tilde=require(_0xd566('0xb'));var logger=require(_0xd566('0xc'))(_0xd566('0xd'));var ISPEECH_API=_0xd566('0xe');function downloadFile(_0x3dc638,_0x442eaa){return new BPromise(function(_0x51ea98,_0x28c3b1){var _0x29be67=urlParse(_0x3dc638);var _0x2f32ac=_0x29be67[_0xd566('0xf')]===_0xd566('0x10')?https:http;var _0x47c8a4={'host':_0x29be67[_0xd566('0x11')],'path':_0x29be67[_0xd566('0x12')],'headers':{'user-agent':_0xd566('0x13')}};_0x2f32ac[_0xd566('0x14')](_0x47c8a4,function(_0x19a55b){if(_0x19a55b[_0xd566('0x15')]!==0xc8){logger[_0xd566('0x16')]('request\x20to\x20'+_0x3dc638+_0xd566('0x17')+_0x19a55b['statusCode']+'\x20('+_0x19a55b[_0xd566('0x18')]+')');_0x28c3b1(new Error(_0xd566('0x19')+_0x3dc638+_0xd566('0x17')+_0x19a55b[_0xd566('0x15')]+'\x20('+_0x19a55b[_0xd566('0x18')]+')'));return;}var _0x4bbec7=fs[_0xd566('0x1a')](_0x442eaa);_0x4bbec7['on'](_0xd566('0x1b'),function(){logger['info'](_0xd566('0x1c'));_0x4bbec7['close'](_0x51ea98);});_0x4bbec7['on']('error',function(_0x3eabc9){fs[_0xd566('0x1d')](_0x442eaa);logger['error'](_0xd566('0x1e'),_0x3eabc9);_0x28c3b1(_0x3eabc9);});_0x19a55b[_0xd566('0x1f')](_0x4bbec7);})['on'](_0xd566('0x16'),function(_0x54a4ee){logger[_0xd566('0x16')](_0x54a4ee);_0x28c3b1(_0x54a4ee);})[_0xd566('0x20')]();});}function uploadFile(_0x479e09){return new BPromise(function(_0x23d56c,_0x574663){var _0x5a0a8e=urlParse(_0x479e09);var _0x298a52=_0x5a0a8e[_0xd566('0xf')]===_0xd566('0x10')?https:http;var _0x4d9e80={'host':_0x5a0a8e['host'],'path':_0x5a0a8e[_0xd566('0x12')],'headers':{'user-agent':_0xd566('0x13')}};_0x298a52[_0xd566('0x14')](_0x4d9e80,function(_0x24af6f){if(_0x24af6f['statusCode']!==0xc8){_0x574663(new Error(_0xd566('0x19')+_0x479e09+_0xd566('0x17')+_0x24af6f[_0xd566('0x15')]+'\x20('+_0x24af6f['statusMessage']+')'));return;}var _0x94c73e='';_0x24af6f['on']('data',function(_0x22e7c6){_0x94c73e+=_0x22e7c6;});_0x24af6f['on']('end',function(){_0x23d56c(_0x94c73e);});})['on'](_0xd566('0x16'),function(_0x4bf4ad){_0x574663(_0x4bf4ad);})[_0xd566('0x20')]();});}function convertFile(_0x5d88ab,_0x455196){return new BPromise(function(_0xbe095d,_0x4259e0){var _0x3d21d3=sox[_0xd566('0x21')](_0x5d88ab,_0x455196,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3d21d3['on']('error',function(_0x432b38){logger[_0xd566('0x16')](_0xd566('0x22'),_0x432b38);_0x4259e0(_0x432b38);});_0x3d21d3['on']('end',function(){logger[_0xd566('0x23')](_0xd566('0x24'));_0xbe095d();});_0x3d21d3[_0xd566('0x25')]();});}function base64Decode(_0x4cd7fb,_0x12339a){var _0x6e0fbb=path[_0xd566('0x26')](__dirname,_0xd566('0x27'),rs[_0xd566('0x28')](0x4)+_0xd566('0x29'));fs[_0xd566('0x2a')](_0x6e0fbb,_0x4cd7fb,_0xd566('0x2b'));return convertFile(_0x6e0fbb,_0x12339a)['then'](function(){try{fs['unlink'](_0x6e0fbb);fs[_0xd566('0x2c')](_0x12339a,_0xd566('0x2d'));}catch(_0x26f1ca){logger[_0xd566('0x16')](_0x26f1ca);}return _0x12339a['split']('.')[0x0];});}function base64Encode(_0x343bf1){var _0x498454=fs['readFileSync'](_0x343bf1);return new Buffer(_0x498454)[_0xd566('0x2e')](_0xd566('0x2b'));}exports['googleCloudTTS']=function(_0xc9560d,_0x4ef247,_0x2c697a,_0x5d33e7,_0x36f008,_0x11394f){var _0x17ec68,_0x35146f;var _0x1eecbf=_0xd566('0x2f');var _0x262325='?key='+_0xc9560d;var _0x482815={};if(_0x4ef247===_0xd566('0x30')){_0x482815['input']={'ssml':_0x2c697a};}else{_0x482815[_0xd566('0x31')]={'text':_0x2c697a};};_0x482815[_0xd566('0x32')]={'languageCode':_0x5d33e7,'ssmlGender':_0x36f008};_0x482815[_0xd566('0x33')]={'audioEncoding':_0xd566('0x34'),'sampleRateHertz':0x1f40};var _0x501d6c={'url':_0x1eecbf+_0xd566('0x35')+_0x262325,'method':_0xd566('0x36'),'json':!![],'body':_0x482815};return rp(_0x501d6c)['then'](function(_0x3e2a50){return new BPromise(function(_0x19ba6d,_0x390bb5){_0x17ec68=path[_0xd566('0x26')](__dirname,'tmp',rs['generate'](0x4)+_0xd566('0x37'));var _0x3e248f=Buffer[_0xd566('0x38')](_0x3e2a50[_0xd566('0x39')],_0xd566('0x2b'));return fs['writeFile'](_0x17ec68,_0x3e248f,function(_0x141e9e){_0x390bb5(_0x141e9e);},function(_0x2bb1f5){fs[_0xd566('0x2c')](_0x17ec68,_0xd566('0x2d'));_0x19ba6d(_0x2bb1f5);});});})[_0xd566('0x3a')](function(_0x496063){_0x35146f=path[_0xd566('0x26')](__dirname,_0xd566('0x27'),rs[_0xd566('0x28')](0x4)+_0xd566('0x29'));return convertFile(_0x17ec68,_0x35146f);})[_0xd566('0x3a')](function(){try{fs[_0xd566('0x1d')](_0x17ec68);fs[_0xd566('0x2c')](_0x35146f,_0xd566('0x2d'));}catch(_0x47ddd2){logger[_0xd566('0x16')](_0x47ddd2);}logger[_0xd566('0x23')]('googleCloudTTS\x20path',_0x35146f['split']('.')[0x0]);return _0x35146f[_0xd566('0x3b')]('.')[0x0];});};exports[_0xd566('0x3c')]=function(_0x33adfd,_0x4b79d2){var _0x46522c,_0x5e369f;return tts(_0x33adfd,_0x4b79d2||'en',0x1)[_0xd566('0x3a')](function(_0x131c99){logger[_0xd566('0x23')](_0x131c99);_0x46522c=path[_0xd566('0x26')](__dirname,_0xd566('0x27'),rs['generate'](0x4)+'.mp3');return downloadFile(_0x131c99,_0x46522c);})[_0xd566('0x3a')](function(){_0x5e369f=path[_0xd566('0x26')](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0x46522c,_0x5e369f);})[_0xd566('0x3a')](function(){try{fs['unlink'](_0x46522c);fs[_0xd566('0x2c')](_0x5e369f,_0xd566('0x2d'));}catch(_0x573f99){logger['error'](_0x573f99);}logger['info'](_0xd566('0x3d'),_0x5e369f['split']('.')[0x0]);return _0x5e369f['split']('.')[0x0];});};exports['googleASR']=function(_0x513e01,_0x311a90,_0x81a1b5){return google['asr'](_0x513e01,_0x311a90,_0x81a1b5)['then'](function(_0x792ddf){logger[_0xd566('0x23')](_0x792ddf['uri']);return rp(_0x792ddf);})['then'](function(_0x54c77b){var _0x1147a7='';var _0x65d230=0x0;try{fs['unlink'](_0x513e01);}catch(_0x445539){logger[_0xd566('0x16')](_0x445539);}if(_0x54c77b&&_0x54c77b[_0xd566('0x3e')]){_0x1147a7=_0x54c77b[_0xd566('0x3e')][_0xd566('0x3f')](function(_0x53b0fd){return _0x53b0fd&&_0x53b0fd[_0xd566('0x40')][0x0]&&_0x53b0fd[_0xd566('0x40')][0x0][_0xd566('0x41')]?_0x53b0fd[_0xd566('0x40')][0x0][_0xd566('0x41')]:'';})[_0xd566('0x42')]('\x0a');_0x65d230=_0x54c77b[_0xd566('0x3e')][_0xd566('0x3f')](function(_0x3ce00e){return _0x3ce00e&&_0x3ce00e['alternatives'][0x0]&&_0x3ce00e[_0xd566('0x40')][0x0][_0xd566('0x43')]?_0x3ce00e[_0xd566('0x40')][0x0]['confidence']:0x0;})[_0xd566('0x42')]('\x0a');}logger[_0xd566('0x23')](_0xd566('0x44'),_0x1147a7);logger[_0xd566('0x23')](_0xd566('0x45'),_0x65d230);return{'transcript':_0x1147a7,'confidence':_0x65d230};})['catch'](function(_0xa3701){logger['error'](_0xd566('0x46'),_0xa3701[_0xd566('0x15')],_0xa3701['name'],_0xa3701['message']);});};exports['googleDialogflow']=function(_0x429bd0,_0x4ef032,_0x4f4196,_0x25dd82){var _0x125962=apiai(_0x4ef032,{'language':_0x25dd82||'en'});return _0x125962[_0xd566('0x47')](_0x4f4196,{'sessionId':md5(_0x429bd0)})[_0xd566('0x3a')](function(_0x19ba63){logger[_0xd566('0x23')](JSON[_0xd566('0x48')](_0x19ba63));return{'source':_0x19ba63[_0xd566('0x49')][_0xd566('0x4a')],'resolvedQuery':_0x19ba63[_0xd566('0x49')][_0xd566('0x4b')],'action':_0x19ba63['result'][_0xd566('0x4c')],'actionIncomplete':_0x19ba63[_0xd566('0x49')][_0xd566('0x4d')],'speech':_0x19ba63[_0xd566('0x49')][_0xd566('0x4e')][_0xd566('0x4f')],'score':_0x19ba63[_0xd566('0x49')]['score'],'statusCode':_0x19ba63[_0xd566('0x50')]['code'],'endConversation':_0x19ba63[_0xd566('0x49')][_0xd566('0x51')][_0xd566('0x52')]||![],'isFallbackIntent':_0x19ba63['result'][_0xd566('0x51')][_0xd566('0x53')]};});};exports['googleDialogflowV2']=function(_0x2c59b2,_0x110fc4,_0x42f002,_0x5a44c4,_0x4af7ae,_0x406cfd){var _0x5749c0=_0x5a44c4[_0xd566('0x54')](/\\n/g,'\x0a');var _0x3d33bd={'credentials':{'private_key':_0x5749c0,'client_email':_0x42f002}};var _0x1b5976=new dialogflow[(_0xd566('0x55'))](_0x3d33bd);var _0x5d4902=_0x1b5976[_0xd566('0x56')](_0x110fc4,md5(_0x2c59b2));var _0x29e645={'session':_0x5d4902,'queryInput':{'text':{'text':_0x4af7ae,'languageCode':_0x406cfd}}};return _0x1b5976[_0xd566('0x57')](_0x29e645)[_0xd566('0x3a')](function(_0x547d2b){if(_0x547d2b&&_0x547d2b[_0xd566('0x58')]){logger['info'](_0xd566('0x59'),JSON[_0xd566('0x48')](_0x547d2b));var _0x381b79=_0x547d2b[0x0];if(_0x381b79){var _0x1523b7={'action':_0x381b79[_0xd566('0x5a')][_0xd566('0x4c')],'allRequiredParamsPresent':_0x381b79[_0xd566('0x5a')][_0xd566('0x5b')],'endConversation':_0x381b79[_0xd566('0x5a')][_0xd566('0x5c')]&&_0x381b79['queryResult'][_0xd566('0x5c')][_0xd566('0x5d')]?_0x381b79['queryResult']['diagnosticInfo'][_0xd566('0x5d')]['end_conversation']['boolValue']:![],'fulfillmentText':_0x381b79[_0xd566('0x5a')]['fulfillmentText'],'intentName':_0x381b79[_0xd566('0x5a')][_0xd566('0x5e')]['name'],'intentDisplayName':_0x381b79[_0xd566('0x5a')][_0xd566('0x5e')][_0xd566('0x5f')],'isFallbackIntent':_0x381b79[_0xd566('0x5a')][_0xd566('0x5e')][_0xd566('0x60')],'languageCode':_0x381b79[_0xd566('0x5a')][_0xd566('0x61')],'queryText':_0x381b79[_0xd566('0x5a')][_0xd566('0x62')],'responseId':_0x381b79[_0xd566('0x63')],'score':_0x381b79[_0xd566('0x5a')][_0xd566('0x64')],'speech':_0x381b79[_0xd566('0x5a')][_0xd566('0x65')],'providerResponse':JSON[_0xd566('0x48')](_0x547d2b)};return _0x1523b7;}}});};exports[_0xd566('0x66')]=function(_0x373389,_0x31b18b,_0x38cf0f,_0x36daf5){return tilde[_0xd566('0x67')](_0x373389,_0x31b18b,_0x38cf0f,_0x36daf5)[_0xd566('0x3a')](function(_0x40c8ad){try{fs[_0xd566('0x1d')](_0x373389);}catch(_0x3ea15c){logger['error'](_0x3ea15c);}logger[_0xd566('0x23')]('Tilde\x20ASR\x20transcription',_0x40c8ad[_0xd566('0x41')]);logger['info'](_0xd566('0x68'),_0x40c8ad[_0xd566('0x43')]);return _0x40c8ad;});};exports[_0xd566('0x69')]=function(_0x571dcc,_0xfd3b7d,_0x106519,_0x36b7db,_0x4280df,_0x1e58b1){var _0xdbca42=path[_0xd566('0x26')](__dirname,_0xd566('0x27'),rs[_0xd566('0x28')](0x4)+_0xd566('0x37'));var _0x266a78;return aws[_0xd566('0x6a')](_0x571dcc,_0xfd3b7d,_0x106519,_0x36b7db,_0x4280df,_0x1e58b1,_0xdbca42)['then'](function(){_0x266a78=path[_0xd566('0x26')](__dirname,_0xd566('0x27'),rs[_0xd566('0x28')](0x4)+_0xd566('0x29'));return convertFile(_0xdbca42,_0x266a78);})['then'](function(){try{fs[_0xd566('0x1d')](_0xdbca42);fs[_0xd566('0x2c')](_0x266a78,'777');}catch(_0x146f44){logger[_0xd566('0x16')](_0x146f44);}return _0x266a78[_0xd566('0x3b')]('.')[0x0];});};exports['awsLex']=function(_0x2dce2e,_0x2759d5,_0x1dfbe7,_0x1d5d71,_0x486547,_0x4b0979){return aws[_0xd566('0x6b')](_0x2dce2e,_0x2759d5,_0x1dfbe7,_0x1d5d71,_0x486547,_0x4b0979)[_0xd566('0x3a')](function(_0x522dc2){logger[_0xd566('0x23')](JSON[_0xd566('0x48')](_0x522dc2));return _0x522dc2;});};exports[_0xd566('0x6c')]=function(_0x4e7ef6,_0x2163cf,_0x38bf95,_0xb9f924){var _0x590642=util[_0xd566('0x6d')](_0xd566('0x6e'),ISPEECH_API,_0x4e7ef6,encodeURIComponent(_0x2163cf),_0x38bf95,_0xb9f924);var _0x518887=path[_0xd566('0x26')](__dirname,_0xd566('0x27'),rs[_0xd566('0x28')](0x4)+'.mp3');var _0x89d2c5;return downloadFile(_0x590642,_0x518887)['then'](function(){_0x89d2c5=path[_0xd566('0x26')](__dirname,_0xd566('0x27'),rs[_0xd566('0x28')](0x4)+_0xd566('0x29'));return convertFile(_0x518887,_0x89d2c5);})[_0xd566('0x3a')](function(){try{fs[_0xd566('0x1d')](_0x518887);fs['chmodSync'](_0x89d2c5,_0xd566('0x2d'));}catch(_0x3ed1d4){logger[_0xd566('0x16')](_0x3ed1d4);}return _0x89d2c5['split']('.')[0x0];});};exports[_0xd566('0x6f')]=function(_0x2fa10f,_0x587966,_0xc8c401,_0x52beab){var _0x2bbaa0=util[_0xd566('0x6d')](_0xd566('0x70'),ISPEECH_API,_0x587966,_0xc8c401,base64Encode(_0x2fa10f),_0x52beab?util[_0xd566('0x6d')]('model=%s',encodeURIComponent(_0x52beab)):_0xd566('0x71'));return uploadFile(_0x2bbaa0)[_0xd566('0x3a')](function(_0x1f4deb){return querystring[_0xd566('0x9')](_0x1f4deb);});};exports[_0xd566('0x72')]=function(_0x14b85b,_0x5089d9){return sestek[_0xd566('0x73')](_0x14b85b,_0x5089d9)[_0xd566('0x3a')](function(_0x82fe91){logger[_0xd566('0x23')](JSON[_0xd566('0x48')](_0x82fe91));var _0x16fedd={'speech':_0x82fe91[_0xd566('0x74')],'action':_0x82fe91[_0xd566('0x75')]?_0x82fe91['channelData'][_0xd566('0x76')]:undefined,'actiondata':_0x82fe91[_0xd566('0x75')]?_0x82fe91[_0xd566('0x75')][_0xd566('0x77')]:undefined};if(_0x82fe91[_0xd566('0x75')]&&_0x82fe91[_0xd566('0x75')][_0xd566('0x78')]){return base64Decode(_0x82fe91[_0xd566('0x75')][_0xd566('0x78')][_0xd566('0x79')],path[_0xd566('0x26')](__dirname,_0xd566('0x27'),rs[_0xd566('0x28')](0x4)+_0xd566('0x29')))[_0xd566('0x3a')](function(_0x1367f7){_0x16fedd[_0xd566('0x7a')]=_0x1367f7;return _0x16fedd;});}return _0x16fedd;});};exports['dirName']=function(){return __dirname;};