Built motion from commit 9b156c94.|2.6.22
[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 _0xd945=['audioContent','chmodSync','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','null','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','goggleTTS\x20path','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','name','message','result','source','resolvedQuery','action','actionIncomplete','speech','score','status','code','metadata','endConversation','googleDialogflowV2','replace','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','isFallback','queryText','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','ispeechTTS','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','text','channelData','CustomAction','AudioFromTts','Data','audiofile','bluebird','http','https','md5','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','path','WHAT_EVER','get','statusCode','error','request\x20to\x20','statusMessage','createWriteStream','finish','finish\x20download\x20file','close','unlink','pipe','end','\x20failed,\x20status\x20code\x20=\x20','data','transcode','wav','info','finish\x20to\x20convert','start','resolve','generate','.wav','base64','777','split','readFileSync','googleCloudTTS','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','then','tmp','.mp3','from'];(function(_0x4bb581,_0x6f7037){var _0x316bf5=function(_0x1f6ed0){while(--_0x1f6ed0){_0x4bb581['push'](_0x4bb581['shift']());}};_0x316bf5(++_0x6f7037);}(_0xd945,0xc6));var _0x5d94=function(_0x26ef19,_0x1a3994){_0x26ef19=_0x26ef19-0x0;var _0xcb6c22=_0xd945[_0x26ef19];return _0xcb6c22;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x5d94('0x0'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x5d94('0x1'));var https=require(_0x5d94('0x2'));var md5=require(_0x5d94('0x3'));var path=require('path');var querystring=require('querystring');var rp=require(_0x5d94('0x4'));var rs=require(_0x5d94('0x5'));var sox=require(_0x5d94('0x6'));var tts=require(_0x5d94('0x7'));var urlParse=require(_0x5d94('0x8'))[_0x5d94('0x9')];var util=require(_0x5d94('0xa'));var aws=require(_0x5d94('0xb'));var google=require('./google');var sestek=require(_0x5d94('0xc'));var tilde=require(_0x5d94('0xd'));var logger=require(_0x5d94('0xe'))(_0x5d94('0xf'));var ISPEECH_API=_0x5d94('0x10');function downloadFile(_0x9bdb1f,_0x3770c9){return new BPromise(function(_0x4424bc,_0x103118){var _0x2d627a=urlParse(_0x9bdb1f);var _0x35fa96=_0x2d627a[_0x5d94('0x11')]===_0x5d94('0x12')?https:http;var _0x3b4495={'host':_0x2d627a[_0x5d94('0x13')],'path':_0x2d627a[_0x5d94('0x14')],'headers':{'user-agent':_0x5d94('0x15')}};_0x35fa96[_0x5d94('0x16')](_0x3b4495,function(_0x40738a){if(_0x40738a[_0x5d94('0x17')]!==0xc8){logger[_0x5d94('0x18')]('request\x20to\x20'+_0x9bdb1f+'\x20failed,\x20status\x20code\x20=\x20'+_0x40738a[_0x5d94('0x17')]+'\x20('+_0x40738a['statusMessage']+')');_0x103118(new Error(_0x5d94('0x19')+_0x9bdb1f+'\x20failed,\x20status\x20code\x20=\x20'+_0x40738a['statusCode']+'\x20('+_0x40738a[_0x5d94('0x1a')]+')'));return;}var _0x44b484=fs[_0x5d94('0x1b')](_0x3770c9);_0x44b484['on'](_0x5d94('0x1c'),function(){logger['info'](_0x5d94('0x1d'));_0x44b484[_0x5d94('0x1e')](_0x4424bc);});_0x44b484['on']('error',function(_0x5de790){fs[_0x5d94('0x1f')](_0x3770c9);logger[_0x5d94('0x18')]('download\x20error',_0x5de790);_0x103118(_0x5de790);});_0x40738a[_0x5d94('0x20')](_0x44b484);})['on']('error',function(_0x41cadf){logger[_0x5d94('0x18')](_0x41cadf);_0x103118(_0x41cadf);})[_0x5d94('0x21')]();});}function uploadFile(_0x135447){return new BPromise(function(_0xe7095d,_0x54df7e){var _0x4aa24e=urlParse(_0x135447);var _0x5d1d7c=_0x4aa24e[_0x5d94('0x11')]===_0x5d94('0x12')?https:http;var _0x5de8be={'host':_0x4aa24e['host'],'path':_0x4aa24e[_0x5d94('0x14')],'headers':{'user-agent':_0x5d94('0x15')}};_0x5d1d7c[_0x5d94('0x16')](_0x5de8be,function(_0x2b659e){if(_0x2b659e[_0x5d94('0x17')]!==0xc8){_0x54df7e(new Error(_0x5d94('0x19')+_0x135447+_0x5d94('0x22')+_0x2b659e[_0x5d94('0x17')]+'\x20('+_0x2b659e['statusMessage']+')'));return;}var _0x1a4dbf='';_0x2b659e['on'](_0x5d94('0x23'),function(_0x2476ce){_0x1a4dbf+=_0x2476ce;});_0x2b659e['on'](_0x5d94('0x21'),function(){_0xe7095d(_0x1a4dbf);});})['on'](_0x5d94('0x18'),function(_0x1385b8){_0x54df7e(_0x1385b8);})['end']();});}function convertFile(_0x328c26,_0xb17cb6){return new BPromise(function(_0x29e16a,_0x381c9e){var _0x90ed20=sox[_0x5d94('0x24')](_0x328c26,_0xb17cb6,{'sampleRate':0x1f40,'format':_0x5d94('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x90ed20['on']('error',function(_0x317ead){logger[_0x5d94('0x18')]('error\x20convert',_0x317ead);_0x381c9e(_0x317ead);});_0x90ed20['on'](_0x5d94('0x21'),function(){logger[_0x5d94('0x26')](_0x5d94('0x27'));_0x29e16a();});_0x90ed20[_0x5d94('0x28')]();});}function base64Decode(_0x424ec2,_0x210733){var _0x3a91e3=path[_0x5d94('0x29')](__dirname,'tmp',rs[_0x5d94('0x2a')](0x4)+_0x5d94('0x2b'));fs['writeFileSync'](_0x3a91e3,_0x424ec2,_0x5d94('0x2c'));return convertFile(_0x3a91e3,_0x210733)['then'](function(){try{fs['unlink'](_0x3a91e3);fs['chmodSync'](_0x210733,_0x5d94('0x2d'));}catch(_0x4759ad){logger['error'](_0x4759ad);}return _0x210733[_0x5d94('0x2e')]('.')[0x0];});}function base64Encode(_0x2f2c36){var _0x25fcbb=fs[_0x5d94('0x2f')](_0x2f2c36);return new Buffer(_0x25fcbb)['toString'](_0x5d94('0x2c'));}exports[_0x5d94('0x30')]=function(_0x5afbd3,_0x1dfa82,_0x1a8d5e,_0x12b1ee,_0x53921b,_0x229824){var _0x50f0f6,_0x20c373;var _0x2d652d='https://texttospeech.googleapis.com/v1/';var _0x21dd1f=_0x5d94('0x31')+_0x5afbd3;var _0x5940ab={};if(_0x1dfa82===_0x5d94('0x32')){_0x5940ab['input']={'ssml':_0x1a8d5e};}else{_0x5940ab[_0x5d94('0x33')]={'text':_0x1a8d5e};};_0x5940ab[_0x5d94('0x34')]={'languageCode':_0x12b1ee,'ssmlGender':_0x53921b};_0x5940ab[_0x5d94('0x35')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x286704={'url':_0x2d652d+_0x5d94('0x36')+_0x21dd1f,'method':_0x5d94('0x37'),'json':!![],'body':_0x5940ab};return rp(_0x286704)[_0x5d94('0x38')](function(_0x55fa4a){return new BPromise(function(_0xd748cf,_0x21054c){_0x50f0f6=path['resolve'](__dirname,_0x5d94('0x39'),rs[_0x5d94('0x2a')](0x4)+_0x5d94('0x3a'));var _0x1f9749=Buffer[_0x5d94('0x3b')](_0x55fa4a[_0x5d94('0x3c')],_0x5d94('0x2c'));return fs['writeFile'](_0x50f0f6,_0x1f9749,function(_0x89131f){_0x21054c(_0x89131f);},function(_0x21fe21){fs[_0x5d94('0x3d')](_0x50f0f6,_0x5d94('0x2d'));_0xd748cf(_0x21fe21);});});})['then'](function(_0x269d0f){_0x20c373=path[_0x5d94('0x29')](__dirname,'tmp',rs[_0x5d94('0x2a')](0x4)+_0x5d94('0x2b'));return convertFile(_0x50f0f6,_0x20c373);})[_0x5d94('0x38')](function(){try{fs[_0x5d94('0x1f')](_0x50f0f6);fs[_0x5d94('0x3d')](_0x20c373,_0x5d94('0x2d'));}catch(_0x5b84e1){logger[_0x5d94('0x18')](_0x5b84e1);}logger[_0x5d94('0x26')]('googleCloudTTS\x20path',_0x20c373[_0x5d94('0x2e')]('.')[0x0]);return _0x20c373[_0x5d94('0x2e')]('.')[0x0];});};exports[_0x5d94('0x3e')]=function(_0x2bda7e,_0x437155){var _0x5aa852=_0x5d94('0x3f');var _0x37bf41,_0x4539f4;var _0x5547c7;var _0x207504={'encoding':_0x5d94('0x40'),'method':_0x5d94('0x37'),'timeout':0x2710,'url':_0x5aa852,'headers':{'Content-Type':_0x5d94('0x41')},'body':'f.req='+encodeURIComponent(JSON[_0x5d94('0x42')]([[['jQ1olc',JSON['stringify']([_0x2bda7e,_0x437155||'en',![],_0x5d94('0x43')]),null,'generic']]]))};return rp(_0x207504)[_0x5d94('0x38')](function(_0x31eb19){try{_0x5547c7=eval(_0x31eb19['slice'](0x5))[0x0][0x2];}catch(_0xd46c16){throw new Error(_0x5d94('0x44')+_0x31eb19['data']);}if(!_0x5547c7){if(_0x2bda7e[_0x5d94('0x45')]>0xc8){throw new Error(_0x5d94('0x46'));}else{throw new Error(_0x5d94('0x47')+_0x437155+'\x22\x20might\x20not\x20exist');}}try{_0x5547c7=eval(_0x5547c7)[0x0];}catch(_0x4f02ea){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x5d94('0x23')]);}const _0xf23cf2=_0x5547c7;_0x37bf41=path['resolve'](__dirname,_0x5d94('0x39'),rs[_0x5d94('0x2a')](0x4)+_0x5d94('0x3a'));fs['writeFileSync'](_0x37bf41,_0x5547c7,{'encoding':_0x5d94('0x2c')});_0x4539f4=path[_0x5d94('0x29')](__dirname,_0x5d94('0x39'),rs['generate'](0x4)+_0x5d94('0x2b'));return convertFile(_0x37bf41,_0x4539f4);})['then'](function(){try{fs[_0x5d94('0x1f')](_0x37bf41);fs[_0x5d94('0x3d')](_0x4539f4,_0x5d94('0x2d'));}catch(_0x4d5db5){logger['error'](_0x4d5db5);}logger[_0x5d94('0x26')](_0x5d94('0x48'),_0x4539f4[_0x5d94('0x2e')]('.')[0x0]);return _0x4539f4[_0x5d94('0x2e')]('.')[0x0];});};exports['googleASR']=function(_0x1dda62,_0x333241,_0x52c914){return google[_0x5d94('0x49')](_0x1dda62,_0x333241,_0x52c914)['then'](function(_0x1cb912){logger[_0x5d94('0x26')](_0x1cb912[_0x5d94('0x4a')]);return rp(_0x1cb912);})[_0x5d94('0x38')](function(_0x1e9524){var _0x5b8c31='';var _0x5ad4de=0x0;try{fs[_0x5d94('0x1f')](_0x1dda62);}catch(_0x538144){logger[_0x5d94('0x18')](_0x538144);}if(_0x1e9524&&_0x1e9524['results']){_0x5b8c31=_0x1e9524[_0x5d94('0x4b')][_0x5d94('0x4c')](function(_0x12375f){return _0x12375f&&_0x12375f[_0x5d94('0x4d')][0x0]&&_0x12375f[_0x5d94('0x4d')][0x0][_0x5d94('0x4e')]?_0x12375f[_0x5d94('0x4d')][0x0]['transcript']:'';})['join']('\x0a');_0x5ad4de=_0x1e9524[_0x5d94('0x4b')][_0x5d94('0x4c')](function(_0x4f7179){return _0x4f7179&&_0x4f7179[_0x5d94('0x4d')][0x0]&&_0x4f7179[_0x5d94('0x4d')][0x0]['confidence']?_0x4f7179[_0x5d94('0x4d')][0x0][_0x5d94('0x4f')]:0x0;})[_0x5d94('0x50')]('\x0a');}logger[_0x5d94('0x26')](_0x5d94('0x51'),_0x5b8c31);logger['info'](_0x5d94('0x52'),_0x5ad4de);return{'transcript':_0x5b8c31,'confidence':_0x5ad4de};})[_0x5d94('0x53')](function(_0x324b24){logger[_0x5d94('0x18')]('[%s]\x20%s:%s',_0x324b24[_0x5d94('0x17')],_0x324b24[_0x5d94('0x54')],_0x324b24[_0x5d94('0x55')]);});};exports['googleDialogflow']=function(_0x1aac8f,_0x122f85,_0x545043,_0xe511cf){var _0x1bb149=apiai(_0x122f85,{'language':_0xe511cf||'en'});return _0x1bb149['textRequest'](_0x545043,{'sessionId':md5(_0x1aac8f)})[_0x5d94('0x38')](function(_0x4d8973){logger['info'](JSON['stringify'](_0x4d8973));return{'source':_0x4d8973[_0x5d94('0x56')][_0x5d94('0x57')],'resolvedQuery':_0x4d8973[_0x5d94('0x56')][_0x5d94('0x58')],'action':_0x4d8973['result'][_0x5d94('0x59')],'actionIncomplete':_0x4d8973[_0x5d94('0x56')][_0x5d94('0x5a')],'speech':_0x4d8973[_0x5d94('0x56')]['fulfillment'][_0x5d94('0x5b')],'score':_0x4d8973[_0x5d94('0x56')][_0x5d94('0x5c')],'statusCode':_0x4d8973[_0x5d94('0x5d')][_0x5d94('0x5e')],'endConversation':_0x4d8973[_0x5d94('0x56')][_0x5d94('0x5f')][_0x5d94('0x60')]||![],'isFallbackIntent':_0x4d8973[_0x5d94('0x56')][_0x5d94('0x5f')]['isFallbackIntent']};});};exports[_0x5d94('0x61')]=function(_0x49626c,_0x53b8fe,_0x26ece6,_0x3d4891,_0x58b8bc,_0x53a527){var _0xb1a5b2=_0x3d4891[_0x5d94('0x62')](/\\n/g,'\x0a');var _0x59dbbf={'credentials':{'private_key':_0xb1a5b2,'client_email':_0x26ece6}};var _0xc7ffd3=new dialogflow[(_0x5d94('0x63'))](_0x59dbbf);var _0x487082=_0xc7ffd3[_0x5d94('0x64')](_0x53b8fe,md5(_0x49626c));var _0x377b51={'session':_0x487082,'queryInput':{'text':{'text':_0x58b8bc,'languageCode':_0x53a527}}};return _0xc7ffd3['detectIntent'](_0x377b51)[_0x5d94('0x38')](function(_0x857356){if(_0x857356&&_0x857356[_0x5d94('0x45')]){logger['info'](_0x5d94('0x65'),JSON[_0x5d94('0x42')](_0x857356));var _0x16a19f=_0x857356[0x0];if(_0x16a19f){var _0x23d1ac={'action':_0x16a19f[_0x5d94('0x66')][_0x5d94('0x59')],'allRequiredParamsPresent':_0x16a19f[_0x5d94('0x66')]['allRequiredParamsPresent'],'endConversation':_0x16a19f['queryResult'][_0x5d94('0x67')]&&_0x16a19f[_0x5d94('0x66')][_0x5d94('0x67')][_0x5d94('0x68')]?_0x16a19f['queryResult']['diagnosticInfo'][_0x5d94('0x68')][_0x5d94('0x69')]['boolValue']:![],'fulfillmentText':_0x16a19f[_0x5d94('0x66')][_0x5d94('0x6a')],'intentName':_0x16a19f[_0x5d94('0x66')][_0x5d94('0x6b')][_0x5d94('0x54')],'intentDisplayName':_0x16a19f['queryResult'][_0x5d94('0x6b')][_0x5d94('0x6c')],'isFallbackIntent':_0x16a19f[_0x5d94('0x66')][_0x5d94('0x6b')][_0x5d94('0x6d')],'languageCode':_0x16a19f[_0x5d94('0x66')]['languageCode'],'queryText':_0x16a19f[_0x5d94('0x66')][_0x5d94('0x6e')],'responseId':_0x16a19f['responseId'],'score':_0x16a19f['queryResult'][_0x5d94('0x6f')],'speech':_0x16a19f[_0x5d94('0x66')][_0x5d94('0x6a')],'providerResponse':JSON['stringify'](_0x857356)};return _0x23d1ac;}}});};exports[_0x5d94('0x70')]=function(_0x371324,_0x259d48,_0x3d413d,_0x36e091){return tilde[_0x5d94('0x49')](_0x371324,_0x259d48,_0x3d413d,_0x36e091)[_0x5d94('0x38')](function(_0x7a60c3){try{fs[_0x5d94('0x1f')](_0x371324);}catch(_0x2fc53a){logger[_0x5d94('0x18')](_0x2fc53a);}logger[_0x5d94('0x26')](_0x5d94('0x71'),_0x7a60c3['transcript']);logger[_0x5d94('0x26')]('Tilde\x20ASR\x20confidence',_0x7a60c3[_0x5d94('0x4f')]);return _0x7a60c3;});};exports[_0x5d94('0x72')]=function(_0x38a1cd,_0x40af0d,_0x4a8b2a,_0x222993,_0x1326e5,_0x249d67){var _0x327737=path[_0x5d94('0x29')](__dirname,_0x5d94('0x39'),rs[_0x5d94('0x2a')](0x4)+'.mp3');var _0x3e7b0f;return aws[_0x5d94('0x73')](_0x38a1cd,_0x40af0d,_0x4a8b2a,_0x222993,_0x1326e5,_0x249d67,_0x327737)[_0x5d94('0x38')](function(){_0x3e7b0f=path[_0x5d94('0x29')](__dirname,_0x5d94('0x39'),rs[_0x5d94('0x2a')](0x4)+'.wav');return convertFile(_0x327737,_0x3e7b0f);})['then'](function(){try{fs[_0x5d94('0x1f')](_0x327737);fs[_0x5d94('0x3d')](_0x3e7b0f,'777');}catch(_0x12736a){logger[_0x5d94('0x18')](_0x12736a);}return _0x3e7b0f[_0x5d94('0x2e')]('.')[0x0];});};exports['awsLex']=function(_0x13f15d,_0x588826,_0x574383,_0x246bdd,_0x28def6,_0x2c3193){return aws['lex'](_0x13f15d,_0x588826,_0x574383,_0x246bdd,_0x28def6,_0x2c3193)[_0x5d94('0x38')](function(_0x58a627){logger[_0x5d94('0x26')](JSON[_0x5d94('0x42')](_0x58a627));return _0x58a627;});};exports[_0x5d94('0x74')]=function(_0x51eed7,_0x3c16bc,_0x25362f,_0x372e47){var _0x288929=util[_0x5d94('0x75')](_0x5d94('0x76'),ISPEECH_API,_0x51eed7,encodeURIComponent(_0x3c16bc),_0x25362f,_0x372e47);var _0x19cf78=path[_0x5d94('0x29')](__dirname,_0x5d94('0x39'),rs['generate'](0x4)+_0x5d94('0x3a'));var _0x7d98d;return downloadFile(_0x288929,_0x19cf78)[_0x5d94('0x38')](function(){_0x7d98d=path[_0x5d94('0x29')](__dirname,'tmp',rs[_0x5d94('0x2a')](0x4)+'.wav');return convertFile(_0x19cf78,_0x7d98d);})[_0x5d94('0x38')](function(){try{fs[_0x5d94('0x1f')](_0x19cf78);fs[_0x5d94('0x3d')](_0x7d98d,_0x5d94('0x2d'));}catch(_0xbb60c){logger['error'](_0xbb60c);}return _0x7d98d['split']('.')[0x0];});};exports[_0x5d94('0x77')]=function(_0x5e6b3d,_0x4724a0,_0x1d9a8b,_0x19fb89){var _0x53799b=util[_0x5d94('0x75')](_0x5d94('0x78'),ISPEECH_API,_0x4724a0,_0x1d9a8b,base64Encode(_0x5e6b3d),_0x19fb89?util[_0x5d94('0x75')](_0x5d94('0x79'),encodeURIComponent(_0x19fb89)):_0x5d94('0x7a'));return uploadFile(_0x53799b)[_0x5d94('0x38')](function(_0x29aac9){return querystring[_0x5d94('0x9')](_0x29aac9);});};exports['sestekNDA']=function(_0x58d76d,_0x132173){return sestek['nda'](_0x58d76d,_0x132173)[_0x5d94('0x38')](function(_0x53d904){logger['info'](JSON[_0x5d94('0x42')](_0x53d904));var _0x43ac53={'speech':_0x53d904[_0x5d94('0x7b')],'action':_0x53d904[_0x5d94('0x7c')]?_0x53d904[_0x5d94('0x7c')][_0x5d94('0x7d')]:undefined,'actiondata':_0x53d904[_0x5d94('0x7c')]?_0x53d904[_0x5d94('0x7c')]['CustomActionData']:undefined};if(_0x53d904[_0x5d94('0x7c')]&&_0x53d904['channelData'][_0x5d94('0x7e')]){return base64Decode(_0x53d904['channelData']['AudioFromTts'][_0x5d94('0x7f')],path['resolve'](__dirname,'tmp',rs[_0x5d94('0x2a')](0x4)+_0x5d94('0x2b')))[_0x5d94('0x38')](function(_0x50c8a4){_0x43ac53[_0x5d94('0x80')]=_0x50c8a4;return _0x43ac53;});}return _0x43ac53;});};exports['dirName']=function(){return __dirname;};