a94fbec2adddbce0bc29d1ced8b37f17dc143841
[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 _0x41db=['AudioFromTts','audiofile','apiai-promise','bluebird','http','path','querystring','sox','url','parse','./aws','./google','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','unlink','pipe','end','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','then','chmodSync','777','split','toString','base64','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','text:synthesize','POST','generate','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','data','.wav','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','languageCode','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','polly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','format','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData'];(function(_0x3205e9,_0x540f2d){var _0x2f7503=function(_0x2d297a){while(--_0x2d297a){_0x3205e9['push'](_0x3205e9['shift']());}};_0x2f7503(++_0x540f2d);}(_0x41db,0x81));var _0xb41d=function(_0x4a46b5,_0x49633a){_0x4a46b5=_0x4a46b5-0x0;var _0x3211dd=_0x41db[_0x4a46b5];return _0x3211dd;};'use strict';var apiai=require(_0xb41d('0x0'));var BPromise=require(_0xb41d('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0xb41d('0x2'));var https=require('https');var md5=require('md5');var path=require(_0xb41d('0x3'));var querystring=require(_0xb41d('0x4'));var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0xb41d('0x5'));var tts=require('google-tts-api');var urlParse=require(_0xb41d('0x6'))[_0xb41d('0x7')];var util=require('util');var aws=require(_0xb41d('0x8'));var google=require(_0xb41d('0x9'));var sestek=require('./sestek');var tilde=require(_0xb41d('0xa'));var logger=require(_0xb41d('0xb'))(_0xb41d('0xc'));var ISPEECH_API=_0xb41d('0xd');function downloadFile(_0x21a9ec,_0x274c50){return new BPromise(function(_0x56d377,_0x3b9377){var _0x3f2e67=urlParse(_0x21a9ec);var _0x35658f=_0x3f2e67[_0xb41d('0xe')]==='https:'?https:http;var _0x3825ee={'host':_0x3f2e67[_0xb41d('0xf')],'path':_0x3f2e67[_0xb41d('0x3')],'headers':{'user-agent':_0xb41d('0x10')}};_0x35658f[_0xb41d('0x11')](_0x3825ee,function(_0x414c64){if(_0x414c64[_0xb41d('0x12')]!==0xc8){logger[_0xb41d('0x13')](_0xb41d('0x14')+_0x21a9ec+_0xb41d('0x15')+_0x414c64[_0xb41d('0x12')]+'\x20('+_0x414c64['statusMessage']+')');_0x3b9377(new Error(_0xb41d('0x14')+_0x21a9ec+_0xb41d('0x15')+_0x414c64[_0xb41d('0x12')]+'\x20('+_0x414c64[_0xb41d('0x16')]+')'));return;}var _0xd6055b=fs[_0xb41d('0x17')](_0x274c50);_0xd6055b['on']('finish',function(){logger[_0xb41d('0x18')]('finish\x20download\x20file');_0xd6055b['close'](_0x56d377);});_0xd6055b['on'](_0xb41d('0x13'),function(_0x25dd20){fs[_0xb41d('0x19')](_0x274c50);logger[_0xb41d('0x13')]('download\x20error',_0x25dd20);_0x3b9377(_0x25dd20);});_0x414c64[_0xb41d('0x1a')](_0xd6055b);})['on']('error',function(_0x294de2){logger[_0xb41d('0x13')](_0x294de2);_0x3b9377(_0x294de2);})[_0xb41d('0x1b')]();});}function uploadFile(_0x3edf87){return new BPromise(function(_0x458fb8,_0x384dbd){var _0x3e42fd=urlParse(_0x3edf87);var _0x4fc13a=_0x3e42fd[_0xb41d('0xe')]==='https:'?https:http;var _0x31f789={'host':_0x3e42fd[_0xb41d('0xf')],'path':_0x3e42fd['path'],'headers':{'user-agent':_0xb41d('0x10')}};_0x4fc13a['get'](_0x31f789,function(_0x35abc4){if(_0x35abc4[_0xb41d('0x12')]!==0xc8){_0x384dbd(new Error(_0xb41d('0x14')+_0x3edf87+_0xb41d('0x15')+_0x35abc4['statusCode']+'\x20('+_0x35abc4[_0xb41d('0x16')]+')'));return;}var _0x2e652a='';_0x35abc4['on']('data',function(_0xa0448a){_0x2e652a+=_0xa0448a;});_0x35abc4['on'](_0xb41d('0x1b'),function(){_0x458fb8(_0x2e652a);});})['on'](_0xb41d('0x13'),function(_0x3bd460){_0x384dbd(_0x3bd460);})['end']();});}function convertFile(_0x3b8787,_0x3ba803){return new BPromise(function(_0x20dce2,_0x3a7fd8){var _0xc45227=sox[_0xb41d('0x1c')](_0x3b8787,_0x3ba803,{'sampleRate':0x1f40,'format':_0xb41d('0x1d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xc45227['on']('error',function(_0xc39959){logger[_0xb41d('0x13')](_0xb41d('0x1e'),_0xc39959);_0x3a7fd8(_0xc39959);});_0xc45227['on'](_0xb41d('0x1b'),function(){logger[_0xb41d('0x18')](_0xb41d('0x1f'));_0x20dce2();});_0xc45227[_0xb41d('0x20')]();});}function base64Decode(_0x564984,_0x4bf0b3){var _0x305728=path[_0xb41d('0x21')](__dirname,_0xb41d('0x22'),rs['generate'](0x4)+'.wav');fs['writeFileSync'](_0x305728,_0x564984,'base64');return convertFile(_0x305728,_0x4bf0b3)[_0xb41d('0x23')](function(){try{fs['unlink'](_0x305728);fs[_0xb41d('0x24')](_0x4bf0b3,_0xb41d('0x25'));}catch(_0x33425e){logger['error'](_0x33425e);}return _0x4bf0b3[_0xb41d('0x26')]('.')[0x0];});}function base64Encode(_0x1fff58){var _0x4c0d30=fs['readFileSync'](_0x1fff58);return new Buffer(_0x4c0d30)[_0xb41d('0x27')](_0xb41d('0x28'));}exports['googleCloudTTS']=function(_0x5e58be,_0x2d5b02,_0x16db36,_0x4f21a5,_0x2e9681,_0x363a93){var _0x2ade7c,_0xf2b901;var _0x1831cb=_0xb41d('0x29');var _0x9a4aa3=_0xb41d('0x2a')+_0x5e58be;var _0x373a2d={};if(_0x2d5b02===_0xb41d('0x2b')){_0x373a2d['input']={'ssml':_0x16db36};}else{_0x373a2d[_0xb41d('0x2c')]={'text':_0x16db36};};_0x373a2d['voice']={'languageCode':_0x4f21a5,'ssmlGender':_0x2e9681};_0x373a2d[_0xb41d('0x2d')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x426a8e={'url':_0x1831cb+_0xb41d('0x2e')+_0x9a4aa3,'method':_0xb41d('0x2f'),'json':!![],'body':_0x373a2d};return rp(_0x426a8e)[_0xb41d('0x23')](function(_0x32185d){return new BPromise(function(_0x214bfe,_0x133caf){_0x2ade7c=path[_0xb41d('0x21')](__dirname,_0xb41d('0x22'),rs[_0xb41d('0x30')](0x4)+_0xb41d('0x31'));var _0x48d588=Buffer[_0xb41d('0x32')](_0x32185d[_0xb41d('0x33')],_0xb41d('0x28'));return fs[_0xb41d('0x34')](_0x2ade7c,_0x48d588,function(_0x237ccb){_0x133caf(_0x237ccb);},function(_0x395ebe){fs[_0xb41d('0x24')](_0x2ade7c,_0xb41d('0x25'));_0x214bfe(_0x395ebe);});});})[_0xb41d('0x23')](function(_0x1a01a3){_0xf2b901=path['resolve'](__dirname,_0xb41d('0x22'),rs[_0xb41d('0x30')](0x4)+'.wav');return convertFile(_0x2ade7c,_0xf2b901);})['then'](function(){try{fs[_0xb41d('0x19')](_0x2ade7c);fs['chmodSync'](_0xf2b901,_0xb41d('0x25'));}catch(_0x2a70b6){logger[_0xb41d('0x13')](_0x2a70b6);}logger[_0xb41d('0x18')](_0xb41d('0x35'),_0xf2b901[_0xb41d('0x26')]('.')[0x0]);return _0xf2b901[_0xb41d('0x26')]('.')[0x0];});};exports['googleTTS']=function(_0x7c2778,_0x3e4b69){var _0x567997='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x30e51a,_0x568dbe;var _0x35bfaa;var _0xbd5abd={'encoding':_0xb41d('0x36'),'method':_0xb41d('0x2f'),'timeout':0x2710,'url':_0x567997,'headers':{'Content-Type':_0xb41d('0x37')},'body':_0xb41d('0x38')+encodeURIComponent(JSON[_0xb41d('0x39')]([[['jQ1olc',JSON[_0xb41d('0x39')]([_0x7c2778,_0x3e4b69||'en',![],_0xb41d('0x3a')]),null,_0xb41d('0x3b')]]]))};return rp(_0xbd5abd)[_0xb41d('0x23')](function(_0x521d63){try{_0x35bfaa=eval(_0x521d63[_0xb41d('0x3c')](0x5))[0x0][0x2];}catch(_0x365601){throw new Error(_0xb41d('0x3d')+_0x521d63['data']);}if(!_0x35bfaa){if(_0x7c2778['length']>0xc8){throw new Error(_0xb41d('0x3e'));}else{throw new Error(_0xb41d('0x3f')+_0x3e4b69+'\x22\x20might\x20not\x20exist');}}try{_0x35bfaa=eval(_0x35bfaa)[0x0];}catch(_0x38ecaa){throw new Error(_0xb41d('0x3d')+res[_0xb41d('0x40')]);}const _0x2ae4d0=_0x35bfaa;_0x30e51a=path['resolve'](__dirname,'tmp',rs[_0xb41d('0x30')](0x4)+'.mp3');fs['writeFileSync'](_0x30e51a,_0x35bfaa,{'encoding':_0xb41d('0x28')});_0x568dbe=path[_0xb41d('0x21')](__dirname,_0xb41d('0x22'),rs[_0xb41d('0x30')](0x4)+_0xb41d('0x41'));return convertFile(_0x30e51a,_0x568dbe);})['then'](function(){try{fs[_0xb41d('0x19')](_0x30e51a);fs[_0xb41d('0x24')](_0x568dbe,_0xb41d('0x25'));}catch(_0x375afd){logger[_0xb41d('0x13')](_0x375afd);}logger[_0xb41d('0x18')]('goggleTTS\x20path',_0x568dbe[_0xb41d('0x26')]('.')[0x0]);return _0x568dbe['split']('.')[0x0];});};exports[_0xb41d('0x42')]=function(_0x47f271,_0x3183e1,_0x1b92e7){return google[_0xb41d('0x43')](_0x47f271,_0x3183e1,_0x1b92e7)['then'](function(_0x2d4f3a){logger[_0xb41d('0x18')](_0x2d4f3a[_0xb41d('0x44')]);return rp(_0x2d4f3a);})[_0xb41d('0x23')](function(_0x281dc9){var _0x333d1b='';var _0x25a5f6=0x0;try{fs['unlink'](_0x47f271);}catch(_0x3b2b02){logger['error'](_0x3b2b02);}if(_0x281dc9&&_0x281dc9[_0xb41d('0x45')]){_0x333d1b=_0x281dc9[_0xb41d('0x45')][_0xb41d('0x46')](function(_0x55dc5c){return _0x55dc5c&&_0x55dc5c[_0xb41d('0x47')][0x0]&&_0x55dc5c[_0xb41d('0x47')][0x0][_0xb41d('0x48')]?_0x55dc5c['alternatives'][0x0][_0xb41d('0x48')]:'';})[_0xb41d('0x49')]('\x0a');_0x25a5f6=_0x281dc9[_0xb41d('0x45')][_0xb41d('0x46')](function(_0x2a94e9){return _0x2a94e9&&_0x2a94e9[_0xb41d('0x47')][0x0]&&_0x2a94e9[_0xb41d('0x47')][0x0]['confidence']?_0x2a94e9[_0xb41d('0x47')][0x0][_0xb41d('0x4a')]:0x0;})[_0xb41d('0x49')]('\x0a');}logger[_0xb41d('0x18')](_0xb41d('0x4b'),_0x333d1b);logger[_0xb41d('0x18')](_0xb41d('0x4c'),_0x25a5f6);return{'transcript':_0x333d1b,'confidence':_0x25a5f6};})[_0xb41d('0x4d')](function(_0x3a3da7){logger[_0xb41d('0x13')](_0xb41d('0x4e'),_0x3a3da7[_0xb41d('0x12')],_0x3a3da7[_0xb41d('0x4f')],_0x3a3da7[_0xb41d('0x50')]);});};exports[_0xb41d('0x51')]=function(_0x5919c2,_0x5082e5,_0x18834d,_0x9ad95d){var _0x23ad54=apiai(_0x5082e5,{'language':_0x9ad95d||'en'});return _0x23ad54[_0xb41d('0x52')](_0x18834d,{'sessionId':md5(_0x5919c2)})['then'](function(_0x311ce7){logger[_0xb41d('0x18')](JSON['stringify'](_0x311ce7));return{'source':_0x311ce7[_0xb41d('0x53')]['source'],'resolvedQuery':_0x311ce7[_0xb41d('0x53')]['resolvedQuery'],'action':_0x311ce7[_0xb41d('0x53')][_0xb41d('0x54')],'actionIncomplete':_0x311ce7[_0xb41d('0x53')][_0xb41d('0x55')],'speech':_0x311ce7[_0xb41d('0x53')][_0xb41d('0x56')][_0xb41d('0x57')],'score':_0x311ce7['result'][_0xb41d('0x58')],'statusCode':_0x311ce7[_0xb41d('0x59')][_0xb41d('0x5a')],'endConversation':_0x311ce7['result'][_0xb41d('0x5b')][_0xb41d('0x5c')]||![],'isFallbackIntent':_0x311ce7[_0xb41d('0x53')][_0xb41d('0x5b')][_0xb41d('0x5d')]};});};exports[_0xb41d('0x5e')]=function(_0x13e642,_0x568173,_0x1213fd,_0x54fcb4,_0x46e23b,_0x41c2fd){var _0xe15ccf=_0x54fcb4[_0xb41d('0x5f')](/\\n/g,'\x0a');var _0x8283ad={'credentials':{'private_key':_0xe15ccf,'client_email':_0x1213fd}};var _0x53874f=new dialogflow['SessionsClient'](_0x8283ad);var _0x56759f=_0x53874f[_0xb41d('0x60')](_0x568173,md5(_0x13e642));var _0x33e57a={'session':_0x56759f,'queryInput':{'text':{'text':_0x46e23b,'languageCode':_0x41c2fd}}};return _0x53874f['detectIntent'](_0x33e57a)[_0xb41d('0x23')](function(_0x54b023){if(_0x54b023&&_0x54b023[_0xb41d('0x61')]){logger[_0xb41d('0x18')](_0xb41d('0x62'),JSON['stringify'](_0x54b023));var _0xac22b1=_0x54b023[0x0];if(_0xac22b1){var _0x110ee0={'action':_0xac22b1[_0xb41d('0x63')][_0xb41d('0x54')],'allRequiredParamsPresent':_0xac22b1['queryResult'][_0xb41d('0x64')],'endConversation':_0xac22b1['queryResult'][_0xb41d('0x65')]&&_0xac22b1['queryResult'][_0xb41d('0x65')]['fields']?_0xac22b1[_0xb41d('0x63')][_0xb41d('0x65')][_0xb41d('0x66')][_0xb41d('0x67')][_0xb41d('0x68')]:![],'fulfillmentText':_0xac22b1[_0xb41d('0x63')][_0xb41d('0x69')],'intentName':_0xac22b1[_0xb41d('0x63')][_0xb41d('0x6a')][_0xb41d('0x4f')],'intentDisplayName':_0xac22b1['queryResult']['intent']['displayName'],'isFallbackIntent':_0xac22b1[_0xb41d('0x63')][_0xb41d('0x6a')]['isFallback'],'languageCode':_0xac22b1['queryResult'][_0xb41d('0x6b')],'queryText':_0xac22b1[_0xb41d('0x63')]['queryText'],'responseId':_0xac22b1[_0xb41d('0x6c')],'score':_0xac22b1['queryResult'][_0xb41d('0x6d')],'speech':_0xac22b1[_0xb41d('0x63')][_0xb41d('0x69')],'providerResponse':JSON[_0xb41d('0x39')](_0x54b023)};return _0x110ee0;}}});};exports[_0xb41d('0x6e')]=function(_0x333abe,_0x386168,_0x648597,_0x4bbba5){return tilde[_0xb41d('0x43')](_0x333abe,_0x386168,_0x648597,_0x4bbba5)[_0xb41d('0x23')](function(_0x7d7668){try{fs[_0xb41d('0x19')](_0x333abe);}catch(_0x2634a0){logger[_0xb41d('0x13')](_0x2634a0);}logger[_0xb41d('0x18')](_0xb41d('0x6f'),_0x7d7668['transcript']);logger[_0xb41d('0x18')]('Tilde\x20ASR\x20confidence',_0x7d7668[_0xb41d('0x4a')]);return _0x7d7668;});};exports['awsPolly']=function(_0x3263b8,_0x38413f,_0x221e60,_0x155aae,_0x125ff9,_0x2eb291){var _0x47f6a4=path[_0xb41d('0x21')](__dirname,'tmp',rs[_0xb41d('0x30')](0x4)+_0xb41d('0x31'));var _0x59963c;return aws[_0xb41d('0x70')](_0x3263b8,_0x38413f,_0x221e60,_0x155aae,_0x125ff9,_0x2eb291,_0x47f6a4)[_0xb41d('0x23')](function(){_0x59963c=path[_0xb41d('0x21')](__dirname,_0xb41d('0x22'),rs['generate'](0x4)+'.wav');return convertFile(_0x47f6a4,_0x59963c);})[_0xb41d('0x23')](function(){try{fs['unlink'](_0x47f6a4);fs[_0xb41d('0x24')](_0x59963c,'777');}catch(_0x239a99){logger[_0xb41d('0x13')](_0x239a99);}return _0x59963c[_0xb41d('0x26')]('.')[0x0];});};exports[_0xb41d('0x71')]=function(_0x32af89,_0xc67921,_0x556690,_0x2a4115,_0x4594e0,_0x5ad747){return aws[_0xb41d('0x72')](_0x32af89,_0xc67921,_0x556690,_0x2a4115,_0x4594e0,_0x5ad747)[_0xb41d('0x23')](function(_0x58565a){logger[_0xb41d('0x18')](JSON[_0xb41d('0x39')](_0x58565a));return _0x58565a;});};exports[_0xb41d('0x73')]=function(_0x1c329c,_0x2eea53,_0x3f5947,_0xc7b80a){var _0xe625a7=util['format'](_0xb41d('0x74'),ISPEECH_API,_0x1c329c,encodeURIComponent(_0x2eea53),_0x3f5947,_0xc7b80a);var _0x48fa1f=path[_0xb41d('0x21')](__dirname,_0xb41d('0x22'),rs[_0xb41d('0x30')](0x4)+_0xb41d('0x31'));var _0x56f448;return downloadFile(_0xe625a7,_0x48fa1f)[_0xb41d('0x23')](function(){_0x56f448=path['resolve'](__dirname,_0xb41d('0x22'),rs['generate'](0x4)+'.wav');return convertFile(_0x48fa1f,_0x56f448);})[_0xb41d('0x23')](function(){try{fs[_0xb41d('0x19')](_0x48fa1f);fs[_0xb41d('0x24')](_0x56f448,_0xb41d('0x25'));}catch(_0x56b052){logger[_0xb41d('0x13')](_0x56b052);}return _0x56f448[_0xb41d('0x26')]('.')[0x0];});};exports['ispeechASR']=function(_0x2b93ce,_0x388740,_0x4a18c3,_0x291017){var _0xa52b17=util['format']('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x388740,_0x4a18c3,base64Encode(_0x2b93ce),_0x291017?util[_0xb41d('0x75')](_0xb41d('0x76'),encodeURIComponent(_0x291017)):_0xb41d('0x77'));return uploadFile(_0xa52b17)['then'](function(_0x9c231d){return querystring[_0xb41d('0x7')](_0x9c231d);});};exports[_0xb41d('0x78')]=function(_0x5f221b,_0x398a63){return sestek[_0xb41d('0x79')](_0x5f221b,_0x398a63)[_0xb41d('0x23')](function(_0x4834f9){logger['info'](JSON[_0xb41d('0x39')](_0x4834f9));var _0x26200b={'speech':_0x4834f9[_0xb41d('0x7a')],'action':_0x4834f9[_0xb41d('0x7b')]?_0x4834f9['channelData']['CustomAction']:undefined,'actiondata':_0x4834f9[_0xb41d('0x7b')]?_0x4834f9[_0xb41d('0x7b')][_0xb41d('0x7c')]:undefined};if(_0x4834f9['channelData']&&_0x4834f9[_0xb41d('0x7b')][_0xb41d('0x7d')]){return base64Decode(_0x4834f9[_0xb41d('0x7b')][_0xb41d('0x7d')]['Data'],path['resolve'](__dirname,'tmp',rs[_0xb41d('0x30')](0x4)+_0xb41d('0x41')))[_0xb41d('0x23')](function(_0x7ef329){_0x26200b[_0xb41d('0x7e')]=_0x7ef329;return _0x26200b;});}return _0x26200b;});};exports['dirName']=function(){return __dirname;};