Built motion from commit f25620e4.|2.6.30
[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 _0xf83c=['uri','results','map','alternatives','transcript','confidence','join','googleASR\x20confidence','[%s]\x20%s:%s','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','name','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','parse','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','randomstring','google-tts-api','url','util','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','download\x20error','end','protocol','get','transcode','wav','finish\x20to\x20convert','start','tmp','generate','.wav','writeFileSync','base64','then','unlink','chmodSync','777','split','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','audioConfig','MP3','text:synthesize','POST','resolve','from','writeFile','googleCloudTTS\x20path','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','null','parse\x20response\x20failed:\x0a','data','length','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','googleASR','asr'];(function(_0x45003a,_0x563b74){var _0x4e09f9=function(_0x50cd1e){while(--_0x50cd1e){_0x45003a['push'](_0x45003a['shift']());}};_0x4e09f9(++_0x563b74);}(_0xf83c,0x150));var _0xcf83=function(_0x452968,_0x31e391){_0x452968=_0x452968-0x0;var _0xb6f9ae=_0xf83c[_0x452968];return _0xb6f9ae;};'use strict';var apiai=require(_0xcf83('0x0'));var BPromise=require(_0xcf83('0x1'));var dialogflow=require(_0xcf83('0x2'));var fs=require('fs');var http=require(_0xcf83('0x3'));var https=require(_0xcf83('0x4'));var md5=require(_0xcf83('0x5'));var path=require(_0xcf83('0x6'));var querystring=require(_0xcf83('0x7'));var rp=require('request-promise');var rs=require(_0xcf83('0x8'));var sox=require('sox');var tts=require(_0xcf83('0x9'));var urlParse=require(_0xcf83('0xa'))['parse'];var util=require(_0xcf83('0xb'));var aws=require('./aws');var google=require(_0xcf83('0xc'));var sestek=require(_0xcf83('0xd'));var tilde=require(_0xcf83('0xe'));var logger=require(_0xcf83('0xf'))(_0xcf83('0x10'));var ISPEECH_API=_0xcf83('0x11');function downloadFile(_0x39ae5a,_0x3ec217){return new BPromise(function(_0x33f870,_0x2f3ceb){var _0x300324=urlParse(_0x39ae5a);var _0x23f66f=_0x300324['protocol']===_0xcf83('0x12')?https:http;var _0x45087b={'host':_0x300324['host'],'path':_0x300324[_0xcf83('0x6')],'headers':{'user-agent':_0xcf83('0x13')}};_0x23f66f['get'](_0x45087b,function(_0xc86822){if(_0xc86822[_0xcf83('0x14')]!==0xc8){logger[_0xcf83('0x15')](_0xcf83('0x16')+_0x39ae5a+_0xcf83('0x17')+_0xc86822[_0xcf83('0x14')]+'\x20('+_0xc86822[_0xcf83('0x18')]+')');_0x2f3ceb(new Error(_0xcf83('0x16')+_0x39ae5a+_0xcf83('0x17')+_0xc86822[_0xcf83('0x14')]+'\x20('+_0xc86822[_0xcf83('0x18')]+')'));return;}var _0x30a727=fs[_0xcf83('0x19')](_0x3ec217);_0x30a727['on'](_0xcf83('0x1a'),function(){logger[_0xcf83('0x1b')](_0xcf83('0x1c'));_0x30a727[_0xcf83('0x1d')](_0x33f870);});_0x30a727['on'](_0xcf83('0x15'),function(_0x5343e0){fs['unlink'](_0x3ec217);logger['error'](_0xcf83('0x1e'),_0x5343e0);_0x2f3ceb(_0x5343e0);});_0xc86822['pipe'](_0x30a727);})['on']('error',function(_0xbf1321){logger[_0xcf83('0x15')](_0xbf1321);_0x2f3ceb(_0xbf1321);})[_0xcf83('0x1f')]();});}function uploadFile(_0x4c4183){return new BPromise(function(_0xd4fcc2,_0x317bf1){var _0x3e945e=urlParse(_0x4c4183);var _0x23c56a=_0x3e945e[_0xcf83('0x20')]===_0xcf83('0x12')?https:http;var _0x52df6d={'host':_0x3e945e['host'],'path':_0x3e945e[_0xcf83('0x6')],'headers':{'user-agent':'WHAT_EVER'}};_0x23c56a[_0xcf83('0x21')](_0x52df6d,function(_0x32fa79){if(_0x32fa79[_0xcf83('0x14')]!==0xc8){_0x317bf1(new Error(_0xcf83('0x16')+_0x4c4183+_0xcf83('0x17')+_0x32fa79['statusCode']+'\x20('+_0x32fa79['statusMessage']+')'));return;}var _0x13e4ec='';_0x32fa79['on']('data',function(_0x2313fb){_0x13e4ec+=_0x2313fb;});_0x32fa79['on']('end',function(){_0xd4fcc2(_0x13e4ec);});})['on']('error',function(_0x2b8d73){_0x317bf1(_0x2b8d73);})[_0xcf83('0x1f')]();});}function convertFile(_0x2a9355,_0x920c1b){return new BPromise(function(_0x1a3d6a,_0x11edbb){var _0x5c1510=sox[_0xcf83('0x22')](_0x2a9355,_0x920c1b,{'sampleRate':0x1f40,'format':_0xcf83('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5c1510['on'](_0xcf83('0x15'),function(_0x3bb433){logger[_0xcf83('0x15')]('error\x20convert',_0x3bb433);_0x11edbb(_0x3bb433);});_0x5c1510['on'](_0xcf83('0x1f'),function(){logger[_0xcf83('0x1b')](_0xcf83('0x24'));_0x1a3d6a();});_0x5c1510[_0xcf83('0x25')]();});}function base64Decode(_0x427804,_0x36cde9){var _0x417db4=path['resolve'](__dirname,_0xcf83('0x26'),rs[_0xcf83('0x27')](0x4)+_0xcf83('0x28'));fs[_0xcf83('0x29')](_0x417db4,_0x427804,_0xcf83('0x2a'));return convertFile(_0x417db4,_0x36cde9)[_0xcf83('0x2b')](function(){try{fs[_0xcf83('0x2c')](_0x417db4);fs[_0xcf83('0x2d')](_0x36cde9,_0xcf83('0x2e'));}catch(_0x561bb1){logger[_0xcf83('0x15')](_0x561bb1);}return _0x36cde9[_0xcf83('0x2f')]('.')[0x0];});}function base64Encode(_0x4fbf80){var _0x143500=fs['readFileSync'](_0x4fbf80);return new Buffer(_0x143500)['toString'](_0xcf83('0x2a'));}exports[_0xcf83('0x30')]=function(_0x16a9be,_0x3d0de7,_0x4dbd19,_0x3b4aee,_0x39f180,_0x1823d0){var _0x2184da,_0x2c878d;var _0x619a2c=_0xcf83('0x31');var _0x516dc6=_0xcf83('0x32')+_0x16a9be;var _0x2c9bd0={};if(_0x3d0de7==='ssml'){_0x2c9bd0[_0xcf83('0x33')]={'ssml':_0x4dbd19};}else{_0x2c9bd0[_0xcf83('0x33')]={'text':_0x4dbd19};};_0x2c9bd0['voice']={'languageCode':_0x3b4aee,'ssmlGender':_0x39f180};_0x2c9bd0[_0xcf83('0x34')]={'audioEncoding':_0xcf83('0x35'),'sampleRateHertz':0x1f40};var _0xb55f07={'url':_0x619a2c+_0xcf83('0x36')+_0x516dc6,'method':_0xcf83('0x37'),'json':!![],'body':_0x2c9bd0};return rp(_0xb55f07)['then'](function(_0x2ed2f9){return new BPromise(function(_0x2f0010,_0xd86ba3){_0x2184da=path[_0xcf83('0x38')](__dirname,'tmp',rs[_0xcf83('0x27')](0x4)+'.mp3');var _0x5bfd89=Buffer[_0xcf83('0x39')](_0x2ed2f9['audioContent'],'base64');return fs[_0xcf83('0x3a')](_0x2184da,_0x5bfd89,function(_0x5f3332){_0xd86ba3(_0x5f3332);},function(_0x31ea9b){fs['chmodSync'](_0x2184da,_0xcf83('0x2e'));_0x2f0010(_0x31ea9b);});});})['then'](function(_0x1aa33b){_0x2c878d=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0x2184da,_0x2c878d);})[_0xcf83('0x2b')](function(){try{fs[_0xcf83('0x2c')](_0x2184da);fs['chmodSync'](_0x2c878d,'777');}catch(_0x58b659){logger[_0xcf83('0x15')](_0x58b659);}logger[_0xcf83('0x1b')](_0xcf83('0x3b'),_0x2c878d[_0xcf83('0x2f')]('.')[0x0]);return _0x2c878d[_0xcf83('0x2f')]('.')[0x0];});};exports['googleTTS']=function(_0x1e12a4,_0x253ce8){var _0x1aa0a4='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x530fc2,_0x260901;var _0x1de4e9;var _0x135519={'encoding':_0xcf83('0x3c'),'method':_0xcf83('0x37'),'timeout':0x2710,'url':_0x1aa0a4,'headers':{'Content-Type':_0xcf83('0x3d')},'body':_0xcf83('0x3e')+encodeURIComponent(JSON['stringify']([[[_0xcf83('0x3f'),JSON[_0xcf83('0x40')]([_0x1e12a4,_0x253ce8||'en',![],_0xcf83('0x41')]),null,'generic']]]))};return rp(_0x135519)['then'](function(_0x4ea4fb){try{_0x1de4e9=eval(_0x4ea4fb['slice'](0x5))[0x0][0x2];}catch(_0x5dd388){throw new Error(_0xcf83('0x42')+_0x4ea4fb[_0xcf83('0x43')]);}if(!_0x1de4e9){if(_0x1e12a4[_0xcf83('0x44')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0xcf83('0x45')+_0x253ce8+_0xcf83('0x46'));}}try{_0x1de4e9=eval(_0x1de4e9)[0x0];}catch(_0x1f94eb){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0x149d19=_0x1de4e9;_0x530fc2=path[_0xcf83('0x38')](__dirname,_0xcf83('0x26'),rs[_0xcf83('0x27')](0x4)+_0xcf83('0x47'));fs[_0xcf83('0x29')](_0x530fc2,_0x1de4e9,{'encoding':_0xcf83('0x2a')});_0x260901=path[_0xcf83('0x38')](__dirname,'tmp',rs[_0xcf83('0x27')](0x4)+_0xcf83('0x28'));return convertFile(_0x530fc2,_0x260901);})[_0xcf83('0x2b')](function(){try{fs['unlink'](_0x530fc2);fs[_0xcf83('0x2d')](_0x260901,_0xcf83('0x2e'));}catch(_0x34e9de){logger[_0xcf83('0x15')](_0x34e9de);}logger[_0xcf83('0x1b')](_0xcf83('0x48'),_0x260901[_0xcf83('0x2f')]('.')[0x0]);return _0x260901[_0xcf83('0x2f')]('.')[0x0];});};exports[_0xcf83('0x49')]=function(_0x58101c,_0x2e8424,_0x5bc076){return google[_0xcf83('0x4a')](_0x58101c,_0x2e8424,_0x5bc076)['then'](function(_0x5bd066){logger[_0xcf83('0x1b')](_0x5bd066[_0xcf83('0x4b')]);return rp(_0x5bd066);})[_0xcf83('0x2b')](function(_0x161a9c){var _0x5de0c7='';var _0x27bdff=0x0;try{fs[_0xcf83('0x2c')](_0x58101c);}catch(_0x243caa){logger[_0xcf83('0x15')](_0x243caa);}if(_0x161a9c&&_0x161a9c['results']){_0x5de0c7=_0x161a9c[_0xcf83('0x4c')][_0xcf83('0x4d')](function(_0xfff178){return _0xfff178&&_0xfff178[_0xcf83('0x4e')][0x0]&&_0xfff178[_0xcf83('0x4e')][0x0][_0xcf83('0x4f')]?_0xfff178[_0xcf83('0x4e')][0x0][_0xcf83('0x4f')]:'';})['join']('\x0a');_0x27bdff=_0x161a9c[_0xcf83('0x4c')][_0xcf83('0x4d')](function(_0x46d7d9){return _0x46d7d9&&_0x46d7d9[_0xcf83('0x4e')][0x0]&&_0x46d7d9[_0xcf83('0x4e')][0x0][_0xcf83('0x50')]?_0x46d7d9[_0xcf83('0x4e')][0x0][_0xcf83('0x50')]:0x0;})[_0xcf83('0x51')]('\x0a');}logger[_0xcf83('0x1b')]('googleASR\x20transcription',_0x5de0c7);logger[_0xcf83('0x1b')](_0xcf83('0x52'),_0x27bdff);return{'transcript':_0x5de0c7,'confidence':_0x27bdff};})['catch'](function(_0x3b55e4){logger[_0xcf83('0x15')](_0xcf83('0x53'),_0x3b55e4[_0xcf83('0x14')],_0x3b55e4['name'],_0x3b55e4[_0xcf83('0x54')]);});};exports[_0xcf83('0x55')]=function(_0x568b26,_0x46216c,_0x3ceed3,_0x13f26f){var _0x1d2118=apiai(_0x46216c,{'language':_0x13f26f||'en'});return _0x1d2118[_0xcf83('0x56')](_0x3ceed3,{'sessionId':md5(_0x568b26)})['then'](function(_0x3c3fdf){logger['info'](JSON['stringify'](_0x3c3fdf));return{'source':_0x3c3fdf[_0xcf83('0x57')][_0xcf83('0x58')],'resolvedQuery':_0x3c3fdf[_0xcf83('0x57')][_0xcf83('0x59')],'action':_0x3c3fdf[_0xcf83('0x57')][_0xcf83('0x5a')],'actionIncomplete':_0x3c3fdf[_0xcf83('0x57')][_0xcf83('0x5b')],'speech':_0x3c3fdf['result'][_0xcf83('0x5c')][_0xcf83('0x5d')],'score':_0x3c3fdf[_0xcf83('0x57')]['score'],'statusCode':_0x3c3fdf['status'][_0xcf83('0x5e')],'endConversation':_0x3c3fdf['result'][_0xcf83('0x5f')][_0xcf83('0x60')]||![],'isFallbackIntent':_0x3c3fdf['result'][_0xcf83('0x5f')][_0xcf83('0x61')]};});};exports[_0xcf83('0x62')]=function(_0x2cfb5d,_0x304de0,_0x40f0ea,_0x29b7aa,_0x394da8,_0x2576f2){var _0x154666=_0x29b7aa[_0xcf83('0x63')](/\\n/g,'\x0a');var _0x440f7f={'credentials':{'private_key':_0x154666,'client_email':_0x40f0ea}};var _0x2569fc=new dialogflow[(_0xcf83('0x64'))](_0x440f7f);var _0x39c892=_0x2569fc[_0xcf83('0x65')](_0x304de0,md5(_0x2cfb5d));var _0xe99a41={'session':_0x39c892,'queryInput':{'text':{'text':_0x394da8,'languageCode':_0x2576f2}}};return _0x2569fc['detectIntent'](_0xe99a41)['then'](function(_0x2eee72){if(_0x2eee72&&_0x2eee72[_0xcf83('0x44')]){logger[_0xcf83('0x1b')](_0xcf83('0x66'),JSON[_0xcf83('0x40')](_0x2eee72));var _0x56d641=_0x2eee72[0x0];if(_0x56d641){var _0x28b8da={'action':_0x56d641['queryResult'][_0xcf83('0x5a')],'allRequiredParamsPresent':_0x56d641[_0xcf83('0x67')][_0xcf83('0x68')],'endConversation':_0x56d641[_0xcf83('0x67')][_0xcf83('0x69')]&&_0x56d641[_0xcf83('0x67')][_0xcf83('0x69')]['fields']?_0x56d641[_0xcf83('0x67')]['diagnosticInfo'][_0xcf83('0x6a')][_0xcf83('0x6b')][_0xcf83('0x6c')]:![],'fulfillmentText':_0x56d641[_0xcf83('0x67')][_0xcf83('0x6d')],'intentName':_0x56d641['queryResult'][_0xcf83('0x6e')][_0xcf83('0x6f')],'intentDisplayName':_0x56d641[_0xcf83('0x67')][_0xcf83('0x6e')][_0xcf83('0x70')],'isFallbackIntent':_0x56d641['queryResult'][_0xcf83('0x6e')][_0xcf83('0x71')],'languageCode':_0x56d641['queryResult'][_0xcf83('0x72')],'queryText':_0x56d641[_0xcf83('0x67')][_0xcf83('0x73')],'responseId':_0x56d641[_0xcf83('0x74')],'score':_0x56d641[_0xcf83('0x67')][_0xcf83('0x75')],'speech':_0x56d641[_0xcf83('0x67')][_0xcf83('0x6d')],'providerResponse':JSON['stringify'](_0x2eee72)};return _0x28b8da;}}});};exports['tildeASR']=function(_0x2a14ad,_0x377373,_0x2312a2,_0x32cff6){return tilde[_0xcf83('0x4a')](_0x2a14ad,_0x377373,_0x2312a2,_0x32cff6)[_0xcf83('0x2b')](function(_0x7991f4){try{fs['unlink'](_0x2a14ad);}catch(_0x6d30c5){logger['error'](_0x6d30c5);}logger[_0xcf83('0x1b')](_0xcf83('0x76'),_0x7991f4[_0xcf83('0x4f')]);logger[_0xcf83('0x1b')](_0xcf83('0x77'),_0x7991f4[_0xcf83('0x50')]);return _0x7991f4;});};exports[_0xcf83('0x78')]=function(_0x449aff,_0x55a966,_0x551be8,_0x191471,_0x5db6ab,_0x42c7a3){var _0x260935=path[_0xcf83('0x38')](__dirname,'tmp',rs['generate'](0x4)+_0xcf83('0x47'));var _0x3ab249;return aws['polly'](_0x449aff,_0x55a966,_0x551be8,_0x191471,_0x5db6ab,_0x42c7a3,_0x260935)[_0xcf83('0x2b')](function(){_0x3ab249=path[_0xcf83('0x38')](__dirname,_0xcf83('0x26'),rs['generate'](0x4)+'.wav');return convertFile(_0x260935,_0x3ab249);})[_0xcf83('0x2b')](function(){try{fs[_0xcf83('0x2c')](_0x260935);fs['chmodSync'](_0x3ab249,_0xcf83('0x2e'));}catch(_0x15cdc5){logger[_0xcf83('0x15')](_0x15cdc5);}return _0x3ab249['split']('.')[0x0];});};exports[_0xcf83('0x79')]=function(_0x1a0d8c,_0x51d399,_0x2da16f,_0xf1bc40,_0x3f04c8,_0x4c8dcb){return aws[_0xcf83('0x7a')](_0x1a0d8c,_0x51d399,_0x2da16f,_0xf1bc40,_0x3f04c8,_0x4c8dcb)[_0xcf83('0x2b')](function(_0x43893e){logger[_0xcf83('0x1b')](JSON[_0xcf83('0x40')](_0x43893e));return _0x43893e;});};exports['ispeechTTS']=function(_0x233476,_0x39456a,_0x40ecba,_0x420b06){var _0x557774=util[_0xcf83('0x7b')](_0xcf83('0x7c'),ISPEECH_API,_0x233476,encodeURIComponent(_0x39456a),_0x40ecba,_0x420b06);var _0x242fea=path[_0xcf83('0x38')](__dirname,'tmp',rs[_0xcf83('0x27')](0x4)+_0xcf83('0x47'));var _0x1187c3;return downloadFile(_0x557774,_0x242fea)[_0xcf83('0x2b')](function(){_0x1187c3=path[_0xcf83('0x38')](__dirname,_0xcf83('0x26'),rs[_0xcf83('0x27')](0x4)+_0xcf83('0x28'));return convertFile(_0x242fea,_0x1187c3);})[_0xcf83('0x2b')](function(){try{fs['unlink'](_0x242fea);fs['chmodSync'](_0x1187c3,_0xcf83('0x2e'));}catch(_0x75850){logger[_0xcf83('0x15')](_0x75850);}return _0x1187c3['split']('.')[0x0];});};exports[_0xcf83('0x7d')]=function(_0x5c9194,_0x48ca5e,_0x2e4e22,_0x4b675e){var _0x1aa47b=util['format'](_0xcf83('0x7e'),ISPEECH_API,_0x48ca5e,_0x2e4e22,base64Encode(_0x5c9194),_0x4b675e?util[_0xcf83('0x7b')](_0xcf83('0x7f'),encodeURIComponent(_0x4b675e)):_0xcf83('0x80'));return uploadFile(_0x1aa47b)[_0xcf83('0x2b')](function(_0x17c2a4){return querystring[_0xcf83('0x81')](_0x17c2a4);});};exports['sestekNDA']=function(_0x28165b,_0x512207){return sestek['nda'](_0x28165b,_0x512207)['then'](function(_0x282723){logger[_0xcf83('0x1b')](JSON[_0xcf83('0x40')](_0x282723));var _0x11f2b8={'speech':_0x282723[_0xcf83('0x82')],'action':_0x282723[_0xcf83('0x83')]?_0x282723[_0xcf83('0x83')][_0xcf83('0x84')]:undefined,'actiondata':_0x282723[_0xcf83('0x83')]?_0x282723[_0xcf83('0x83')][_0xcf83('0x85')]:undefined};if(_0x282723[_0xcf83('0x83')]&&_0x282723['channelData']['AudioFromTts']){return base64Decode(_0x282723[_0xcf83('0x83')][_0xcf83('0x86')][_0xcf83('0x87')],path[_0xcf83('0x38')](__dirname,'tmp',rs[_0xcf83('0x27')](0x4)+_0xcf83('0x28')))[_0xcf83('0x2b')](function(_0x54d2a0){_0x11f2b8['audiofile']=_0x54d2a0;return _0x11f2b8;});}return _0x11f2b8;});};exports[_0xcf83('0x88')]=function(){return __dirname;};