Built motion from commit d1eab355.|2.6.28
[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 _0x66e3=['protocol','host','WHAT_EVER','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','end','https:','get','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','MP3','text:synthesize','POST','.mp3','from','audioContent','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','null','parse\x20response\x20failed:\x0a','lang\x20\x22','goggleTTS\x20path','googleASR','results','map','alternatives','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','stringify','result','fulfillment','speech','score','status','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','displayName','intent','isFallback','queryText','responseId','intentDetectionConfidence','tildeASR','asr','transcript','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','dialogflow','http','https','path','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','agi','https://api.ispeech.org/api/rest'];(function(_0x751470,_0x54aeab){var _0x59a78b=function(_0x23034d){while(--_0x23034d){_0x751470['push'](_0x751470['shift']());}};_0x59a78b(++_0x54aeab);}(_0x66e3,0x184));var _0x366e=function(_0x2e38fd,_0x5ff983){_0x2e38fd=_0x2e38fd-0x0;var _0x440247=_0x66e3[_0x2e38fd];return _0x440247;};'use strict';var apiai=require(_0x366e('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0x366e('0x1'));var fs=require('fs');var http=require(_0x366e('0x2'));var https=require(_0x366e('0x3'));var md5=require('md5');var path=require(_0x366e('0x4'));var querystring=require('querystring');var rp=require(_0x366e('0x5'));var rs=require(_0x366e('0x6'));var sox=require(_0x366e('0x7'));var tts=require(_0x366e('0x8'));var urlParse=require(_0x366e('0x9'))[_0x366e('0xa')];var util=require(_0x366e('0xb'));var aws=require(_0x366e('0xc'));var google=require(_0x366e('0xd'));var sestek=require(_0x366e('0xe'));var tilde=require('./tilde');var logger=require('../../../config/logger')(_0x366e('0xf'));var ISPEECH_API=_0x366e('0x10');function downloadFile(_0x269d30,_0x2eb878){return new BPromise(function(_0x4df175,_0x599f67){var _0x19062e=urlParse(_0x269d30);var _0x302fd4=_0x19062e[_0x366e('0x11')]==='https:'?https:http;var _0x1a86db={'host':_0x19062e[_0x366e('0x12')],'path':_0x19062e[_0x366e('0x4')],'headers':{'user-agent':_0x366e('0x13')}};_0x302fd4['get'](_0x1a86db,function(_0x51f3b6){if(_0x51f3b6[_0x366e('0x14')]!==0xc8){logger[_0x366e('0x15')]('request\x20to\x20'+_0x269d30+_0x366e('0x16')+_0x51f3b6['statusCode']+'\x20('+_0x51f3b6[_0x366e('0x17')]+')');_0x599f67(new Error(_0x366e('0x18')+_0x269d30+_0x366e('0x16')+_0x51f3b6[_0x366e('0x14')]+'\x20('+_0x51f3b6[_0x366e('0x17')]+')'));return;}var _0x1b530a=fs[_0x366e('0x19')](_0x2eb878);_0x1b530a['on'](_0x366e('0x1a'),function(){logger[_0x366e('0x1b')](_0x366e('0x1c'));_0x1b530a[_0x366e('0x1d')](_0x4df175);});_0x1b530a['on']('error',function(_0x41261f){fs[_0x366e('0x1e')](_0x2eb878);logger[_0x366e('0x15')]('download\x20error',_0x41261f);_0x599f67(_0x41261f);});_0x51f3b6['pipe'](_0x1b530a);})['on'](_0x366e('0x15'),function(_0x92f22b){logger[_0x366e('0x15')](_0x92f22b);_0x599f67(_0x92f22b);})[_0x366e('0x1f')]();});}function uploadFile(_0xedd6f){return new BPromise(function(_0x4d7ed5,_0x362722){var _0x5a4488=urlParse(_0xedd6f);var _0x284c56=_0x5a4488[_0x366e('0x11')]===_0x366e('0x20')?https:http;var _0x3ce9eb={'host':_0x5a4488[_0x366e('0x12')],'path':_0x5a4488[_0x366e('0x4')],'headers':{'user-agent':_0x366e('0x13')}};_0x284c56[_0x366e('0x21')](_0x3ce9eb,function(_0x5b5227){if(_0x5b5227['statusCode']!==0xc8){_0x362722(new Error(_0x366e('0x18')+_0xedd6f+_0x366e('0x16')+_0x5b5227[_0x366e('0x14')]+'\x20('+_0x5b5227[_0x366e('0x17')]+')'));return;}var _0x50c2f6='';_0x5b5227['on'](_0x366e('0x22'),function(_0x32e1f4){_0x50c2f6+=_0x32e1f4;});_0x5b5227['on'](_0x366e('0x1f'),function(){_0x4d7ed5(_0x50c2f6);});})['on'](_0x366e('0x15'),function(_0x29375b){_0x362722(_0x29375b);})[_0x366e('0x1f')]();});}function convertFile(_0x450a20,_0x48d26f){return new BPromise(function(_0x194ce6,_0x5d96f1){var _0x16a7b5=sox[_0x366e('0x23')](_0x450a20,_0x48d26f,{'sampleRate':0x1f40,'format':_0x366e('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x16a7b5['on'](_0x366e('0x15'),function(_0x2c3457){logger['error'](_0x366e('0x25'),_0x2c3457);_0x5d96f1(_0x2c3457);});_0x16a7b5['on']('end',function(){logger[_0x366e('0x1b')](_0x366e('0x26'));_0x194ce6();});_0x16a7b5[_0x366e('0x27')]();});}function base64Decode(_0x568505,_0x3852a4){var _0x515a0b=path[_0x366e('0x28')](__dirname,_0x366e('0x29'),rs[_0x366e('0x2a')](0x4)+_0x366e('0x2b'));fs[_0x366e('0x2c')](_0x515a0b,_0x568505,_0x366e('0x2d'));return convertFile(_0x515a0b,_0x3852a4)[_0x366e('0x2e')](function(){try{fs[_0x366e('0x1e')](_0x515a0b);fs[_0x366e('0x2f')](_0x3852a4,_0x366e('0x30'));}catch(_0xa70d9b){logger[_0x366e('0x15')](_0xa70d9b);}return _0x3852a4[_0x366e('0x31')]('.')[0x0];});}function base64Encode(_0x572362){var _0x353a56=fs[_0x366e('0x32')](_0x572362);return new Buffer(_0x353a56)[_0x366e('0x33')](_0x366e('0x2d'));}exports[_0x366e('0x34')]=function(_0x200731,_0x12a223,_0x155d55,_0x113cd3,_0x11dba8,_0xf88913){var _0x2cc515,_0x379bc9;var _0x277a11=_0x366e('0x35');var _0x3b733e=_0x366e('0x36')+_0x200731;var _0x220b0c={};if(_0x12a223===_0x366e('0x37')){_0x220b0c[_0x366e('0x38')]={'ssml':_0x155d55};}else{_0x220b0c[_0x366e('0x38')]={'text':_0x155d55};};_0x220b0c['voice']={'languageCode':_0x113cd3,'ssmlGender':_0x11dba8};_0x220b0c[_0x366e('0x39')]={'audioEncoding':_0x366e('0x3a'),'sampleRateHertz':0x1f40};var _0x268870={'url':_0x277a11+_0x366e('0x3b')+_0x3b733e,'method':_0x366e('0x3c'),'json':!![],'body':_0x220b0c};return rp(_0x268870)[_0x366e('0x2e')](function(_0x20fade){return new BPromise(function(_0x5c2418,_0x465000){_0x2cc515=path['resolve'](__dirname,_0x366e('0x29'),rs[_0x366e('0x2a')](0x4)+_0x366e('0x3d'));var _0x81611f=Buffer[_0x366e('0x3e')](_0x20fade[_0x366e('0x3f')],_0x366e('0x2d'));return fs['writeFile'](_0x2cc515,_0x81611f,function(_0x203baf){_0x465000(_0x203baf);},function(_0x4a0241){fs['chmodSync'](_0x2cc515,'777');_0x5c2418(_0x4a0241);});});})['then'](function(_0xdc4e72){_0x379bc9=path['resolve'](__dirname,'tmp',rs[_0x366e('0x2a')](0x4)+_0x366e('0x2b'));return convertFile(_0x2cc515,_0x379bc9);})['then'](function(){try{fs[_0x366e('0x1e')](_0x2cc515);fs[_0x366e('0x2f')](_0x379bc9,_0x366e('0x30'));}catch(_0x1385ef){logger[_0x366e('0x15')](_0x1385ef);}logger['info'](_0x366e('0x40'),_0x379bc9[_0x366e('0x31')]('.')[0x0]);return _0x379bc9[_0x366e('0x31')]('.')[0x0];});};exports['googleTTS']=function(_0x343275,_0x38b7a4){var _0x579323=_0x366e('0x41');var _0x4805fe,_0x59a233;var _0x2a9ca8;var _0xcca32b={'encoding':'utf8','method':_0x366e('0x3c'),'timeout':0x2710,'url':_0x579323,'headers':{'Content-Type':_0x366e('0x42')},'body':'f.req='+encodeURIComponent(JSON['stringify']([[['jQ1olc',JSON['stringify']([_0x343275,_0x38b7a4||'en',![],_0x366e('0x43')]),null,'generic']]]))};return rp(_0xcca32b)['then'](function(_0x13f679){try{_0x2a9ca8=eval(_0x13f679['slice'](0x5))[0x0][0x2];}catch(_0x31ccc1){throw new Error(_0x366e('0x44')+_0x13f679[_0x366e('0x22')]);}if(!_0x2a9ca8){if(_0x343275['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x366e('0x45')+_0x38b7a4+'\x22\x20might\x20not\x20exist');}}try{_0x2a9ca8=eval(_0x2a9ca8)[0x0];}catch(_0x4a4cfe){throw new Error(_0x366e('0x44')+res[_0x366e('0x22')]);}const _0x3668a0=_0x2a9ca8;_0x4805fe=path[_0x366e('0x28')](__dirname,'tmp',rs[_0x366e('0x2a')](0x4)+'.mp3');fs[_0x366e('0x2c')](_0x4805fe,_0x2a9ca8,{'encoding':_0x366e('0x2d')});_0x59a233=path[_0x366e('0x28')](__dirname,_0x366e('0x29'),rs[_0x366e('0x2a')](0x4)+_0x366e('0x2b'));return convertFile(_0x4805fe,_0x59a233);})[_0x366e('0x2e')](function(){try{fs['unlink'](_0x4805fe);fs[_0x366e('0x2f')](_0x59a233,'777');}catch(_0x2e6edd){logger['error'](_0x2e6edd);}logger[_0x366e('0x1b')](_0x366e('0x46'),_0x59a233[_0x366e('0x31')]('.')[0x0]);return _0x59a233['split']('.')[0x0];});};exports[_0x366e('0x47')]=function(_0x50f45e,_0x773a51,_0x45f622){return google['asr'](_0x50f45e,_0x773a51,_0x45f622)[_0x366e('0x2e')](function(_0x1efc11){logger[_0x366e('0x1b')](_0x1efc11['uri']);return rp(_0x1efc11);})[_0x366e('0x2e')](function(_0x2f8819){var _0x4212e6='';var _0x29e6f8=0x0;try{fs[_0x366e('0x1e')](_0x50f45e);}catch(_0x1d4b69){logger[_0x366e('0x15')](_0x1d4b69);}if(_0x2f8819&&_0x2f8819[_0x366e('0x48')]){_0x4212e6=_0x2f8819[_0x366e('0x48')][_0x366e('0x49')](function(_0x220c2e){return _0x220c2e&&_0x220c2e[_0x366e('0x4a')][0x0]&&_0x220c2e['alternatives'][0x0]['transcript']?_0x220c2e[_0x366e('0x4a')][0x0]['transcript']:'';})[_0x366e('0x4b')]('\x0a');_0x29e6f8=_0x2f8819[_0x366e('0x48')][_0x366e('0x49')](function(_0x116cdd){return _0x116cdd&&_0x116cdd[_0x366e('0x4a')][0x0]&&_0x116cdd[_0x366e('0x4a')][0x0][_0x366e('0x4c')]?_0x116cdd[_0x366e('0x4a')][0x0][_0x366e('0x4c')]:0x0;})['join']('\x0a');}logger['info'](_0x366e('0x4d'),_0x4212e6);logger[_0x366e('0x1b')](_0x366e('0x4e'),_0x29e6f8);return{'transcript':_0x4212e6,'confidence':_0x29e6f8};})[_0x366e('0x4f')](function(_0xb5f2ca){logger[_0x366e('0x15')](_0x366e('0x50'),_0xb5f2ca['statusCode'],_0xb5f2ca[_0x366e('0x51')],_0xb5f2ca[_0x366e('0x52')]);});};exports[_0x366e('0x53')]=function(_0x3573ff,_0x4ca42f,_0x5959c1,_0x596483){var _0x4d3456=apiai(_0x4ca42f,{'language':_0x596483||'en'});return _0x4d3456[_0x366e('0x54')](_0x5959c1,{'sessionId':md5(_0x3573ff)})[_0x366e('0x2e')](function(_0xd9656b){logger[_0x366e('0x1b')](JSON[_0x366e('0x55')](_0xd9656b));return{'source':_0xd9656b[_0x366e('0x56')]['source'],'resolvedQuery':_0xd9656b['result']['resolvedQuery'],'action':_0xd9656b[_0x366e('0x56')]['action'],'actionIncomplete':_0xd9656b[_0x366e('0x56')]['actionIncomplete'],'speech':_0xd9656b['result'][_0x366e('0x57')][_0x366e('0x58')],'score':_0xd9656b[_0x366e('0x56')][_0x366e('0x59')],'statusCode':_0xd9656b[_0x366e('0x5a')]['code'],'endConversation':_0xd9656b[_0x366e('0x56')]['metadata'][_0x366e('0x5b')]||![],'isFallbackIntent':_0xd9656b['result']['metadata'][_0x366e('0x5c')]};});};exports[_0x366e('0x5d')]=function(_0x1dc450,_0x539298,_0x3bfa58,_0x4e9420,_0x94b158,_0x3163c1){var _0x4aebd8=_0x4e9420[_0x366e('0x5e')](/\\n/g,'\x0a');var _0x12cf53={'credentials':{'private_key':_0x4aebd8,'client_email':_0x3bfa58}};var _0x44b998=new dialogflow[(_0x366e('0x5f'))](_0x12cf53);var _0x46ac44=_0x44b998[_0x366e('0x60')](_0x539298,md5(_0x1dc450));var _0x8a6ebb={'session':_0x46ac44,'queryInput':{'text':{'text':_0x94b158,'languageCode':_0x3163c1}}};return _0x44b998[_0x366e('0x61')](_0x8a6ebb)[_0x366e('0x2e')](function(_0x2bb496){if(_0x2bb496&&_0x2bb496[_0x366e('0x62')]){logger['info'](_0x366e('0x63'),JSON[_0x366e('0x55')](_0x2bb496));var _0x7336e2=_0x2bb496[0x0];if(_0x7336e2){var _0x39942a={'action':_0x7336e2[_0x366e('0x64')]['action'],'allRequiredParamsPresent':_0x7336e2[_0x366e('0x64')][_0x366e('0x65')],'endConversation':_0x7336e2[_0x366e('0x64')][_0x366e('0x66')]&&_0x7336e2[_0x366e('0x64')][_0x366e('0x66')][_0x366e('0x67')]?_0x7336e2['queryResult']['diagnosticInfo'][_0x366e('0x67')][_0x366e('0x68')][_0x366e('0x69')]:![],'fulfillmentText':_0x7336e2['queryResult'][_0x366e('0x6a')],'intentName':_0x7336e2[_0x366e('0x64')]['intent'][_0x366e('0x51')],'intentDisplayName':_0x7336e2[_0x366e('0x64')]['intent'][_0x366e('0x6b')],'isFallbackIntent':_0x7336e2[_0x366e('0x64')][_0x366e('0x6c')][_0x366e('0x6d')],'languageCode':_0x7336e2['queryResult']['languageCode'],'queryText':_0x7336e2[_0x366e('0x64')][_0x366e('0x6e')],'responseId':_0x7336e2[_0x366e('0x6f')],'score':_0x7336e2[_0x366e('0x64')][_0x366e('0x70')],'speech':_0x7336e2[_0x366e('0x64')][_0x366e('0x6a')],'providerResponse':JSON[_0x366e('0x55')](_0x2bb496)};return _0x39942a;}}});};exports[_0x366e('0x71')]=function(_0x377cde,_0x2e094e,_0x33e4c9,_0x30a289){return tilde[_0x366e('0x72')](_0x377cde,_0x2e094e,_0x33e4c9,_0x30a289)['then'](function(_0x46b2e5){try{fs[_0x366e('0x1e')](_0x377cde);}catch(_0x19f591){logger[_0x366e('0x15')](_0x19f591);}logger[_0x366e('0x1b')]('Tilde\x20ASR\x20transcription',_0x46b2e5[_0x366e('0x73')]);logger[_0x366e('0x1b')](_0x366e('0x74'),_0x46b2e5['confidence']);return _0x46b2e5;});};exports[_0x366e('0x75')]=function(_0x285d90,_0x5d5e34,_0x28bd88,_0x496136,_0x5f2d2a,_0x331182){var _0x46f097=path['resolve'](__dirname,_0x366e('0x29'),rs[_0x366e('0x2a')](0x4)+_0x366e('0x3d'));var _0x3f676d;return aws[_0x366e('0x76')](_0x285d90,_0x5d5e34,_0x28bd88,_0x496136,_0x5f2d2a,_0x331182,_0x46f097)[_0x366e('0x2e')](function(){_0x3f676d=path[_0x366e('0x28')](__dirname,_0x366e('0x29'),rs['generate'](0x4)+_0x366e('0x2b'));return convertFile(_0x46f097,_0x3f676d);})[_0x366e('0x2e')](function(){try{fs['unlink'](_0x46f097);fs[_0x366e('0x2f')](_0x3f676d,'777');}catch(_0x41608c){logger[_0x366e('0x15')](_0x41608c);}return _0x3f676d[_0x366e('0x31')]('.')[0x0];});};exports[_0x366e('0x77')]=function(_0x5977a3,_0x1c6229,_0x583c2a,_0xb81b28,_0x165891,_0xe3e77d){return aws[_0x366e('0x78')](_0x5977a3,_0x1c6229,_0x583c2a,_0xb81b28,_0x165891,_0xe3e77d)['then'](function(_0x233061){logger['info'](JSON[_0x366e('0x55')](_0x233061));return _0x233061;});};exports[_0x366e('0x79')]=function(_0x213d6d,_0x5e7b7f,_0x250dc6,_0x1bef99){var _0x5dad52=util[_0x366e('0x7a')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x213d6d,encodeURIComponent(_0x5e7b7f),_0x250dc6,_0x1bef99);var _0x26f994=path[_0x366e('0x28')](__dirname,_0x366e('0x29'),rs['generate'](0x4)+_0x366e('0x3d'));var _0x5101ce;return downloadFile(_0x5dad52,_0x26f994)[_0x366e('0x2e')](function(){_0x5101ce=path[_0x366e('0x28')](__dirname,_0x366e('0x29'),rs[_0x366e('0x2a')](0x4)+'.wav');return convertFile(_0x26f994,_0x5101ce);})[_0x366e('0x2e')](function(){try{fs[_0x366e('0x1e')](_0x26f994);fs[_0x366e('0x2f')](_0x5101ce,'777');}catch(_0x1aa63a){logger[_0x366e('0x15')](_0x1aa63a);}return _0x5101ce[_0x366e('0x31')]('.')[0x0];});};exports['ispeechASR']=function(_0x262d2a,_0x5df060,_0x12f07c,_0x4e1381){var _0x11f5dd=util[_0x366e('0x7a')](_0x366e('0x7b'),ISPEECH_API,_0x5df060,_0x12f07c,base64Encode(_0x262d2a),_0x4e1381?util['format'](_0x366e('0x7c'),encodeURIComponent(_0x4e1381)):_0x366e('0x7d'));return uploadFile(_0x11f5dd)[_0x366e('0x2e')](function(_0xba6388){return querystring[_0x366e('0xa')](_0xba6388);});};exports[_0x366e('0x7e')]=function(_0x36e185,_0x266ecf){return sestek[_0x366e('0x7f')](_0x36e185,_0x266ecf)[_0x366e('0x2e')](function(_0x1f204c){logger['info'](JSON[_0x366e('0x55')](_0x1f204c));var _0x4b0874={'speech':_0x1f204c[_0x366e('0x80')],'action':_0x1f204c[_0x366e('0x81')]?_0x1f204c[_0x366e('0x81')][_0x366e('0x82')]:undefined,'actiondata':_0x1f204c['channelData']?_0x1f204c[_0x366e('0x81')]['CustomActionData']:undefined};if(_0x1f204c[_0x366e('0x81')]&&_0x1f204c[_0x366e('0x81')]['AudioFromTts']){return base64Decode(_0x1f204c[_0x366e('0x81')][_0x366e('0x83')][_0x366e('0x84')],path[_0x366e('0x28')](__dirname,'tmp',rs[_0x366e('0x2a')](0x4)+'.wav'))[_0x366e('0x2e')](function(_0x1ce9ae){_0x4b0874[_0x366e('0x85')]=_0x1ce9ae;return _0x4b0874;});}return _0x4b0874;});};exports[_0x366e('0x86')]=function(){return __dirname;};