Built motion from commit 753c950e.|2.5.42
[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 _0x06f0=['../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','path','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','finish\x20download\x20file','close','error','unlink','pipe','end','transcode','error\x20convert','finish\x20to\x20convert','start','resolve','generate','writeFileSync','chmodSync','777','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','then','.mp3','audioContent','tmp','.wav','googleCloudTTS\x20path','split','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','slice','data','length','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','uri','results','map','alternatives','transcript','join','confidence','catch','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','name','displayName','isFallback','responseId','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','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','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','https','md5','querystring','randomstring','sox','google-tts-api','parse','util','./aws','./google','./sestek','./tilde'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x06f0,0x18e));var _0x006f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x06f0[_0x3dd15e];return _0x231fd0;};'use strict';var apiai=require(_0x006f('0x0'));var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0x006f('0x1'));var md5=require(_0x006f('0x2'));var path=require('path');var querystring=require(_0x006f('0x3'));var rp=require('request-promise');var rs=require(_0x006f('0x4'));var sox=require(_0x006f('0x5'));var tts=require(_0x006f('0x6'));var urlParse=require('url')[_0x006f('0x7')];var util=require(_0x006f('0x8'));var aws=require(_0x006f('0x9'));var google=require(_0x006f('0xa'));var sestek=require(_0x006f('0xb'));var tilde=require(_0x006f('0xc'));var logger=require(_0x006f('0xd'))(_0x006f('0xe'));var ISPEECH_API=_0x006f('0xf');function downloadFile(_0x3778fb,_0x37eab3){return new BPromise(function(_0x2d977f,_0x501b94){var _0x4b2b9f=urlParse(_0x3778fb);var _0x33cbaa=_0x4b2b9f[_0x006f('0x10')]===_0x006f('0x11')?https:http;var _0x359a5f={'host':_0x4b2b9f[_0x006f('0x12')],'path':_0x4b2b9f[_0x006f('0x13')],'headers':{'user-agent':_0x006f('0x14')}};_0x33cbaa[_0x006f('0x15')](_0x359a5f,function(_0x4fa7ad){if(_0x4fa7ad[_0x006f('0x16')]!==0xc8){logger['error'](_0x006f('0x17')+_0x3778fb+_0x006f('0x18')+_0x4fa7ad[_0x006f('0x16')]+'\x20('+_0x4fa7ad[_0x006f('0x19')]+')');_0x501b94(new Error(_0x006f('0x17')+_0x3778fb+_0x006f('0x18')+_0x4fa7ad[_0x006f('0x16')]+'\x20('+_0x4fa7ad['statusMessage']+')'));return;}var _0x37a353=fs[_0x006f('0x1a')](_0x37eab3);_0x37a353['on']('finish',function(){logger[_0x006f('0x1b')](_0x006f('0x1c'));_0x37a353[_0x006f('0x1d')](_0x2d977f);});_0x37a353['on'](_0x006f('0x1e'),function(_0x28bb3e){fs[_0x006f('0x1f')](_0x37eab3);logger[_0x006f('0x1e')]('download\x20error',_0x28bb3e);_0x501b94(_0x28bb3e);});_0x4fa7ad[_0x006f('0x20')](_0x37a353);})['on'](_0x006f('0x1e'),function(_0x32c6c2){logger[_0x006f('0x1e')](_0x32c6c2);_0x501b94(_0x32c6c2);})[_0x006f('0x21')]();});}function uploadFile(_0x24df26){return new BPromise(function(_0x5e290b,_0x4a8fd4){var _0x164705=urlParse(_0x24df26);var _0x21cd8b=_0x164705['protocol']==='https:'?https:http;var _0xfe0221={'host':_0x164705['host'],'path':_0x164705['path'],'headers':{'user-agent':_0x006f('0x14')}};_0x21cd8b[_0x006f('0x15')](_0xfe0221,function(_0x15f370){if(_0x15f370[_0x006f('0x16')]!==0xc8){_0x4a8fd4(new Error(_0x006f('0x17')+_0x24df26+_0x006f('0x18')+_0x15f370['statusCode']+'\x20('+_0x15f370[_0x006f('0x19')]+')'));return;}var _0x3b8ba1='';_0x15f370['on']('data',function(_0x5ee69c){_0x3b8ba1+=_0x5ee69c;});_0x15f370['on'](_0x006f('0x21'),function(){_0x5e290b(_0x3b8ba1);});})['on'](_0x006f('0x1e'),function(_0x3a2b3f){_0x4a8fd4(_0x3a2b3f);})['end']();});}function convertFile(_0x1ea52b,_0x399fee){return new BPromise(function(_0x33b369,_0x44192e){var _0x2e492b=sox[_0x006f('0x22')](_0x1ea52b,_0x399fee,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2e492b['on']('error',function(_0x1b4f5c){logger[_0x006f('0x1e')](_0x006f('0x23'),_0x1b4f5c);_0x44192e(_0x1b4f5c);});_0x2e492b['on'](_0x006f('0x21'),function(){logger['info'](_0x006f('0x24'));_0x33b369();});_0x2e492b[_0x006f('0x25')]();});}function base64Decode(_0x273906,_0x2dc6a3){var _0x45334c=path[_0x006f('0x26')](__dirname,'tmp',rs[_0x006f('0x27')](0x4)+'.wav');fs[_0x006f('0x28')](_0x45334c,_0x273906,'base64');return convertFile(_0x45334c,_0x2dc6a3)['then'](function(){try{fs[_0x006f('0x1f')](_0x45334c);fs[_0x006f('0x29')](_0x2dc6a3,_0x006f('0x2a'));}catch(_0x3593ce){logger['error'](_0x3593ce);}return _0x2dc6a3['split']('.')[0x0];});}function base64Encode(_0xacb3c5){var _0x373a3b=fs[_0x006f('0x2b')](_0xacb3c5);return new Buffer(_0x373a3b)[_0x006f('0x2c')](_0x006f('0x2d'));}exports[_0x006f('0x2e')]=function(_0x4d224e,_0x209159,_0x4713e2,_0x35c699,_0x3678cb,_0x510e16){var _0x54fe73,_0x336118;var _0x378910=_0x006f('0x2f');var _0x73a8bb=_0x006f('0x30')+_0x4d224e;var _0x494fad={};if(_0x209159===_0x006f('0x31')){_0x494fad[_0x006f('0x32')]={'ssml':_0x4713e2};}else{_0x494fad[_0x006f('0x32')]={'text':_0x4713e2};};_0x494fad[_0x006f('0x33')]={'languageCode':_0x35c699,'ssmlGender':_0x3678cb};_0x494fad[_0x006f('0x34')]={'audioEncoding':_0x006f('0x35'),'sampleRateHertz':0x1f40};var _0x5c97c6={'url':_0x378910+_0x006f('0x36')+_0x73a8bb,'method':'POST','json':!![],'body':_0x494fad};return rp(_0x5c97c6)[_0x006f('0x37')](function(_0x37b12f){return new BPromise(function(_0x35075a,_0x5910bd){_0x54fe73=path[_0x006f('0x26')](__dirname,'tmp',rs[_0x006f('0x27')](0x4)+_0x006f('0x38'));var _0x27ef9d=Buffer['from'](_0x37b12f[_0x006f('0x39')],'base64');return fs['writeFile'](_0x54fe73,_0x27ef9d,function(_0x1ae303){_0x5910bd(_0x1ae303);},function(_0x4970c8){fs[_0x006f('0x29')](_0x54fe73,_0x006f('0x2a'));_0x35075a(_0x4970c8);});});})[_0x006f('0x37')](function(_0x1171fc){_0x336118=path['resolve'](__dirname,_0x006f('0x3a'),rs[_0x006f('0x27')](0x4)+_0x006f('0x3b'));return convertFile(_0x54fe73,_0x336118);})['then'](function(){try{fs[_0x006f('0x1f')](_0x54fe73);fs['chmodSync'](_0x336118,_0x006f('0x2a'));}catch(_0x2a286e){logger[_0x006f('0x1e')](_0x2a286e);}logger['info'](_0x006f('0x3c'),_0x336118[_0x006f('0x3d')]('.')[0x0]);return _0x336118[_0x006f('0x3d')]('.')[0x0];});};exports['googleTTS']=function(_0xa04cf0,_0xc0ee7a){var _0x24a8f6=_0x006f('0x3e');var _0x284676,_0x4ed6be;var _0x4509e2;var _0x3a0288={'encoding':_0x006f('0x3f'),'method':'POST','timeout':0x2710,'url':_0x24a8f6,'headers':{'Content-Type':_0x006f('0x40')},'body':'f.req='+encodeURIComponent(JSON[_0x006f('0x41')]([[[_0x006f('0x42'),JSON['stringify']([_0xa04cf0,_0xc0ee7a||'en',![],_0x006f('0x43')]),null,_0x006f('0x44')]]]))};return rp(_0x3a0288)[_0x006f('0x37')](function(_0x4493b0){try{_0x4509e2=eval(_0x4493b0[_0x006f('0x45')](0x5))[0x0][0x2];}catch(_0x17b014){throw new Error('parse\x20response\x20failed:\x0a'+_0x4493b0[_0x006f('0x46')]);}if(!_0x4509e2){if(_0xa04cf0[_0x006f('0x47')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x006f('0x48')+_0xc0ee7a+_0x006f('0x49'));}}try{_0x4509e2=eval(_0x4509e2)[0x0];}catch(_0x5a24c6){throw new Error(_0x006f('0x4a')+res[_0x006f('0x46')]);}const _0x44693d=_0x4509e2;_0x284676=path[_0x006f('0x26')](__dirname,_0x006f('0x3a'),rs[_0x006f('0x27')](0x4)+_0x006f('0x38'));fs[_0x006f('0x28')](_0x284676,_0x4509e2,{'encoding':_0x006f('0x2d')});_0x4ed6be=path['resolve'](__dirname,_0x006f('0x3a'),rs[_0x006f('0x27')](0x4)+'.wav');return convertFile(_0x284676,_0x4ed6be);})[_0x006f('0x37')](function(){try{fs[_0x006f('0x1f')](_0x284676);fs[_0x006f('0x29')](_0x4ed6be,_0x006f('0x2a'));}catch(_0x57d264){logger['error'](_0x57d264);}logger[_0x006f('0x1b')](_0x006f('0x4b'),_0x4ed6be[_0x006f('0x3d')]('.')[0x0]);return _0x4ed6be[_0x006f('0x3d')]('.')[0x0];});};exports[_0x006f('0x4c')]=function(_0x1e3c2f,_0x464961,_0x24c92b){return google['asr'](_0x1e3c2f,_0x464961,_0x24c92b)[_0x006f('0x37')](function(_0x36a907){logger[_0x006f('0x1b')](_0x36a907[_0x006f('0x4d')]);return rp(_0x36a907);})[_0x006f('0x37')](function(_0x2f3f73){var _0x4e0d65='';var _0x44f7c0=0x0;try{fs[_0x006f('0x1f')](_0x1e3c2f);}catch(_0x4bbbb8){logger[_0x006f('0x1e')](_0x4bbbb8);}if(_0x2f3f73&&_0x2f3f73[_0x006f('0x4e')]){_0x4e0d65=_0x2f3f73[_0x006f('0x4e')][_0x006f('0x4f')](function(_0x4a0f16){return _0x4a0f16&&_0x4a0f16[_0x006f('0x50')][0x0]&&_0x4a0f16[_0x006f('0x50')][0x0][_0x006f('0x51')]?_0x4a0f16[_0x006f('0x50')][0x0][_0x006f('0x51')]:'';})[_0x006f('0x52')]('\x0a');_0x44f7c0=_0x2f3f73[_0x006f('0x4e')][_0x006f('0x4f')](function(_0x450589){return _0x450589&&_0x450589[_0x006f('0x50')][0x0]&&_0x450589[_0x006f('0x50')][0x0][_0x006f('0x53')]?_0x450589['alternatives'][0x0]['confidence']:0x0;})[_0x006f('0x52')]('\x0a');}logger[_0x006f('0x1b')]('googleASR\x20transcription',_0x4e0d65);logger[_0x006f('0x1b')]('googleASR\x20confidence',_0x44f7c0);return{'transcript':_0x4e0d65,'confidence':_0x44f7c0};})[_0x006f('0x54')](function(_0x3df798){logger[_0x006f('0x1e')]('[%s]\x20%s:%s',_0x3df798[_0x006f('0x16')],_0x3df798['name'],_0x3df798['message']);});};exports[_0x006f('0x55')]=function(_0x1c88c8,_0x332a43,_0xbf45e8,_0x439825){var _0x1ce70b=apiai(_0x332a43,{'language':_0x439825||'en'});return _0x1ce70b[_0x006f('0x56')](_0xbf45e8,{'sessionId':md5(_0x1c88c8)})[_0x006f('0x37')](function(_0x3b85de){logger[_0x006f('0x1b')](JSON[_0x006f('0x41')](_0x3b85de));return{'source':_0x3b85de[_0x006f('0x57')][_0x006f('0x58')],'resolvedQuery':_0x3b85de[_0x006f('0x57')][_0x006f('0x59')],'action':_0x3b85de[_0x006f('0x57')][_0x006f('0x5a')],'actionIncomplete':_0x3b85de[_0x006f('0x57')][_0x006f('0x5b')],'speech':_0x3b85de['result'][_0x006f('0x5c')]['speech'],'score':_0x3b85de[_0x006f('0x57')][_0x006f('0x5d')],'statusCode':_0x3b85de[_0x006f('0x5e')][_0x006f('0x5f')],'endConversation':_0x3b85de[_0x006f('0x57')][_0x006f('0x60')][_0x006f('0x61')]||![],'isFallbackIntent':_0x3b85de['result'][_0x006f('0x60')][_0x006f('0x62')]};});};exports[_0x006f('0x63')]=function(_0x5a7381,_0x16249b,_0x2024b9,_0x1dc4b7,_0x531beb,_0x29e1bf){var _0x44eb39=_0x1dc4b7['replace'](/\\n/g,'\x0a');var _0x1f7c59={'credentials':{'private_key':_0x44eb39,'client_email':_0x2024b9}};var _0x55745f=new dialogflow[(_0x006f('0x64'))](_0x1f7c59);var _0x1bd46f=_0x55745f['sessionPath'](_0x16249b,md5(_0x5a7381));var _0x53d074={'session':_0x1bd46f,'queryInput':{'text':{'text':_0x531beb,'languageCode':_0x29e1bf}}};return _0x55745f[_0x006f('0x65')](_0x53d074)[_0x006f('0x37')](function(_0x5b4f5d){if(_0x5b4f5d&&_0x5b4f5d[_0x006f('0x47')]){logger[_0x006f('0x1b')](_0x006f('0x66'),JSON[_0x006f('0x41')](_0x5b4f5d));var _0x787ef3=_0x5b4f5d[0x0];if(_0x787ef3){var _0x55afe3={'action':_0x787ef3[_0x006f('0x67')]['action'],'allRequiredParamsPresent':_0x787ef3[_0x006f('0x67')][_0x006f('0x68')],'endConversation':_0x787ef3['queryResult'][_0x006f('0x69')]&&_0x787ef3['queryResult'][_0x006f('0x69')][_0x006f('0x6a')]?_0x787ef3['queryResult'][_0x006f('0x69')][_0x006f('0x6a')][_0x006f('0x6b')][_0x006f('0x6c')]:![],'fulfillmentText':_0x787ef3['queryResult'][_0x006f('0x6d')],'intentName':_0x787ef3[_0x006f('0x67')][_0x006f('0x6e')][_0x006f('0x6f')],'intentDisplayName':_0x787ef3['queryResult']['intent'][_0x006f('0x70')],'isFallbackIntent':_0x787ef3[_0x006f('0x67')][_0x006f('0x6e')][_0x006f('0x71')],'languageCode':_0x787ef3[_0x006f('0x67')]['languageCode'],'queryText':_0x787ef3['queryResult']['queryText'],'responseId':_0x787ef3[_0x006f('0x72')],'score':_0x787ef3[_0x006f('0x67')]['intentDetectionConfidence'],'speech':_0x787ef3['queryResult']['fulfillmentText'],'providerResponse':JSON[_0x006f('0x41')](_0x5b4f5d)};return _0x55afe3;}}});};exports['tildeASR']=function(_0x10b5e6,_0x3aa9c4,_0x4068f4,_0x409fc1){return tilde[_0x006f('0x73')](_0x10b5e6,_0x3aa9c4,_0x4068f4,_0x409fc1)[_0x006f('0x37')](function(_0x318a4f){try{fs[_0x006f('0x1f')](_0x10b5e6);}catch(_0xe84128){logger[_0x006f('0x1e')](_0xe84128);}logger[_0x006f('0x1b')](_0x006f('0x74'),_0x318a4f[_0x006f('0x51')]);logger[_0x006f('0x1b')](_0x006f('0x75'),_0x318a4f[_0x006f('0x53')]);return _0x318a4f;});};exports[_0x006f('0x76')]=function(_0x471544,_0x5914ab,_0x431a38,_0x466c53,_0x533ebb,_0x53c3e7){var _0xdaaec0=path[_0x006f('0x26')](__dirname,_0x006f('0x3a'),rs['generate'](0x4)+_0x006f('0x38'));var _0x4797d8;return aws[_0x006f('0x77')](_0x471544,_0x5914ab,_0x431a38,_0x466c53,_0x533ebb,_0x53c3e7,_0xdaaec0)[_0x006f('0x37')](function(){_0x4797d8=path[_0x006f('0x26')](__dirname,_0x006f('0x3a'),rs[_0x006f('0x27')](0x4)+_0x006f('0x3b'));return convertFile(_0xdaaec0,_0x4797d8);})['then'](function(){try{fs['unlink'](_0xdaaec0);fs['chmodSync'](_0x4797d8,'777');}catch(_0x4a4596){logger[_0x006f('0x1e')](_0x4a4596);}return _0x4797d8['split']('.')[0x0];});};exports[_0x006f('0x78')]=function(_0x3c6706,_0x964503,_0x21d724,_0x550c0f,_0x531a5a,_0x1db7b5){return aws[_0x006f('0x79')](_0x3c6706,_0x964503,_0x21d724,_0x550c0f,_0x531a5a,_0x1db7b5)[_0x006f('0x37')](function(_0x12cb3b){logger[_0x006f('0x1b')](JSON['stringify'](_0x12cb3b));return _0x12cb3b;});};exports[_0x006f('0x7a')]=function(_0x5ae0a7,_0x17e12b,_0x575ce5,_0x3d7cd5){var _0x2c6068=util[_0x006f('0x7b')](_0x006f('0x7c'),ISPEECH_API,_0x5ae0a7,encodeURIComponent(_0x17e12b),_0x575ce5,_0x3d7cd5);var _0x1506ac=path[_0x006f('0x26')](__dirname,_0x006f('0x3a'),rs[_0x006f('0x27')](0x4)+_0x006f('0x38'));var _0x3dfd1b;return downloadFile(_0x2c6068,_0x1506ac)[_0x006f('0x37')](function(){_0x3dfd1b=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0x1506ac,_0x3dfd1b);})['then'](function(){try{fs['unlink'](_0x1506ac);fs[_0x006f('0x29')](_0x3dfd1b,_0x006f('0x2a'));}catch(_0x5623ef){logger['error'](_0x5623ef);}return _0x3dfd1b[_0x006f('0x3d')]('.')[0x0];});};exports[_0x006f('0x7d')]=function(_0x41445a,_0x3411e5,_0xee1760,_0x3049dc){var _0x197fd3=util[_0x006f('0x7b')](_0x006f('0x7e'),ISPEECH_API,_0x3411e5,_0xee1760,base64Encode(_0x41445a),_0x3049dc?util[_0x006f('0x7b')]('model=%s',encodeURIComponent(_0x3049dc)):_0x006f('0x7f'));return uploadFile(_0x197fd3)[_0x006f('0x37')](function(_0x3b4aa3){return querystring[_0x006f('0x7')](_0x3b4aa3);});};exports[_0x006f('0x80')]=function(_0x3fb5b2,_0x173615){return sestek[_0x006f('0x81')](_0x3fb5b2,_0x173615)['then'](function(_0x17c854){logger[_0x006f('0x1b')](JSON[_0x006f('0x41')](_0x17c854));var _0x3b1348={'speech':_0x17c854[_0x006f('0x82')],'action':_0x17c854[_0x006f('0x83')]?_0x17c854[_0x006f('0x83')][_0x006f('0x84')]:undefined,'actiondata':_0x17c854[_0x006f('0x83')]?_0x17c854['channelData'][_0x006f('0x85')]:undefined};if(_0x17c854[_0x006f('0x83')]&&_0x17c854['channelData'][_0x006f('0x86')]){return base64Decode(_0x17c854[_0x006f('0x83')]['AudioFromTts'][_0x006f('0x87')],path[_0x006f('0x26')](__dirname,_0x006f('0x3a'),rs['generate'](0x4)+_0x006f('0x3b')))[_0x006f('0x37')](function(_0x52fb51){_0x3b1348[_0x006f('0x88')]=_0x52fb51;return _0x3b1348;});}return _0x3b1348;});};exports['dirName']=function(){return __dirname;};