Built motion from commit (unavailable).|2.4.19
[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 _0x0553=['confidence','googleASR\x20transcription','googleASR\x20confidence','name','googleDialogflow','stringify','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','lex','ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','channelData','CustomAction','CustomActionData','audiofile','path','http','https','parse','sox','request-promise','util','querystring','google-tts-api','apiai-promise','./google','./aws','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','host','get','statusCode','statusMessage','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','finish','info','finish\x20download\x20file','close','unlink','pipe','error','end','WHAT_EVER','transcode','wav','finish\x20to\x20convert','start','tmp','.wav','writeFileSync','then','chmodSync','777','split','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','MP3','POST','resolve','.mp3','from','audioContent','writeFile','generate','goggleTTS\x20path','asr','uri','results','map','alternatives','transcript','join'];(function(_0x59e781,_0x1ea05d){var _0x108596=function(_0x2dddf4){while(--_0x2dddf4){_0x59e781['push'](_0x59e781['shift']());}};_0x108596(++_0x1ea05d);}(_0x0553,0x88));var _0x3055=function(_0x1269c6,_0x1c8942){_0x1269c6=_0x1269c6-0x0;var _0x4868c7=_0x0553[_0x1269c6];return _0x4868c7;};'use strict';var fs=require('fs');var path=require(_0x3055('0x0'));var http=require(_0x3055('0x1'));var https=require(_0x3055('0x2'));var urlParse=require('url')[_0x3055('0x3')];var BPromise=require('bluebird');var rs=require('randomstring');var sox=require(_0x3055('0x4'));var rp=require(_0x3055('0x5'));var util=require(_0x3055('0x6'));var querystring=require(_0x3055('0x7'));var tts=require(_0x3055('0x8'));var apiai=require(_0x3055('0x9'));var md5=require('md5');var google=require(_0x3055('0xa'));var aws=require(_0x3055('0xb'));var tilde=require(_0x3055('0xc'));var sestek=require('./sestek');var logger=require(_0x3055('0xd'))('agi');var ISPEECH_API=_0x3055('0xe');function downloadFile(_0x2de26b,_0x49847d){return new BPromise(function(_0x2d77c3,_0x23d63f){var _0x4092c0=urlParse(_0x2de26b);var _0x2704c3=_0x4092c0[_0x3055('0xf')]===_0x3055('0x10')?https:http;var _0x57b428={'host':_0x4092c0[_0x3055('0x11')],'path':_0x4092c0[_0x3055('0x0')],'headers':{'user-agent':'WHAT_EVER'}};_0x2704c3[_0x3055('0x12')](_0x57b428,function(_0x1be632){if(_0x1be632[_0x3055('0x13')]!==0xc8){logger['error']('request\x20to\x20'+_0x2de26b+'\x20failed,\x20status\x20code\x20=\x20'+_0x1be632['statusCode']+'\x20('+_0x1be632[_0x3055('0x14')]+')');_0x23d63f(new Error(_0x3055('0x15')+_0x2de26b+_0x3055('0x16')+_0x1be632['statusCode']+'\x20('+_0x1be632['statusMessage']+')'));return;}var _0x5b1b7e=fs['createWriteStream'](_0x49847d);_0x5b1b7e['on'](_0x3055('0x17'),function(){logger[_0x3055('0x18')](_0x3055('0x19'));_0x5b1b7e[_0x3055('0x1a')](_0x2d77c3);});_0x5b1b7e['on']('error',function(_0x1b457c){fs[_0x3055('0x1b')](_0x49847d);logger['error']('download\x20error',_0x1b457c);_0x23d63f(_0x1b457c);});_0x1be632[_0x3055('0x1c')](_0x5b1b7e);})['on'](_0x3055('0x1d'),function(_0x5d342a){logger['error'](_0x5d342a);_0x23d63f(_0x5d342a);})[_0x3055('0x1e')]();});}function uploadFile(_0x4f30d6){return new BPromise(function(_0x1dfd08,_0x3c2f44){var _0x27d70b=urlParse(_0x4f30d6);var _0x5df379=_0x27d70b[_0x3055('0xf')]==='https:'?https:http;var _0x342a2c={'host':_0x27d70b[_0x3055('0x11')],'path':_0x27d70b[_0x3055('0x0')],'headers':{'user-agent':_0x3055('0x1f')}};_0x5df379[_0x3055('0x12')](_0x342a2c,function(_0x5acf39){if(_0x5acf39[_0x3055('0x13')]!==0xc8){_0x3c2f44(new Error(_0x3055('0x15')+_0x4f30d6+_0x3055('0x16')+_0x5acf39[_0x3055('0x13')]+'\x20('+_0x5acf39[_0x3055('0x14')]+')'));return;}var _0x4841e5='';_0x5acf39['on']('data',function(_0x15886a){_0x4841e5+=_0x15886a;});_0x5acf39['on'](_0x3055('0x1e'),function(){_0x1dfd08(_0x4841e5);});})['on']('error',function(_0x31adff){_0x3c2f44(_0x31adff);})[_0x3055('0x1e')]();});}function convertFile(_0x23a339,_0x3928ad){return new BPromise(function(_0x55e0eb,_0x2e2e57){var _0xceab70=sox[_0x3055('0x20')](_0x23a339,_0x3928ad,{'sampleRate':0x1f40,'format':_0x3055('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xceab70['on'](_0x3055('0x1d'),function(_0x1e013a){logger[_0x3055('0x1d')]('error\x20convert',_0x1e013a);_0x2e2e57(_0x1e013a);});_0xceab70['on'](_0x3055('0x1e'),function(){logger[_0x3055('0x18')](_0x3055('0x22'));_0x55e0eb();});_0xceab70[_0x3055('0x23')]();});}function base64Decode(_0x1ea7d7,_0x15263f){var _0x3ac8ce=path['resolve'](__dirname,_0x3055('0x24'),rs['generate'](0x4)+_0x3055('0x25'));fs[_0x3055('0x26')](_0x3ac8ce,_0x1ea7d7,'base64');return convertFile(_0x3ac8ce,_0x15263f)[_0x3055('0x27')](function(){try{fs[_0x3055('0x1b')](_0x3ac8ce);fs[_0x3055('0x28')](_0x15263f,_0x3055('0x29'));}catch(_0x3ad7e0){logger['error'](_0x3ad7e0);}return _0x15263f[_0x3055('0x2a')]('.')[0x0];});}function base64Encode(_0x5533e1){var _0x3d0265=fs[_0x3055('0x2b')](_0x5533e1);return new Buffer(_0x3d0265)[_0x3055('0x2c')](_0x3055('0x2d'));}exports[_0x3055('0x2e')]=function(_0x46de55,_0x4f9202,_0x13d825,_0x2a44e9,_0x44a66b,_0x1e899a){var _0x30f65e,_0x510f35;var _0x2663d1=_0x3055('0x2f');var _0x2bc253=_0x3055('0x30')+_0x46de55;var _0x431deb={};if(_0x4f9202==='ssml'){_0x431deb[_0x3055('0x31')]={'ssml':_0x13d825};}else{_0x431deb[_0x3055('0x31')]={'text':_0x13d825};};_0x431deb[_0x3055('0x32')]={'languageCode':_0x2a44e9,'ssmlGender':_0x44a66b};_0x431deb[_0x3055('0x33')]={'audioEncoding':_0x3055('0x34'),'sampleRateHertz':0x1f40};var _0x5c0af8={'url':_0x2663d1+'text:synthesize'+_0x2bc253,'method':_0x3055('0x35'),'json':!![],'body':_0x431deb};return rp(_0x5c0af8)[_0x3055('0x27')](function(_0x485853){return new BPromise(function(_0x2100fe,_0x2d917a){_0x30f65e=path[_0x3055('0x36')](__dirname,_0x3055('0x24'),rs['generate'](0x4)+_0x3055('0x37'));var _0x1a8b81=Buffer[_0x3055('0x38')](_0x485853[_0x3055('0x39')],_0x3055('0x2d'));return fs[_0x3055('0x3a')](_0x30f65e,_0x1a8b81,function(_0x3f2254){_0x2d917a(_0x3f2254);},function(_0x427aeb){fs[_0x3055('0x28')](_0x30f65e,'777');_0x2100fe(_0x427aeb);});});})['then'](function(_0x35b90b){_0x510f35=path[_0x3055('0x36')](__dirname,_0x3055('0x24'),rs[_0x3055('0x3b')](0x4)+'.wav');return convertFile(_0x30f65e,_0x510f35);})['then'](function(){try{fs[_0x3055('0x1b')](_0x30f65e);fs[_0x3055('0x28')](_0x510f35,_0x3055('0x29'));}catch(_0x1d42b1){logger[_0x3055('0x1d')](_0x1d42b1);}logger['info']('googleCloudTTS\x20path',_0x510f35[_0x3055('0x2a')]('.')[0x0]);return _0x510f35[_0x3055('0x2a')]('.')[0x0];});};exports['googleTTS']=function(_0x55c3d1,_0x4de845){var _0x34502c,_0x4af49a;return tts(_0x55c3d1,_0x4de845||'en',0x1)[_0x3055('0x27')](function(_0x4d27cd){logger[_0x3055('0x18')](_0x4d27cd);_0x34502c=path['resolve'](__dirname,_0x3055('0x24'),rs[_0x3055('0x3b')](0x4)+_0x3055('0x37'));return downloadFile(_0x4d27cd,_0x34502c);})['then'](function(){_0x4af49a=path[_0x3055('0x36')](__dirname,'tmp',rs[_0x3055('0x3b')](0x4)+'.wav');return convertFile(_0x34502c,_0x4af49a);})[_0x3055('0x27')](function(){try{fs['unlink'](_0x34502c);fs[_0x3055('0x28')](_0x4af49a,_0x3055('0x29'));}catch(_0x162f15){logger[_0x3055('0x1d')](_0x162f15);}logger[_0x3055('0x18')](_0x3055('0x3c'),_0x4af49a['split']('.')[0x0]);return _0x4af49a[_0x3055('0x2a')]('.')[0x0];});};exports['googleASR']=function(_0x469339,_0x5f381c,_0x56df27){return google[_0x3055('0x3d')](_0x469339,_0x5f381c,_0x56df27)[_0x3055('0x27')](function(_0x4d0c0f){logger[_0x3055('0x18')](_0x4d0c0f[_0x3055('0x3e')]);return rp(_0x4d0c0f);})[_0x3055('0x27')](function(_0x212da9){var _0x38cfcf='';var _0x56095c=0x0;try{fs['unlink'](_0x469339);}catch(_0x46ab10){logger['error'](_0x46ab10);}if(_0x212da9&&_0x212da9[_0x3055('0x3f')]){_0x38cfcf=_0x212da9[_0x3055('0x3f')][_0x3055('0x40')](function(_0x4cb2df){return _0x4cb2df&&_0x4cb2df[_0x3055('0x41')][0x0]&&_0x4cb2df[_0x3055('0x41')][0x0][_0x3055('0x42')]?_0x4cb2df[_0x3055('0x41')][0x0]['transcript']:'';})[_0x3055('0x43')]('\x0a');_0x56095c=_0x212da9[_0x3055('0x3f')]['map'](function(_0x389866){return _0x389866&&_0x389866[_0x3055('0x41')][0x0]&&_0x389866[_0x3055('0x41')][0x0][_0x3055('0x44')]?_0x389866['alternatives'][0x0][_0x3055('0x44')]:0x0;})['join']('\x0a');}logger['info'](_0x3055('0x45'),_0x38cfcf);logger[_0x3055('0x18')](_0x3055('0x46'),_0x56095c);return{'transcript':_0x38cfcf,'confidence':_0x56095c};})['catch'](function(_0x4a7bc4){logger[_0x3055('0x1d')]('[%s]\x20%s:%s',_0x4a7bc4['statusCode'],_0x4a7bc4[_0x3055('0x47')],_0x4a7bc4['message']);});};exports[_0x3055('0x48')]=function(_0x14666a,_0x4e675c,_0x7fbbb8,_0x173548){var _0x393aab=apiai(_0x4e675c,{'language':_0x173548||'en'});return _0x393aab['textRequest'](_0x7fbbb8,{'sessionId':md5(_0x14666a)})[_0x3055('0x27')](function(_0x30fa06){logger[_0x3055('0x18')](JSON[_0x3055('0x49')](_0x30fa06));return{'source':_0x30fa06[_0x3055('0x4a')]['source'],'resolvedQuery':_0x30fa06[_0x3055('0x4a')][_0x3055('0x4b')],'action':_0x30fa06[_0x3055('0x4a')][_0x3055('0x4c')],'actionIncomplete':_0x30fa06[_0x3055('0x4a')][_0x3055('0x4d')],'speech':_0x30fa06[_0x3055('0x4a')][_0x3055('0x4e')][_0x3055('0x4f')],'score':_0x30fa06[_0x3055('0x4a')][_0x3055('0x50')],'statusCode':_0x30fa06[_0x3055('0x51')][_0x3055('0x52')],'endConversation':_0x30fa06[_0x3055('0x4a')][_0x3055('0x53')][_0x3055('0x54')]||![],'isFallbackIntent':_0x30fa06[_0x3055('0x4a')]['metadata'][_0x3055('0x55')]};});};exports[_0x3055('0x56')]=function(_0x1b7e0f,_0x558f19,_0x2cd493,_0x305a49){return tilde['asr'](_0x1b7e0f,_0x558f19,_0x2cd493,_0x305a49)[_0x3055('0x27')](function(_0x153d8f){try{fs[_0x3055('0x1b')](_0x1b7e0f);}catch(_0x29abf2){logger[_0x3055('0x1d')](_0x29abf2);}logger['info'](_0x3055('0x57'),_0x153d8f[_0x3055('0x42')]);logger[_0x3055('0x18')]('Tilde\x20ASR\x20confidence',_0x153d8f[_0x3055('0x44')]);return _0x153d8f;});};exports[_0x3055('0x58')]=function(_0x591289,_0x201b3f,_0x32a469,_0x2418d5,_0x4c89f8,_0x178c68){var _0x3b25cc=path[_0x3055('0x36')](__dirname,_0x3055('0x24'),rs[_0x3055('0x3b')](0x4)+_0x3055('0x37'));var _0x4de307;return aws[_0x3055('0x59')](_0x591289,_0x201b3f,_0x32a469,_0x2418d5,_0x4c89f8,_0x178c68,_0x3b25cc)[_0x3055('0x27')](function(){_0x4de307=path[_0x3055('0x36')](__dirname,_0x3055('0x24'),rs[_0x3055('0x3b')](0x4)+_0x3055('0x25'));return convertFile(_0x3b25cc,_0x4de307);})[_0x3055('0x27')](function(){try{fs[_0x3055('0x1b')](_0x3b25cc);fs[_0x3055('0x28')](_0x4de307,_0x3055('0x29'));}catch(_0x449618){logger[_0x3055('0x1d')](_0x449618);}return _0x4de307[_0x3055('0x2a')]('.')[0x0];});};exports[_0x3055('0x5a')]=function(_0x3b03ca,_0x3665ed,_0xd485c,_0x4d364c,_0x2226c6,_0x4dd778){return aws[_0x3055('0x5b')](_0x3b03ca,_0x3665ed,_0xd485c,_0x4d364c,_0x2226c6,_0x4dd778)['then'](function(_0x1b9024){logger[_0x3055('0x18')](JSON[_0x3055('0x49')](_0x1b9024));return _0x1b9024;});};exports[_0x3055('0x5c')]=function(_0x12ba86,_0x24dd4b,_0x42de2e,_0x37f61d){var _0xfad5eb=util[_0x3055('0x5d')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x12ba86,encodeURIComponent(_0x24dd4b),_0x42de2e,_0x37f61d);var _0x207197=path[_0x3055('0x36')](__dirname,_0x3055('0x24'),rs[_0x3055('0x3b')](0x4)+_0x3055('0x37'));var _0xf9899d;return downloadFile(_0xfad5eb,_0x207197)[_0x3055('0x27')](function(){_0xf9899d=path[_0x3055('0x36')](__dirname,_0x3055('0x24'),rs['generate'](0x4)+_0x3055('0x25'));return convertFile(_0x207197,_0xf9899d);})[_0x3055('0x27')](function(){try{fs[_0x3055('0x1b')](_0x207197);fs[_0x3055('0x28')](_0xf9899d,_0x3055('0x29'));}catch(_0x265025){logger[_0x3055('0x1d')](_0x265025);}return _0xf9899d[_0x3055('0x2a')]('.')[0x0];});};exports[_0x3055('0x5e')]=function(_0x3c06d3,_0x12817d,_0x111d1c,_0x3671c2){var _0x2f88a3=util[_0x3055('0x5d')](_0x3055('0x5f'),ISPEECH_API,_0x12817d,_0x111d1c,base64Encode(_0x3c06d3),_0x3671c2?util[_0x3055('0x5d')](_0x3055('0x60'),encodeURIComponent(_0x3671c2)):_0x3055('0x61'));return uploadFile(_0x2f88a3)[_0x3055('0x27')](function(_0x501a3e){return querystring[_0x3055('0x3')](_0x501a3e);});};exports['sestekNDA']=function(_0x4008fb,_0x5ede9b){return sestek['nda'](_0x4008fb,_0x5ede9b)['then'](function(_0x37495c){logger[_0x3055('0x18')](JSON[_0x3055('0x49')](_0x37495c));var _0x373fe0={'speech':_0x37495c['text'],'action':_0x37495c[_0x3055('0x62')]?_0x37495c[_0x3055('0x62')][_0x3055('0x63')]:undefined,'actiondata':_0x37495c[_0x3055('0x62')]?_0x37495c[_0x3055('0x62')][_0x3055('0x64')]:undefined};if(_0x37495c[_0x3055('0x62')]&&_0x37495c[_0x3055('0x62')]['AudioFromTts']){return base64Decode(_0x37495c[_0x3055('0x62')]['AudioFromTts']['Data'],path[_0x3055('0x36')](__dirname,_0x3055('0x24'),rs[_0x3055('0x3b')](0x4)+_0x3055('0x25')))[_0x3055('0x27')](function(_0x4b890c){_0x373fe0[_0x3055('0x65')]=_0x4b890c;return _0x373fe0;});}return _0x373fe0;});};exports['dirName']=function(){return __dirname;};