Built motion from commit a679711e.|2.6.15
[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 _0xd6a6=['result','source','resolvedQuery','action','actionIncomplete','speech','code','metadata','isFallbackIntent','googleDialogflowV2','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','end_conversation','boolValue','intent','name','displayName','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20confidence','awsPolly','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','freeform=3','parse','sestekNDA','channelData','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','randomstring','sox','google-tts-api','url','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish','info','close','pipe','end','start','resolve','tmp','generate','writeFileSync','base64','unlink','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','MP3','text:synthesize','POST','then','from','audioContent','.wav','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','data','.mp3','googleASR','asr','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','message','textRequest'];(function(_0x4de950,_0x2bc8f8){var _0x312e51=function(_0x2ac86e){while(--_0x2ac86e){_0x4de950['push'](_0x4de950['shift']());}};_0x312e51(++_0x2bc8f8);}(_0xd6a6,0x126));var _0x6d6a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd6a6[_0x20a584];return _0x4b41a8;};'use strict';var apiai=require(_0x6d6a('0x0'));var BPromise=require(_0x6d6a('0x1'));var dialogflow=require(_0x6d6a('0x2'));var fs=require('fs');var http=require(_0x6d6a('0x3'));var https=require('https');var md5=require(_0x6d6a('0x4'));var path=require(_0x6d6a('0x5'));var querystring=require('querystring');var rp=require('request-promise');var rs=require(_0x6d6a('0x6'));var sox=require(_0x6d6a('0x7'));var tts=require(_0x6d6a('0x8'));var urlParse=require(_0x6d6a('0x9'))['parse'];var util=require(_0x6d6a('0xa'));var aws=require(_0x6d6a('0xb'));var google=require(_0x6d6a('0xc'));var sestek=require(_0x6d6a('0xd'));var tilde=require(_0x6d6a('0xe'));var logger=require(_0x6d6a('0xf'))(_0x6d6a('0x10'));var ISPEECH_API=_0x6d6a('0x11');function downloadFile(_0xb34ca5,_0x562266){return new BPromise(function(_0x1705c0,_0x594ea5){var _0x114798=urlParse(_0xb34ca5);var _0x39d7e4=_0x114798[_0x6d6a('0x12')]===_0x6d6a('0x13')?https:http;var _0x586820={'host':_0x114798[_0x6d6a('0x14')],'path':_0x114798['path'],'headers':{'user-agent':_0x6d6a('0x15')}};_0x39d7e4[_0x6d6a('0x16')](_0x586820,function(_0x443454){if(_0x443454[_0x6d6a('0x17')]!==0xc8){logger[_0x6d6a('0x18')]('request\x20to\x20'+_0xb34ca5+_0x6d6a('0x19')+_0x443454[_0x6d6a('0x17')]+'\x20('+_0x443454[_0x6d6a('0x1a')]+')');_0x594ea5(new Error(_0x6d6a('0x1b')+_0xb34ca5+'\x20failed,\x20status\x20code\x20=\x20'+_0x443454['statusCode']+'\x20('+_0x443454[_0x6d6a('0x1a')]+')'));return;}var _0x17938a=fs[_0x6d6a('0x1c')](_0x562266);_0x17938a['on'](_0x6d6a('0x1d'),function(){logger[_0x6d6a('0x1e')]('finish\x20download\x20file');_0x17938a[_0x6d6a('0x1f')](_0x1705c0);});_0x17938a['on']('error',function(_0x146535){fs['unlink'](_0x562266);logger['error']('download\x20error',_0x146535);_0x594ea5(_0x146535);});_0x443454[_0x6d6a('0x20')](_0x17938a);})['on'](_0x6d6a('0x18'),function(_0x478bf8){logger[_0x6d6a('0x18')](_0x478bf8);_0x594ea5(_0x478bf8);})[_0x6d6a('0x21')]();});}function uploadFile(_0x58dd6f){return new BPromise(function(_0x1d488c,_0x1346f3){var _0x589204=urlParse(_0x58dd6f);var _0xe2e87e=_0x589204[_0x6d6a('0x12')]===_0x6d6a('0x13')?https:http;var _0x3c21ce={'host':_0x589204[_0x6d6a('0x14')],'path':_0x589204[_0x6d6a('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0xe2e87e[_0x6d6a('0x16')](_0x3c21ce,function(_0x1d28de){if(_0x1d28de[_0x6d6a('0x17')]!==0xc8){_0x1346f3(new Error(_0x6d6a('0x1b')+_0x58dd6f+'\x20failed,\x20status\x20code\x20=\x20'+_0x1d28de[_0x6d6a('0x17')]+'\x20('+_0x1d28de[_0x6d6a('0x1a')]+')'));return;}var _0x4234b6='';_0x1d28de['on']('data',function(_0x5e4ce0){_0x4234b6+=_0x5e4ce0;});_0x1d28de['on'](_0x6d6a('0x21'),function(){_0x1d488c(_0x4234b6);});})['on'](_0x6d6a('0x18'),function(_0x2bfaf0){_0x1346f3(_0x2bfaf0);})[_0x6d6a('0x21')]();});}function convertFile(_0x57eba0,_0x28f6f0){return new BPromise(function(_0x12845a,_0x398a03){var _0x397277=sox['transcode'](_0x57eba0,_0x28f6f0,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x397277['on'](_0x6d6a('0x18'),function(_0x55a6ca){logger['error']('error\x20convert',_0x55a6ca);_0x398a03(_0x55a6ca);});_0x397277['on'](_0x6d6a('0x21'),function(){logger['info']('finish\x20to\x20convert');_0x12845a();});_0x397277[_0x6d6a('0x22')]();});}function base64Decode(_0x2e7614,_0x26d6fe){var _0x5c988e=path[_0x6d6a('0x23')](__dirname,_0x6d6a('0x24'),rs[_0x6d6a('0x25')](0x4)+'.wav');fs[_0x6d6a('0x26')](_0x5c988e,_0x2e7614,_0x6d6a('0x27'));return convertFile(_0x5c988e,_0x26d6fe)['then'](function(){try{fs[_0x6d6a('0x28')](_0x5c988e);fs[_0x6d6a('0x29')](_0x26d6fe,_0x6d6a('0x2a'));}catch(_0x25569b){logger[_0x6d6a('0x18')](_0x25569b);}return _0x26d6fe[_0x6d6a('0x2b')]('.')[0x0];});}function base64Encode(_0x174c7c){var _0x14f2f6=fs[_0x6d6a('0x2c')](_0x174c7c);return new Buffer(_0x14f2f6)[_0x6d6a('0x2d')](_0x6d6a('0x27'));}exports[_0x6d6a('0x2e')]=function(_0x544d9c,_0x5689a8,_0x33b910,_0x4240f6,_0x357292,_0x4c9517){var _0x290693,_0x2eb095;var _0x38b0ed=_0x6d6a('0x2f');var _0x487fbe='?key='+_0x544d9c;var _0x28198f={};if(_0x5689a8===_0x6d6a('0x30')){_0x28198f['input']={'ssml':_0x33b910};}else{_0x28198f[_0x6d6a('0x31')]={'text':_0x33b910};};_0x28198f[_0x6d6a('0x32')]={'languageCode':_0x4240f6,'ssmlGender':_0x357292};_0x28198f['audioConfig']={'audioEncoding':_0x6d6a('0x33'),'sampleRateHertz':0x1f40};var _0xc49c8b={'url':_0x38b0ed+_0x6d6a('0x34')+_0x487fbe,'method':_0x6d6a('0x35'),'json':!![],'body':_0x28198f};return rp(_0xc49c8b)[_0x6d6a('0x36')](function(_0x1f53e1){return new BPromise(function(_0x2c54b0,_0xed0b6b){_0x290693=path['resolve'](__dirname,_0x6d6a('0x24'),rs[_0x6d6a('0x25')](0x4)+'.mp3');var _0xfbf04f=Buffer[_0x6d6a('0x37')](_0x1f53e1[_0x6d6a('0x38')],'base64');return fs['writeFile'](_0x290693,_0xfbf04f,function(_0x3dac5c){_0xed0b6b(_0x3dac5c);},function(_0x363b26){fs[_0x6d6a('0x29')](_0x290693,_0x6d6a('0x2a'));_0x2c54b0(_0x363b26);});});})[_0x6d6a('0x36')](function(_0x459286){_0x2eb095=path[_0x6d6a('0x23')](__dirname,'tmp',rs[_0x6d6a('0x25')](0x4)+_0x6d6a('0x39'));return convertFile(_0x290693,_0x2eb095);})['then'](function(){try{fs['unlink'](_0x290693);fs[_0x6d6a('0x29')](_0x2eb095,'777');}catch(_0x2e39ba){logger[_0x6d6a('0x18')](_0x2e39ba);}logger[_0x6d6a('0x1e')]('googleCloudTTS\x20path',_0x2eb095[_0x6d6a('0x2b')]('.')[0x0]);return _0x2eb095[_0x6d6a('0x2b')]('.')[0x0];});};exports[_0x6d6a('0x3a')]=function(_0x3a37dd,_0x3489a1){var _0x2d2878=_0x6d6a('0x3b');var _0x302c7b,_0x412616;var _0xe58923;var _0x5b84d2={'encoding':'utf8','method':_0x6d6a('0x35'),'timeout':0x2710,'url':_0x2d2878,'headers':{'Content-Type':_0x6d6a('0x3c')},'body':'f.req='+encodeURIComponent(JSON[_0x6d6a('0x3d')]([[[_0x6d6a('0x3e'),JSON[_0x6d6a('0x3d')]([_0x3a37dd,_0x3489a1||'en',![],_0x6d6a('0x3f')]),null,_0x6d6a('0x40')]]]))};return rp(_0x5b84d2)[_0x6d6a('0x36')](function(_0x5645a6){try{_0xe58923=eval(_0x5645a6['slice'](0x5))[0x0][0x2];}catch(_0x5320ee){throw new Error(_0x6d6a('0x41')+_0x5645a6['data']);}if(!_0xe58923){if(_0x3a37dd[_0x6d6a('0x42')]>0xc8){throw new Error(_0x6d6a('0x43'));}else{throw new Error('lang\x20\x22'+_0x3489a1+_0x6d6a('0x44'));}}try{_0xe58923=eval(_0xe58923)[0x0];}catch(_0x25c5f8){throw new Error(_0x6d6a('0x41')+res[_0x6d6a('0x45')]);}const _0x5a95e8=_0xe58923;_0x302c7b=path[_0x6d6a('0x23')](__dirname,_0x6d6a('0x24'),rs[_0x6d6a('0x25')](0x4)+_0x6d6a('0x46'));fs[_0x6d6a('0x26')](_0x302c7b,_0xe58923,{'encoding':_0x6d6a('0x27')});_0x412616=path[_0x6d6a('0x23')](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0x302c7b,_0x412616);})[_0x6d6a('0x36')](function(){try{fs[_0x6d6a('0x28')](_0x302c7b);fs[_0x6d6a('0x29')](_0x412616,'777');}catch(_0x4f5da4){logger[_0x6d6a('0x18')](_0x4f5da4);}logger['info']('goggleTTS\x20path',_0x412616['split']('.')[0x0]);return _0x412616[_0x6d6a('0x2b')]('.')[0x0];});};exports[_0x6d6a('0x47')]=function(_0x5f4c33,_0x35bb6f,_0xe800ca){return google[_0x6d6a('0x48')](_0x5f4c33,_0x35bb6f,_0xe800ca)[_0x6d6a('0x36')](function(_0x3ef58e){logger[_0x6d6a('0x1e')](_0x3ef58e['uri']);return rp(_0x3ef58e);})[_0x6d6a('0x36')](function(_0x527a26){var _0x1016b0='';var _0x2dc4c9=0x0;try{fs[_0x6d6a('0x28')](_0x5f4c33);}catch(_0x536a49){logger['error'](_0x536a49);}if(_0x527a26&&_0x527a26[_0x6d6a('0x49')]){_0x1016b0=_0x527a26['results'][_0x6d6a('0x4a')](function(_0x35713a){return _0x35713a&&_0x35713a['alternatives'][0x0]&&_0x35713a['alternatives'][0x0]['transcript']?_0x35713a[_0x6d6a('0x4b')][0x0][_0x6d6a('0x4c')]:'';})['join']('\x0a');_0x2dc4c9=_0x527a26[_0x6d6a('0x49')][_0x6d6a('0x4a')](function(_0x3ce6af){return _0x3ce6af&&_0x3ce6af[_0x6d6a('0x4b')][0x0]&&_0x3ce6af['alternatives'][0x0][_0x6d6a('0x4d')]?_0x3ce6af[_0x6d6a('0x4b')][0x0][_0x6d6a('0x4d')]:0x0;})[_0x6d6a('0x4e')]('\x0a');}logger['info'](_0x6d6a('0x4f'),_0x1016b0);logger[_0x6d6a('0x1e')](_0x6d6a('0x50'),_0x2dc4c9);return{'transcript':_0x1016b0,'confidence':_0x2dc4c9};})[_0x6d6a('0x51')](function(_0x5c581c){logger[_0x6d6a('0x18')]('[%s]\x20%s:%s',_0x5c581c['statusCode'],_0x5c581c['name'],_0x5c581c[_0x6d6a('0x52')]);});};exports['googleDialogflow']=function(_0x2db07b,_0x2d29f1,_0x18b5ff,_0x5034d3){var _0x2fcde0=apiai(_0x2d29f1,{'language':_0x5034d3||'en'});return _0x2fcde0[_0x6d6a('0x53')](_0x18b5ff,{'sessionId':md5(_0x2db07b)})[_0x6d6a('0x36')](function(_0x1d3bad){logger[_0x6d6a('0x1e')](JSON['stringify'](_0x1d3bad));return{'source':_0x1d3bad[_0x6d6a('0x54')][_0x6d6a('0x55')],'resolvedQuery':_0x1d3bad[_0x6d6a('0x54')][_0x6d6a('0x56')],'action':_0x1d3bad[_0x6d6a('0x54')][_0x6d6a('0x57')],'actionIncomplete':_0x1d3bad[_0x6d6a('0x54')][_0x6d6a('0x58')],'speech':_0x1d3bad['result']['fulfillment'][_0x6d6a('0x59')],'score':_0x1d3bad['result']['score'],'statusCode':_0x1d3bad['status'][_0x6d6a('0x5a')],'endConversation':_0x1d3bad[_0x6d6a('0x54')]['metadata']['endConversation']||![],'isFallbackIntent':_0x1d3bad[_0x6d6a('0x54')][_0x6d6a('0x5b')][_0x6d6a('0x5c')]};});};exports[_0x6d6a('0x5d')]=function(_0x4a8d45,_0x1c0b74,_0x5811bd,_0x5ba38c,_0x555679,_0x21d552){var _0x1b1619=_0x5ba38c['replace'](/\\n/g,'\x0a');var _0x2d7055={'credentials':{'private_key':_0x1b1619,'client_email':_0x5811bd}};var _0x33fd6a=new dialogflow[(_0x6d6a('0x5e'))](_0x2d7055);var _0x2294cc=_0x33fd6a[_0x6d6a('0x5f')](_0x1c0b74,md5(_0x4a8d45));var _0x4ce047={'session':_0x2294cc,'queryInput':{'text':{'text':_0x555679,'languageCode':_0x21d552}}};return _0x33fd6a[_0x6d6a('0x60')](_0x4ce047)['then'](function(_0x24e1f5){if(_0x24e1f5&&_0x24e1f5['length']){logger[_0x6d6a('0x1e')](_0x6d6a('0x61'),JSON['stringify'](_0x24e1f5));var _0x36888d=_0x24e1f5[0x0];if(_0x36888d){var _0x4ee21c={'action':_0x36888d[_0x6d6a('0x62')][_0x6d6a('0x57')],'allRequiredParamsPresent':_0x36888d['queryResult'][_0x6d6a('0x63')],'endConversation':_0x36888d[_0x6d6a('0x62')][_0x6d6a('0x64')]&&_0x36888d['queryResult']['diagnosticInfo']['fields']?_0x36888d[_0x6d6a('0x62')]['diagnosticInfo']['fields'][_0x6d6a('0x65')][_0x6d6a('0x66')]:![],'fulfillmentText':_0x36888d[_0x6d6a('0x62')]['fulfillmentText'],'intentName':_0x36888d['queryResult'][_0x6d6a('0x67')][_0x6d6a('0x68')],'intentDisplayName':_0x36888d[_0x6d6a('0x62')][_0x6d6a('0x67')][_0x6d6a('0x69')],'isFallbackIntent':_0x36888d[_0x6d6a('0x62')][_0x6d6a('0x67')]['isFallback'],'languageCode':_0x36888d[_0x6d6a('0x62')][_0x6d6a('0x6a')],'queryText':_0x36888d[_0x6d6a('0x62')][_0x6d6a('0x6b')],'responseId':_0x36888d[_0x6d6a('0x6c')],'score':_0x36888d[_0x6d6a('0x62')][_0x6d6a('0x6d')],'speech':_0x36888d[_0x6d6a('0x62')]['fulfillmentText'],'providerResponse':JSON[_0x6d6a('0x3d')](_0x24e1f5)};return _0x4ee21c;}}});};exports[_0x6d6a('0x6e')]=function(_0x4bda85,_0x4cd495,_0xa58032,_0x5532f1){return tilde['asr'](_0x4bda85,_0x4cd495,_0xa58032,_0x5532f1)[_0x6d6a('0x36')](function(_0x57a963){try{fs[_0x6d6a('0x28')](_0x4bda85);}catch(_0x235460){logger['error'](_0x235460);}logger[_0x6d6a('0x1e')]('Tilde\x20ASR\x20transcription',_0x57a963['transcript']);logger[_0x6d6a('0x1e')](_0x6d6a('0x6f'),_0x57a963[_0x6d6a('0x4d')]);return _0x57a963;});};exports[_0x6d6a('0x70')]=function(_0x247e12,_0x455400,_0x31048e,_0x197b45,_0x3f9a8e,_0x33d536){var _0x26ff46=path['resolve'](__dirname,_0x6d6a('0x24'),rs[_0x6d6a('0x25')](0x4)+_0x6d6a('0x46'));var _0x2803fc;return aws['polly'](_0x247e12,_0x455400,_0x31048e,_0x197b45,_0x3f9a8e,_0x33d536,_0x26ff46)[_0x6d6a('0x36')](function(){_0x2803fc=path[_0x6d6a('0x23')](__dirname,'tmp',rs['generate'](0x4)+_0x6d6a('0x39'));return convertFile(_0x26ff46,_0x2803fc);})[_0x6d6a('0x36')](function(){try{fs[_0x6d6a('0x28')](_0x26ff46);fs[_0x6d6a('0x29')](_0x2803fc,'777');}catch(_0x46a21b){logger[_0x6d6a('0x18')](_0x46a21b);}return _0x2803fc['split']('.')[0x0];});};exports['awsLex']=function(_0x276934,_0x248d0c,_0x1e872a,_0x5343e6,_0x57e1e5,_0x573efb){return aws[_0x6d6a('0x71')](_0x276934,_0x248d0c,_0x1e872a,_0x5343e6,_0x57e1e5,_0x573efb)[_0x6d6a('0x36')](function(_0x19f3c1){logger['info'](JSON[_0x6d6a('0x3d')](_0x19f3c1));return _0x19f3c1;});};exports[_0x6d6a('0x72')]=function(_0x4a2d45,_0xc0fd96,_0x31cd77,_0x23bea6){var _0x5604e7=util[_0x6d6a('0x73')](_0x6d6a('0x74'),ISPEECH_API,_0x4a2d45,encodeURIComponent(_0xc0fd96),_0x31cd77,_0x23bea6);var _0x4466c4=path[_0x6d6a('0x23')](__dirname,_0x6d6a('0x24'),rs['generate'](0x4)+_0x6d6a('0x46'));var _0x26514f;return downloadFile(_0x5604e7,_0x4466c4)['then'](function(){_0x26514f=path[_0x6d6a('0x23')](__dirname,_0x6d6a('0x24'),rs['generate'](0x4)+_0x6d6a('0x39'));return convertFile(_0x4466c4,_0x26514f);})[_0x6d6a('0x36')](function(){try{fs[_0x6d6a('0x28')](_0x4466c4);fs[_0x6d6a('0x29')](_0x26514f,_0x6d6a('0x2a'));}catch(_0x33a1b6){logger['error'](_0x33a1b6);}return _0x26514f[_0x6d6a('0x2b')]('.')[0x0];});};exports['ispeechASR']=function(_0x2648e8,_0x23281a,_0x150175,_0x3744e9){var _0x362ba7=util[_0x6d6a('0x73')](_0x6d6a('0x75'),ISPEECH_API,_0x23281a,_0x150175,base64Encode(_0x2648e8),_0x3744e9?util[_0x6d6a('0x73')]('model=%s',encodeURIComponent(_0x3744e9)):_0x6d6a('0x76'));return uploadFile(_0x362ba7)[_0x6d6a('0x36')](function(_0x3996f7){return querystring[_0x6d6a('0x77')](_0x3996f7);});};exports[_0x6d6a('0x78')]=function(_0x103a3d,_0x2d0757){return sestek['nda'](_0x103a3d,_0x2d0757)[_0x6d6a('0x36')](function(_0x498896){logger[_0x6d6a('0x1e')](JSON[_0x6d6a('0x3d')](_0x498896));var _0x21d019={'speech':_0x498896['text'],'action':_0x498896['channelData']?_0x498896[_0x6d6a('0x79')]['CustomAction']:undefined,'actiondata':_0x498896[_0x6d6a('0x79')]?_0x498896['channelData'][_0x6d6a('0x7a')]:undefined};if(_0x498896['channelData']&&_0x498896[_0x6d6a('0x79')][_0x6d6a('0x7b')]){return base64Decode(_0x498896[_0x6d6a('0x79')][_0x6d6a('0x7b')][_0x6d6a('0x7c')],path[_0x6d6a('0x23')](__dirname,_0x6d6a('0x24'),rs[_0x6d6a('0x25')](0x4)+'.wav'))['then'](function(_0x1ee294){_0x21d019['audiofile']=_0x1ee294;return _0x21d019;});}return _0x21d019;});};exports[_0x6d6a('0x7d')]=function(){return __dirname;};