Built motion from commit (unavailable).|2.4.17
[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 _0x62f9=['model=%s','freeform=3','parse','channelData','CustomActionData','AudioFromTts','Data','audiofile','path','http','https','url','bluebird','sox','util','querystring','apiai-promise','md5','./aws','./tilde','./sestek','agi','https://api.ispeech.org/api/rest','https:','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','close','unlink','download\x20error','pipe','end','protocol','host','data','transcode','wav','finish\x20to\x20convert','start','resolve','tmp','generate','writeFileSync','then','777','split','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig','MP3','POST','.mp3','from','audioContent','.wav','chmodSync','googleCloudTTS\x20path','googleTTS','goggleTTS\x20path','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','googleDialogflow','textRequest','stringify','result','source','action','actionIncomplete','fulfillment','status','code','metadata','endConversation','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s'];(function(_0x470061,_0x1b9656){var _0x417d45=function(_0x6b2c4){while(--_0x6b2c4){_0x470061['push'](_0x470061['shift']());}};_0x417d45(++_0x1b9656);}(_0x62f9,0x6e));var _0x962f=function(_0x7ad6cb,_0xffee6c){_0x7ad6cb=_0x7ad6cb-0x0;var _0x22a0ba=_0x62f9[_0x7ad6cb];return _0x22a0ba;};'use strict';var fs=require('fs');var path=require(_0x962f('0x0'));var http=require(_0x962f('0x1'));var https=require(_0x962f('0x2'));var urlParse=require(_0x962f('0x3'))['parse'];var BPromise=require(_0x962f('0x4'));var rs=require('randomstring');var sox=require(_0x962f('0x5'));var rp=require('request-promise');var util=require(_0x962f('0x6'));var querystring=require(_0x962f('0x7'));var tts=require('google-tts-api');var apiai=require(_0x962f('0x8'));var md5=require(_0x962f('0x9'));var google=require('./google');var aws=require(_0x962f('0xa'));var tilde=require(_0x962f('0xb'));var sestek=require(_0x962f('0xc'));var logger=require('../../../config/logger')(_0x962f('0xd'));var ISPEECH_API=_0x962f('0xe');function downloadFile(_0x4e217a,_0x560578){return new BPromise(function(_0x4862d5,_0x4785e5){var _0x5cc73a=urlParse(_0x4e217a);var _0x19ce19=_0x5cc73a['protocol']===_0x962f('0xf')?https:http;var _0x581c7e={'host':_0x5cc73a['host'],'path':_0x5cc73a[_0x962f('0x0')],'headers':{'user-agent':_0x962f('0x10')}};_0x19ce19[_0x962f('0x11')](_0x581c7e,function(_0x47f86f){if(_0x47f86f[_0x962f('0x12')]!==0xc8){logger[_0x962f('0x13')](_0x962f('0x14')+_0x4e217a+_0x962f('0x15')+_0x47f86f[_0x962f('0x12')]+'\x20('+_0x47f86f[_0x962f('0x16')]+')');_0x4785e5(new Error(_0x962f('0x14')+_0x4e217a+_0x962f('0x15')+_0x47f86f[_0x962f('0x12')]+'\x20('+_0x47f86f[_0x962f('0x16')]+')'));return;}var _0x4f2fd4=fs[_0x962f('0x17')](_0x560578);_0x4f2fd4['on'](_0x962f('0x18'),function(){logger[_0x962f('0x19')]('finish\x20download\x20file');_0x4f2fd4[_0x962f('0x1a')](_0x4862d5);});_0x4f2fd4['on'](_0x962f('0x13'),function(_0x38055c){fs[_0x962f('0x1b')](_0x560578);logger[_0x962f('0x13')](_0x962f('0x1c'),_0x38055c);_0x4785e5(_0x38055c);});_0x47f86f[_0x962f('0x1d')](_0x4f2fd4);})['on'](_0x962f('0x13'),function(_0x39da68){logger[_0x962f('0x13')](_0x39da68);_0x4785e5(_0x39da68);})[_0x962f('0x1e')]();});}function uploadFile(_0x1c0a22){return new BPromise(function(_0x2f4e9c,_0x332fd6){var _0x5896ef=urlParse(_0x1c0a22);var _0x56b460=_0x5896ef[_0x962f('0x1f')]===_0x962f('0xf')?https:http;var _0xda924b={'host':_0x5896ef[_0x962f('0x20')],'path':_0x5896ef[_0x962f('0x0')],'headers':{'user-agent':'WHAT_EVER'}};_0x56b460[_0x962f('0x11')](_0xda924b,function(_0x4913f4){if(_0x4913f4[_0x962f('0x12')]!==0xc8){_0x332fd6(new Error(_0x962f('0x14')+_0x1c0a22+'\x20failed,\x20status\x20code\x20=\x20'+_0x4913f4[_0x962f('0x12')]+'\x20('+_0x4913f4['statusMessage']+')'));return;}var _0x1f4d05='';_0x4913f4['on'](_0x962f('0x21'),function(_0x34f073){_0x1f4d05+=_0x34f073;});_0x4913f4['on']('end',function(){_0x2f4e9c(_0x1f4d05);});})['on']('error',function(_0x347f9c){_0x332fd6(_0x347f9c);})['end']();});}function convertFile(_0x298f8a,_0x5c651d){return new BPromise(function(_0x53d93f,_0x1b0c86){var _0x1375d4=sox[_0x962f('0x22')](_0x298f8a,_0x5c651d,{'sampleRate':0x1f40,'format':_0x962f('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1375d4['on'](_0x962f('0x13'),function(_0x2d0ca4){logger[_0x962f('0x13')]('error\x20convert',_0x2d0ca4);_0x1b0c86(_0x2d0ca4);});_0x1375d4['on'](_0x962f('0x1e'),function(){logger[_0x962f('0x19')](_0x962f('0x24'));_0x53d93f();});_0x1375d4[_0x962f('0x25')]();});}function base64Decode(_0x4d1ffa,_0x59fb05){var _0xdf40cb=path[_0x962f('0x26')](__dirname,_0x962f('0x27'),rs[_0x962f('0x28')](0x4)+'.wav');fs[_0x962f('0x29')](_0xdf40cb,_0x4d1ffa,'base64');return convertFile(_0xdf40cb,_0x59fb05)[_0x962f('0x2a')](function(){try{fs['unlink'](_0xdf40cb);fs['chmodSync'](_0x59fb05,_0x962f('0x2b'));}catch(_0x15c210){logger[_0x962f('0x13')](_0x15c210);}return _0x59fb05[_0x962f('0x2c')]('.')[0x0];});}function base64Encode(_0x286830){var _0xe90674=fs[_0x962f('0x2d')](_0x286830);return new Buffer(_0xe90674)[_0x962f('0x2e')](_0x962f('0x2f'));}exports[_0x962f('0x30')]=function(_0x3bb8e6,_0x2cb3de,_0x4fca78,_0x31a418,_0x50b734,_0x2313ac){var _0x51645c,_0x27e7f6;var _0x43a01d=_0x962f('0x31');var _0x530450='?key='+_0x3bb8e6;var _0x3eb364={};if(_0x2cb3de===_0x962f('0x32')){_0x3eb364[_0x962f('0x33')]={'ssml':_0x4fca78};}else{_0x3eb364[_0x962f('0x33')]={'text':_0x4fca78};};_0x3eb364[_0x962f('0x34')]={'languageCode':_0x31a418,'ssmlGender':_0x50b734};_0x3eb364[_0x962f('0x35')]={'audioEncoding':_0x962f('0x36'),'sampleRateHertz':0x1f40};var _0xaa47db={'url':_0x43a01d+'text:synthesize'+_0x530450,'method':_0x962f('0x37'),'json':!![],'body':_0x3eb364};return rp(_0xaa47db)[_0x962f('0x2a')](function(_0x277197){return new BPromise(function(_0x45b57f,_0x2bcd07){_0x51645c=path[_0x962f('0x26')](__dirname,_0x962f('0x27'),rs['generate'](0x4)+_0x962f('0x38'));var _0xe525f1=Buffer[_0x962f('0x39')](_0x277197[_0x962f('0x3a')],'base64');return fs['writeFile'](_0x51645c,_0xe525f1,function(_0x2824f2){_0x2bcd07(_0x2824f2);},function(_0xebd7c6){fs['chmodSync'](_0x51645c,_0x962f('0x2b'));_0x45b57f(_0xebd7c6);});});})[_0x962f('0x2a')](function(_0x52a405){_0x27e7f6=path[_0x962f('0x26')](__dirname,_0x962f('0x27'),rs[_0x962f('0x28')](0x4)+_0x962f('0x3b'));return convertFile(_0x51645c,_0x27e7f6);})[_0x962f('0x2a')](function(){try{fs[_0x962f('0x1b')](_0x51645c);fs[_0x962f('0x3c')](_0x27e7f6,'777');}catch(_0x3f7563){logger[_0x962f('0x13')](_0x3f7563);}logger[_0x962f('0x19')](_0x962f('0x3d'),_0x27e7f6['split']('.')[0x0]);return _0x27e7f6[_0x962f('0x2c')]('.')[0x0];});};exports[_0x962f('0x3e')]=function(_0x5937ba,_0x44d955){var _0x3fc2d1,_0x1efd4e;return tts(_0x5937ba,_0x44d955||'en',0x1)[_0x962f('0x2a')](function(_0x2aeb19){logger[_0x962f('0x19')](_0x2aeb19);_0x3fc2d1=path[_0x962f('0x26')](__dirname,_0x962f('0x27'),rs[_0x962f('0x28')](0x4)+_0x962f('0x38'));return downloadFile(_0x2aeb19,_0x3fc2d1);})['then'](function(){_0x1efd4e=path[_0x962f('0x26')](__dirname,_0x962f('0x27'),rs['generate'](0x4)+_0x962f('0x3b'));return convertFile(_0x3fc2d1,_0x1efd4e);})[_0x962f('0x2a')](function(){try{fs[_0x962f('0x1b')](_0x3fc2d1);fs[_0x962f('0x3c')](_0x1efd4e,_0x962f('0x2b'));}catch(_0x1fdeca){logger[_0x962f('0x13')](_0x1fdeca);}logger[_0x962f('0x19')](_0x962f('0x3f'),_0x1efd4e[_0x962f('0x2c')]('.')[0x0]);return _0x1efd4e[_0x962f('0x2c')]('.')[0x0];});};exports['googleASR']=function(_0x20940c,_0x1a3bc3,_0x1b97db){return google[_0x962f('0x40')](_0x20940c,_0x1a3bc3,_0x1b97db)['then'](function(_0x3f4848){logger[_0x962f('0x19')](_0x3f4848[_0x962f('0x41')]);return rp(_0x3f4848);})[_0x962f('0x2a')](function(_0x30c2c1){var _0x4988a2='';var _0x2370ac=0x0;try{fs[_0x962f('0x1b')](_0x20940c);}catch(_0x4d7786){logger[_0x962f('0x13')](_0x4d7786);}if(_0x30c2c1&&_0x30c2c1['results']){_0x4988a2=_0x30c2c1[_0x962f('0x42')][_0x962f('0x43')](function(_0x526a0c){return _0x526a0c&&_0x526a0c[_0x962f('0x44')][0x0]&&_0x526a0c[_0x962f('0x44')][0x0][_0x962f('0x45')]?_0x526a0c[_0x962f('0x44')][0x0]['transcript']:'';})[_0x962f('0x46')]('\x0a');_0x2370ac=_0x30c2c1[_0x962f('0x42')][_0x962f('0x43')](function(_0x2dc314){return _0x2dc314&&_0x2dc314[_0x962f('0x44')][0x0]&&_0x2dc314[_0x962f('0x44')][0x0]['confidence']?_0x2dc314['alternatives'][0x0][_0x962f('0x47')]:0x0;})['join']('\x0a');}logger[_0x962f('0x19')](_0x962f('0x48'),_0x4988a2);logger['info']('googleASR\x20confidence',_0x2370ac);return{'transcript':_0x4988a2,'confidence':_0x2370ac};})[_0x962f('0x49')](function(_0x424384){logger[_0x962f('0x13')](_0x962f('0x4a'),_0x424384[_0x962f('0x12')],_0x424384['name'],_0x424384['message']);});};exports[_0x962f('0x4b')]=function(_0x3f884e,_0x3f40db,_0x33ff0e,_0x4072be){var _0x5b0688=apiai(_0x3f40db,{'language':_0x4072be||'en'});return _0x5b0688[_0x962f('0x4c')](_0x33ff0e,{'sessionId':md5(_0x3f884e)})[_0x962f('0x2a')](function(_0x1ea168){logger[_0x962f('0x19')](JSON[_0x962f('0x4d')](_0x1ea168));return{'source':_0x1ea168[_0x962f('0x4e')][_0x962f('0x4f')],'resolvedQuery':_0x1ea168[_0x962f('0x4e')]['resolvedQuery'],'action':_0x1ea168[_0x962f('0x4e')][_0x962f('0x50')],'actionIncomplete':_0x1ea168[_0x962f('0x4e')][_0x962f('0x51')],'speech':_0x1ea168['result'][_0x962f('0x52')]['speech'],'score':_0x1ea168[_0x962f('0x4e')]['score'],'statusCode':_0x1ea168[_0x962f('0x53')][_0x962f('0x54')],'endConversation':_0x1ea168['result'][_0x962f('0x55')][_0x962f('0x56')]||![],'isFallbackIntent':_0x1ea168[_0x962f('0x4e')][_0x962f('0x55')]['isFallbackIntent']};});};exports['tildeASR']=function(_0x225a19,_0x133c60,_0xc7a06,_0x20a962){return tilde[_0x962f('0x40')](_0x225a19,_0x133c60,_0xc7a06,_0x20a962)['then'](function(_0xfde964){try{fs[_0x962f('0x1b')](_0x225a19);}catch(_0x2afef9){logger[_0x962f('0x13')](_0x2afef9);}logger['info']('Tilde\x20ASR\x20transcription',_0xfde964['transcript']);logger[_0x962f('0x19')](_0x962f('0x57'),_0xfde964[_0x962f('0x47')]);return _0xfde964;});};exports[_0x962f('0x58')]=function(_0x3c2c99,_0x275fe3,_0x3753fe,_0x27c36f,_0xa8810,_0x4ac75c){var _0x558087=path['resolve'](__dirname,_0x962f('0x27'),rs['generate'](0x4)+'.mp3');var _0x239335;return aws['polly'](_0x3c2c99,_0x275fe3,_0x3753fe,_0x27c36f,_0xa8810,_0x4ac75c,_0x558087)[_0x962f('0x2a')](function(){_0x239335=path[_0x962f('0x26')](__dirname,_0x962f('0x27'),rs[_0x962f('0x28')](0x4)+_0x962f('0x3b'));return convertFile(_0x558087,_0x239335);})[_0x962f('0x2a')](function(){try{fs[_0x962f('0x1b')](_0x558087);fs[_0x962f('0x3c')](_0x239335,_0x962f('0x2b'));}catch(_0x589c03){logger[_0x962f('0x13')](_0x589c03);}return _0x239335['split']('.')[0x0];});};exports[_0x962f('0x59')]=function(_0xe7662,_0x23b414,_0x16bbd1,_0x6a27b,_0x401117,_0x1f0a83){return aws[_0x962f('0x5a')](_0xe7662,_0x23b414,_0x16bbd1,_0x6a27b,_0x401117,_0x1f0a83)['then'](function(_0x28d070){logger[_0x962f('0x19')](JSON[_0x962f('0x4d')](_0x28d070));return _0x28d070;});};exports['ispeechTTS']=function(_0x9c7eb5,_0xc40f79,_0x14076c,_0x241661){var _0x3f4ab7=util['format'](_0x962f('0x5b'),ISPEECH_API,_0x9c7eb5,encodeURIComponent(_0xc40f79),_0x14076c,_0x241661);var _0x311c99=path[_0x962f('0x26')](__dirname,'tmp',rs[_0x962f('0x28')](0x4)+_0x962f('0x38'));var _0x443003;return downloadFile(_0x3f4ab7,_0x311c99)[_0x962f('0x2a')](function(){_0x443003=path[_0x962f('0x26')](__dirname,'tmp',rs[_0x962f('0x28')](0x4)+'.wav');return convertFile(_0x311c99,_0x443003);})[_0x962f('0x2a')](function(){try{fs[_0x962f('0x1b')](_0x311c99);fs[_0x962f('0x3c')](_0x443003,'777');}catch(_0x26b855){logger[_0x962f('0x13')](_0x26b855);}return _0x443003['split']('.')[0x0];});};exports['ispeechASR']=function(_0x2dae9b,_0x493efe,_0x3aba00,_0x2f85f3){var _0xfc8ff4=util[_0x962f('0x5c')](_0x962f('0x5d'),ISPEECH_API,_0x493efe,_0x3aba00,base64Encode(_0x2dae9b),_0x2f85f3?util[_0x962f('0x5c')](_0x962f('0x5e'),encodeURIComponent(_0x2f85f3)):_0x962f('0x5f'));return uploadFile(_0xfc8ff4)[_0x962f('0x2a')](function(_0x46486a){return querystring[_0x962f('0x60')](_0x46486a);});};exports['sestekNDA']=function(_0xf57c99,_0x4c71d4){return sestek['nda'](_0xf57c99,_0x4c71d4)[_0x962f('0x2a')](function(_0x54d51b){logger[_0x962f('0x19')](JSON[_0x962f('0x4d')](_0x54d51b));var _0x46f3c2={'speech':_0x54d51b['text'],'action':_0x54d51b['channelData']?_0x54d51b[_0x962f('0x61')]['CustomAction']:undefined,'actiondata':_0x54d51b[_0x962f('0x61')]?_0x54d51b[_0x962f('0x61')][_0x962f('0x62')]:undefined};if(_0x54d51b[_0x962f('0x61')]&&_0x54d51b[_0x962f('0x61')][_0x962f('0x63')]){return base64Decode(_0x54d51b[_0x962f('0x61')][_0x962f('0x63')][_0x962f('0x64')],path[_0x962f('0x26')](__dirname,_0x962f('0x27'),rs[_0x962f('0x28')](0x4)+_0x962f('0x3b')))[_0x962f('0x2a')](function(_0x5ee9e1){_0x46f3c2[_0x962f('0x65')]=_0x5ee9e1;return _0x46f3c2;});}return _0x46f3c2;});};exports['dirName']=function(){return __dirname;};