Built motion from commit (unavailable).|2.5.31
[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 _0xd43b=['toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','text:synthesize','POST','generate','from','writeFile','then','resolve','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','data','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','googleASR','asr','results','map','transcript','join','alternatives','confidence','googleASR\x20transcription','googleASR\x20confidence','message','textRequest','result','source','resolvedQuery','actionIncomplete','fulfillment','speech','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','name','intent','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','fulfillmentText','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','parse','nda','text','channelData','CustomAction','AudioFromTts','Data','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','querystring','request-promise','randomstring','sox','google-tts-api','url','util','./aws','./sestek','./tilde','https:','path','WHAT_EVER','statusCode','error','request\x20to\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','download\x20error','end','\x20failed,\x20status\x20code\x20=\x20','transcode','wav','error\x20convert','finish\x20to\x20convert','start','tmp','.wav','writeFileSync','base64','unlink','chmodSync','777','split','readFileSync'];(function(_0x5e3986,_0x2d4a0f){var _0x833894=function(_0x1c048d){while(--_0x1c048d){_0x5e3986['push'](_0x5e3986['shift']());}};_0x833894(++_0x2d4a0f);}(_0xd43b,0x156));var _0xbd43=function(_0x1a938f,_0x18202a){_0x1a938f=_0x1a938f-0x0;var _0x326952=_0xd43b[_0x1a938f];return _0x326952;};'use strict';var apiai=require(_0xbd43('0x0'));var BPromise=require(_0xbd43('0x1'));var dialogflow=require(_0xbd43('0x2'));var fs=require('fs');var http=require(_0xbd43('0x3'));var https=require(_0xbd43('0x4'));var md5=require(_0xbd43('0x5'));var path=require('path');var querystring=require(_0xbd43('0x6'));var rp=require(_0xbd43('0x7'));var rs=require(_0xbd43('0x8'));var sox=require(_0xbd43('0x9'));var tts=require(_0xbd43('0xa'));var urlParse=require(_0xbd43('0xb'))['parse'];var util=require(_0xbd43('0xc'));var aws=require(_0xbd43('0xd'));var google=require('./google');var sestek=require(_0xbd43('0xe'));var tilde=require(_0xbd43('0xf'));var logger=require('../../../config/logger')('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x297a69,_0xb4158d){return new BPromise(function(_0x1c9df0,_0x290d67){var _0x284482=urlParse(_0x297a69);var _0x2c8b78=_0x284482['protocol']===_0xbd43('0x10')?https:http;var _0x42c14c={'host':_0x284482['host'],'path':_0x284482[_0xbd43('0x11')],'headers':{'user-agent':_0xbd43('0x12')}};_0x2c8b78['get'](_0x42c14c,function(_0x378e95){if(_0x378e95[_0xbd43('0x13')]!==0xc8){logger[_0xbd43('0x14')](_0xbd43('0x15')+_0x297a69+'\x20failed,\x20status\x20code\x20=\x20'+_0x378e95[_0xbd43('0x13')]+'\x20('+_0x378e95[_0xbd43('0x16')]+')');_0x290d67(new Error(_0xbd43('0x15')+_0x297a69+'\x20failed,\x20status\x20code\x20=\x20'+_0x378e95[_0xbd43('0x13')]+'\x20('+_0x378e95['statusMessage']+')'));return;}var _0x363182=fs[_0xbd43('0x17')](_0xb4158d);_0x363182['on'](_0xbd43('0x18'),function(){logger[_0xbd43('0x19')](_0xbd43('0x1a'));_0x363182[_0xbd43('0x1b')](_0x1c9df0);});_0x363182['on']('error',function(_0x4a25e5){fs['unlink'](_0xb4158d);logger['error'](_0xbd43('0x1c'),_0x4a25e5);_0x290d67(_0x4a25e5);});_0x378e95['pipe'](_0x363182);})['on'](_0xbd43('0x14'),function(_0x2c8e02){logger[_0xbd43('0x14')](_0x2c8e02);_0x290d67(_0x2c8e02);})[_0xbd43('0x1d')]();});}function uploadFile(_0x1b3afd){return new BPromise(function(_0x368859,_0x2fdc64){var _0x106463=urlParse(_0x1b3afd);var _0x4be832=_0x106463['protocol']==='https:'?https:http;var _0x5268dc={'host':_0x106463['host'],'path':_0x106463[_0xbd43('0x11')],'headers':{'user-agent':_0xbd43('0x12')}};_0x4be832['get'](_0x5268dc,function(_0x48b230){if(_0x48b230[_0xbd43('0x13')]!==0xc8){_0x2fdc64(new Error('request\x20to\x20'+_0x1b3afd+_0xbd43('0x1e')+_0x48b230[_0xbd43('0x13')]+'\x20('+_0x48b230['statusMessage']+')'));return;}var _0x3ad8c9='';_0x48b230['on']('data',function(_0x448988){_0x3ad8c9+=_0x448988;});_0x48b230['on']('end',function(){_0x368859(_0x3ad8c9);});})['on'](_0xbd43('0x14'),function(_0x42215f){_0x2fdc64(_0x42215f);})[_0xbd43('0x1d')]();});}function convertFile(_0x1e0c13,_0x5360ad){return new BPromise(function(_0x235912,_0x1c2fe0){var _0x416f1b=sox[_0xbd43('0x1f')](_0x1e0c13,_0x5360ad,{'sampleRate':0x1f40,'format':_0xbd43('0x20'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x416f1b['on'](_0xbd43('0x14'),function(_0x14e89a){logger[_0xbd43('0x14')](_0xbd43('0x21'),_0x14e89a);_0x1c2fe0(_0x14e89a);});_0x416f1b['on']('end',function(){logger['info'](_0xbd43('0x22'));_0x235912();});_0x416f1b[_0xbd43('0x23')]();});}function base64Decode(_0xb302f1,_0x592ff8){var _0x2456ce=path['resolve'](__dirname,_0xbd43('0x24'),rs['generate'](0x4)+_0xbd43('0x25'));fs[_0xbd43('0x26')](_0x2456ce,_0xb302f1,_0xbd43('0x27'));return convertFile(_0x2456ce,_0x592ff8)['then'](function(){try{fs[_0xbd43('0x28')](_0x2456ce);fs[_0xbd43('0x29')](_0x592ff8,_0xbd43('0x2a'));}catch(_0x4329a3){logger[_0xbd43('0x14')](_0x4329a3);}return _0x592ff8[_0xbd43('0x2b')]('.')[0x0];});}function base64Encode(_0x16831b){var _0x33297b=fs[_0xbd43('0x2c')](_0x16831b);return new Buffer(_0x33297b)[_0xbd43('0x2d')](_0xbd43('0x27'));}exports['googleCloudTTS']=function(_0x5226be,_0x4b7f01,_0x2f3e9e,_0x539cd3,_0x9dc543,_0x5bbf53){var _0x54e5c7,_0x3e0c72;var _0x5bd4de=_0xbd43('0x2e');var _0x23d188=_0xbd43('0x2f')+_0x5226be;var _0x286722={};if(_0x4b7f01===_0xbd43('0x30')){_0x286722[_0xbd43('0x31')]={'ssml':_0x2f3e9e};}else{_0x286722[_0xbd43('0x31')]={'text':_0x2f3e9e};};_0x286722['voice']={'languageCode':_0x539cd3,'ssmlGender':_0x9dc543};_0x286722[_0xbd43('0x32')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x336707={'url':_0x5bd4de+_0xbd43('0x33')+_0x23d188,'method':_0xbd43('0x34'),'json':!![],'body':_0x286722};return rp(_0x336707)['then'](function(_0x181bd3){return new BPromise(function(_0x255567,_0x2f63b8){_0x54e5c7=path['resolve'](__dirname,_0xbd43('0x24'),rs[_0xbd43('0x35')](0x4)+'.mp3');var _0x584dc2=Buffer[_0xbd43('0x36')](_0x181bd3['audioContent'],'base64');return fs[_0xbd43('0x37')](_0x54e5c7,_0x584dc2,function(_0x33be63){_0x2f63b8(_0x33be63);},function(_0x426ecd){fs[_0xbd43('0x29')](_0x54e5c7,'777');_0x255567(_0x426ecd);});});})[_0xbd43('0x38')](function(_0x3c83f4){_0x3e0c72=path[_0xbd43('0x39')](__dirname,_0xbd43('0x24'),rs[_0xbd43('0x35')](0x4)+'.wav');return convertFile(_0x54e5c7,_0x3e0c72);})['then'](function(){try{fs[_0xbd43('0x28')](_0x54e5c7);fs[_0xbd43('0x29')](_0x3e0c72,_0xbd43('0x2a'));}catch(_0x3e335b){logger['error'](_0x3e335b);}logger['info'](_0xbd43('0x3a'),_0x3e0c72[_0xbd43('0x2b')]('.')[0x0]);return _0x3e0c72[_0xbd43('0x2b')]('.')[0x0];});};exports['googleTTS']=function(_0x3f5f20,_0x48b7bb){var _0x3a145c=_0xbd43('0x3b');var _0x461c90,_0xf108fb;var _0x3f9b0b;var _0x545236={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x3a145c,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON[_0xbd43('0x3c')]([[[_0xbd43('0x3d'),JSON[_0xbd43('0x3c')]([_0x3f5f20,_0x48b7bb||'en',![],_0xbd43('0x3e')]),null,_0xbd43('0x3f')]]]))};return rp(_0x545236)[_0xbd43('0x38')](function(_0xb0dae){try{_0x3f9b0b=eval(_0xb0dae[_0xbd43('0x40')](0x5))[0x0][0x2];}catch(_0x1c914a){throw new Error(_0xbd43('0x41')+_0xb0dae[_0xbd43('0x42')]);}if(!_0x3f9b0b){if(_0x3f5f20['length']>0xc8){throw new Error(_0xbd43('0x43'));}else{throw new Error('lang\x20\x22'+_0x48b7bb+_0xbd43('0x44'));}}try{_0x3f9b0b=eval(_0x3f9b0b)[0x0];}catch(_0x2690bc){throw new Error(_0xbd43('0x41')+res[_0xbd43('0x42')]);}const _0x2ed79d=_0x3f9b0b;_0x461c90=path['resolve'](__dirname,_0xbd43('0x24'),rs[_0xbd43('0x35')](0x4)+_0xbd43('0x45'));fs[_0xbd43('0x26')](_0x461c90,_0x3f9b0b,{'encoding':_0xbd43('0x27')});_0xf108fb=path[_0xbd43('0x39')](__dirname,'tmp',rs['generate'](0x4)+_0xbd43('0x25'));return convertFile(_0x461c90,_0xf108fb);})[_0xbd43('0x38')](function(){try{fs['unlink'](_0x461c90);fs[_0xbd43('0x29')](_0xf108fb,_0xbd43('0x2a'));}catch(_0x5a2523){logger['error'](_0x5a2523);}logger[_0xbd43('0x19')](_0xbd43('0x46'),_0xf108fb['split']('.')[0x0]);return _0xf108fb[_0xbd43('0x2b')]('.')[0x0];});};exports[_0xbd43('0x47')]=function(_0x4d6a52,_0x27f144,_0x54a25a){return google[_0xbd43('0x48')](_0x4d6a52,_0x27f144,_0x54a25a)[_0xbd43('0x38')](function(_0x24b841){logger[_0xbd43('0x19')](_0x24b841['uri']);return rp(_0x24b841);})[_0xbd43('0x38')](function(_0x217823){var _0x55bd84='';var _0xa116c4=0x0;try{fs[_0xbd43('0x28')](_0x4d6a52);}catch(_0x24510d){logger[_0xbd43('0x14')](_0x24510d);}if(_0x217823&&_0x217823[_0xbd43('0x49')]){_0x55bd84=_0x217823[_0xbd43('0x49')][_0xbd43('0x4a')](function(_0x355fc1){return _0x355fc1&&_0x355fc1['alternatives'][0x0]&&_0x355fc1['alternatives'][0x0]['transcript']?_0x355fc1['alternatives'][0x0][_0xbd43('0x4b')]:'';})[_0xbd43('0x4c')]('\x0a');_0xa116c4=_0x217823[_0xbd43('0x49')][_0xbd43('0x4a')](function(_0x39771f){return _0x39771f&&_0x39771f['alternatives'][0x0]&&_0x39771f[_0xbd43('0x4d')][0x0]['confidence']?_0x39771f['alternatives'][0x0][_0xbd43('0x4e')]:0x0;})[_0xbd43('0x4c')]('\x0a');}logger['info'](_0xbd43('0x4f'),_0x55bd84);logger[_0xbd43('0x19')](_0xbd43('0x50'),_0xa116c4);return{'transcript':_0x55bd84,'confidence':_0xa116c4};})['catch'](function(_0x310774){logger[_0xbd43('0x14')]('[%s]\x20%s:%s',_0x310774[_0xbd43('0x13')],_0x310774['name'],_0x310774[_0xbd43('0x51')]);});};exports['googleDialogflow']=function(_0x38bb72,_0x43b082,_0x223de8,_0x16ccbe){var _0x3df668=apiai(_0x43b082,{'language':_0x16ccbe||'en'});return _0x3df668[_0xbd43('0x52')](_0x223de8,{'sessionId':md5(_0x38bb72)})[_0xbd43('0x38')](function(_0x321a71){logger[_0xbd43('0x19')](JSON[_0xbd43('0x3c')](_0x321a71));return{'source':_0x321a71[_0xbd43('0x53')][_0xbd43('0x54')],'resolvedQuery':_0x321a71[_0xbd43('0x53')][_0xbd43('0x55')],'action':_0x321a71['result']['action'],'actionIncomplete':_0x321a71[_0xbd43('0x53')][_0xbd43('0x56')],'speech':_0x321a71[_0xbd43('0x53')][_0xbd43('0x57')][_0xbd43('0x58')],'score':_0x321a71['result']['score'],'statusCode':_0x321a71['status'][_0xbd43('0x59')],'endConversation':_0x321a71[_0xbd43('0x53')][_0xbd43('0x5a')]['endConversation']||![],'isFallbackIntent':_0x321a71[_0xbd43('0x53')][_0xbd43('0x5a')][_0xbd43('0x5b')]};});};exports[_0xbd43('0x5c')]=function(_0x2014f3,_0x507d12,_0x2ba299,_0x4e2e64,_0xd70cdb,_0x290648){var _0x2ccadb=_0x4e2e64[_0xbd43('0x5d')](/\\n/g,'\x0a');var _0xc04b38={'credentials':{'private_key':_0x2ccadb,'client_email':_0x2ba299}};var _0x4da8ae=new dialogflow[(_0xbd43('0x5e'))](_0xc04b38);var _0x8e9134=_0x4da8ae['sessionPath'](_0x507d12,md5(_0x2014f3));var _0x14dc89={'session':_0x8e9134,'queryInput':{'text':{'text':_0xd70cdb,'languageCode':_0x290648}}};return _0x4da8ae[_0xbd43('0x5f')](_0x14dc89)[_0xbd43('0x38')](function(_0x215978){if(_0x215978&&_0x215978[_0xbd43('0x60')]){logger[_0xbd43('0x19')](_0xbd43('0x61'),JSON[_0xbd43('0x3c')](_0x215978));var _0x4bd68d=_0x215978[0x0];if(_0x4bd68d){var _0x2bde06={'action':_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x63')],'allRequiredParamsPresent':_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x64')],'endConversation':_0x4bd68d[_0xbd43('0x62')]['diagnosticInfo']&&_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x65')][_0xbd43('0x66')]?_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x65')][_0xbd43('0x66')]['end_conversation'][_0xbd43('0x67')]:![],'fulfillmentText':_0x4bd68d[_0xbd43('0x62')]['fulfillmentText'],'intentName':_0x4bd68d['queryResult']['intent'][_0xbd43('0x68')],'intentDisplayName':_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x69')][_0xbd43('0x6a')],'isFallbackIntent':_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x69')][_0xbd43('0x6b')],'languageCode':_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x6c')],'queryText':_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x6d')],'responseId':_0x4bd68d['responseId'],'score':_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x6e')],'speech':_0x4bd68d[_0xbd43('0x62')][_0xbd43('0x6f')],'providerResponse':JSON[_0xbd43('0x3c')](_0x215978)};return _0x2bde06;}}});};exports['tildeASR']=function(_0x528465,_0x375201,_0x4e58e3,_0x1eacd9){return tilde['asr'](_0x528465,_0x375201,_0x4e58e3,_0x1eacd9)[_0xbd43('0x38')](function(_0xd105f){try{fs[_0xbd43('0x28')](_0x528465);}catch(_0xf6c7cd){logger[_0xbd43('0x14')](_0xf6c7cd);}logger[_0xbd43('0x19')](_0xbd43('0x70'),_0xd105f[_0xbd43('0x4b')]);logger[_0xbd43('0x19')](_0xbd43('0x71'),_0xd105f[_0xbd43('0x4e')]);return _0xd105f;});};exports[_0xbd43('0x72')]=function(_0x1bab60,_0x52863f,_0x3300df,_0x50a071,_0x5412c9,_0x3fa961){var _0x4efcff=path[_0xbd43('0x39')](__dirname,'tmp',rs[_0xbd43('0x35')](0x4)+'.mp3');var _0x149702;return aws[_0xbd43('0x73')](_0x1bab60,_0x52863f,_0x3300df,_0x50a071,_0x5412c9,_0x3fa961,_0x4efcff)[_0xbd43('0x38')](function(){_0x149702=path[_0xbd43('0x39')](__dirname,_0xbd43('0x24'),rs[_0xbd43('0x35')](0x4)+_0xbd43('0x25'));return convertFile(_0x4efcff,_0x149702);})[_0xbd43('0x38')](function(){try{fs['unlink'](_0x4efcff);fs['chmodSync'](_0x149702,_0xbd43('0x2a'));}catch(_0x51e07c){logger[_0xbd43('0x14')](_0x51e07c);}return _0x149702[_0xbd43('0x2b')]('.')[0x0];});};exports['awsLex']=function(_0x3b3c8b,_0x3e07f7,_0x5d8126,_0x12fa26,_0x44bb18,_0x36b4c6){return aws[_0xbd43('0x74')](_0x3b3c8b,_0x3e07f7,_0x5d8126,_0x12fa26,_0x44bb18,_0x36b4c6)[_0xbd43('0x38')](function(_0x58972f){logger[_0xbd43('0x19')](JSON[_0xbd43('0x3c')](_0x58972f));return _0x58972f;});};exports['ispeechTTS']=function(_0x1986ca,_0x14033f,_0x1ea69e,_0x30f99d){var _0x13d7e8=util[_0xbd43('0x75')](_0xbd43('0x76'),ISPEECH_API,_0x1986ca,encodeURIComponent(_0x14033f),_0x1ea69e,_0x30f99d);var _0x711fd8=path[_0xbd43('0x39')](__dirname,'tmp',rs['generate'](0x4)+_0xbd43('0x45'));var _0x2475d8;return downloadFile(_0x13d7e8,_0x711fd8)[_0xbd43('0x38')](function(){_0x2475d8=path[_0xbd43('0x39')](__dirname,_0xbd43('0x24'),rs['generate'](0x4)+_0xbd43('0x25'));return convertFile(_0x711fd8,_0x2475d8);})[_0xbd43('0x38')](function(){try{fs['unlink'](_0x711fd8);fs['chmodSync'](_0x2475d8,_0xbd43('0x2a'));}catch(_0x90d130){logger[_0xbd43('0x14')](_0x90d130);}return _0x2475d8[_0xbd43('0x2b')]('.')[0x0];});};exports['ispeechASR']=function(_0x1d1c33,_0x2df623,_0x22bb21,_0x51108a){var _0x1f4f01=util[_0xbd43('0x75')](_0xbd43('0x77'),ISPEECH_API,_0x2df623,_0x22bb21,base64Encode(_0x1d1c33),_0x51108a?util['format']('model=%s',encodeURIComponent(_0x51108a)):_0xbd43('0x78'));return uploadFile(_0x1f4f01)[_0xbd43('0x38')](function(_0x5a4cb3){return querystring[_0xbd43('0x79')](_0x5a4cb3);});};exports['sestekNDA']=function(_0x1cd3e2,_0x28b90b){return sestek[_0xbd43('0x7a')](_0x1cd3e2,_0x28b90b)[_0xbd43('0x38')](function(_0xc92cba){logger['info'](JSON[_0xbd43('0x3c')](_0xc92cba));var _0x424456={'speech':_0xc92cba[_0xbd43('0x7b')],'action':_0xc92cba['channelData']?_0xc92cba[_0xbd43('0x7c')][_0xbd43('0x7d')]:undefined,'actiondata':_0xc92cba[_0xbd43('0x7c')]?_0xc92cba['channelData']['CustomActionData']:undefined};if(_0xc92cba[_0xbd43('0x7c')]&&_0xc92cba[_0xbd43('0x7c')]['AudioFromTts']){return base64Decode(_0xc92cba[_0xbd43('0x7c')][_0xbd43('0x7e')][_0xbd43('0x7f')],path[_0xbd43('0x39')](__dirname,_0xbd43('0x24'),rs[_0xbd43('0x35')](0x4)+_0xbd43('0x25')))[_0xbd43('0x38')](function(_0x2f0b75){_0x424456['audiofile']=_0x2f0b75;return _0x424456;});}return _0x424456;});};exports[_0xbd43('0x80')]=function(){return __dirname;};