Built motion from commit efa66e19.|2.6.22
[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 _0x9248=['https','md5','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','finish\x20download\x20file','close','download\x20error','pipe','end','host','get','data','wav','error\x20convert','start','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','MP3','POST','resolve','.mp3','from','unlink','info','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','asr','uri','results','transcript','alternatives','join','map','confidence','googleASR\x20confidence','[%s]\x20%s:%s','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','name','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','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','freeform=3','nda','text','channelData','CustomAction','CustomActionData','Data','audiofile','dirName','bluebird','dialogflow'];(function(_0x588011,_0x5e9d11){var _0x3b3773=function(_0x4cca54){while(--_0x4cca54){_0x588011['push'](_0x588011['shift']());}};_0x3b3773(++_0x5e9d11);}(_0x9248,0x19c));var _0x8924=function(_0x1c4f60,_0x53f552){_0x1c4f60=_0x1c4f60-0x0;var _0x491823=_0x9248[_0x1c4f60];return _0x491823;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x8924('0x0'));var dialogflow=require(_0x8924('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x8924('0x2'));var md5=require(_0x8924('0x3'));var path=require('path');var querystring=require(_0x8924('0x4'));var rp=require(_0x8924('0x5'));var rs=require(_0x8924('0x6'));var sox=require(_0x8924('0x7'));var tts=require(_0x8924('0x8'));var urlParse=require(_0x8924('0x9'))[_0x8924('0xa')];var util=require(_0x8924('0xb'));var aws=require(_0x8924('0xc'));var google=require(_0x8924('0xd'));var sestek=require(_0x8924('0xe'));var tilde=require(_0x8924('0xf'));var logger=require(_0x8924('0x10'))(_0x8924('0x11'));var ISPEECH_API=_0x8924('0x12');function downloadFile(_0x302662,_0x4fb807){return new BPromise(function(_0x4fcaee,_0xda0ca5){var _0x25ccea=urlParse(_0x302662);var _0x124856=_0x25ccea[_0x8924('0x13')]===_0x8924('0x14')?https:http;var _0x3e2bb2={'host':_0x25ccea['host'],'path':_0x25ccea['path'],'headers':{'user-agent':_0x8924('0x15')}};_0x124856['get'](_0x3e2bb2,function(_0x56623d){if(_0x56623d[_0x8924('0x16')]!==0xc8){logger[_0x8924('0x17')](_0x8924('0x18')+_0x302662+_0x8924('0x19')+_0x56623d[_0x8924('0x16')]+'\x20('+_0x56623d[_0x8924('0x1a')]+')');_0xda0ca5(new Error('request\x20to\x20'+_0x302662+_0x8924('0x19')+_0x56623d['statusCode']+'\x20('+_0x56623d[_0x8924('0x1a')]+')'));return;}var _0xb93f32=fs['createWriteStream'](_0x4fb807);_0xb93f32['on'](_0x8924('0x1b'),function(){logger['info'](_0x8924('0x1c'));_0xb93f32[_0x8924('0x1d')](_0x4fcaee);});_0xb93f32['on']('error',function(_0x1aa981){fs['unlink'](_0x4fb807);logger[_0x8924('0x17')](_0x8924('0x1e'),_0x1aa981);_0xda0ca5(_0x1aa981);});_0x56623d[_0x8924('0x1f')](_0xb93f32);})['on'](_0x8924('0x17'),function(_0x285737){logger[_0x8924('0x17')](_0x285737);_0xda0ca5(_0x285737);})[_0x8924('0x20')]();});}function uploadFile(_0x479122){return new BPromise(function(_0x1d5423,_0x40f833){var _0x45db70=urlParse(_0x479122);var _0x3fd20f=_0x45db70[_0x8924('0x13')]===_0x8924('0x14')?https:http;var _0x51ac5c={'host':_0x45db70[_0x8924('0x21')],'path':_0x45db70['path'],'headers':{'user-agent':_0x8924('0x15')}};_0x3fd20f[_0x8924('0x22')](_0x51ac5c,function(_0x53c68a){if(_0x53c68a[_0x8924('0x16')]!==0xc8){_0x40f833(new Error(_0x8924('0x18')+_0x479122+_0x8924('0x19')+_0x53c68a['statusCode']+'\x20('+_0x53c68a[_0x8924('0x1a')]+')'));return;}var _0x266e00='';_0x53c68a['on'](_0x8924('0x23'),function(_0x3d9e9b){_0x266e00+=_0x3d9e9b;});_0x53c68a['on'](_0x8924('0x20'),function(){_0x1d5423(_0x266e00);});})['on'](_0x8924('0x17'),function(_0x2f5cc5){_0x40f833(_0x2f5cc5);})[_0x8924('0x20')]();});}function convertFile(_0x67a758,_0x1dcf59){return new BPromise(function(_0x55a994,_0x46fef5){var _0x3ef26d=sox['transcode'](_0x67a758,_0x1dcf59,{'sampleRate':0x1f40,'format':_0x8924('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3ef26d['on'](_0x8924('0x17'),function(_0xf00511){logger[_0x8924('0x17')](_0x8924('0x25'),_0xf00511);_0x46fef5(_0xf00511);});_0x3ef26d['on'](_0x8924('0x20'),function(){logger['info']('finish\x20to\x20convert');_0x55a994();});_0x3ef26d[_0x8924('0x26')]();});}function base64Decode(_0x429941,_0x440521){var _0x2c3dce=path['resolve'](__dirname,_0x8924('0x27'),rs[_0x8924('0x28')](0x4)+_0x8924('0x29'));fs[_0x8924('0x2a')](_0x2c3dce,_0x429941,_0x8924('0x2b'));return convertFile(_0x2c3dce,_0x440521)[_0x8924('0x2c')](function(){try{fs['unlink'](_0x2c3dce);fs[_0x8924('0x2d')](_0x440521,_0x8924('0x2e'));}catch(_0x36ec65){logger[_0x8924('0x17')](_0x36ec65);}return _0x440521['split']('.')[0x0];});}function base64Encode(_0x4959ba){var _0x4dcf82=fs[_0x8924('0x2f')](_0x4959ba);return new Buffer(_0x4dcf82)[_0x8924('0x30')](_0x8924('0x2b'));}exports['googleCloudTTS']=function(_0x1539db,_0x3c8e57,_0x26aaec,_0x4e7e9d,_0x1642cb,_0x32bde7){var _0x4b1815,_0x42f960;var _0x47b37f=_0x8924('0x31');var _0x11865a=_0x8924('0x32')+_0x1539db;var _0x2607fb={};if(_0x3c8e57===_0x8924('0x33')){_0x2607fb[_0x8924('0x34')]={'ssml':_0x26aaec};}else{_0x2607fb['input']={'text':_0x26aaec};};_0x2607fb['voice']={'languageCode':_0x4e7e9d,'ssmlGender':_0x1642cb};_0x2607fb['audioConfig']={'audioEncoding':_0x8924('0x35'),'sampleRateHertz':0x1f40};var _0x22572e={'url':_0x47b37f+'text:synthesize'+_0x11865a,'method':_0x8924('0x36'),'json':!![],'body':_0x2607fb};return rp(_0x22572e)[_0x8924('0x2c')](function(_0x4a9472){return new BPromise(function(_0x51bfa4,_0x34e83b){_0x4b1815=path[_0x8924('0x37')](__dirname,_0x8924('0x27'),rs[_0x8924('0x28')](0x4)+_0x8924('0x38'));var _0x33243f=Buffer[_0x8924('0x39')](_0x4a9472['audioContent'],_0x8924('0x2b'));return fs['writeFile'](_0x4b1815,_0x33243f,function(_0x511ae5){_0x34e83b(_0x511ae5);},function(_0x3cddd1){fs[_0x8924('0x2d')](_0x4b1815,_0x8924('0x2e'));_0x51bfa4(_0x3cddd1);});});})[_0x8924('0x2c')](function(_0x37e3e3){_0x42f960=path['resolve'](__dirname,_0x8924('0x27'),rs[_0x8924('0x28')](0x4)+_0x8924('0x29'));return convertFile(_0x4b1815,_0x42f960);})[_0x8924('0x2c')](function(){try{fs[_0x8924('0x3a')](_0x4b1815);fs[_0x8924('0x2d')](_0x42f960,'777');}catch(_0x4d3029){logger[_0x8924('0x17')](_0x4d3029);}logger[_0x8924('0x3b')]('googleCloudTTS\x20path',_0x42f960['split']('.')[0x0]);return _0x42f960[_0x8924('0x3c')]('.')[0x0];});};exports[_0x8924('0x3d')]=function(_0x1d9fbd,_0x2d6af5){var _0x305508=_0x8924('0x3e');var _0x1cf243,_0x474476;var _0xd739ea;var _0x2ef183={'encoding':_0x8924('0x3f'),'method':_0x8924('0x36'),'timeout':0x2710,'url':_0x305508,'headers':{'Content-Type':_0x8924('0x40')},'body':_0x8924('0x41')+encodeURIComponent(JSON['stringify']([[[_0x8924('0x42'),JSON[_0x8924('0x43')]([_0x1d9fbd,_0x2d6af5||'en',![],_0x8924('0x44')]),null,_0x8924('0x45')]]]))};return rp(_0x2ef183)[_0x8924('0x2c')](function(_0x5ab829){try{_0xd739ea=eval(_0x5ab829[_0x8924('0x46')](0x5))[0x0][0x2];}catch(_0x5762cc){throw new Error(_0x8924('0x47')+_0x5ab829['data']);}if(!_0xd739ea){if(_0x1d9fbd['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x8924('0x48')+_0x2d6af5+_0x8924('0x49'));}}try{_0xd739ea=eval(_0xd739ea)[0x0];}catch(_0x1db917){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x8924('0x23')]);}const _0x2dba7b=_0xd739ea;_0x1cf243=path[_0x8924('0x37')](__dirname,'tmp',rs[_0x8924('0x28')](0x4)+_0x8924('0x38'));fs[_0x8924('0x2a')](_0x1cf243,_0xd739ea,{'encoding':_0x8924('0x2b')});_0x474476=path['resolve'](__dirname,_0x8924('0x27'),rs[_0x8924('0x28')](0x4)+'.wav');return convertFile(_0x1cf243,_0x474476);})[_0x8924('0x2c')](function(){try{fs[_0x8924('0x3a')](_0x1cf243);fs[_0x8924('0x2d')](_0x474476,_0x8924('0x2e'));}catch(_0x377611){logger['error'](_0x377611);}logger[_0x8924('0x3b')](_0x8924('0x4a'),_0x474476['split']('.')[0x0]);return _0x474476[_0x8924('0x3c')]('.')[0x0];});};exports['googleASR']=function(_0x4eb4f9,_0x1bad58,_0x1cda18){return google[_0x8924('0x4b')](_0x4eb4f9,_0x1bad58,_0x1cda18)['then'](function(_0x449954){logger[_0x8924('0x3b')](_0x449954[_0x8924('0x4c')]);return rp(_0x449954);})[_0x8924('0x2c')](function(_0x3671aa){var _0x3ac6ba='';var _0xb2bc54=0x0;try{fs[_0x8924('0x3a')](_0x4eb4f9);}catch(_0x585f68){logger[_0x8924('0x17')](_0x585f68);}if(_0x3671aa&&_0x3671aa[_0x8924('0x4d')]){_0x3ac6ba=_0x3671aa[_0x8924('0x4d')]['map'](function(_0x2e5241){return _0x2e5241&&_0x2e5241['alternatives'][0x0]&&_0x2e5241['alternatives'][0x0][_0x8924('0x4e')]?_0x2e5241[_0x8924('0x4f')][0x0][_0x8924('0x4e')]:'';})[_0x8924('0x50')]('\x0a');_0xb2bc54=_0x3671aa[_0x8924('0x4d')][_0x8924('0x51')](function(_0x14ad4f){return _0x14ad4f&&_0x14ad4f[_0x8924('0x4f')][0x0]&&_0x14ad4f[_0x8924('0x4f')][0x0][_0x8924('0x52')]?_0x14ad4f[_0x8924('0x4f')][0x0]['confidence']:0x0;})[_0x8924('0x50')]('\x0a');}logger[_0x8924('0x3b')]('googleASR\x20transcription',_0x3ac6ba);logger[_0x8924('0x3b')](_0x8924('0x53'),_0xb2bc54);return{'transcript':_0x3ac6ba,'confidence':_0xb2bc54};})['catch'](function(_0x1984b8){logger[_0x8924('0x17')](_0x8924('0x54'),_0x1984b8['statusCode'],_0x1984b8['name'],_0x1984b8['message']);});};exports['googleDialogflow']=function(_0x3232c1,_0x3e5b7b,_0x1b087e,_0x388019){var _0x5240fd=apiai(_0x3e5b7b,{'language':_0x388019||'en'});return _0x5240fd[_0x8924('0x55')](_0x1b087e,{'sessionId':md5(_0x3232c1)})[_0x8924('0x2c')](function(_0xfeb6f2){logger[_0x8924('0x3b')](JSON[_0x8924('0x43')](_0xfeb6f2));return{'source':_0xfeb6f2[_0x8924('0x56')][_0x8924('0x57')],'resolvedQuery':_0xfeb6f2[_0x8924('0x56')][_0x8924('0x58')],'action':_0xfeb6f2['result'][_0x8924('0x59')],'actionIncomplete':_0xfeb6f2['result'][_0x8924('0x5a')],'speech':_0xfeb6f2[_0x8924('0x56')][_0x8924('0x5b')][_0x8924('0x5c')],'score':_0xfeb6f2[_0x8924('0x56')][_0x8924('0x5d')],'statusCode':_0xfeb6f2[_0x8924('0x5e')][_0x8924('0x5f')],'endConversation':_0xfeb6f2[_0x8924('0x56')][_0x8924('0x60')][_0x8924('0x61')]||![],'isFallbackIntent':_0xfeb6f2['result'][_0x8924('0x60')][_0x8924('0x62')]};});};exports[_0x8924('0x63')]=function(_0x32c474,_0x147398,_0x5782fd,_0x499d1f,_0x4a9d21,_0x3e6eca){var _0x4d0d8a=_0x499d1f['replace'](/\\n/g,'\x0a');var _0x32ed01={'credentials':{'private_key':_0x4d0d8a,'client_email':_0x5782fd}};var _0x39343a=new dialogflow[(_0x8924('0x64'))](_0x32ed01);var _0x33b9a3=_0x39343a['sessionPath'](_0x147398,md5(_0x32c474));var _0x1dec67={'session':_0x33b9a3,'queryInput':{'text':{'text':_0x4a9d21,'languageCode':_0x3e6eca}}};return _0x39343a[_0x8924('0x65')](_0x1dec67)[_0x8924('0x2c')](function(_0x3501aa){if(_0x3501aa&&_0x3501aa[_0x8924('0x66')]){logger['info'](_0x8924('0x67'),JSON[_0x8924('0x43')](_0x3501aa));var _0x3167d1=_0x3501aa[0x0];if(_0x3167d1){var _0x2f884f={'action':_0x3167d1[_0x8924('0x68')][_0x8924('0x59')],'allRequiredParamsPresent':_0x3167d1[_0x8924('0x68')][_0x8924('0x69')],'endConversation':_0x3167d1[_0x8924('0x68')]['diagnosticInfo']&&_0x3167d1[_0x8924('0x68')][_0x8924('0x6a')][_0x8924('0x6b')]?_0x3167d1[_0x8924('0x68')]['diagnosticInfo']['fields']['end_conversation'][_0x8924('0x6c')]:![],'fulfillmentText':_0x3167d1[_0x8924('0x68')][_0x8924('0x6d')],'intentName':_0x3167d1[_0x8924('0x68')][_0x8924('0x6e')][_0x8924('0x6f')],'intentDisplayName':_0x3167d1['queryResult'][_0x8924('0x6e')][_0x8924('0x70')],'isFallbackIntent':_0x3167d1[_0x8924('0x68')][_0x8924('0x6e')][_0x8924('0x71')],'languageCode':_0x3167d1['queryResult'][_0x8924('0x72')],'queryText':_0x3167d1['queryResult'][_0x8924('0x73')],'responseId':_0x3167d1[_0x8924('0x74')],'score':_0x3167d1['queryResult'][_0x8924('0x75')],'speech':_0x3167d1['queryResult']['fulfillmentText'],'providerResponse':JSON[_0x8924('0x43')](_0x3501aa)};return _0x2f884f;}}});};exports[_0x8924('0x76')]=function(_0x65792b,_0xd31076,_0x2ab213,_0x2b0bec){return tilde['asr'](_0x65792b,_0xd31076,_0x2ab213,_0x2b0bec)[_0x8924('0x2c')](function(_0xb77a56){try{fs['unlink'](_0x65792b);}catch(_0x290931){logger[_0x8924('0x17')](_0x290931);}logger[_0x8924('0x3b')](_0x8924('0x77'),_0xb77a56[_0x8924('0x4e')]);logger[_0x8924('0x3b')](_0x8924('0x78'),_0xb77a56[_0x8924('0x52')]);return _0xb77a56;});};exports[_0x8924('0x79')]=function(_0xda0261,_0x4cb5df,_0x440437,_0x16cede,_0x58f857,_0x24df7f){var _0x207a1d=path[_0x8924('0x37')](__dirname,_0x8924('0x27'),rs[_0x8924('0x28')](0x4)+_0x8924('0x38'));var _0x3a08a6;return aws[_0x8924('0x7a')](_0xda0261,_0x4cb5df,_0x440437,_0x16cede,_0x58f857,_0x24df7f,_0x207a1d)[_0x8924('0x2c')](function(){_0x3a08a6=path[_0x8924('0x37')](__dirname,'tmp',rs[_0x8924('0x28')](0x4)+'.wav');return convertFile(_0x207a1d,_0x3a08a6);})[_0x8924('0x2c')](function(){try{fs[_0x8924('0x3a')](_0x207a1d);fs[_0x8924('0x2d')](_0x3a08a6,_0x8924('0x2e'));}catch(_0x523f10){logger[_0x8924('0x17')](_0x523f10);}return _0x3a08a6[_0x8924('0x3c')]('.')[0x0];});};exports['awsLex']=function(_0x5c09b5,_0x1bfb9a,_0x2ffe94,_0x3a2bf8,_0x12e52b,_0x5c1ed1){return aws[_0x8924('0x7b')](_0x5c09b5,_0x1bfb9a,_0x2ffe94,_0x3a2bf8,_0x12e52b,_0x5c1ed1)[_0x8924('0x2c')](function(_0x3f4f37){logger[_0x8924('0x3b')](JSON[_0x8924('0x43')](_0x3f4f37));return _0x3f4f37;});};exports[_0x8924('0x7c')]=function(_0x4432dd,_0x42e054,_0x155394,_0x55c4e5){var _0x59185a=util[_0x8924('0x7d')](_0x8924('0x7e'),ISPEECH_API,_0x4432dd,encodeURIComponent(_0x42e054),_0x155394,_0x55c4e5);var _0x2ae5c5=path[_0x8924('0x37')](__dirname,_0x8924('0x27'),rs[_0x8924('0x28')](0x4)+_0x8924('0x38'));var _0x2bb222;return downloadFile(_0x59185a,_0x2ae5c5)[_0x8924('0x2c')](function(){_0x2bb222=path[_0x8924('0x37')](__dirname,_0x8924('0x27'),rs[_0x8924('0x28')](0x4)+'.wav');return convertFile(_0x2ae5c5,_0x2bb222);})[_0x8924('0x2c')](function(){try{fs[_0x8924('0x3a')](_0x2ae5c5);fs[_0x8924('0x2d')](_0x2bb222,_0x8924('0x2e'));}catch(_0x3dbbd2){logger['error'](_0x3dbbd2);}return _0x2bb222[_0x8924('0x3c')]('.')[0x0];});};exports[_0x8924('0x7f')]=function(_0x58a895,_0x54bbac,_0x26cd4e,_0x1e7a46){var _0x4545c5=util[_0x8924('0x7d')](_0x8924('0x80'),ISPEECH_API,_0x54bbac,_0x26cd4e,base64Encode(_0x58a895),_0x1e7a46?util[_0x8924('0x7d')]('model=%s',encodeURIComponent(_0x1e7a46)):_0x8924('0x81'));return uploadFile(_0x4545c5)[_0x8924('0x2c')](function(_0x2598db){return querystring[_0x8924('0xa')](_0x2598db);});};exports['sestekNDA']=function(_0x358dc7,_0x28c2a5){return sestek[_0x8924('0x82')](_0x358dc7,_0x28c2a5)[_0x8924('0x2c')](function(_0x1e2ec1){logger['info'](JSON['stringify'](_0x1e2ec1));var _0x4585e6={'speech':_0x1e2ec1[_0x8924('0x83')],'action':_0x1e2ec1[_0x8924('0x84')]?_0x1e2ec1['channelData'][_0x8924('0x85')]:undefined,'actiondata':_0x1e2ec1['channelData']?_0x1e2ec1['channelData'][_0x8924('0x86')]:undefined};if(_0x1e2ec1[_0x8924('0x84')]&&_0x1e2ec1[_0x8924('0x84')]['AudioFromTts']){return base64Decode(_0x1e2ec1['channelData']['AudioFromTts'][_0x8924('0x87')],path[_0x8924('0x37')](__dirname,_0x8924('0x27'),rs['generate'](0x4)+_0x8924('0x29')))['then'](function(_0x447334){_0x4585e6[_0x8924('0x88')]=_0x447334;return _0x4585e6;});}return _0x4585e6;});};exports[_0x8924('0x89')]=function(){return __dirname;};