Built motion from commit (unavailable).|2.5.13
[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 _0x7b04=['intent','displayName','isFallback','languageCode','queryText','responseId','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','parse','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','http','https','path','querystring','request-promise','randomstring','sox','google-tts-api','url','util','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','get','error','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','createWriteStream','info','unlink','download\x20error','end','host','WHAT_EVER','request\x20to\x20','data','wav','error\x20convert','finish\x20to\x20convert','resolve','.wav','writeFileSync','base64','then','chmodSync','777','split','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','tmp','generate','.mp3','from','audioContent','googleCloudTTS\x20path','googleTTS','goggleTTS\x20path','googleASR','uri','results','alternatives','transcript','join','confidence','googleASR\x20transcription','catch','textRequest','stringify','result','source','resolvedQuery','actionIncomplete','speech','status','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','name'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7b04,0x116));var _0x47b0=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x7b04[_0xaa1b3e];return _0x454d7d;};'use strict';var apiai=require(_0x47b0('0x0'));var BPromise=require(_0x47b0('0x1'));var dialogflow=require(_0x47b0('0x2'));var fs=require('fs');var http=require(_0x47b0('0x3'));var https=require(_0x47b0('0x4'));var md5=require('md5');var path=require(_0x47b0('0x5'));var querystring=require(_0x47b0('0x6'));var rp=require(_0x47b0('0x7'));var rs=require(_0x47b0('0x8'));var sox=require(_0x47b0('0x9'));var tts=require(_0x47b0('0xa'));var urlParse=require(_0x47b0('0xb'))['parse'];var util=require(_0x47b0('0xc'));var aws=require('./aws');var google=require('./google');var sestek=require(_0x47b0('0xd'));var tilde=require('./tilde');var logger=require(_0x47b0('0xe'))(_0x47b0('0xf'));var ISPEECH_API=_0x47b0('0x10');function downloadFile(_0x55c64b,_0x122768){return new BPromise(function(_0x1921ca,_0x460319){var _0xe5f1c0=urlParse(_0x55c64b);var _0x2558ef=_0xe5f1c0[_0x47b0('0x11')]===_0x47b0('0x12')?https:http;var _0x21e229={'host':_0xe5f1c0['host'],'path':_0xe5f1c0[_0x47b0('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x2558ef[_0x47b0('0x13')](_0x21e229,function(_0x24a17f){if(_0x24a17f['statusCode']!==0xc8){logger[_0x47b0('0x14')]('request\x20to\x20'+_0x55c64b+_0x47b0('0x15')+_0x24a17f[_0x47b0('0x16')]+'\x20('+_0x24a17f[_0x47b0('0x17')]+')');_0x460319(new Error('request\x20to\x20'+_0x55c64b+_0x47b0('0x15')+_0x24a17f[_0x47b0('0x16')]+'\x20('+_0x24a17f[_0x47b0('0x17')]+')'));return;}var _0x5a1769=fs[_0x47b0('0x18')](_0x122768);_0x5a1769['on']('finish',function(){logger[_0x47b0('0x19')]('finish\x20download\x20file');_0x5a1769['close'](_0x1921ca);});_0x5a1769['on']('error',function(_0x28aa51){fs[_0x47b0('0x1a')](_0x122768);logger[_0x47b0('0x14')](_0x47b0('0x1b'),_0x28aa51);_0x460319(_0x28aa51);});_0x24a17f['pipe'](_0x5a1769);})['on'](_0x47b0('0x14'),function(_0x59381e){logger[_0x47b0('0x14')](_0x59381e);_0x460319(_0x59381e);})[_0x47b0('0x1c')]();});}function uploadFile(_0x1ca11d){return new BPromise(function(_0x59ccf0,_0x14a8f8){var _0x4aa16f=urlParse(_0x1ca11d);var _0x1e7c1c=_0x4aa16f[_0x47b0('0x11')]===_0x47b0('0x12')?https:http;var _0x123140={'host':_0x4aa16f[_0x47b0('0x1d')],'path':_0x4aa16f[_0x47b0('0x5')],'headers':{'user-agent':_0x47b0('0x1e')}};_0x1e7c1c[_0x47b0('0x13')](_0x123140,function(_0x343cf0){if(_0x343cf0[_0x47b0('0x16')]!==0xc8){_0x14a8f8(new Error(_0x47b0('0x1f')+_0x1ca11d+'\x20failed,\x20status\x20code\x20=\x20'+_0x343cf0[_0x47b0('0x16')]+'\x20('+_0x343cf0[_0x47b0('0x17')]+')'));return;}var _0x30e900='';_0x343cf0['on'](_0x47b0('0x20'),function(_0x5d4e92){_0x30e900+=_0x5d4e92;});_0x343cf0['on'](_0x47b0('0x1c'),function(){_0x59ccf0(_0x30e900);});})['on'](_0x47b0('0x14'),function(_0x298835){_0x14a8f8(_0x298835);})[_0x47b0('0x1c')]();});}function convertFile(_0x14aed6,_0x58352e){return new BPromise(function(_0x466949,_0x5999a4){var _0xf3e45f=sox['transcode'](_0x14aed6,_0x58352e,{'sampleRate':0x1f40,'format':_0x47b0('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xf3e45f['on'](_0x47b0('0x14'),function(_0x2e7b60){logger[_0x47b0('0x14')](_0x47b0('0x22'),_0x2e7b60);_0x5999a4(_0x2e7b60);});_0xf3e45f['on']('end',function(){logger['info'](_0x47b0('0x23'));_0x466949();});_0xf3e45f['start']();});}function base64Decode(_0x16a411,_0x552df){var _0x1f0510=path[_0x47b0('0x24')](__dirname,'tmp',rs['generate'](0x4)+_0x47b0('0x25'));fs[_0x47b0('0x26')](_0x1f0510,_0x16a411,_0x47b0('0x27'));return convertFile(_0x1f0510,_0x552df)[_0x47b0('0x28')](function(){try{fs[_0x47b0('0x1a')](_0x1f0510);fs[_0x47b0('0x29')](_0x552df,_0x47b0('0x2a'));}catch(_0x318b40){logger[_0x47b0('0x14')](_0x318b40);}return _0x552df[_0x47b0('0x2b')]('.')[0x0];});}function base64Encode(_0x278a9a){var _0x5362c7=fs['readFileSync'](_0x278a9a);return new Buffer(_0x5362c7)[_0x47b0('0x2c')](_0x47b0('0x27'));}exports[_0x47b0('0x2d')]=function(_0x1a3f19,_0x46e27d,_0x456889,_0x2bb311,_0x3df27b,_0x1c5dc8){var _0x483085,_0x1ebca9;var _0x39a4f=_0x47b0('0x2e');var _0xdf566f=_0x47b0('0x2f')+_0x1a3f19;var _0x47fcbc={};if(_0x46e27d===_0x47b0('0x30')){_0x47fcbc[_0x47b0('0x31')]={'ssml':_0x456889};}else{_0x47fcbc[_0x47b0('0x31')]={'text':_0x456889};};_0x47fcbc[_0x47b0('0x32')]={'languageCode':_0x2bb311,'ssmlGender':_0x3df27b};_0x47fcbc[_0x47b0('0x33')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0xd5b5ab={'url':_0x39a4f+_0x47b0('0x34')+_0xdf566f,'method':_0x47b0('0x35'),'json':!![],'body':_0x47fcbc};return rp(_0xd5b5ab)[_0x47b0('0x28')](function(_0x54e154){return new BPromise(function(_0x4792f4,_0x4b804d){_0x483085=path[_0x47b0('0x24')](__dirname,_0x47b0('0x36'),rs[_0x47b0('0x37')](0x4)+_0x47b0('0x38'));var _0x142e7c=Buffer[_0x47b0('0x39')](_0x54e154[_0x47b0('0x3a')],'base64');return fs['writeFile'](_0x483085,_0x142e7c,function(_0x439f3d){_0x4b804d(_0x439f3d);},function(_0x5b8194){fs[_0x47b0('0x29')](_0x483085,_0x47b0('0x2a'));_0x4792f4(_0x5b8194);});});})[_0x47b0('0x28')](function(_0x4e5222){_0x1ebca9=path[_0x47b0('0x24')](__dirname,_0x47b0('0x36'),rs[_0x47b0('0x37')](0x4)+'.wav');return convertFile(_0x483085,_0x1ebca9);})['then'](function(){try{fs['unlink'](_0x483085);fs[_0x47b0('0x29')](_0x1ebca9,_0x47b0('0x2a'));}catch(_0x303cfb){logger[_0x47b0('0x14')](_0x303cfb);}logger['info'](_0x47b0('0x3b'),_0x1ebca9[_0x47b0('0x2b')]('.')[0x0]);return _0x1ebca9[_0x47b0('0x2b')]('.')[0x0];});};exports[_0x47b0('0x3c')]=function(_0xc7ddc0,_0x15f561){var _0x41c1d2,_0x223891;return tts(_0xc7ddc0,_0x15f561||'en',0x1)[_0x47b0('0x28')](function(_0x277f86){logger[_0x47b0('0x19')](_0x277f86);_0x41c1d2=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x47b0('0x38'));return downloadFile(_0x277f86,_0x41c1d2);})[_0x47b0('0x28')](function(){_0x223891=path[_0x47b0('0x24')](__dirname,'tmp',rs[_0x47b0('0x37')](0x4)+'.wav');return convertFile(_0x41c1d2,_0x223891);})[_0x47b0('0x28')](function(){try{fs[_0x47b0('0x1a')](_0x41c1d2);fs[_0x47b0('0x29')](_0x223891,_0x47b0('0x2a'));}catch(_0x41ba56){logger[_0x47b0('0x14')](_0x41ba56);}logger[_0x47b0('0x19')](_0x47b0('0x3d'),_0x223891[_0x47b0('0x2b')]('.')[0x0]);return _0x223891[_0x47b0('0x2b')]('.')[0x0];});};exports[_0x47b0('0x3e')]=function(_0x2bca81,_0x2636a4,_0x55a24b){return google['asr'](_0x2bca81,_0x2636a4,_0x55a24b)[_0x47b0('0x28')](function(_0x5e004d){logger[_0x47b0('0x19')](_0x5e004d[_0x47b0('0x3f')]);return rp(_0x5e004d);})[_0x47b0('0x28')](function(_0x3abda2){var _0x54839a='';var _0x44a429=0x0;try{fs['unlink'](_0x2bca81);}catch(_0xd242de){logger[_0x47b0('0x14')](_0xd242de);}if(_0x3abda2&&_0x3abda2[_0x47b0('0x40')]){_0x54839a=_0x3abda2['results']['map'](function(_0x49d35f){return _0x49d35f&&_0x49d35f[_0x47b0('0x41')][0x0]&&_0x49d35f['alternatives'][0x0][_0x47b0('0x42')]?_0x49d35f['alternatives'][0x0][_0x47b0('0x42')]:'';})[_0x47b0('0x43')]('\x0a');_0x44a429=_0x3abda2[_0x47b0('0x40')]['map'](function(_0x44137e){return _0x44137e&&_0x44137e[_0x47b0('0x41')][0x0]&&_0x44137e[_0x47b0('0x41')][0x0][_0x47b0('0x44')]?_0x44137e[_0x47b0('0x41')][0x0][_0x47b0('0x44')]:0x0;})['join']('\x0a');}logger[_0x47b0('0x19')](_0x47b0('0x45'),_0x54839a);logger[_0x47b0('0x19')]('googleASR\x20confidence',_0x44a429);return{'transcript':_0x54839a,'confidence':_0x44a429};})[_0x47b0('0x46')](function(_0xa44a58){logger[_0x47b0('0x14')]('[%s]\x20%s:%s',_0xa44a58[_0x47b0('0x16')],_0xa44a58['name'],_0xa44a58['message']);});};exports['googleDialogflow']=function(_0x7ed281,_0x505fa8,_0x10c38e,_0x25926b){var _0x25b83c=apiai(_0x505fa8,{'language':_0x25926b||'en'});return _0x25b83c[_0x47b0('0x47')](_0x10c38e,{'sessionId':md5(_0x7ed281)})['then'](function(_0x257a9c){logger[_0x47b0('0x19')](JSON[_0x47b0('0x48')](_0x257a9c));return{'source':_0x257a9c[_0x47b0('0x49')][_0x47b0('0x4a')],'resolvedQuery':_0x257a9c[_0x47b0('0x49')][_0x47b0('0x4b')],'action':_0x257a9c['result']['action'],'actionIncomplete':_0x257a9c[_0x47b0('0x49')][_0x47b0('0x4c')],'speech':_0x257a9c[_0x47b0('0x49')]['fulfillment'][_0x47b0('0x4d')],'score':_0x257a9c[_0x47b0('0x49')]['score'],'statusCode':_0x257a9c[_0x47b0('0x4e')]['code'],'endConversation':_0x257a9c['result'][_0x47b0('0x4f')][_0x47b0('0x50')]||![],'isFallbackIntent':_0x257a9c[_0x47b0('0x49')]['metadata'][_0x47b0('0x51')]};});};exports[_0x47b0('0x52')]=function(_0x470fb3,_0x44d563,_0x5dc92b,_0x5f4a40,_0x404268,_0x57920c){var _0x5c24e8=_0x5f4a40[_0x47b0('0x53')](/\\n/g,'\x0a');var _0x4f7a21={'credentials':{'private_key':_0x5c24e8,'client_email':_0x5dc92b}};var _0x423779=new dialogflow[(_0x47b0('0x54'))](_0x4f7a21);var _0x359fb4=_0x423779['sessionPath'](_0x44d563,md5(_0x470fb3));var _0x12117f={'session':_0x359fb4,'queryInput':{'text':{'text':_0x404268,'languageCode':_0x57920c}}};return _0x423779[_0x47b0('0x55')](_0x12117f)[_0x47b0('0x28')](function(_0x5d423a){if(_0x5d423a&&_0x5d423a[_0x47b0('0x56')]){logger['info'](_0x47b0('0x57'),JSON[_0x47b0('0x48')](_0x5d423a));var _0x26e4df=_0x5d423a[0x0];if(_0x26e4df){var _0xa56ae7={'action':_0x26e4df[_0x47b0('0x58')][_0x47b0('0x59')],'allRequiredParamsPresent':_0x26e4df['queryResult'][_0x47b0('0x5a')],'endConversation':_0x26e4df[_0x47b0('0x58')][_0x47b0('0x5b')]&&_0x26e4df[_0x47b0('0x58')][_0x47b0('0x5b')][_0x47b0('0x5c')]?_0x26e4df[_0x47b0('0x58')][_0x47b0('0x5b')][_0x47b0('0x5c')][_0x47b0('0x5d')][_0x47b0('0x5e')]:![],'fulfillmentText':_0x26e4df[_0x47b0('0x58')][_0x47b0('0x5f')],'intentName':_0x26e4df[_0x47b0('0x58')]['intent'][_0x47b0('0x60')],'intentDisplayName':_0x26e4df['queryResult'][_0x47b0('0x61')][_0x47b0('0x62')],'isFallbackIntent':_0x26e4df[_0x47b0('0x58')][_0x47b0('0x61')][_0x47b0('0x63')],'languageCode':_0x26e4df[_0x47b0('0x58')][_0x47b0('0x64')],'queryText':_0x26e4df[_0x47b0('0x58')][_0x47b0('0x65')],'responseId':_0x26e4df[_0x47b0('0x66')],'score':_0x26e4df[_0x47b0('0x58')]['intentDetectionConfidence'],'speech':_0x26e4df[_0x47b0('0x58')][_0x47b0('0x5f')],'providerResponse':JSON['stringify'](_0x5d423a)};return _0xa56ae7;}}});};exports[_0x47b0('0x67')]=function(_0x21b60f,_0x2a6934,_0x31bd16,_0x46f95a){return tilde[_0x47b0('0x68')](_0x21b60f,_0x2a6934,_0x31bd16,_0x46f95a)[_0x47b0('0x28')](function(_0x3a151c){try{fs['unlink'](_0x21b60f);}catch(_0x5dcdde){logger[_0x47b0('0x14')](_0x5dcdde);}logger[_0x47b0('0x19')](_0x47b0('0x69'),_0x3a151c[_0x47b0('0x42')]);logger[_0x47b0('0x19')](_0x47b0('0x6a'),_0x3a151c[_0x47b0('0x44')]);return _0x3a151c;});};exports[_0x47b0('0x6b')]=function(_0x66bb6f,_0x3fbf52,_0x557045,_0x55698c,_0x2d4455,_0x329fdb){var _0x27f5f8=path['resolve'](__dirname,_0x47b0('0x36'),rs[_0x47b0('0x37')](0x4)+_0x47b0('0x38'));var _0xd1cbd8;return aws[_0x47b0('0x6c')](_0x66bb6f,_0x3fbf52,_0x557045,_0x55698c,_0x2d4455,_0x329fdb,_0x27f5f8)[_0x47b0('0x28')](function(){_0xd1cbd8=path[_0x47b0('0x24')](__dirname,_0x47b0('0x36'),rs[_0x47b0('0x37')](0x4)+'.wav');return convertFile(_0x27f5f8,_0xd1cbd8);})['then'](function(){try{fs['unlink'](_0x27f5f8);fs[_0x47b0('0x29')](_0xd1cbd8,_0x47b0('0x2a'));}catch(_0x1ca5ca){logger[_0x47b0('0x14')](_0x1ca5ca);}return _0xd1cbd8[_0x47b0('0x2b')]('.')[0x0];});};exports[_0x47b0('0x6d')]=function(_0x26eecc,_0x5bb521,_0x39061d,_0x2cab92,_0x475e70,_0x536f9d){return aws[_0x47b0('0x6e')](_0x26eecc,_0x5bb521,_0x39061d,_0x2cab92,_0x475e70,_0x536f9d)[_0x47b0('0x28')](function(_0x5807d8){logger[_0x47b0('0x19')](JSON[_0x47b0('0x48')](_0x5807d8));return _0x5807d8;});};exports['ispeechTTS']=function(_0x550aee,_0x3aa14e,_0x462110,_0x26e9be){var _0xbf89ee=util[_0x47b0('0x6f')](_0x47b0('0x70'),ISPEECH_API,_0x550aee,encodeURIComponent(_0x3aa14e),_0x462110,_0x26e9be);var _0x2a7907=path[_0x47b0('0x24')](__dirname,_0x47b0('0x36'),rs['generate'](0x4)+_0x47b0('0x38'));var _0x286235;return downloadFile(_0xbf89ee,_0x2a7907)[_0x47b0('0x28')](function(){_0x286235=path[_0x47b0('0x24')](__dirname,_0x47b0('0x36'),rs[_0x47b0('0x37')](0x4)+_0x47b0('0x25'));return convertFile(_0x2a7907,_0x286235);})[_0x47b0('0x28')](function(){try{fs[_0x47b0('0x1a')](_0x2a7907);fs[_0x47b0('0x29')](_0x286235,'777');}catch(_0x438b29){logger['error'](_0x438b29);}return _0x286235[_0x47b0('0x2b')]('.')[0x0];});};exports[_0x47b0('0x71')]=function(_0x6e9031,_0x2c20e4,_0x434a34,_0x5b394b){var _0x37676f=util['format']('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x2c20e4,_0x434a34,base64Encode(_0x6e9031),_0x5b394b?util[_0x47b0('0x6f')](_0x47b0('0x72'),encodeURIComponent(_0x5b394b)):_0x47b0('0x73'));return uploadFile(_0x37676f)[_0x47b0('0x28')](function(_0x345ca1){return querystring[_0x47b0('0x74')](_0x345ca1);});};exports[_0x47b0('0x75')]=function(_0x5dd0b2,_0x18c39c){return sestek[_0x47b0('0x76')](_0x5dd0b2,_0x18c39c)[_0x47b0('0x28')](function(_0x4dd52f){logger[_0x47b0('0x19')](JSON[_0x47b0('0x48')](_0x4dd52f));var _0x2ea1ad={'speech':_0x4dd52f[_0x47b0('0x77')],'action':_0x4dd52f[_0x47b0('0x78')]?_0x4dd52f[_0x47b0('0x78')]['CustomAction']:undefined,'actiondata':_0x4dd52f[_0x47b0('0x78')]?_0x4dd52f[_0x47b0('0x78')][_0x47b0('0x79')]:undefined};if(_0x4dd52f['channelData']&&_0x4dd52f['channelData'][_0x47b0('0x7a')]){return base64Decode(_0x4dd52f[_0x47b0('0x78')][_0x47b0('0x7a')][_0x47b0('0x7b')],path[_0x47b0('0x24')](__dirname,_0x47b0('0x36'),rs[_0x47b0('0x37')](0x4)+_0x47b0('0x25')))[_0x47b0('0x28')](function(_0x5230ba){_0x2ea1ad['audiofile']=_0x5230ba;return _0x2ea1ad;});}return _0x2ea1ad;});};exports[_0x47b0('0x7c')]=function(){return __dirname;};