252f8b5f748e00b62c9049569ed7b034f173538b
[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 _0xa42b=['error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','finish','info','finish\x20download\x20file','close','unlink','pipe','end','host','transcode','finish\x20to\x20convert','start','resolve','tmp','.wav','base64','then','chmodSync','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','generate','.mp3','from','audioContent','writeFile','777','split','googleTTS','POST','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','data','length','lang\x20\x22','\x22\x20might\x20not\x20exist','writeFileSync','goggleTTS\x20path','googleASR','asr','results','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','name','message','textRequest','result','source','action','fulfillment','speech','score','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','languageCode','queryText','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','sestekNDA','text','CustomAction','channelData','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','http','https','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','get','statusCode'];(function(_0x7f1f41,_0xe619cb){var _0x3cb836=function(_0x98ea5b){while(--_0x98ea5b){_0x7f1f41['push'](_0x7f1f41['shift']());}};_0x3cb836(++_0xe619cb);}(_0xa42b,0x16e));var _0xba42=function(_0x307bba,_0xa8d407){_0x307bba=_0x307bba-0x0;var _0x1cd54=_0xa42b[_0x307bba];return _0x1cd54;};'use strict';var apiai=require(_0xba42('0x0'));var BPromise=require(_0xba42('0x1'));var dialogflow=require(_0xba42('0x2'));var fs=require('fs');var http=require(_0xba42('0x3'));var https=require(_0xba42('0x4'));var md5=require('md5');var path=require(_0xba42('0x5'));var querystring=require(_0xba42('0x6'));var rp=require(_0xba42('0x7'));var rs=require(_0xba42('0x8'));var sox=require(_0xba42('0x9'));var tts=require(_0xba42('0xa'));var urlParse=require(_0xba42('0xb'))[_0xba42('0xc')];var util=require(_0xba42('0xd'));var aws=require(_0xba42('0xe'));var google=require('./google');var sestek=require(_0xba42('0xf'));var tilde=require(_0xba42('0x10'));var logger=require(_0xba42('0x11'))(_0xba42('0x12'));var ISPEECH_API=_0xba42('0x13');function downloadFile(_0x5c69f2,_0x3cc6d7){return new BPromise(function(_0x177dc1,_0x215e55){var _0x5b73cf=urlParse(_0x5c69f2);var _0x4d659b=_0x5b73cf[_0xba42('0x14')]===_0xba42('0x15')?https:http;var _0x2d63d2={'host':_0x5b73cf['host'],'path':_0x5b73cf[_0xba42('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x4d659b[_0xba42('0x16')](_0x2d63d2,function(_0x400385){if(_0x400385[_0xba42('0x17')]!==0xc8){logger[_0xba42('0x18')](_0xba42('0x19')+_0x5c69f2+'\x20failed,\x20status\x20code\x20=\x20'+_0x400385['statusCode']+'\x20('+_0x400385[_0xba42('0x1a')]+')');_0x215e55(new Error('request\x20to\x20'+_0x5c69f2+_0xba42('0x1b')+_0x400385[_0xba42('0x17')]+'\x20('+_0x400385[_0xba42('0x1a')]+')'));return;}var _0x366fc5=fs['createWriteStream'](_0x3cc6d7);_0x366fc5['on'](_0xba42('0x1c'),function(){logger[_0xba42('0x1d')](_0xba42('0x1e'));_0x366fc5[_0xba42('0x1f')](_0x177dc1);});_0x366fc5['on'](_0xba42('0x18'),function(_0x4ac67c){fs[_0xba42('0x20')](_0x3cc6d7);logger[_0xba42('0x18')]('download\x20error',_0x4ac67c);_0x215e55(_0x4ac67c);});_0x400385[_0xba42('0x21')](_0x366fc5);})['on']('error',function(_0xc4ad72){logger['error'](_0xc4ad72);_0x215e55(_0xc4ad72);})[_0xba42('0x22')]();});}function uploadFile(_0x2ac4d0){return new BPromise(function(_0x44e3be,_0x4015a7){var _0x1cdda7=urlParse(_0x2ac4d0);var _0x5d8be5=_0x1cdda7[_0xba42('0x14')]===_0xba42('0x15')?https:http;var _0x1b367f={'host':_0x1cdda7[_0xba42('0x23')],'path':_0x1cdda7['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x5d8be5[_0xba42('0x16')](_0x1b367f,function(_0xe06562){if(_0xe06562[_0xba42('0x17')]!==0xc8){_0x4015a7(new Error(_0xba42('0x19')+_0x2ac4d0+_0xba42('0x1b')+_0xe06562['statusCode']+'\x20('+_0xe06562[_0xba42('0x1a')]+')'));return;}var _0xe12b66='';_0xe06562['on']('data',function(_0xedf2b0){_0xe12b66+=_0xedf2b0;});_0xe06562['on'](_0xba42('0x22'),function(){_0x44e3be(_0xe12b66);});})['on'](_0xba42('0x18'),function(_0x4b4204){_0x4015a7(_0x4b4204);})[_0xba42('0x22')]();});}function convertFile(_0x3e749f,_0x650511){return new BPromise(function(_0xe8baeb,_0x511ab5){var _0x137d49=sox[_0xba42('0x24')](_0x3e749f,_0x650511,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x137d49['on'](_0xba42('0x18'),function(_0x2f8c52){logger[_0xba42('0x18')]('error\x20convert',_0x2f8c52);_0x511ab5(_0x2f8c52);});_0x137d49['on'](_0xba42('0x22'),function(){logger[_0xba42('0x1d')](_0xba42('0x25'));_0xe8baeb();});_0x137d49[_0xba42('0x26')]();});}function base64Decode(_0x1435d0,_0x1993e3){var _0x1b93c7=path[_0xba42('0x27')](__dirname,_0xba42('0x28'),rs['generate'](0x4)+_0xba42('0x29'));fs['writeFileSync'](_0x1b93c7,_0x1435d0,_0xba42('0x2a'));return convertFile(_0x1b93c7,_0x1993e3)[_0xba42('0x2b')](function(){try{fs[_0xba42('0x20')](_0x1b93c7);fs[_0xba42('0x2c')](_0x1993e3,'777');}catch(_0x182d0f){logger['error'](_0x182d0f);}return _0x1993e3['split']('.')[0x0];});}function base64Encode(_0x333076){var _0x12bf52=fs[_0xba42('0x2d')](_0x333076);return new Buffer(_0x12bf52)[_0xba42('0x2e')](_0xba42('0x2a'));}exports[_0xba42('0x2f')]=function(_0xf6125a,_0x26eb09,_0x28c331,_0x38a76b,_0x241b7c,_0x2d198b){var _0x4408b2,_0x57974c;var _0x366814=_0xba42('0x30');var _0x5d3f5d=_0xba42('0x31')+_0xf6125a;var _0x3284af={};if(_0x26eb09===_0xba42('0x32')){_0x3284af[_0xba42('0x33')]={'ssml':_0x28c331};}else{_0x3284af['input']={'text':_0x28c331};};_0x3284af[_0xba42('0x34')]={'languageCode':_0x38a76b,'ssmlGender':_0x241b7c};_0x3284af[_0xba42('0x35')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x1b8662={'url':_0x366814+'text:synthesize'+_0x5d3f5d,'method':'POST','json':!![],'body':_0x3284af};return rp(_0x1b8662)['then'](function(_0x257068){return new BPromise(function(_0x5169ca,_0x302eda){_0x4408b2=path[_0xba42('0x27')](__dirname,_0xba42('0x28'),rs[_0xba42('0x36')](0x4)+_0xba42('0x37'));var _0x4dc2d8=Buffer[_0xba42('0x38')](_0x257068[_0xba42('0x39')],'base64');return fs[_0xba42('0x3a')](_0x4408b2,_0x4dc2d8,function(_0x1cbeb4){_0x302eda(_0x1cbeb4);},function(_0x17c9bd){fs['chmodSync'](_0x4408b2,_0xba42('0x3b'));_0x5169ca(_0x17c9bd);});});})[_0xba42('0x2b')](function(_0x4d3ac5){_0x57974c=path['resolve'](__dirname,_0xba42('0x28'),rs[_0xba42('0x36')](0x4)+_0xba42('0x29'));return convertFile(_0x4408b2,_0x57974c);})[_0xba42('0x2b')](function(){try{fs[_0xba42('0x20')](_0x4408b2);fs['chmodSync'](_0x57974c,_0xba42('0x3b'));}catch(_0x5903b3){logger[_0xba42('0x18')](_0x5903b3);}logger[_0xba42('0x1d')]('googleCloudTTS\x20path',_0x57974c[_0xba42('0x3c')]('.')[0x0]);return _0x57974c[_0xba42('0x3c')]('.')[0x0];});};exports[_0xba42('0x3d')]=function(_0x2b1ba2,_0x5c4264){var _0xf0d8b8='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x413c40,_0x1295d6;var _0x1e7fd4;var _0x44d89a={'encoding':'utf8','method':_0xba42('0x3e'),'timeout':0x2710,'url':_0xf0d8b8,'headers':{'Content-Type':_0xba42('0x3f')},'body':_0xba42('0x40')+encodeURIComponent(JSON[_0xba42('0x41')]([[['jQ1olc',JSON[_0xba42('0x41')]([_0x2b1ba2,_0x5c4264||'en',![],_0xba42('0x42')]),null,_0xba42('0x43')]]]))};return rp(_0x44d89a)[_0xba42('0x2b')](function(_0x14ad35){try{_0x1e7fd4=eval(_0x14ad35[_0xba42('0x44')](0x5))[0x0][0x2];}catch(_0x3b421a){throw new Error('parse\x20response\x20failed:\x0a'+_0x14ad35[_0xba42('0x45')]);}if(!_0x1e7fd4){if(_0x2b1ba2[_0xba42('0x46')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0xba42('0x47')+_0x5c4264+_0xba42('0x48'));}}try{_0x1e7fd4=eval(_0x1e7fd4)[0x0];}catch(_0x43f452){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0xb53620=_0x1e7fd4;_0x413c40=path[_0xba42('0x27')](__dirname,_0xba42('0x28'),rs[_0xba42('0x36')](0x4)+_0xba42('0x37'));fs[_0xba42('0x49')](_0x413c40,_0x1e7fd4,{'encoding':'base64'});_0x1295d6=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0xba42('0x29'));return convertFile(_0x413c40,_0x1295d6);})[_0xba42('0x2b')](function(){try{fs[_0xba42('0x20')](_0x413c40);fs[_0xba42('0x2c')](_0x1295d6,_0xba42('0x3b'));}catch(_0x16d028){logger[_0xba42('0x18')](_0x16d028);}logger[_0xba42('0x1d')](_0xba42('0x4a'),_0x1295d6[_0xba42('0x3c')]('.')[0x0]);return _0x1295d6[_0xba42('0x3c')]('.')[0x0];});};exports[_0xba42('0x4b')]=function(_0x58e61c,_0x1075c3,_0x59c661){return google[_0xba42('0x4c')](_0x58e61c,_0x1075c3,_0x59c661)['then'](function(_0x4e71cc){logger[_0xba42('0x1d')](_0x4e71cc['uri']);return rp(_0x4e71cc);})[_0xba42('0x2b')](function(_0x27723a){var _0x18b3da='';var _0x27e83b=0x0;try{fs[_0xba42('0x20')](_0x58e61c);}catch(_0x27323d){logger['error'](_0x27323d);}if(_0x27723a&&_0x27723a['results']){_0x18b3da=_0x27723a[_0xba42('0x4d')]['map'](function(_0x3a2cf8){return _0x3a2cf8&&_0x3a2cf8[_0xba42('0x4e')][0x0]&&_0x3a2cf8[_0xba42('0x4e')][0x0][_0xba42('0x4f')]?_0x3a2cf8['alternatives'][0x0][_0xba42('0x4f')]:'';})['join']('\x0a');_0x27e83b=_0x27723a['results']['map'](function(_0x428cc9){return _0x428cc9&&_0x428cc9[_0xba42('0x4e')][0x0]&&_0x428cc9[_0xba42('0x4e')][0x0][_0xba42('0x50')]?_0x428cc9['alternatives'][0x0]['confidence']:0x0;})[_0xba42('0x51')]('\x0a');}logger[_0xba42('0x1d')](_0xba42('0x52'),_0x18b3da);logger[_0xba42('0x1d')](_0xba42('0x53'),_0x27e83b);return{'transcript':_0x18b3da,'confidence':_0x27e83b};})[_0xba42('0x54')](function(_0x39f134){logger[_0xba42('0x18')]('[%s]\x20%s:%s',_0x39f134['statusCode'],_0x39f134[_0xba42('0x55')],_0x39f134[_0xba42('0x56')]);});};exports['googleDialogflow']=function(_0xff4649,_0x34c7de,_0x82ca9,_0x1844ae){var _0x1b3219=apiai(_0x34c7de,{'language':_0x1844ae||'en'});return _0x1b3219[_0xba42('0x57')](_0x82ca9,{'sessionId':md5(_0xff4649)})['then'](function(_0x132330){logger['info'](JSON['stringify'](_0x132330));return{'source':_0x132330[_0xba42('0x58')][_0xba42('0x59')],'resolvedQuery':_0x132330[_0xba42('0x58')]['resolvedQuery'],'action':_0x132330[_0xba42('0x58')][_0xba42('0x5a')],'actionIncomplete':_0x132330[_0xba42('0x58')]['actionIncomplete'],'speech':_0x132330['result'][_0xba42('0x5b')][_0xba42('0x5c')],'score':_0x132330['result'][_0xba42('0x5d')],'statusCode':_0x132330['status']['code'],'endConversation':_0x132330[_0xba42('0x58')][_0xba42('0x5e')][_0xba42('0x5f')]||![],'isFallbackIntent':_0x132330['result']['metadata'][_0xba42('0x60')]};});};exports[_0xba42('0x61')]=function(_0x17c2d1,_0x2c6db5,_0xd48009,_0x270bfe,_0x9f30dc,_0x54dd22){var _0x1bbdb7=_0x270bfe[_0xba42('0x62')](/\\n/g,'\x0a');var _0x1b512f={'credentials':{'private_key':_0x1bbdb7,'client_email':_0xd48009}};var _0xea878a=new dialogflow[(_0xba42('0x63'))](_0x1b512f);var _0x5d7ed3=_0xea878a[_0xba42('0x64')](_0x2c6db5,md5(_0x17c2d1));var _0xd73c57={'session':_0x5d7ed3,'queryInput':{'text':{'text':_0x9f30dc,'languageCode':_0x54dd22}}};return _0xea878a[_0xba42('0x65')](_0xd73c57)[_0xba42('0x2b')](function(_0x501e2a){if(_0x501e2a&&_0x501e2a[_0xba42('0x46')]){logger[_0xba42('0x1d')]('Dialogflow\x20V2\x20response:',JSON[_0xba42('0x41')](_0x501e2a));var _0xb4ec76=_0x501e2a[0x0];if(_0xb4ec76){var _0x9a0502={'action':_0xb4ec76[_0xba42('0x66')][_0xba42('0x5a')],'allRequiredParamsPresent':_0xb4ec76[_0xba42('0x66')]['allRequiredParamsPresent'],'endConversation':_0xb4ec76[_0xba42('0x66')]['diagnosticInfo']&&_0xb4ec76[_0xba42('0x66')][_0xba42('0x67')][_0xba42('0x68')]?_0xb4ec76[_0xba42('0x66')][_0xba42('0x67')][_0xba42('0x68')][_0xba42('0x69')][_0xba42('0x6a')]:![],'fulfillmentText':_0xb4ec76[_0xba42('0x66')][_0xba42('0x6b')],'intentName':_0xb4ec76[_0xba42('0x66')][_0xba42('0x6c')][_0xba42('0x55')],'intentDisplayName':_0xb4ec76[_0xba42('0x66')]['intent'][_0xba42('0x6d')],'isFallbackIntent':_0xb4ec76[_0xba42('0x66')][_0xba42('0x6c')]['isFallback'],'languageCode':_0xb4ec76['queryResult'][_0xba42('0x6e')],'queryText':_0xb4ec76[_0xba42('0x66')][_0xba42('0x6f')],'responseId':_0xb4ec76['responseId'],'score':_0xb4ec76['queryResult'][_0xba42('0x70')],'speech':_0xb4ec76[_0xba42('0x66')][_0xba42('0x6b')],'providerResponse':JSON['stringify'](_0x501e2a)};return _0x9a0502;}}});};exports[_0xba42('0x71')]=function(_0x586670,_0x2ad7f9,_0x21bf74,_0x1637d0){return tilde[_0xba42('0x4c')](_0x586670,_0x2ad7f9,_0x21bf74,_0x1637d0)[_0xba42('0x2b')](function(_0x25686f){try{fs[_0xba42('0x20')](_0x586670);}catch(_0x5ae693){logger[_0xba42('0x18')](_0x5ae693);}logger['info'](_0xba42('0x72'),_0x25686f[_0xba42('0x4f')]);logger[_0xba42('0x1d')](_0xba42('0x73'),_0x25686f['confidence']);return _0x25686f;});};exports[_0xba42('0x74')]=function(_0x51d5b3,_0x428906,_0x1d0de0,_0x4bf36f,_0x4c3831,_0x4e37f4){var _0x453176=path[_0xba42('0x27')](__dirname,'tmp',rs[_0xba42('0x36')](0x4)+_0xba42('0x37'));var _0x40ceb1;return aws['polly'](_0x51d5b3,_0x428906,_0x1d0de0,_0x4bf36f,_0x4c3831,_0x4e37f4,_0x453176)[_0xba42('0x2b')](function(){_0x40ceb1=path[_0xba42('0x27')](__dirname,_0xba42('0x28'),rs[_0xba42('0x36')](0x4)+_0xba42('0x29'));return convertFile(_0x453176,_0x40ceb1);})[_0xba42('0x2b')](function(){try{fs[_0xba42('0x20')](_0x453176);fs[_0xba42('0x2c')](_0x40ceb1,'777');}catch(_0x1824b9){logger[_0xba42('0x18')](_0x1824b9);}return _0x40ceb1[_0xba42('0x3c')]('.')[0x0];});};exports[_0xba42('0x75')]=function(_0x328feb,_0x199a35,_0x28678d,_0x5b7333,_0x16bd61,_0x1d8437){return aws[_0xba42('0x76')](_0x328feb,_0x199a35,_0x28678d,_0x5b7333,_0x16bd61,_0x1d8437)['then'](function(_0x177f59){logger['info'](JSON[_0xba42('0x41')](_0x177f59));return _0x177f59;});};exports[_0xba42('0x77')]=function(_0x521a21,_0x413f6e,_0x299b33,_0x5303a6){var _0x4f30f9=util[_0xba42('0x78')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x521a21,encodeURIComponent(_0x413f6e),_0x299b33,_0x5303a6);var _0x3eb054=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0xba42('0x37'));var _0x341195;return downloadFile(_0x4f30f9,_0x3eb054)[_0xba42('0x2b')](function(){_0x341195=path[_0xba42('0x27')](__dirname,'tmp',rs[_0xba42('0x36')](0x4)+_0xba42('0x29'));return convertFile(_0x3eb054,_0x341195);})[_0xba42('0x2b')](function(){try{fs['unlink'](_0x3eb054);fs[_0xba42('0x2c')](_0x341195,_0xba42('0x3b'));}catch(_0x480f50){logger[_0xba42('0x18')](_0x480f50);}return _0x341195['split']('.')[0x0];});};exports['ispeechASR']=function(_0x25853b,_0x17dbcb,_0x255ae5,_0xc6a7e){var _0x3f1467=util[_0xba42('0x78')](_0xba42('0x79'),ISPEECH_API,_0x17dbcb,_0x255ae5,base64Encode(_0x25853b),_0xc6a7e?util[_0xba42('0x78')](_0xba42('0x7a'),encodeURIComponent(_0xc6a7e)):'freeform=3');return uploadFile(_0x3f1467)['then'](function(_0x2dcef6){return querystring[_0xba42('0xc')](_0x2dcef6);});};exports[_0xba42('0x7b')]=function(_0x1ab3df,_0x223ac6){return sestek['nda'](_0x1ab3df,_0x223ac6)[_0xba42('0x2b')](function(_0x45ca41){logger[_0xba42('0x1d')](JSON[_0xba42('0x41')](_0x45ca41));var _0x10dc4e={'speech':_0x45ca41[_0xba42('0x7c')],'action':_0x45ca41['channelData']?_0x45ca41['channelData'][_0xba42('0x7d')]:undefined,'actiondata':_0x45ca41[_0xba42('0x7e')]?_0x45ca41['channelData']['CustomActionData']:undefined};if(_0x45ca41[_0xba42('0x7e')]&&_0x45ca41[_0xba42('0x7e')][_0xba42('0x7f')]){return base64Decode(_0x45ca41[_0xba42('0x7e')]['AudioFromTts'][_0xba42('0x80')],path[_0xba42('0x27')](__dirname,'tmp',rs[_0xba42('0x36')](0x4)+'.wav'))[_0xba42('0x2b')](function(_0x54cd11){_0x10dc4e['audiofile']=_0x54cd11;return _0x10dc4e;});}return _0x10dc4e;});};exports[_0xba42('0x81')]=function(){return __dirname;};