c9a22aff78a5c10d243ff6c7c064caa0d96c5cb8
[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 _0x586c=['google-tts-api','url','parse','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','WHAT_EVER','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','pipe','end','host','get','statusCode','data','transcode','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','unlink','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','POST','then','from','audioContent','.mp3','goggleTTS\x20path','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','stringify','result','source','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','action','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','intent','displayName','languageCode','intentDetectionConfidence','fulfillmentText','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','text','CustomAction','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','dialogflow','md5','path','request-promise','sox'];(function(_0x39636d,_0x21634f){var _0x93b315=function(_0x8d908c){while(--_0x8d908c){_0x39636d['push'](_0x39636d['shift']());}};_0x93b315(++_0x21634f);}(_0x586c,0x16b));var _0xc586=function(_0x1ad901,_0x852d9e){_0x1ad901=_0x1ad901-0x0;var _0x3c0249=_0x586c[_0x1ad901];return _0x3c0249;};'use strict';var apiai=require(_0xc586('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0xc586('0x1'));var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0xc586('0x2'));var path=require(_0xc586('0x3'));var querystring=require('querystring');var rp=require(_0xc586('0x4'));var rs=require('randomstring');var sox=require(_0xc586('0x5'));var tts=require(_0xc586('0x6'));var urlParse=require(_0xc586('0x7'))[_0xc586('0x8')];var util=require('util');var aws=require('./aws');var google=require('./google');var sestek=require(_0xc586('0x9'));var tilde=require(_0xc586('0xa'));var logger=require(_0xc586('0xb'))(_0xc586('0xc'));var ISPEECH_API=_0xc586('0xd');function downloadFile(_0x26c5f7,_0x18ea46){return new BPromise(function(_0x246f90,_0x155b35){var _0x11b80f=urlParse(_0x26c5f7);var _0x1ab2d4=_0x11b80f['protocol']===_0xc586('0xe')?https:http;var _0x1ef1a9={'host':_0x11b80f['host'],'path':_0x11b80f[_0xc586('0x3')],'headers':{'user-agent':_0xc586('0xf')}};_0x1ab2d4['get'](_0x1ef1a9,function(_0x1dcf69){if(_0x1dcf69['statusCode']!==0xc8){logger[_0xc586('0x10')](_0xc586('0x11')+_0x26c5f7+_0xc586('0x12')+_0x1dcf69['statusCode']+'\x20('+_0x1dcf69[_0xc586('0x13')]+')');_0x155b35(new Error(_0xc586('0x11')+_0x26c5f7+_0xc586('0x12')+_0x1dcf69['statusCode']+'\x20('+_0x1dcf69[_0xc586('0x13')]+')'));return;}var _0x2e13bb=fs[_0xc586('0x14')](_0x18ea46);_0x2e13bb['on'](_0xc586('0x15'),function(){logger[_0xc586('0x16')](_0xc586('0x17'));_0x2e13bb[_0xc586('0x18')](_0x246f90);});_0x2e13bb['on'](_0xc586('0x10'),function(_0x4759f9){fs['unlink'](_0x18ea46);logger[_0xc586('0x10')]('download\x20error',_0x4759f9);_0x155b35(_0x4759f9);});_0x1dcf69[_0xc586('0x19')](_0x2e13bb);})['on'](_0xc586('0x10'),function(_0x3ff441){logger['error'](_0x3ff441);_0x155b35(_0x3ff441);})[_0xc586('0x1a')]();});}function uploadFile(_0x52b60a){return new BPromise(function(_0x19b2fd,_0x28843e){var _0x44b63c=urlParse(_0x52b60a);var _0x161c36=_0x44b63c['protocol']===_0xc586('0xe')?https:http;var _0x5a5635={'host':_0x44b63c[_0xc586('0x1b')],'path':_0x44b63c['path'],'headers':{'user-agent':_0xc586('0xf')}};_0x161c36[_0xc586('0x1c')](_0x5a5635,function(_0xd9155){if(_0xd9155[_0xc586('0x1d')]!==0xc8){_0x28843e(new Error(_0xc586('0x11')+_0x52b60a+_0xc586('0x12')+_0xd9155[_0xc586('0x1d')]+'\x20('+_0xd9155[_0xc586('0x13')]+')'));return;}var _0x5217fc='';_0xd9155['on'](_0xc586('0x1e'),function(_0x1e050a){_0x5217fc+=_0x1e050a;});_0xd9155['on']('end',function(){_0x19b2fd(_0x5217fc);});})['on'](_0xc586('0x10'),function(_0x316b72){_0x28843e(_0x316b72);})['end']();});}function convertFile(_0x328222,_0x3aa11e){return new BPromise(function(_0x2bf583,_0x5d8018){var _0x56d92c=sox[_0xc586('0x1f')](_0x328222,_0x3aa11e,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x56d92c['on'](_0xc586('0x10'),function(_0x5a7e2f){logger[_0xc586('0x10')](_0xc586('0x20'),_0x5a7e2f);_0x5d8018(_0x5a7e2f);});_0x56d92c['on'](_0xc586('0x1a'),function(){logger[_0xc586('0x16')](_0xc586('0x21'));_0x2bf583();});_0x56d92c[_0xc586('0x22')]();});}function base64Decode(_0x3c924e,_0x1c4677){var _0x9e11a5=path[_0xc586('0x23')](__dirname,_0xc586('0x24'),rs[_0xc586('0x25')](0x4)+_0xc586('0x26'));fs[_0xc586('0x27')](_0x9e11a5,_0x3c924e,_0xc586('0x28'));return convertFile(_0x9e11a5,_0x1c4677)['then'](function(){try{fs[_0xc586('0x29')](_0x9e11a5);fs[_0xc586('0x2a')](_0x1c4677,_0xc586('0x2b'));}catch(_0x17acf1){logger[_0xc586('0x10')](_0x17acf1);}return _0x1c4677[_0xc586('0x2c')]('.')[0x0];});}function base64Encode(_0x5483cf){var _0x1cac49=fs[_0xc586('0x2d')](_0x5483cf);return new Buffer(_0x1cac49)[_0xc586('0x2e')](_0xc586('0x28'));}exports[_0xc586('0x2f')]=function(_0x58c07a,_0x5d7623,_0x343fd7,_0x4d201b,_0x463c60,_0x2c48bd){var _0x27fa96,_0x5db390;var _0x345ed5=_0xc586('0x30');var _0x3688ed=_0xc586('0x31')+_0x58c07a;var _0x25de09={};if(_0x5d7623===_0xc586('0x32')){_0x25de09[_0xc586('0x33')]={'ssml':_0x343fd7};}else{_0x25de09[_0xc586('0x33')]={'text':_0x343fd7};};_0x25de09[_0xc586('0x34')]={'languageCode':_0x4d201b,'ssmlGender':_0x463c60};_0x25de09[_0xc586('0x35')]={'audioEncoding':_0xc586('0x36'),'sampleRateHertz':0x1f40};var _0x2b0f8b={'url':_0x345ed5+'text:synthesize'+_0x3688ed,'method':_0xc586('0x37'),'json':!![],'body':_0x25de09};return rp(_0x2b0f8b)[_0xc586('0x38')](function(_0x5e4fb1){return new BPromise(function(_0x4e0600,_0x52d6df){_0x27fa96=path[_0xc586('0x23')](__dirname,_0xc586('0x24'),rs['generate'](0x4)+'.mp3');var _0x13a1c2=Buffer[_0xc586('0x39')](_0x5e4fb1[_0xc586('0x3a')],_0xc586('0x28'));return fs['writeFile'](_0x27fa96,_0x13a1c2,function(_0x4d79d3){_0x52d6df(_0x4d79d3);},function(_0x377a2f){fs[_0xc586('0x2a')](_0x27fa96,_0xc586('0x2b'));_0x4e0600(_0x377a2f);});});})[_0xc586('0x38')](function(_0x3ebfb8){_0x5db390=path[_0xc586('0x23')](__dirname,_0xc586('0x24'),rs[_0xc586('0x25')](0x4)+_0xc586('0x26'));return convertFile(_0x27fa96,_0x5db390);})['then'](function(){try{fs[_0xc586('0x29')](_0x27fa96);fs[_0xc586('0x2a')](_0x5db390,_0xc586('0x2b'));}catch(_0x4c0f16){logger[_0xc586('0x10')](_0x4c0f16);}logger[_0xc586('0x16')]('googleCloudTTS\x20path',_0x5db390['split']('.')[0x0]);return _0x5db390[_0xc586('0x2c')]('.')[0x0];});};exports['googleTTS']=function(_0x5d8d2e,_0xb5ea55){var _0x2f388e,_0x5d20f0;return tts(_0x5d8d2e,_0xb5ea55||'en',0x1)[_0xc586('0x38')](function(_0x533aa4){logger[_0xc586('0x16')](_0x533aa4);_0x2f388e=path[_0xc586('0x23')](__dirname,_0xc586('0x24'),rs[_0xc586('0x25')](0x4)+_0xc586('0x3b'));return downloadFile(_0x533aa4,_0x2f388e);})[_0xc586('0x38')](function(){_0x5d20f0=path['resolve'](__dirname,_0xc586('0x24'),rs[_0xc586('0x25')](0x4)+_0xc586('0x26'));return convertFile(_0x2f388e,_0x5d20f0);})[_0xc586('0x38')](function(){try{fs[_0xc586('0x29')](_0x2f388e);fs[_0xc586('0x2a')](_0x5d20f0,_0xc586('0x2b'));}catch(_0x10df01){logger['error'](_0x10df01);}logger[_0xc586('0x16')](_0xc586('0x3c'),_0x5d20f0['split']('.')[0x0]);return _0x5d20f0[_0xc586('0x2c')]('.')[0x0];});};exports['googleASR']=function(_0x7ca18c,_0x53604e,_0x5ac9f3){return google['asr'](_0x7ca18c,_0x53604e,_0x5ac9f3)[_0xc586('0x38')](function(_0x20e210){logger[_0xc586('0x16')](_0x20e210[_0xc586('0x3d')]);return rp(_0x20e210);})[_0xc586('0x38')](function(_0x3decff){var _0x382cac='';var _0x41ec10=0x0;try{fs[_0xc586('0x29')](_0x7ca18c);}catch(_0x3dad7e){logger[_0xc586('0x10')](_0x3dad7e);}if(_0x3decff&&_0x3decff[_0xc586('0x3e')]){_0x382cac=_0x3decff['results'][_0xc586('0x3f')](function(_0x5de0a7){return _0x5de0a7&&_0x5de0a7['alternatives'][0x0]&&_0x5de0a7[_0xc586('0x40')][0x0][_0xc586('0x41')]?_0x5de0a7[_0xc586('0x40')][0x0]['transcript']:'';})[_0xc586('0x42')]('\x0a');_0x41ec10=_0x3decff[_0xc586('0x3e')][_0xc586('0x3f')](function(_0x5d6360){return _0x5d6360&&_0x5d6360[_0xc586('0x40')][0x0]&&_0x5d6360[_0xc586('0x40')][0x0][_0xc586('0x43')]?_0x5d6360[_0xc586('0x40')][0x0][_0xc586('0x43')]:0x0;})[_0xc586('0x42')]('\x0a');}logger[_0xc586('0x16')]('googleASR\x20transcription',_0x382cac);logger['info'](_0xc586('0x44'),_0x41ec10);return{'transcript':_0x382cac,'confidence':_0x41ec10};})[_0xc586('0x45')](function(_0x4a1cc3){logger['error'](_0xc586('0x46'),_0x4a1cc3[_0xc586('0x1d')],_0x4a1cc3[_0xc586('0x47')],_0x4a1cc3[_0xc586('0x48')]);});};exports[_0xc586('0x49')]=function(_0x78920,_0x1f6909,_0x39c1f1,_0x155b3c){var _0x9557c=apiai(_0x1f6909,{'language':_0x155b3c||'en'});return _0x9557c[_0xc586('0x4a')](_0x39c1f1,{'sessionId':md5(_0x78920)})[_0xc586('0x38')](function(_0x4fa711){logger[_0xc586('0x16')](JSON[_0xc586('0x4b')](_0x4fa711));return{'source':_0x4fa711[_0xc586('0x4c')][_0xc586('0x4d')],'resolvedQuery':_0x4fa711['result']['resolvedQuery'],'action':_0x4fa711[_0xc586('0x4c')]['action'],'actionIncomplete':_0x4fa711[_0xc586('0x4c')]['actionIncomplete'],'speech':_0x4fa711[_0xc586('0x4c')][_0xc586('0x4e')][_0xc586('0x4f')],'score':_0x4fa711[_0xc586('0x4c')][_0xc586('0x50')],'statusCode':_0x4fa711[_0xc586('0x51')][_0xc586('0x52')],'endConversation':_0x4fa711[_0xc586('0x4c')][_0xc586('0x53')][_0xc586('0x54')]||![],'isFallbackIntent':_0x4fa711[_0xc586('0x4c')][_0xc586('0x53')][_0xc586('0x55')]};});};exports[_0xc586('0x56')]=function(_0xb702c5,_0x3de3c1,_0x394c83,_0x4165c3,_0x327007,_0x205ffa){var _0x5ce8d4=_0x4165c3['replace'](/\\n/g,'\x0a');var _0x20ba69={'credentials':{'private_key':_0x5ce8d4,'client_email':_0x394c83}};var _0x11a6cc=new dialogflow['SessionsClient'](_0x20ba69);var _0x39a2f4=_0x11a6cc[_0xc586('0x57')](_0x3de3c1,md5(_0xb702c5));var _0x55705e={'session':_0x39a2f4,'queryInput':{'text':{'text':_0x327007,'languageCode':_0x205ffa}}};return _0x11a6cc[_0xc586('0x58')](_0x55705e)[_0xc586('0x38')](function(_0x337e2b){if(_0x337e2b&&_0x337e2b[_0xc586('0x59')]){logger['info'](_0xc586('0x5a'),JSON[_0xc586('0x4b')](_0x337e2b));var _0x227b41=_0x337e2b[0x0];if(_0x227b41){var _0x5131f8={'action':_0x227b41['queryResult'][_0xc586('0x5b')],'allRequiredParamsPresent':_0x227b41[_0xc586('0x5c')][_0xc586('0x5d')],'endConversation':_0x227b41[_0xc586('0x5c')][_0xc586('0x5e')]&&_0x227b41['queryResult'][_0xc586('0x5e')]['fields']?_0x227b41[_0xc586('0x5c')]['diagnosticInfo'][_0xc586('0x5f')][_0xc586('0x60')]['boolValue']:![],'fulfillmentText':_0x227b41[_0xc586('0x5c')]['fulfillmentText'],'intentName':_0x227b41[_0xc586('0x5c')][_0xc586('0x61')]['name'],'intentDisplayName':_0x227b41[_0xc586('0x5c')][_0xc586('0x61')][_0xc586('0x62')],'isFallbackIntent':_0x227b41[_0xc586('0x5c')][_0xc586('0x61')]['isFallback'],'languageCode':_0x227b41[_0xc586('0x5c')][_0xc586('0x63')],'queryText':_0x227b41[_0xc586('0x5c')]['queryText'],'responseId':_0x227b41['responseId'],'score':_0x227b41['queryResult'][_0xc586('0x64')],'speech':_0x227b41['queryResult'][_0xc586('0x65')],'providerResponse':JSON[_0xc586('0x4b')](_0x337e2b)};return _0x5131f8;}}});};exports['tildeASR']=function(_0x2cba6d,_0x592212,_0x5a88d3,_0x4c5bc0){return tilde[_0xc586('0x66')](_0x2cba6d,_0x592212,_0x5a88d3,_0x4c5bc0)['then'](function(_0x5469f0){try{fs[_0xc586('0x29')](_0x2cba6d);}catch(_0x5a2742){logger[_0xc586('0x10')](_0x5a2742);}logger[_0xc586('0x16')](_0xc586('0x67'),_0x5469f0[_0xc586('0x41')]);logger['info'](_0xc586('0x68'),_0x5469f0[_0xc586('0x43')]);return _0x5469f0;});};exports[_0xc586('0x69')]=function(_0x28ea29,_0x13f612,_0x5ad84e,_0x577b64,_0x5c378d,_0x4ad791){var _0x53c83f=path[_0xc586('0x23')](__dirname,_0xc586('0x24'),rs[_0xc586('0x25')](0x4)+'.mp3');var _0x4b0f12;return aws['polly'](_0x28ea29,_0x13f612,_0x5ad84e,_0x577b64,_0x5c378d,_0x4ad791,_0x53c83f)[_0xc586('0x38')](function(){_0x4b0f12=path[_0xc586('0x23')](__dirname,_0xc586('0x24'),rs['generate'](0x4)+_0xc586('0x26'));return convertFile(_0x53c83f,_0x4b0f12);})['then'](function(){try{fs[_0xc586('0x29')](_0x53c83f);fs[_0xc586('0x2a')](_0x4b0f12,_0xc586('0x2b'));}catch(_0x5425c6){logger[_0xc586('0x10')](_0x5425c6);}return _0x4b0f12[_0xc586('0x2c')]('.')[0x0];});};exports[_0xc586('0x6a')]=function(_0x4392d3,_0x4964b2,_0x2c3b13,_0x37e368,_0x54634a,_0x29244f){return aws[_0xc586('0x6b')](_0x4392d3,_0x4964b2,_0x2c3b13,_0x37e368,_0x54634a,_0x29244f)[_0xc586('0x38')](function(_0x44368a){logger['info'](JSON[_0xc586('0x4b')](_0x44368a));return _0x44368a;});};exports[_0xc586('0x6c')]=function(_0x3973b7,_0x2c5c9d,_0x1dd92b,_0x549313){var _0x52f891=util['format'](_0xc586('0x6d'),ISPEECH_API,_0x3973b7,encodeURIComponent(_0x2c5c9d),_0x1dd92b,_0x549313);var _0x2d1dd2=path[_0xc586('0x23')](__dirname,_0xc586('0x24'),rs['generate'](0x4)+_0xc586('0x3b'));var _0x35c9fd;return downloadFile(_0x52f891,_0x2d1dd2)[_0xc586('0x38')](function(){_0x35c9fd=path[_0xc586('0x23')](__dirname,'tmp',rs[_0xc586('0x25')](0x4)+_0xc586('0x26'));return convertFile(_0x2d1dd2,_0x35c9fd);})['then'](function(){try{fs[_0xc586('0x29')](_0x2d1dd2);fs[_0xc586('0x2a')](_0x35c9fd,_0xc586('0x2b'));}catch(_0x42a570){logger[_0xc586('0x10')](_0x42a570);}return _0x35c9fd[_0xc586('0x2c')]('.')[0x0];});};exports[_0xc586('0x6e')]=function(_0x3a4e49,_0x48177f,_0x3dd9a3,_0x4f8613){var _0x5ac3ab=util[_0xc586('0x6f')](_0xc586('0x70'),ISPEECH_API,_0x48177f,_0x3dd9a3,base64Encode(_0x3a4e49),_0x4f8613?util[_0xc586('0x6f')](_0xc586('0x71'),encodeURIComponent(_0x4f8613)):_0xc586('0x72'));return uploadFile(_0x5ac3ab)['then'](function(_0x2cadd8){return querystring[_0xc586('0x8')](_0x2cadd8);});};exports['sestekNDA']=function(_0x2efc44,_0xab2fba){return sestek['nda'](_0x2efc44,_0xab2fba)[_0xc586('0x38')](function(_0x5529a5){logger[_0xc586('0x16')](JSON['stringify'](_0x5529a5));var _0x5ebad4={'speech':_0x5529a5[_0xc586('0x73')],'action':_0x5529a5['channelData']?_0x5529a5['channelData'][_0xc586('0x74')]:undefined,'actiondata':_0x5529a5[_0xc586('0x75')]?_0x5529a5['channelData'][_0xc586('0x76')]:undefined};if(_0x5529a5[_0xc586('0x75')]&&_0x5529a5['channelData'][_0xc586('0x77')]){return base64Decode(_0x5529a5[_0xc586('0x75')][_0xc586('0x77')][_0xc586('0x78')],path['resolve'](__dirname,'tmp',rs[_0xc586('0x25')](0x4)+'.wav'))['then'](function(_0x5552b0){_0x5ebad4[_0xc586('0x79')]=_0x5552b0;return _0x5ebad4;});}return _0x5ebad4;});};exports[_0xc586('0x7a')]=function(){return __dirname;};