Built motion from commit 0900f080.|2.5.45
[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 _0x8b84=['confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','fields','diagnosticInfo','end_conversation','boolValue','fulfillmentText','intent','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','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','sestekNDA','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','dialogflow','http','https','md5','path','querystring','randomstring','google-tts-api','url','parse','./google','./sestek','./tilde','../../../config/logger','agi','https:','WHAT_EVER','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','statusCode','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','end','protocol','get','transcode','wav','start','resolve','tmp','writeFileSync','base64','then','chmodSync','777','split','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','POST','generate','.mp3','audioContent','writeFile','.wav','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','stringify','null','slice','parse\x20response\x20failed:\x0a','data','length','text\x20length\x20limit\x20reached','lang\x20\x22','goggleTTS\x20path','googleASR','asr','results','map','alternatives','transcript','join'];(function(_0xb44d72,_0x326632){var _0x2ae021=function(_0x1dbfba){while(--_0x1dbfba){_0xb44d72['push'](_0xb44d72['shift']());}};_0x2ae021(++_0x326632);}(_0x8b84,0x1ce));var _0x48b8=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x8b84[_0x4709c0];return _0x13348b;};'use strict';var apiai=require('apiai-promise');var BPromise=require('bluebird');var dialogflow=require(_0x48b8('0x0'));var fs=require('fs');var http=require(_0x48b8('0x1'));var https=require(_0x48b8('0x2'));var md5=require(_0x48b8('0x3'));var path=require(_0x48b8('0x4'));var querystring=require(_0x48b8('0x5'));var rp=require('request-promise');var rs=require(_0x48b8('0x6'));var sox=require('sox');var tts=require(_0x48b8('0x7'));var urlParse=require(_0x48b8('0x8'))[_0x48b8('0x9')];var util=require('util');var aws=require('./aws');var google=require(_0x48b8('0xa'));var sestek=require(_0x48b8('0xb'));var tilde=require(_0x48b8('0xc'));var logger=require(_0x48b8('0xd'))(_0x48b8('0xe'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x4c0600,_0xbe4151){return new BPromise(function(_0x23c988,_0xec971d){var _0xa0d686=urlParse(_0x4c0600);var _0x1c7908=_0xa0d686['protocol']===_0x48b8('0xf')?https:http;var _0x2d4ae5={'host':_0xa0d686['host'],'path':_0xa0d686[_0x48b8('0x4')],'headers':{'user-agent':_0x48b8('0x10')}};_0x1c7908['get'](_0x2d4ae5,function(_0x443374){if(_0x443374['statusCode']!==0xc8){logger[_0x48b8('0x11')](_0x48b8('0x12')+_0x4c0600+_0x48b8('0x13')+_0x443374['statusCode']+'\x20('+_0x443374[_0x48b8('0x14')]+')');_0xec971d(new Error(_0x48b8('0x12')+_0x4c0600+_0x48b8('0x13')+_0x443374[_0x48b8('0x15')]+'\x20('+_0x443374['statusMessage']+')'));return;}var _0x426743=fs[_0x48b8('0x16')](_0xbe4151);_0x426743['on'](_0x48b8('0x17'),function(){logger[_0x48b8('0x18')](_0x48b8('0x19'));_0x426743[_0x48b8('0x1a')](_0x23c988);});_0x426743['on'](_0x48b8('0x11'),function(_0x5ad3c8){fs[_0x48b8('0x1b')](_0xbe4151);logger[_0x48b8('0x11')](_0x48b8('0x1c'),_0x5ad3c8);_0xec971d(_0x5ad3c8);});_0x443374['pipe'](_0x426743);})['on']('error',function(_0x400ef6){logger[_0x48b8('0x11')](_0x400ef6);_0xec971d(_0x400ef6);})[_0x48b8('0x1d')]();});}function uploadFile(_0x486888){return new BPromise(function(_0x573481,_0x2e343c){var _0x5046f7=urlParse(_0x486888);var _0x40fffa=_0x5046f7[_0x48b8('0x1e')]==='https:'?https:http;var _0x20d902={'host':_0x5046f7['host'],'path':_0x5046f7[_0x48b8('0x4')],'headers':{'user-agent':_0x48b8('0x10')}};_0x40fffa[_0x48b8('0x1f')](_0x20d902,function(_0x4ab9d8){if(_0x4ab9d8[_0x48b8('0x15')]!==0xc8){_0x2e343c(new Error(_0x48b8('0x12')+_0x486888+_0x48b8('0x13')+_0x4ab9d8[_0x48b8('0x15')]+'\x20('+_0x4ab9d8['statusMessage']+')'));return;}var _0x24bc93='';_0x4ab9d8['on']('data',function(_0x4ada79){_0x24bc93+=_0x4ada79;});_0x4ab9d8['on'](_0x48b8('0x1d'),function(){_0x573481(_0x24bc93);});})['on'](_0x48b8('0x11'),function(_0x124509){_0x2e343c(_0x124509);})[_0x48b8('0x1d')]();});}function convertFile(_0x2d013d,_0xdf8cf6){return new BPromise(function(_0x4f99a7,_0x43ec8a){var _0x546aec=sox[_0x48b8('0x20')](_0x2d013d,_0xdf8cf6,{'sampleRate':0x1f40,'format':_0x48b8('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x546aec['on'](_0x48b8('0x11'),function(_0x3261d9){logger[_0x48b8('0x11')]('error\x20convert',_0x3261d9);_0x43ec8a(_0x3261d9);});_0x546aec['on'](_0x48b8('0x1d'),function(){logger['info']('finish\x20to\x20convert');_0x4f99a7();});_0x546aec[_0x48b8('0x22')]();});}function base64Decode(_0x40b90f,_0x63aeac){var _0xa0f3dd=path[_0x48b8('0x23')](__dirname,_0x48b8('0x24'),rs['generate'](0x4)+'.wav');fs[_0x48b8('0x25')](_0xa0f3dd,_0x40b90f,_0x48b8('0x26'));return convertFile(_0xa0f3dd,_0x63aeac)[_0x48b8('0x27')](function(){try{fs[_0x48b8('0x1b')](_0xa0f3dd);fs[_0x48b8('0x28')](_0x63aeac,_0x48b8('0x29'));}catch(_0x3d735c){logger['error'](_0x3d735c);}return _0x63aeac[_0x48b8('0x2a')]('.')[0x0];});}function base64Encode(_0x62d999){var _0x2983e5=fs['readFileSync'](_0x62d999);return new Buffer(_0x2983e5)[_0x48b8('0x2b')](_0x48b8('0x26'));}exports[_0x48b8('0x2c')]=function(_0x4d14b0,_0x1e9bcc,_0x4f6dc9,_0xd3cba7,_0x1ec889,_0x5370b2){var _0x3b8552,_0x2504da;var _0x124b75=_0x48b8('0x2d');var _0x59ed1b=_0x48b8('0x2e')+_0x4d14b0;var _0x1b7387={};if(_0x1e9bcc===_0x48b8('0x2f')){_0x1b7387[_0x48b8('0x30')]={'ssml':_0x4f6dc9};}else{_0x1b7387[_0x48b8('0x30')]={'text':_0x4f6dc9};};_0x1b7387[_0x48b8('0x31')]={'languageCode':_0xd3cba7,'ssmlGender':_0x1ec889};_0x1b7387[_0x48b8('0x32')]={'audioEncoding':_0x48b8('0x33'),'sampleRateHertz':0x1f40};var _0x119701={'url':_0x124b75+'text:synthesize'+_0x59ed1b,'method':_0x48b8('0x34'),'json':!![],'body':_0x1b7387};return rp(_0x119701)[_0x48b8('0x27')](function(_0x228a3f){return new BPromise(function(_0x2e663c,_0x117d59){_0x3b8552=path[_0x48b8('0x23')](__dirname,_0x48b8('0x24'),rs[_0x48b8('0x35')](0x4)+_0x48b8('0x36'));var _0x4f65bd=Buffer['from'](_0x228a3f[_0x48b8('0x37')],_0x48b8('0x26'));return fs[_0x48b8('0x38')](_0x3b8552,_0x4f65bd,function(_0x4e3e5e){_0x117d59(_0x4e3e5e);},function(_0x289a12){fs['chmodSync'](_0x3b8552,_0x48b8('0x29'));_0x2e663c(_0x289a12);});});})[_0x48b8('0x27')](function(_0x4f74f9){_0x2504da=path['resolve'](__dirname,_0x48b8('0x24'),rs[_0x48b8('0x35')](0x4)+_0x48b8('0x39'));return convertFile(_0x3b8552,_0x2504da);})[_0x48b8('0x27')](function(){try{fs['unlink'](_0x3b8552);fs[_0x48b8('0x28')](_0x2504da,_0x48b8('0x29'));}catch(_0x17f35b){logger[_0x48b8('0x11')](_0x17f35b);}logger[_0x48b8('0x18')]('googleCloudTTS\x20path',_0x2504da[_0x48b8('0x2a')]('.')[0x0]);return _0x2504da[_0x48b8('0x2a')]('.')[0x0];});};exports[_0x48b8('0x3a')]=function(_0x3ac683,_0x2d4f93){var _0x310ee1=_0x48b8('0x3b');var _0x12ef23,_0x40ebfe;var _0x5ce6c3;var _0x522960={'encoding':_0x48b8('0x3c'),'method':_0x48b8('0x34'),'timeout':0x2710,'url':_0x310ee1,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x48b8('0x3d')+encodeURIComponent(JSON[_0x48b8('0x3e')]([[['jQ1olc',JSON['stringify']([_0x3ac683,_0x2d4f93||'en',![],_0x48b8('0x3f')]),null,'generic']]]))};return rp(_0x522960)[_0x48b8('0x27')](function(_0x2c6ef1){try{_0x5ce6c3=eval(_0x2c6ef1[_0x48b8('0x40')](0x5))[0x0][0x2];}catch(_0x3d3e73){throw new Error(_0x48b8('0x41')+_0x2c6ef1[_0x48b8('0x42')]);}if(!_0x5ce6c3){if(_0x3ac683[_0x48b8('0x43')]>0xc8){throw new Error(_0x48b8('0x44'));}else{throw new Error(_0x48b8('0x45')+_0x2d4f93+'\x22\x20might\x20not\x20exist');}}try{_0x5ce6c3=eval(_0x5ce6c3)[0x0];}catch(_0x14634d){throw new Error(_0x48b8('0x41')+res[_0x48b8('0x42')]);}const _0x21cd12=_0x5ce6c3;_0x12ef23=path[_0x48b8('0x23')](__dirname,_0x48b8('0x24'),rs[_0x48b8('0x35')](0x4)+_0x48b8('0x36'));fs[_0x48b8('0x25')](_0x12ef23,_0x5ce6c3,{'encoding':_0x48b8('0x26')});_0x40ebfe=path[_0x48b8('0x23')](__dirname,'tmp',rs['generate'](0x4)+_0x48b8('0x39'));return convertFile(_0x12ef23,_0x40ebfe);})[_0x48b8('0x27')](function(){try{fs[_0x48b8('0x1b')](_0x12ef23);fs[_0x48b8('0x28')](_0x40ebfe,_0x48b8('0x29'));}catch(_0x4b4982){logger['error'](_0x4b4982);}logger[_0x48b8('0x18')](_0x48b8('0x46'),_0x40ebfe['split']('.')[0x0]);return _0x40ebfe['split']('.')[0x0];});};exports[_0x48b8('0x47')]=function(_0x2447c2,_0x13ba1f,_0x15c169){return google[_0x48b8('0x48')](_0x2447c2,_0x13ba1f,_0x15c169)[_0x48b8('0x27')](function(_0x39e14d){logger[_0x48b8('0x18')](_0x39e14d['uri']);return rp(_0x39e14d);})[_0x48b8('0x27')](function(_0x5bbc21){var _0x4361cb='';var _0x4e0868=0x0;try{fs[_0x48b8('0x1b')](_0x2447c2);}catch(_0x3bcc47){logger[_0x48b8('0x11')](_0x3bcc47);}if(_0x5bbc21&&_0x5bbc21[_0x48b8('0x49')]){_0x4361cb=_0x5bbc21[_0x48b8('0x49')][_0x48b8('0x4a')](function(_0xb582d9){return _0xb582d9&&_0xb582d9[_0x48b8('0x4b')][0x0]&&_0xb582d9[_0x48b8('0x4b')][0x0][_0x48b8('0x4c')]?_0xb582d9[_0x48b8('0x4b')][0x0][_0x48b8('0x4c')]:'';})[_0x48b8('0x4d')]('\x0a');_0x4e0868=_0x5bbc21[_0x48b8('0x49')]['map'](function(_0x41870c){return _0x41870c&&_0x41870c[_0x48b8('0x4b')][0x0]&&_0x41870c[_0x48b8('0x4b')][0x0][_0x48b8('0x4e')]?_0x41870c[_0x48b8('0x4b')][0x0][_0x48b8('0x4e')]:0x0;})['join']('\x0a');}logger[_0x48b8('0x18')](_0x48b8('0x4f'),_0x4361cb);logger['info']('googleASR\x20confidence',_0x4e0868);return{'transcript':_0x4361cb,'confidence':_0x4e0868};})[_0x48b8('0x50')](function(_0x4a82b5){logger[_0x48b8('0x11')](_0x48b8('0x51'),_0x4a82b5[_0x48b8('0x15')],_0x4a82b5['name'],_0x4a82b5[_0x48b8('0x52')]);});};exports[_0x48b8('0x53')]=function(_0x3c846a,_0x2e3e93,_0x1febf8,_0x1c8e31){var _0x28719b=apiai(_0x2e3e93,{'language':_0x1c8e31||'en'});return _0x28719b[_0x48b8('0x54')](_0x1febf8,{'sessionId':md5(_0x3c846a)})[_0x48b8('0x27')](function(_0x370575){logger[_0x48b8('0x18')](JSON[_0x48b8('0x3e')](_0x370575));return{'source':_0x370575[_0x48b8('0x55')][_0x48b8('0x56')],'resolvedQuery':_0x370575[_0x48b8('0x55')][_0x48b8('0x57')],'action':_0x370575[_0x48b8('0x55')][_0x48b8('0x58')],'actionIncomplete':_0x370575[_0x48b8('0x55')][_0x48b8('0x59')],'speech':_0x370575[_0x48b8('0x55')][_0x48b8('0x5a')][_0x48b8('0x5b')],'score':_0x370575[_0x48b8('0x55')][_0x48b8('0x5c')],'statusCode':_0x370575['status'][_0x48b8('0x5d')],'endConversation':_0x370575[_0x48b8('0x55')][_0x48b8('0x5e')][_0x48b8('0x5f')]||![],'isFallbackIntent':_0x370575[_0x48b8('0x55')][_0x48b8('0x5e')][_0x48b8('0x60')]};});};exports[_0x48b8('0x61')]=function(_0x4378ac,_0x5c9811,_0x9674d,_0x14017e,_0x1241d3,_0x16c64b){var _0x52142e=_0x14017e[_0x48b8('0x62')](/\\n/g,'\x0a');var _0x277899={'credentials':{'private_key':_0x52142e,'client_email':_0x9674d}};var _0x38f013=new dialogflow['SessionsClient'](_0x277899);var _0x1da715=_0x38f013[_0x48b8('0x63')](_0x5c9811,md5(_0x4378ac));var _0x3f0a04={'session':_0x1da715,'queryInput':{'text':{'text':_0x1241d3,'languageCode':_0x16c64b}}};return _0x38f013[_0x48b8('0x64')](_0x3f0a04)[_0x48b8('0x27')](function(_0x42211d){if(_0x42211d&&_0x42211d[_0x48b8('0x43')]){logger[_0x48b8('0x18')](_0x48b8('0x65'),JSON['stringify'](_0x42211d));var _0xbf2f9c=_0x42211d[0x0];if(_0xbf2f9c){var _0x3e82ec={'action':_0xbf2f9c[_0x48b8('0x66')]['action'],'allRequiredParamsPresent':_0xbf2f9c[_0x48b8('0x66')][_0x48b8('0x67')],'endConversation':_0xbf2f9c['queryResult']['diagnosticInfo']&&_0xbf2f9c[_0x48b8('0x66')]['diagnosticInfo'][_0x48b8('0x68')]?_0xbf2f9c[_0x48b8('0x66')][_0x48b8('0x69')][_0x48b8('0x68')][_0x48b8('0x6a')][_0x48b8('0x6b')]:![],'fulfillmentText':_0xbf2f9c[_0x48b8('0x66')][_0x48b8('0x6c')],'intentName':_0xbf2f9c[_0x48b8('0x66')][_0x48b8('0x6d')]['name'],'intentDisplayName':_0xbf2f9c[_0x48b8('0x66')][_0x48b8('0x6d')]['displayName'],'isFallbackIntent':_0xbf2f9c[_0x48b8('0x66')][_0x48b8('0x6d')][_0x48b8('0x6e')],'languageCode':_0xbf2f9c[_0x48b8('0x66')][_0x48b8('0x6f')],'queryText':_0xbf2f9c['queryResult'][_0x48b8('0x70')],'responseId':_0xbf2f9c[_0x48b8('0x71')],'score':_0xbf2f9c['queryResult'][_0x48b8('0x72')],'speech':_0xbf2f9c[_0x48b8('0x66')]['fulfillmentText'],'providerResponse':JSON[_0x48b8('0x3e')](_0x42211d)};return _0x3e82ec;}}});};exports[_0x48b8('0x73')]=function(_0x529e49,_0xe02fca,_0x2a3492,_0x5f5abe){return tilde['asr'](_0x529e49,_0xe02fca,_0x2a3492,_0x5f5abe)['then'](function(_0x42938){try{fs[_0x48b8('0x1b')](_0x529e49);}catch(_0x2be92f){logger[_0x48b8('0x11')](_0x2be92f);}logger[_0x48b8('0x18')](_0x48b8('0x74'),_0x42938[_0x48b8('0x4c')]);logger['info'](_0x48b8('0x75'),_0x42938[_0x48b8('0x4e')]);return _0x42938;});};exports[_0x48b8('0x76')]=function(_0x5e3a06,_0x3c011d,_0x180467,_0x1c7b5f,_0xda225b,_0x2d3da5){var _0x1c093e=path['resolve'](__dirname,_0x48b8('0x24'),rs['generate'](0x4)+_0x48b8('0x36'));var _0x3244ee;return aws[_0x48b8('0x77')](_0x5e3a06,_0x3c011d,_0x180467,_0x1c7b5f,_0xda225b,_0x2d3da5,_0x1c093e)[_0x48b8('0x27')](function(){_0x3244ee=path[_0x48b8('0x23')](__dirname,'tmp',rs[_0x48b8('0x35')](0x4)+'.wav');return convertFile(_0x1c093e,_0x3244ee);})[_0x48b8('0x27')](function(){try{fs[_0x48b8('0x1b')](_0x1c093e);fs[_0x48b8('0x28')](_0x3244ee,_0x48b8('0x29'));}catch(_0x2fc5ff){logger[_0x48b8('0x11')](_0x2fc5ff);}return _0x3244ee[_0x48b8('0x2a')]('.')[0x0];});};exports[_0x48b8('0x78')]=function(_0x4ddcb2,_0x3fcf93,_0x4b4c62,_0x42e6d4,_0x4c73b0,_0x29a832){return aws[_0x48b8('0x79')](_0x4ddcb2,_0x3fcf93,_0x4b4c62,_0x42e6d4,_0x4c73b0,_0x29a832)['then'](function(_0x48ec45){logger['info'](JSON[_0x48b8('0x3e')](_0x48ec45));return _0x48ec45;});};exports[_0x48b8('0x7a')]=function(_0x1d2721,_0x32f6e7,_0x35c0a3,_0x3c646a){var _0x56889f=util[_0x48b8('0x7b')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x1d2721,encodeURIComponent(_0x32f6e7),_0x35c0a3,_0x3c646a);var _0x40c8f2=path['resolve'](__dirname,_0x48b8('0x24'),rs[_0x48b8('0x35')](0x4)+_0x48b8('0x36'));var _0x1eab6b;return downloadFile(_0x56889f,_0x40c8f2)['then'](function(){_0x1eab6b=path[_0x48b8('0x23')](__dirname,_0x48b8('0x24'),rs[_0x48b8('0x35')](0x4)+_0x48b8('0x39'));return convertFile(_0x40c8f2,_0x1eab6b);})[_0x48b8('0x27')](function(){try{fs[_0x48b8('0x1b')](_0x40c8f2);fs[_0x48b8('0x28')](_0x1eab6b,_0x48b8('0x29'));}catch(_0x978e2f){logger['error'](_0x978e2f);}return _0x1eab6b['split']('.')[0x0];});};exports[_0x48b8('0x7c')]=function(_0x2e200d,_0x18e56e,_0x2ee17b,_0x3748f1){var _0x98d6eb=util['format'](_0x48b8('0x7d'),ISPEECH_API,_0x18e56e,_0x2ee17b,base64Encode(_0x2e200d),_0x3748f1?util[_0x48b8('0x7b')](_0x48b8('0x7e'),encodeURIComponent(_0x3748f1)):_0x48b8('0x7f'));return uploadFile(_0x98d6eb)['then'](function(_0x368adc){return querystring[_0x48b8('0x9')](_0x368adc);});};exports[_0x48b8('0x80')]=function(_0xb36c5,_0x3c0c45){return sestek['nda'](_0xb36c5,_0x3c0c45)['then'](function(_0x567765){logger[_0x48b8('0x18')](JSON['stringify'](_0x567765));var _0x4a8674={'speech':_0x567765[_0x48b8('0x81')],'action':_0x567765[_0x48b8('0x82')]?_0x567765[_0x48b8('0x82')]['CustomAction']:undefined,'actiondata':_0x567765['channelData']?_0x567765['channelData'][_0x48b8('0x83')]:undefined};if(_0x567765[_0x48b8('0x82')]&&_0x567765[_0x48b8('0x82')]['AudioFromTts']){return base64Decode(_0x567765[_0x48b8('0x82')][_0x48b8('0x84')][_0x48b8('0x85')],path[_0x48b8('0x23')](__dirname,_0x48b8('0x24'),rs[_0x48b8('0x35')](0x4)+_0x48b8('0x39')))[_0x48b8('0x27')](function(_0x4061df){_0x4a8674[_0x48b8('0x86')]=_0x4061df;return _0x4a8674;});}return _0x4a8674;});};exports['dirName']=function(){return __dirname;};