Built motion from commit (unavailable).|2.5.23
[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 _0xf70b=['[%s]\x20%s:%s','message','googleDialogflow','textRequest','result','resolvedQuery','action','actionIncomplete','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','intent','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20transcription','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','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','https','querystring','request-promise','google-tts-api','url','parse','util','./aws','./tilde','https://api.ispeech.org/api/rest','protocol','https:','host','path','WHAT_EVER','statusCode','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','finish','info','close','unlink','download\x20error','end','get','wav','error\x20convert','start','resolve','generate','then','chmodSync','777','split','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize','POST','from','audioContent','writeFile','tmp','.wav','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','length','data','.mp3','writeFileSync','base64','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20confidence','catch'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xf70b,0x135));var _0xbf70=function(_0x42cdb8,_0x3e96d3){_0x42cdb8=_0x42cdb8-0x0;var _0x26811b=_0xf70b[_0x42cdb8];return _0x26811b;};'use strict';var apiai=require(_0xbf70('0x0'));var BPromise=require(_0xbf70('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0xbf70('0x2'));var md5=require('md5');var path=require('path');var querystring=require(_0xbf70('0x3'));var rp=require(_0xbf70('0x4'));var rs=require('randomstring');var sox=require('sox');var tts=require(_0xbf70('0x5'));var urlParse=require(_0xbf70('0x6'))[_0xbf70('0x7')];var util=require(_0xbf70('0x8'));var aws=require(_0xbf70('0x9'));var google=require('./google');var sestek=require('./sestek');var tilde=require(_0xbf70('0xa'));var logger=require('../../../config/logger')('agi');var ISPEECH_API=_0xbf70('0xb');function downloadFile(_0x58e54a,_0x2e4980){return new BPromise(function(_0x5c435f,_0x5ede3d){var _0x5d2097=urlParse(_0x58e54a);var _0xe984d2=_0x5d2097[_0xbf70('0xc')]===_0xbf70('0xd')?https:http;var _0x214f92={'host':_0x5d2097[_0xbf70('0xe')],'path':_0x5d2097[_0xbf70('0xf')],'headers':{'user-agent':_0xbf70('0x10')}};_0xe984d2['get'](_0x214f92,function(_0x1f8605){if(_0x1f8605[_0xbf70('0x11')]!==0xc8){logger[_0xbf70('0x12')](_0xbf70('0x13')+_0x58e54a+'\x20failed,\x20status\x20code\x20=\x20'+_0x1f8605[_0xbf70('0x11')]+'\x20('+_0x1f8605[_0xbf70('0x14')]+')');_0x5ede3d(new Error(_0xbf70('0x13')+_0x58e54a+_0xbf70('0x15')+_0x1f8605['statusCode']+'\x20('+_0x1f8605[_0xbf70('0x14')]+')'));return;}var _0x56e7c3=fs['createWriteStream'](_0x2e4980);_0x56e7c3['on'](_0xbf70('0x16'),function(){logger[_0xbf70('0x17')]('finish\x20download\x20file');_0x56e7c3[_0xbf70('0x18')](_0x5c435f);});_0x56e7c3['on'](_0xbf70('0x12'),function(_0x1fb37e){fs[_0xbf70('0x19')](_0x2e4980);logger[_0xbf70('0x12')](_0xbf70('0x1a'),_0x1fb37e);_0x5ede3d(_0x1fb37e);});_0x1f8605['pipe'](_0x56e7c3);})['on'](_0xbf70('0x12'),function(_0x2f78b8){logger['error'](_0x2f78b8);_0x5ede3d(_0x2f78b8);})[_0xbf70('0x1b')]();});}function uploadFile(_0x490550){return new BPromise(function(_0x40d7bd,_0x274f72){var _0x5d57fe=urlParse(_0x490550);var _0x223466=_0x5d57fe[_0xbf70('0xc')]===_0xbf70('0xd')?https:http;var _0x4b0e70={'host':_0x5d57fe[_0xbf70('0xe')],'path':_0x5d57fe[_0xbf70('0xf')],'headers':{'user-agent':'WHAT_EVER'}};_0x223466[_0xbf70('0x1c')](_0x4b0e70,function(_0x36721f){if(_0x36721f[_0xbf70('0x11')]!==0xc8){_0x274f72(new Error(_0xbf70('0x13')+_0x490550+_0xbf70('0x15')+_0x36721f[_0xbf70('0x11')]+'\x20('+_0x36721f[_0xbf70('0x14')]+')'));return;}var _0x416f40='';_0x36721f['on']('data',function(_0x55d987){_0x416f40+=_0x55d987;});_0x36721f['on']('end',function(){_0x40d7bd(_0x416f40);});})['on'](_0xbf70('0x12'),function(_0x40b1df){_0x274f72(_0x40b1df);})['end']();});}function convertFile(_0x5aad3a,_0x43000){return new BPromise(function(_0x5748e0,_0x541d04){var _0x4da867=sox['transcode'](_0x5aad3a,_0x43000,{'sampleRate':0x1f40,'format':_0xbf70('0x1d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4da867['on'](_0xbf70('0x12'),function(_0x32dfcf){logger[_0xbf70('0x12')](_0xbf70('0x1e'),_0x32dfcf);_0x541d04(_0x32dfcf);});_0x4da867['on'](_0xbf70('0x1b'),function(){logger['info']('finish\x20to\x20convert');_0x5748e0();});_0x4da867[_0xbf70('0x1f')]();});}function base64Decode(_0x552bee,_0x38dc9d){var _0x5d14c9=path[_0xbf70('0x20')](__dirname,'tmp',rs[_0xbf70('0x21')](0x4)+'.wav');fs['writeFileSync'](_0x5d14c9,_0x552bee,'base64');return convertFile(_0x5d14c9,_0x38dc9d)[_0xbf70('0x22')](function(){try{fs[_0xbf70('0x19')](_0x5d14c9);fs[_0xbf70('0x23')](_0x38dc9d,_0xbf70('0x24'));}catch(_0x62755d){logger[_0xbf70('0x12')](_0x62755d);}return _0x38dc9d[_0xbf70('0x25')]('.')[0x0];});}function base64Encode(_0x52ef95){var _0x58a27a=fs['readFileSync'](_0x52ef95);return new Buffer(_0x58a27a)[_0xbf70('0x26')]('base64');}exports[_0xbf70('0x27')]=function(_0x327946,_0x5021b4,_0x590858,_0x2814b3,_0x51900a,_0x3381fa){var _0x43911e,_0x4a55a6;var _0x566892=_0xbf70('0x28');var _0x14576f=_0xbf70('0x29')+_0x327946;var _0x34dde5={};if(_0x5021b4===_0xbf70('0x2a')){_0x34dde5['input']={'ssml':_0x590858};}else{_0x34dde5[_0xbf70('0x2b')]={'text':_0x590858};};_0x34dde5[_0xbf70('0x2c')]={'languageCode':_0x2814b3,'ssmlGender':_0x51900a};_0x34dde5['audioConfig']={'audioEncoding':_0xbf70('0x2d'),'sampleRateHertz':0x1f40};var _0x1a2a4d={'url':_0x566892+_0xbf70('0x2e')+_0x14576f,'method':_0xbf70('0x2f'),'json':!![],'body':_0x34dde5};return rp(_0x1a2a4d)['then'](function(_0x53039a){return new BPromise(function(_0x2053bd,_0x4e94d1){_0x43911e=path[_0xbf70('0x20')](__dirname,'tmp',rs[_0xbf70('0x21')](0x4)+'.mp3');var _0x37ae44=Buffer[_0xbf70('0x30')](_0x53039a[_0xbf70('0x31')],'base64');return fs[_0xbf70('0x32')](_0x43911e,_0x37ae44,function(_0x4e73be){_0x4e94d1(_0x4e73be);},function(_0x38e67e){fs[_0xbf70('0x23')](_0x43911e,_0xbf70('0x24'));_0x2053bd(_0x38e67e);});});})[_0xbf70('0x22')](function(_0x2d9bb7){_0x4a55a6=path[_0xbf70('0x20')](__dirname,_0xbf70('0x33'),rs['generate'](0x4)+_0xbf70('0x34'));return convertFile(_0x43911e,_0x4a55a6);})[_0xbf70('0x22')](function(){try{fs[_0xbf70('0x19')](_0x43911e);fs[_0xbf70('0x23')](_0x4a55a6,'777');}catch(_0x287231){logger[_0xbf70('0x12')](_0x287231);}logger[_0xbf70('0x17')]('googleCloudTTS\x20path',_0x4a55a6[_0xbf70('0x25')]('.')[0x0]);return _0x4a55a6[_0xbf70('0x25')]('.')[0x0];});};exports['googleTTS']=function(_0x36c93d,_0x30cc7a){var _0x306470=_0xbf70('0x35');var _0x91d254,_0x50785a;var _0x11cb1a;var _0x173f2c={'encoding':_0xbf70('0x36'),'method':_0xbf70('0x2f'),'timeout':0x2710,'url':_0x306470,'headers':{'Content-Type':_0xbf70('0x37')},'body':'f.req='+encodeURIComponent(JSON[_0xbf70('0x38')]([[[_0xbf70('0x39'),JSON[_0xbf70('0x38')]([_0x36c93d,_0x30cc7a||'en',![],_0xbf70('0x3a')]),null,_0xbf70('0x3b')]]]))};return rp(_0x173f2c)[_0xbf70('0x22')](function(_0x148464){try{_0x11cb1a=eval(_0x148464['slice'](0x5))[0x0][0x2];}catch(_0x4dd096){throw new Error(_0xbf70('0x3c')+_0x148464['data']);}if(!_0x11cb1a){if(_0x36c93d[_0xbf70('0x3d')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error('lang\x20\x22'+_0x30cc7a+'\x22\x20might\x20not\x20exist');}}try{_0x11cb1a=eval(_0x11cb1a)[0x0];}catch(_0x2111cb){throw new Error(_0xbf70('0x3c')+res[_0xbf70('0x3e')]);}const _0x57f0ca=_0x11cb1a;_0x91d254=path[_0xbf70('0x20')](__dirname,_0xbf70('0x33'),rs[_0xbf70('0x21')](0x4)+_0xbf70('0x3f'));fs[_0xbf70('0x40')](_0x91d254,_0x11cb1a,{'encoding':_0xbf70('0x41')});_0x50785a=path[_0xbf70('0x20')](__dirname,'tmp',rs[_0xbf70('0x21')](0x4)+_0xbf70('0x34'));return convertFile(_0x91d254,_0x50785a);})[_0xbf70('0x22')](function(){try{fs[_0xbf70('0x19')](_0x91d254);fs[_0xbf70('0x23')](_0x50785a,'777');}catch(_0xa6c840){logger[_0xbf70('0x12')](_0xa6c840);}logger[_0xbf70('0x17')](_0xbf70('0x42'),_0x50785a[_0xbf70('0x25')]('.')[0x0]);return _0x50785a[_0xbf70('0x25')]('.')[0x0];});};exports[_0xbf70('0x43')]=function(_0x1d668e,_0x3d728a,_0x536fae){return google[_0xbf70('0x44')](_0x1d668e,_0x3d728a,_0x536fae)[_0xbf70('0x22')](function(_0x181175){logger[_0xbf70('0x17')](_0x181175[_0xbf70('0x45')]);return rp(_0x181175);})['then'](function(_0x8b0cfe){var _0xc43728='';var _0x5b8e52=0x0;try{fs[_0xbf70('0x19')](_0x1d668e);}catch(_0x27c045){logger[_0xbf70('0x12')](_0x27c045);}if(_0x8b0cfe&&_0x8b0cfe[_0xbf70('0x46')]){_0xc43728=_0x8b0cfe[_0xbf70('0x46')][_0xbf70('0x47')](function(_0x34c751){return _0x34c751&&_0x34c751[_0xbf70('0x48')][0x0]&&_0x34c751[_0xbf70('0x48')][0x0][_0xbf70('0x49')]?_0x34c751[_0xbf70('0x48')][0x0][_0xbf70('0x49')]:'';})['join']('\x0a');_0x5b8e52=_0x8b0cfe[_0xbf70('0x46')][_0xbf70('0x47')](function(_0x243c9b){return _0x243c9b&&_0x243c9b['alternatives'][0x0]&&_0x243c9b[_0xbf70('0x48')][0x0][_0xbf70('0x4a')]?_0x243c9b['alternatives'][0x0]['confidence']:0x0;})[_0xbf70('0x4b')]('\x0a');}logger[_0xbf70('0x17')]('googleASR\x20transcription',_0xc43728);logger[_0xbf70('0x17')](_0xbf70('0x4c'),_0x5b8e52);return{'transcript':_0xc43728,'confidence':_0x5b8e52};})[_0xbf70('0x4d')](function(_0x5175ef){logger[_0xbf70('0x12')](_0xbf70('0x4e'),_0x5175ef['statusCode'],_0x5175ef['name'],_0x5175ef[_0xbf70('0x4f')]);});};exports[_0xbf70('0x50')]=function(_0x3d4979,_0x5611ca,_0xf2ec07,_0x21b691){var _0x32a381=apiai(_0x5611ca,{'language':_0x21b691||'en'});return _0x32a381[_0xbf70('0x51')](_0xf2ec07,{'sessionId':md5(_0x3d4979)})[_0xbf70('0x22')](function(_0x4b629a){logger[_0xbf70('0x17')](JSON[_0xbf70('0x38')](_0x4b629a));return{'source':_0x4b629a[_0xbf70('0x52')]['source'],'resolvedQuery':_0x4b629a[_0xbf70('0x52')][_0xbf70('0x53')],'action':_0x4b629a[_0xbf70('0x52')][_0xbf70('0x54')],'actionIncomplete':_0x4b629a[_0xbf70('0x52')][_0xbf70('0x55')],'speech':_0x4b629a['result']['fulfillment'][_0xbf70('0x56')],'score':_0x4b629a['result'][_0xbf70('0x57')],'statusCode':_0x4b629a[_0xbf70('0x58')][_0xbf70('0x59')],'endConversation':_0x4b629a[_0xbf70('0x52')][_0xbf70('0x5a')][_0xbf70('0x5b')]||![],'isFallbackIntent':_0x4b629a[_0xbf70('0x52')][_0xbf70('0x5a')][_0xbf70('0x5c')]};});};exports[_0xbf70('0x5d')]=function(_0x20200e,_0x335680,_0x5da8dc,_0x10a5a2,_0x360baa,_0x1cc85d){var _0x18a22e=_0x10a5a2[_0xbf70('0x5e')](/\\n/g,'\x0a');var _0x37cf01={'credentials':{'private_key':_0x18a22e,'client_email':_0x5da8dc}};var _0x22f61c=new dialogflow[(_0xbf70('0x5f'))](_0x37cf01);var _0x176a3f=_0x22f61c[_0xbf70('0x60')](_0x335680,md5(_0x20200e));var _0x1c81f7={'session':_0x176a3f,'queryInput':{'text':{'text':_0x360baa,'languageCode':_0x1cc85d}}};return _0x22f61c['detectIntent'](_0x1c81f7)[_0xbf70('0x22')](function(_0x1fdfb1){if(_0x1fdfb1&&_0x1fdfb1[_0xbf70('0x3d')]){logger[_0xbf70('0x17')](_0xbf70('0x61'),JSON[_0xbf70('0x38')](_0x1fdfb1));var _0x393d00=_0x1fdfb1[0x0];if(_0x393d00){var _0x1518be={'action':_0x393d00[_0xbf70('0x62')]['action'],'allRequiredParamsPresent':_0x393d00['queryResult'][_0xbf70('0x63')],'endConversation':_0x393d00[_0xbf70('0x62')][_0xbf70('0x64')]&&_0x393d00['queryResult'][_0xbf70('0x64')][_0xbf70('0x65')]?_0x393d00[_0xbf70('0x62')][_0xbf70('0x64')][_0xbf70('0x65')][_0xbf70('0x66')]['boolValue']:![],'fulfillmentText':_0x393d00[_0xbf70('0x62')]['fulfillmentText'],'intentName':_0x393d00['queryResult'][_0xbf70('0x67')]['name'],'intentDisplayName':_0x393d00[_0xbf70('0x62')]['intent']['displayName'],'isFallbackIntent':_0x393d00[_0xbf70('0x62')][_0xbf70('0x67')]['isFallback'],'languageCode':_0x393d00[_0xbf70('0x62')][_0xbf70('0x68')],'queryText':_0x393d00['queryResult'][_0xbf70('0x69')],'responseId':_0x393d00[_0xbf70('0x6a')],'score':_0x393d00[_0xbf70('0x62')][_0xbf70('0x6b')],'speech':_0x393d00[_0xbf70('0x62')][_0xbf70('0x6c')],'providerResponse':JSON[_0xbf70('0x38')](_0x1fdfb1)};return _0x1518be;}}});};exports[_0xbf70('0x6d')]=function(_0x33b4cb,_0xe1f1c,_0x4798ec,_0x276a05){return tilde['asr'](_0x33b4cb,_0xe1f1c,_0x4798ec,_0x276a05)[_0xbf70('0x22')](function(_0x34b124){try{fs[_0xbf70('0x19')](_0x33b4cb);}catch(_0x3aa568){logger[_0xbf70('0x12')](_0x3aa568);}logger[_0xbf70('0x17')](_0xbf70('0x6e'),_0x34b124[_0xbf70('0x49')]);logger[_0xbf70('0x17')](_0xbf70('0x6f'),_0x34b124[_0xbf70('0x4a')]);return _0x34b124;});};exports[_0xbf70('0x70')]=function(_0x314bf6,_0x207ca6,_0x3a808f,_0x20e3be,_0x47ef80,_0xc89e83){var _0x1c49c8=path[_0xbf70('0x20')](__dirname,_0xbf70('0x33'),rs[_0xbf70('0x21')](0x4)+_0xbf70('0x3f'));var _0x131dd3;return aws[_0xbf70('0x71')](_0x314bf6,_0x207ca6,_0x3a808f,_0x20e3be,_0x47ef80,_0xc89e83,_0x1c49c8)[_0xbf70('0x22')](function(){_0x131dd3=path['resolve'](__dirname,_0xbf70('0x33'),rs[_0xbf70('0x21')](0x4)+_0xbf70('0x34'));return convertFile(_0x1c49c8,_0x131dd3);})['then'](function(){try{fs[_0xbf70('0x19')](_0x1c49c8);fs[_0xbf70('0x23')](_0x131dd3,'777');}catch(_0x31639f){logger['error'](_0x31639f);}return _0x131dd3['split']('.')[0x0];});};exports[_0xbf70('0x72')]=function(_0x1bc92b,_0x4c4879,_0x7f859,_0x380ce4,_0x17bb53,_0x6b3bfc){return aws[_0xbf70('0x73')](_0x1bc92b,_0x4c4879,_0x7f859,_0x380ce4,_0x17bb53,_0x6b3bfc)[_0xbf70('0x22')](function(_0x4fc1e1){logger['info'](JSON[_0xbf70('0x38')](_0x4fc1e1));return _0x4fc1e1;});};exports[_0xbf70('0x74')]=function(_0x157510,_0x2a71ce,_0x5646ab,_0x4ef1b6){var _0x1eec26=util[_0xbf70('0x75')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x157510,encodeURIComponent(_0x2a71ce),_0x5646ab,_0x4ef1b6);var _0x5cdced=path[_0xbf70('0x20')](__dirname,_0xbf70('0x33'),rs[_0xbf70('0x21')](0x4)+_0xbf70('0x3f'));var _0x5b3f13;return downloadFile(_0x1eec26,_0x5cdced)['then'](function(){_0x5b3f13=path[_0xbf70('0x20')](__dirname,_0xbf70('0x33'),rs[_0xbf70('0x21')](0x4)+_0xbf70('0x34'));return convertFile(_0x5cdced,_0x5b3f13);})[_0xbf70('0x22')](function(){try{fs['unlink'](_0x5cdced);fs[_0xbf70('0x23')](_0x5b3f13,'777');}catch(_0x48781d){logger[_0xbf70('0x12')](_0x48781d);}return _0x5b3f13[_0xbf70('0x25')]('.')[0x0];});};exports['ispeechASR']=function(_0x2f3aed,_0xa23840,_0x3747cc,_0x2ed8bc){var _0x3e22d0=util[_0xbf70('0x75')](_0xbf70('0x76'),ISPEECH_API,_0xa23840,_0x3747cc,base64Encode(_0x2f3aed),_0x2ed8bc?util[_0xbf70('0x75')](_0xbf70('0x77'),encodeURIComponent(_0x2ed8bc)):_0xbf70('0x78'));return uploadFile(_0x3e22d0)[_0xbf70('0x22')](function(_0x1fe2e9){return querystring[_0xbf70('0x7')](_0x1fe2e9);});};exports['sestekNDA']=function(_0x20a044,_0x5de8e7){return sestek[_0xbf70('0x79')](_0x20a044,_0x5de8e7)[_0xbf70('0x22')](function(_0x506bab){logger[_0xbf70('0x17')](JSON[_0xbf70('0x38')](_0x506bab));var _0x5e6baf={'speech':_0x506bab[_0xbf70('0x7a')],'action':_0x506bab[_0xbf70('0x7b')]?_0x506bab[_0xbf70('0x7b')][_0xbf70('0x7c')]:undefined,'actiondata':_0x506bab['channelData']?_0x506bab['channelData']['CustomActionData']:undefined};if(_0x506bab[_0xbf70('0x7b')]&&_0x506bab[_0xbf70('0x7b')][_0xbf70('0x7d')]){return base64Decode(_0x506bab['channelData'][_0xbf70('0x7d')][_0xbf70('0x7e')],path[_0xbf70('0x20')](__dirname,_0xbf70('0x33'),rs[_0xbf70('0x21')](0x4)+_0xbf70('0x34')))[_0xbf70('0x22')](function(_0x4e6b0e){_0x5e6baf[_0xbf70('0x7f')]=_0x4e6b0e;return _0x5e6baf;});}return _0x5e6baf;});};exports[_0xbf70('0x80')]=function(){return __dirname;};